GRBaddqpterms
GRBaddqpterms
int | GRBaddqpterms( | GRBmodel | *模型, |
int | numqnz, | ||
int | * qrow, | ||
int | * qcol, | ||
双 | * qval) |
在已有模型中加入新的二次目标项。注意,新术语(数字上)被添加到现有术语中,并且在行中添加一个术语我
和列j
是否等同于在行中添加一项j
和列我
.您可以在单个调用中添加所有的二次目标项,也可以在多个调用中递增添加它们。
注意,由于我们采用了延迟更新方法,新的二次项实际上不会添加,直到更新模型(使用GRBupdatemodel),优化模型(使用GRBoptimize),或将模型写入磁盘(使用GRBwrite).
要建立一个同时包含线性项和二次项的目标,使用此例程添加二次项并使用Obj属性添加线性项。
如果您希望更改一个二次项,您可以使用此例程将当前项和期望项之间的差相加,或者您可以调用GRBdelq删除所有的二次项,然后重新构建新的二次目标。
返回值:
非零返回值表示在添加二次项时发生了问题。指的是错误代码表中可能的返回值列表。关于错误的详细信息可以通过调用来获得GRBgeterrormsg.
参数:
模型:应加入新的二次目标项的模型。
numqnz:要添加的新的二次目标项数。
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参数以获取更多信息。
重要提示:
请注意,构建二次目标需要一些注意,特别是当您从另一个求解器迁移应用程序时。手机万博登录一些求解器手机万博登录要求您指定整个矩阵,而其他人只接受下三角。此外,一些求解器包含一个隐式的0.5手机万博登录乘数,而其他人则不然。Gurobi界面是建立在二次项,而不是一个矩阵。如果你的二次目标包含一个项2 x y
,你可以将它作为单一项输入,2 x y
,或者作为一对术语,x y
和x y
.
使用示例:
Int qrow[] = {0,0,1};Int qcol[] = {0,1,1};Double qval[] = {2.0, 1.0, 3.0};/*求最小值2 x^2 + x*y + 3 y^2 */ error = GRBaddqpterms(model, 3, qrow, qcol, qval);