我想用 MOSEK 求解器来解决这个问题,但是不行。
x_num = 36;
xd = rand * 3000;
yd = rand * 3000;
x = initialize_user(x_num);
M = 1e9;
u = zeros(x_num,1);
for i =1:x_num
if ((x(i,1)-xd)^2+(x(i,2)-yd)^2) <= R1^2
u(i) = 1;
end
end
R1 = 100;
M = 1e9;
clear prob;
num_variables = 2 + x_num;
prob.c = [0, 0, u'];
num_constraints = x_num;
prob.a = zeros(num_constraints, num_variables);
for i = 1:x_num
prob.a(i, 2+i) = 1;
prob.a(i, 1) = -2 * x(i, 1);
prob.a(i, 2) = -2 * x(i, 2);
prob.a(i, 3+x_num+i) = -1;
prob.buc(i) = -R1^2 - M;
end
prob.blx = [0; 0; zeros(x_num, 1)];
prob.bux = [3000; 30000; ones(x_num, 1)];
clear param;
param.MSK_IPAR_INTPNT_MAX_ITERATIONS = 200;
[r, res] = mosekopt('maximize', prob, param);
*** 错误(1200):prob.c 的长度错误
Mosek 错误:MSK_RES_ERR_IN_ARGUMENT(函数参数不正确。)
prob的定义可能有问题,但不知道如何修改。请帮我解决这个问题,或者给我一些建议
prob的定义可能有问题,但不知道如何修改。请帮我解决这个问题,或者给我一些建议