【matlab基础知识代码】(十八)无约束最优化问题

min下面的x称为优化向量或者是决策变量

 

匿名函数法

>> f=@(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2)); x0=[0; 0]; [x,b,c,d]=fminsearch(f,x0),

x =

    0.6111
   -0.3056


b =

   -0.6414


c =

     1


d = 

  包含以下字段的 struct:

    iterations: 72
     funcCount: 137
     algorithm: 'Nelder-Mead simplex direct search'
       message: '优化已终止:↵ 当前的 x 满足使用 1.000000e-04 的 OPTIONS.TolX 的终止条件,↵F(X) 满足使用 1.000000e-04 的 OPTIONS.TolFun 的收敛条件↵'

使用函数fminunc():

>>  [x,b,c,d]=fminunc(f,[0;.0])

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

<stopping criteria details>

x =

    0.6110
   -0.3055


b =

   -0.6414


c =

     1


d = 

  包含以下字段的 struct:

       iterations: 7
        funcCount: 27
         stepsize: 1.8220e-04
     lssteplength: 1
    firstorderopt: 1.8030e-06
        algorithm: 'quasi-newton'
          message: '↵Local minimum found.↵↵Optimization completed because the size of the gradient is less than↵the value of the optimality tolerance.↵↵<stopping criteria details>↵↵Optimization completed: The first-order optimality measure, 6.010135e-07, is less ↵than options.OptimalityTolerance = 1.000000e-06.↵↵'

 绘制三维等高线 ,获得并叠印中间结果

>>  [x,y]=meshgrid(-3:.1:3, -2:.1:2); z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); contour(x,y,z,30);
 ff=optimset; 
ff.OutputFcn=@myout; x0=[2 1]; 
x=fminunc(f,x0,ff)

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

<stopping criteria details>

x =

    0.6110   -0.3055

 

最优化求解函数的另一种调用方法

建立最优化问题的“结构体”模型

>>  problem.solver='fminunc'; problem.options=optimset; problem.objective=@(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2)); problem.x0=[2; 1]; [x,b,c,d]=fminunc(problem)

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

<stopping criteria details>

x =

    0.6110
   -0.3055


b =

   -0.6414


c =

     1


d = 

  包含以下字段的 struct:

       iterations: 7
        funcCount: 66
         stepsize: 1.7059e-04
     lssteplength: 1
    firstorderopt: 7.4506e-09
        algorithm: 'quasi-newton'
          message: '↵Local minimum found.↵↵Optimization completed because the size of the gradient is less than↵the value of the optimality tolerance.↵↵<stopping criteria details>↵↵Optimization completed: The first-order optimality measure, 7.437017e-09, is less ↵than options.OptimalityTolerance = 1.000000e-06.↵↵'

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 12:08:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 12:08:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 12:08:07       87 阅读
  4. Python语言-面向对象

    2024-05-12 12:08:07       96 阅读

热门阅读

  1. 【Python】items()方法的介绍和使用方式

    2024-05-12 12:08:07       28 阅读
  2. Sass详解

    2024-05-12 12:08:07       32 阅读
  3. React 学习-9-数据,绑定+refs

    2024-05-12 12:08:07       29 阅读
  4. Vue11 Vue3完结撒花

    2024-05-12 12:08:07       25 阅读
  5. AIGC全面介绍:探索人工智能通用计算的未来

    2024-05-12 12:08:07       38 阅读
  6. 顺序表和链表

    2024-05-12 12:08:07       30 阅读
  7. 巩固学习5

    2024-05-12 12:08:07       33 阅读