实现附加代码后出现以下错误。
错误信息
“fmincon 已停止,因为当前步长的大小小于步长容差的默认值,但在所选的约束容差值范围内不满足约束。”
代码:
rho = (1/3)*eye(3);
v1 = sdpvar(3,1);
v2 = sdpvar(3,1);
v3 = sdpvar(3,1);
v4 = sdpvar(3,1);
v5 = sdpvar(3,1);
obj2 = trace((v1*v1' + v2*v2'+v3*v3'+v4*v4'+v5*v5')*rho);
cons2 = [sum(v1.*v1) == 1; sum(v2.*v2) == 1;sum(v3.*v3) == 1;sum(v4.*v4) == 1;sum(v5.*v5) == 1; sum(v1.*v2) == 0;sum(v2.*v3) == 0;sum(v3.*v4) == 0;sum(v4.*v5) == 0;sum(v5.*v1) == 0];
ops2 = sdpsettings('solver','fmincon');
optimize(cons2, -obj2, ops2);
obj2 = double(obj2)
我尝试通过添加以下代码来更改容差。
options = optimset('TolX',1e-30,'TolFun', 1e-6)
我尝试了不同的值,但它不起作用。任何调试它的建议都会有所帮助。重新表述问题或使用另一个求解器的建议也将不胜感激(如果 fmincon 不是这个问题的最佳求解器)。