GRBaddsos


GRBaddsos

int GRBaddsos GRBmodel *模型,
int numsos,
int nummembers,
int *类型,
int *乞讨,
int *印第安纳州,
*重量)

向模型添加新的特殊有序集(SOS)约束。注意,由于我们的惰性更新方法,新的SOS约束实际上不会添加,直到您更新模型(使用GRBupdatemodel),优化模型(使用GRBoptimize),或者将模型写入磁盘(使用GRBwrite).

请参考本节参阅有关SOS限制的详情。

返回值:

非零返回值表明在添加SOS约束时发生了问题。指的是错误代码可能返回值列表的表。关于错误的详细信息可以通过调用来获得GRBgeterrormsg

参数:

模型:新SOSs应该添加到的模型。

numsos:要添加的新SOSs数量。

nummembers:新SOS的成员总数。

类型: SOS集合的类型。SOS集合可以是多种类型的GRB_SOS_TYPE1GRB_SOS_TYPE2

:添加的SOS集合的成员以压缩稀疏行(Compressed Sparse Row, CSR)格式传递到这个例程。每个SOS都表示为一个索引-值对列表,其中每个索引项提供一个SOS成员的变量索引,每个值项提供该变量在相应SOS集中的权重。每个新的SOS都有一个关联的中的SOS成员列表的起始位置印第安纳州重量数组。这个例程要求为SOS的成员立即跟随那些SOS印第安纳州重量.因此,求[我]指示约束中第一个非零的索引以及约束条件的非零端点.为了举例说明如何使用这种表示,请考虑以下情况请求[2]= 10求[3]= 12.这将表明SOS 2有两个成员。其可变指标可在印第安纳州[10]印第安纳州[11],相关权重可在体重[10]体重[11]

印第安纳州:与SOS成员相关的变量指标。查看描述说明更多信息。

重量:与SOS成员相关的权重。查看描述说明更多信息。

使用示例:

int types[] = {GRB_SOS_TYPE1, GRB_SOS_TYPE1};Int beg[] = {0,2};Int ind[] = {1, 2, 1, 3};Double weight[] = {1, 2, 1, 2};error = grbadsos (model, 2, 4, types, beg, ind, weight);