标准形式:
\[min\quad f(X) \]
没有任何的约束条件,在matlab中,fminsearch() 和 fminunc() 可用于求解非线性规划。
- fminsearch 是用单纯形法寻优
- fminunc 为无约束优化提供了大型优化和中型优化算法
MATLAB 求解无约束非线性规划的步骤
①首先建立一个函数M文件, 如 fun.m,用以储存目标函数。
②其次,调用格式
[x.favl,exitflag,output]=fminunc('fun',X0,options) 或
[x.favl,exitflag,output]=fminsearch('fun',X0,options)
等号左侧:
-
x:返回最优解。
-
favl:返回目标函数在最优解 x 点的函数值。
-
exitflag:返回算法的终止标志。
-
output:返回优化算法信息的一个数据结构。
等号右侧:
- 第一个参数是调用目标函数储存的文件
- 第二个参数是决策变量的初始值
- 第三个输入参数 options 为设置优化选项参数
例:给定初始值为[-1,1],求
\[min\quad f(x)=(4x_1^2+2x^2_2+4x_1x_2+2x_2+1)e^{x_1} \]
1.编写函数fun.m:
function f=fun(x)
f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
end
2.输入如下:
x0=[-1,1];
[x,f]=fminunc('fun',x0)
3.运行结果显示:
x =
0.5000 -1.0000
f =
3.6609e-16