向模型添加约束

向模型添加约束

一旦新的变量被整合到模型中,下一步就是添加我们的两个线性约束。这些约束是通过GRBaddconstr ()例行公事。要添加约束,必须指定几条信息,包括与约束相关的非零值、约束含义、右侧值和约束名称。这些都被指定为参数GRBaddconstr ()


/*第一个约束:x + 2 y + 3 z <= 4 */ ind[0] = 0;印第安纳州[1]= 1;印第安纳州[2]= 2;val [0] = 1;val [1] = 2;val [2] = 3;error = GRBaddconstr(model, 3, ind, val, GRB_LESS_EQUAL, 4.0, "c0"); / /输入参数if (error) goto QUIT;

第一个论点GRBaddconstr ()是要添加约束的模型。第二个是与新约束相关的非零系数的总数。接下来的两个参数描述了新约束中的非零。约束系数使用索引值对列表指定,每个非零值对应一个索引值对。在我们的示例中,要添加的第一个约束是<span>$</span>x + 2y + 3z \leq 4<span>$</span>.我们选择去做< span > < /美元跨度> x < span > < / span >美元约束矩阵中的第一个变量,< span > < / span > y < span >美元< / span >第二,< span > < / span > z < span >美元< / span >第三个(注意这个选择是任意的)。给定变量排序选择,第一个约束所需的索引值对是(0,1.0)、(1,2.0)和(2,3.0)。这些对放在印第安纳州瓦尔数组。

第五个论证GRBaddconstr ()提供了新的约束感。可能的值是GRB_LESS_EQUALGRB_GREATER_EQUAL,或GRB_EQUAL.第六个参数给出了右边的值。最后一个参数给出了约束的名称(通过指定,我们允许约束接受它的默认名称这个论点)。第二个约束以类似的方式添加。

请注意,常规GRBaddconstrs ()将允许您在单个调用中添加这两个约束。但是,这个例程的参数要复杂得多,没有提供任何显著的优点,因此我们建议您一次添加一个约束。