0

我想在 Matlab 中使用 Gurobi 求解器,但我不知道如何计算所需的矩阵(qrow 和 qcol)。

供您参考,我正在复制文档中提供的示例。

0.5 x^2 - xy + y^2 - 2x - 6y

受制于

x + y <= 2
-x + 2y <= 2, 2x + y <= 3, x >= 0, y >= 0
c = [-2 -6]; % objective linear term

objtype = 1; % minimization

A = sparse([1 1; -1 2; 2 1]); % constraint coefficients
b = [2; 2; 3]; % constraint right-hand side
lb = []; % [ ] means 0 lower bound
ub = []; % [ ] means inf upper bound
contypes = '$<<
vtypes = [ ]; % [ ] means all variables are continuous
QP.qrow = int32([0 0 1]); % indices of x, x, y as in (0.5 x^2 - xy + y^2); use int64 if sizeof(int) is 8 for you system

QP.qcol = int32([0 1 1]); % indices of x, y, y as in (0.5 x^2 - xy + y^2); use int64 if sizeof(int) is 8 for you system

QP.qval = [0.5 -1 1]; % coefficients of (0.5 x^2 - xy + y^2)

这是否意味着如果我有 4 个决策变量,我应该使用 0、1、2、3 作为我的决策变量 x_1、x_2、x_3、x_4 的索引?

谢谢

注意:我尝试使用 mathurl.com,但我不知道如何以正确的格式书写,表明它将显示为乳胶文本。对不起符号。

4

1 回答 1

0

这似乎是您的参考。但是,您的问题似乎与不同的示例有关。你可能需要出示那个。

无论如何,根据 Gurobi 文档:
目标函数中的二次项应由 opts.QP.qrow、opts.QP.qcol 和 opts.QP.qval 指定,它们对应于函数 GRBaddqpterms 的输入参数 qrow、qcol 和 qval . 它们都是一维数组。前两个参数 qrow 和 qcol 指定二阶项(例如 和 )的行和列索引(从 0 开始)。第三个参数 qval 给出了它们的系数。

所以答案是肯定的,为您的决策变量 x0、x1、x2、x3 使用索引 [0 1 2 3]。

于 2011-03-12T09:13:39.133 回答