GRBaddqconstr
GRBaddqconstr
㈡ | GRBaddqconstr( | GRBmodel | *模型, |
㈡ | numlnz, | ||
㈡ | *林德, | ||
双 | * lval, | ||
㈡ | numqnz, | ||
㈡ | * qrow, | ||
㈡ | * qcol, | ||
双 | * qval, | ||
字符 | 意义上说, | ||
双 | , | ||
const char | * constrname) |
在模型中添加一个新的二次约束。注意,由于我们的延迟更新方法,在您更新模型(使用GRBupdatemodel),优化模型(使用GRBoptimize),或将模型写入磁盘(使用GRBwrite).
一个二次约束由一组二次项、一组线性项、一个意义和右边的值组成:.二次项通过numqnz
,Qrow.
,qcol
,qval
参数和线性项通过numlnz
,林德
,lval
参数。
重要提示:Gurobi用于解决二次约束问题的算法只能处理某些类型的二次约束。本署一向接受下列表格的限制:
- ,在那里为正半定(PSD)
- ,在那里是一个向量的变量,和是一个非负变量(二阶锥)
- ,在那里是一个向量的变量,和和为非负变量(旋转的二阶锥)
返回值:
非零返回值表示在添加二次约束时出现了问题。指的是错误代码表中可能的返回值列表。关于错误的详细信息可以通过调用来获得GRBgeterrormsg.
参数:
模型:应该添加新约束的模型。
numlnz:新的二次约束中线性项的个数。
林德:与线性项相关的变量指标。
lval:与线性项相关的数值。
numqlnz:新的二次约束中二次项的个数。
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_LESS_EQUAL或者GRB_GREATER_EQUAL.
园艺学会:新的二次约束的右边值。
constrname:新的二次约束的名称。这个论证可以是零,在这种情况下,约束被赋予一个默认名称。
示例用法:
Int lind[] = {1, 2};双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 */ error = GRBaddqconstr(model, 2, lind, lval, 3, qrow, qcol, qval, GRB_LESS_EQUAL, 1.0, "New");