我想在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,但我没有得到如何以正确的格式编写显示它将显示为乳胶文本。抱歉,记谱法。
答案 0 :(得分:0)
这似乎是你的reference。但是你的问题似乎与不同的例子有关。你可能需要展示一个。
无论如何根据Gurobi文件:
目标函数中的二次项应由opts.QP.qrow,opts.QP.qcol和opts.QP.qval指定,它们对应于函数GRBaddqpterms的输入参数qrow,qcol和qval。它们都是一维数组。前两个参数qrow和qcol指定二阶项的行和列索引(从0开始),例如和。第三个参数qval给出了它们的系数。
所以答案是肯定的,使用指标[0 1 2 3]作为决策变量x0,x1,x2,x3。