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中的非零约束的起始位置cindcval数组。这个例程要求非零约束立即遵循那些约束cindcval.因此,cbeg[我]指示约束中第一个非零的索引以及约束条件的非零端点.为了举例说明如何使用这种表示,请考虑以下情况cbeg [2] = 10cbeg [3] = 12.这将表明约束2有两个与之相关的非零值。其可变指标可在cind [10]cind [11],这些非零的数值可在cval [10]cval [11]

cind:与非零值相关的变量索引。查看描述cbeg说明更多信息。

cval:与约束矩阵非零相关的数值。查看描述cbeg说明更多信息。

感觉:感知新的约束。选项是GRB_LESS_EQUALGRB_EQUAL,或GRB_GREATER_EQUAL

园艺学会:新约束的右边值。这个论证可以是,在这种情况下,右侧值被设置为0.0

constrnames:新约束的名称。这个论证可以是,在这种情况下,所有约束都给出默认名称。