四种最优化方法复盘总结

Posted Jeossirey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四种最优化方法复盘总结相关的知识,希望对你有一定的参考价值。

最优化方法
当我们准备好了一个函数表达式之后,如何求解该函数的最优值就会成为一个巨大的挑战。今天杰哥给大家总结一下常用的四种优化方法。

无约束优化问题
所谓无约束优化问题,就是指对一个函数求最优值,最优值可以出现在函数上任意一点,而我们不去限定查找最优值的范围。

有约束优化问题
有约束优化问题就是指给自变量的取值范围做限制,缩小优化范围,经典的约束优化算法有:

  • 内点法(interior-point)
  • 有效集法(active-set)
  • SQP算法(sqp)
  • 信赖域反射法(trust-region-reflective)

约束,又分线性约束与非线性约束,所谓线性约束,就是指约束条件中的自变量都是1次幂的,非线性约束即有高次幂的自变量出现。

假设有如下约束优化函数和约束:

我们首先把这个函数的图像在Matlab中给大家画出来:

%目标函数图像绘制
x1=-1:0.05:1;
x2=-1:0.05:1;
[x1,x2]=meshgrid(x1,x2);
y=-x1.*x2;
figure(1)
%使用mesh函数画图
mesh(x1,x2,y);
figure(2)
%使用surfl画图
surfl(x1,x2,y);
figure(3)
%使用surf函数画图
surf(x1,x2,y);
%约束区域部分位置
[x1,x2]=meshgrid(-1:0.05:1);
z=1-x1.^2-x2.^2;
ind=(z>=0);
h=scatter(x1(ind),x2(ind));

如图所示:

目标函数图像

 

 使用Matlab实现一下四种优化算法:

function [xsol, fval] = runfmincon
% 初始点
x0 = [-0.1 -0.1];

% 四种优化算法,大家选一种用,杰哥这里用的是内点法
% 'active-set', 'interior-point', 'sqp', or 'trust-region-reflective'.
options = optimset('Display', 'iter-detailed', 'Algorithm', 'interior-point', 'MaxIter', 8); % 优化器参数
% fmincon参数解释
% fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
% fun:要优化的函数
% x0:自变量的初始值
% A:非等式(<)线性约束的约束矩阵A
% b:非等式(<)线性约束的约束条件矩阵b
% Aeq:等式约束的线性约束的约束矩阵Aeq
% beq:等式线性约束的约束条件矩阵beq
% lb,ub:自变量的下限和上限
% nonlcon:非线性约束
[xsol, fval] = fmincon(@objfun, x0, [], [], [], [], [], [], @confun, options);
 
% 目标函数
 function f = objfun(x)
     f = - x(1) * x(2);
 end
 
% 非线性约束
 function [c, ceq] = confun(x)
     % Nonlinear inequality constraints
     c = [x(1)^2 + x(2)^2 - 1];
     % Nonlinear equality constraints
     ceq = [];
 end
end

优化结果:

%在Matlab命令行窗口输入
[xsol,fval] = runfmincon;

% 迭代优化结果
[x1,x2]=[-0.7071,-0.7071]
f=-0.5

具体函数详见我的博客: 轨迹跟踪求解Fmincon函数(2)_Wechat:Jeossirey-LSJ-CSDN博客

以上是关于四种最优化方法复盘总结的主要内容,如果未能解决你的问题,请参考以下文章

近期工作中的一些复盘和总结

为什么要复盘,要写博客?

一个完整的项目复盘到底要怎么做?

mysql查看版本的四种方法

怎样做好活动的复盘?

数据库查询优化复盘-20条必备sql优化技巧