GRBaddqconstr
GRBaddqconstr
int | GRBaddqconstr( | GRB模型 | *模型, |
int | numlnz, | ||
int | *林德, | ||
双重的 | *艾瓦尔, | ||
int | 努姆克孜, | ||
int | *克洛, | ||
int | *qcol, | ||
双重的 | *qval, | ||
烧焦 | 感觉 | ||
双重的 | rhs, | ||
常量字符 | *(姓名) |
向模型添加一个新的二次约束。请注意,由于我们的延迟更新方法,在您更新模型(使用GRBupdatemodel),优化模型(使用GRB优化),或将模型写入磁盘(使用GRBwrite).
二次约束由一组二次项、一组线性项、意义和右侧值组成:.二次项通过努姆克孜
,qrow
,qcol
和qval
参数和线性项通过numlnz
,林德
和利瓦尔
论据。
重要提示:Gurobi用于解决二次约束问题的算法只能处理某些类型的二次约束。始终接受以下形式的约束:
- 哪里是半正定的(PSD)
- 哪里是变量的向量,并且为非负变量(二阶锥)
- 哪里是变量的向量,并且和是非负变量(旋转的二阶圆锥体)
返回值:
非零返回值表示添加二次约束时出现问题。请参阅错误代码表获取可能返回值的列表。可通过调用GRBgeterrormsg.
论据:
模型:应向其添加新约束的模型。
numlnz:新二次约束中线性项的数目。
林德:与线性项关联的可变索引。
利瓦尔:与线性项关联的数值。
努姆克伦茨:新二次约束中二次项的数目。
qrow:与二次项关联的行索引。二次项使用三个值表示:一对索引(存储在qrow和qcol)和系数(存储在qval)。关联的参数数组为每个二次项提供相应的值。若要输入二次项,请举例说明,您可以将此例程称为numqnz=3,qrow[]={0,0,1},qcol[]={0,1,1}和qval[]={2.0,1.0,1.0}.
qcol:与二次项关联的列索引。请参阅qrow关于更多信息的争论。
qval:与二次项关联的数值。请参阅qrow关于更多信息的争论。
感觉:检测新的二次约束。选项包括GRB_小于等于或GRB_大于等于.
rhs:新二次约束的右侧值。
施工名称:新二次约束的名称。此参数可以是无效的,在这种情况下,将为约束指定默认名称。
使用示例:
int lind[]={1,2};double lval[]={2.0,1.0};int qrow[]={0,0,1};int qcol[]={0,1,1};double qval[]={2.0,1.0,1.0};/*2 x0^2+x0 x1+x1^2+2 x1+x2<=1*/错误=GRBaddqconstr;