Matlab无约束非线性规划的求解

标准形式:

\[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