【发布时间】:2018-07-12 02:21:31
【问题描述】:
我正在尝试使用 fmincon 优化 x 以使 R*x 最小化,而 x 可以是 0 到 1.5 之间的值以及 sum(x) = 3
R = transpose([6 6 6 6 6 6 6 9 9 9 9 13 13 13 13 9 9 9 9 6 6 6 6 6]);
x0 = zeros(24,1);
f='0';
for j=1:24
s='%d*x(%d)';
s=sprintf(s,R(j),j);
g='%s+%s';
f=sprintf(g,f,s);
end
A = ones(2,24);
A(2,:) = -1;
b = [1.5; 0]; % Want x's to be between 0 and 1.5
Aeq = ones(1,24);
beq = [3];
%Bounds
lb = zeros(24,1);
ub = ones(24,1);
x = fmincon(f, x0, A, b,Aeq, beq,lb,ub);
我希望 x 的总和等于 3(试图用等价矩阵 Aeq 和 beq 来证明这一点)。运行代码时出现以下错误:
收敛到一个不可行的点
需要注意的是,这段代码显示的是sum(x) = 2.25而不是sum(x) = 3
【问题讨论】:
标签: matlab optimization