将要规划求解的问题运用各种原理写成要最大化或者最小化的数学公式后,运用MATLAB求解问题。针对非线性规划,MATLAB提供了如下命令:fimincon.
MATLAB中非线性规划的数学模型可写成如下形式:
f(x)为标量函数,A,B,Aeq,Beq是相应维数的矩阵和向量,C(x),Ceq(x)是非线性向量函数。
如,求解下列非线性规划:
先编写funl.m定义目标函数:
function f = fun1(x);
f = sum(x.^2) + 8;
文件fun2.m定义了非线性约束条件:
function [g,h] = fun2(x);
g = [(-x(1)^2 + x(2) - x(3)^2);(x(1) +x(2)^2 + x(3)^2 - 3)];
h = [(-x(1) - x(2)^2 + 2);(x(2) + 2*x(3)^2 - 3)];
主程序文件example2.m如下:
options = optimset('largescale','off');
[x,y] = fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],...
'fun2',options)
结果为:
x =
0.5522
1.2033
0.9478
y =
10.6511