GRBaddrangeconstrs


GRBaddrangeconstrs

int GRBaddrangeconstrs GRBmodel *模型,
int numconstrs,
int numnz,
int * cbeg,
int * cind,
* cval,
*低,
*上,
const char * * constrnames)

向模型中添加新的范围约束。范围约束声明输入表达式的值必须在指定的值之间较低的任意解的边界。注意,由于我们的惰性更新方法,新的约束实际上不会添加,直到您更新模型(使用GRBupdatemodel),优化模型(使用GRBoptimize),或者将模型写入磁盘(使用GRBwrite).

如果您的约束矩阵可能包含超过20亿个非零值,您应该考虑使用GRBXaddrangeconstrs这个程序的变体。

返回值:

非零返回值表明在添加约束时发生了问题。指的是错误代码可能返回值列表的表。关于错误的详细信息可以通过调用来获得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说明更多信息。

较低的:线性表达式的下界。

:线性表达式的上界。

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

重要提示:

注意,向模型添加范围约束会同时添加一个新的约束和一个新的变量。如果要对模型中的变量进行计数,请记住为每个范围约束添加一个变量。

还要注意,范围约束在内部存储为相等约束。我们使用添加了范围约束的额外变量来捕获范围信息。因此,感觉属性将始终为GRB_EQUAL