GRBaddconstrs
GRBaddconstrs
int | GRBaddconstrs( | GRBmodel | *模型, |
int | numconstrs, | ||
int | numnz, | ||
int | * cbeg, | ||
int | * cind, | ||
双 | * cval, | ||
字符 | *感, | ||
双 | *, | ||
const char | * * constrnames) |
向模型中添加新的线性约束。注意,由于我们的惰性更新方法,新的约束实际上不会添加,直到您更新模型(使用GRBupdatemodel),优化模型(使用GRBoptimize),或者将模型写入磁盘(使用GRBwrite).
我们建议您一次只构建一个约束(使用GRBaddconstr),因为它不会带来重大的开销,而且我们发现它会生成更简单的代码。如果你不同意,你可以随意使用这个程序。
如果您的约束矩阵可能包含超过20亿个非零值,您应该考虑使用GRBXaddconstrs这个程序的变体。
返回值:
非零返回值表明在添加约束时发生了问题。指的是错误代码可能返回值列表的表。关于错误的详细信息可以通过调用来获得GRBgeterrormsg.
参数:
模型:需要添加新约束的模型。
numconstrs:要添加的新约束的数量。
numnz:新约束中非零系数的总数。
cbeg:约束矩阵非零值通过该例程以压缩稀疏行(Compressed Sparse Row,简称CSR)格式传递到该例程。约束矩阵中的每个约束被表示为一个索引值对列表,其中每个索引项提供一个非零系数的变量索引,每个值项提供相应的非零值。每个新的约束都有一个关联的cbeg中的非零约束的起始位置cind和cval数组。这个例程要求非零约束我立即遵循那些约束张在cind和cval.因此,cbeg[我]指示约束中第一个非零的索引我以及约束条件的非零端点张.为了举例说明如何使用这种表示,请考虑以下情况cbeg [2] = 10和cbeg [3] = 12.这将表明约束2有两个与之相关的非零值。其可变指标可在cind [10]和cind [11],这些非零的数值可在cval [10]和cval [11].
cind:与非零值相关的变量索引。查看描述cbeg说明更多信息。
cval:与约束矩阵非零相关的数值。查看描述cbeg说明更多信息。
感觉:感知新的约束。选项是GRB_LESS_EQUAL,GRB_EQUAL,或GRB_GREATER_EQUAL.
园艺学会:新约束的右边值。这个论证可以是零,在这种情况下,右侧值被设置为0.0.
constrnames:新约束的名称。这个论证可以是零,在这种情况下,所有约束都给出默认名称。