GRBaddqpterms


GRBaddqpterms

int GRBaddqpterms GRBmodel *模型,
int numqnz,
int * qrow,
int * qcol,
* qval)

在已有模型中加入新的二次目标项。注意,新术语(数字上)被添加到现有术语中,并且在行中添加一个术语和列j是否等同于在行中添加一项j和列.您可以在单个调用中添加所有的二次目标项,也可以在多个调用中递增添加它们。

注意,由于我们采用了延迟更新方法,新的二次项实际上不会添加,直到更新模型(使用GRBupdatemodel),优化模型(使用GRBoptimize),或将模型写入磁盘(使用GRBwrite).

要建立一个同时包含线性项和二次项的目标,使用此例程添加二次项并使用Obj属性添加线性项。

如果您希望更改一个二次项,您可以使用此例程将当前项和期望项之间的差相加,或者您可以调用GRBdelq删除所有的二次项,然后重新构建新的二次目标。

返回值:

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

参数:

模型:应加入新的二次目标项的模型。

numqnz:要添加的新的二次目标项数。

qrow:与二次术语相关的行指数。使用三个值来表示二次术语:一对索引(存储在qrowqcol,和系数(存储在qval).这三个参数数组为每个二次项提供了相应的值。举个例子< span > < / span > 2美元x_0 ^ 2 + x_0 x_1 + x_1 ^ 2 < span > < / span >美元,你就会numqnz = 3Qrow [] = {0,0,1}Qcol [] = {0,1,1},Qval [] = {2.0, 1.0, 1.0}

qcol:与二次项相关的列索引。参见的描述qrow参数以获取更多信息。

qval:与二次项相关的数值。参见的描述qrow参数以获取更多信息。

重要提示:

请注意,构建二次目标需要一些注意,特别是当您从另一个求解器迁移应用程序时。手机万博登录一些求解器手机万博登录要求您指定整个< span > < / span > Q < span >美元< / span >矩阵,而其他人只接受下三角。此外,一些求解器包含一个隐式的0.5手机万博登录乘数< span > < / span > Q < span >美元< / span >,而其他人则不然。Gurobi界面是建立在二次项,而不是一个< span > < / span > Q < span >美元< / span >矩阵。如果你的二次目标包含一个项2 x y,你可以将它作为单一项输入,2 x y,或者作为一对术语,x yx 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);