求问一下像这种非线性有约束优化问题怎么用matlab编程求解啊? | 您所在的位置:网站首页 › matlab最优化代码 › 求问一下像这种非线性有约束优化问题怎么用matlab编程求解啊? |
这是一个带约束的多变量非线性函数的极值问题。MATLAB中使用fmincon函数来求解这类问题。fmincon函数可以支持的约束条件包括 \left\{ \begin{array}{**lr**} A\cdot x\leq b \\ A_{eq}\cdot x=b_{eq} \\ lb\leq x \leq ub \\ c\left( x \right) \leq 0 \\ c_{eq}\left( x \right) = 0\end{array} \right. 其中 第一个为矩阵形式的线性不等式约束条件,第二个为矩阵形式的等式约束条件,第三个为自变量的取值范围,第四个为非线性不等式约束条件,第五个为非线性等式约束条件。 fmincon函数的语法为 x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)首先,构造一个目标函数, f =@(x) 0.2*(x(1)*x(1)+x(2)*x(2)+x(3)*x(3))+58*x(1)+54*x(2)+50*x(3)-560;确定x的约束条件,在题目中,包括线性不等式,线性等式,自变量上边界和下边界。 A = [-1,-1,0]; b = -100; Aeq = [1,1,1]; beq = 200; lb = [40,0,0]; ub = [100,100,100];利用optimoption函数设置优化参数,设置优化算法为'interior-point'。 options = optimoptions(@fmincon,'Algorithm','interior-point');设置x的初始值(全零即可) x0 = [0,0,0];调用fmincon函数求解 [x,fval] = fmincon(f,x0,A,b,Aeq,beq,lb,ub,[],options);输出结果如下 |
CopyRight 2018-2019 实验室设备网 版权所有 |