问题遇到的现象和发生背景
这是要求解的问题
1.考虑问题min f(x)=x12+x22,
s.t. x1+x2-40, x1, x20
(1)写出该问题的对偶问题的步骤;
(2)令X1={(3, 3)T},编程实现割平面法求解对偶问题.
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
syms x1 x2 y1 y2 y3;
%!定(MISSING)义目标函数
g=y1*(x1+x2-4)+y2*x1+y3*x2;
%!定(MISSING)义变量的非负约束
g1=y1>=0;
g2=y2>=0;
g3=y3>=0;
%!定(MISSING)义 primal constraint x1, x2>=0的 dual constraint
g4=y1+y2>=0;
g5=y1+y3>=0;
%!定(MISSING)义 primal constraint x1+x2-4≥ 0的 dual constraint
g6=y1<=0;
%!定(MISSING)义 cutting plane 迭代过程
X=[3 3]';
X_old=X;
while true
Y=[y1 y2 y3]';
c_x=subs(g, [x1 x2], X_old);
c_y=subs(g,[y1 y2 y3],Y);
[y1_list,y2_list,y3_list]=solve(g1,g2,g3,g4,g5,g6,c_x==c_y);
y_opt=[double(y1_list(1)) double(y2_list(1)) double(y3_list(1))];
sub_g=subs(g,[y1 y2 y3], y_opt);
%!X(MISSING) 小于等于零的情况
grad_x=[diff(sub_g,x1);
diff(sub_g,x2)];
if grad_x(1)<=0&&grad_x(2)<=0
break;
end
%!用(MISSING)线性规划求解 X
f=-[x1 x2]';
Aeq=[grad_x];
beq=[0];
lb=[0 0]';
[X,fval]=linprog(f,[],[],Aeq,beq,lb);
%!判(MISSING)断X是否改变
if X_old==X
break;
else
X_old=X;
end
end
fprintf('optimal x: (%lf, %lf)\n',X(1),X(2));
fprintf('optimal y: (%lf, %lf, %lf)\n',y_opt(1),y_opt(2),y_opt(3));
运行结果及详细报错内容
这是报错结果
duiou1
错误使用 sym/subs>normalize (line 226)
Inconsistency between sizes of second and third arguments.
出错 sym/subs>mupadsubs (line 157)
[X2,Y2,symX,symY] = normalize(X,Y); %#ok
出错 sym/subs (line 145)
G = mupadsubs(F,X,Y);
出错 duiou1 (line 23)
c_x=subs(g, [x1 x2], X_old);
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
应该怎么改