绪论
本人正在基于Matlab学习非线性规划,在编程时碰到了一个非常诡异的错误,经过不断debug才得以解决。具体情况是这样的:我需要把非线性规划的两个限制条件写入一个数组,但是debug的时候它死活报错“数组维度不统一”。可是之前本人在练习线性规划的时候,也把若干个限制条件写入了一个数组,那个时候是正常运行的。所以我就纳闷了。不过经过反复debug,发现原来是运算符号诸如“+”、“-”、“^”、“\”左右两边不能有空格。我估摸着大概是因为有空格就表示两个元素了。
function [g,h] = constraint_1(x)
% x决策变量向量
% g 为 不等式约束
% h 为等式约束
%%注意同一行运算符两侧不能有空格
g =[-x(1)^2+x(2)-x(3)^2
x(1)+x(2)^2+x(3)^3-20]; % 非线性不等式约束
%%注意同一行运算符两侧不能有空格
h = [-x(1)-x(2)^2+2
x(2)+2*x(3)^2-3]; % 非线性等式约束
end