浅谈“优化算法大分类”

算法其实不好分类,因为概念有点宽泛。你不妨百度“十大算法”,其中就有一些不是优化算法,例如密码学算法、随机数生成算法等。但是如果限定只在优化算法中做分类,则会大致有点方向。因为所有的优化算法都是在一个可行域中找到一个解,这个解对应的目标函数值是最优的(最大或者最小)。

可以依据“理论体系”是否完善将算法分为“理论体系内算法”和“理论体系外算法”。根据是否使用目标函数“梯度”信息又可分为“连续优化算法”和“离散优化算法”。具体划分如下:

一、理论体系之内算法

这部分算法有比较完善地理论体系,可以从理论算解释算法收敛到哪里,收敛的速度怎么样。而且不管是离散优化还是连续优化,都可以写成目标+约束的统一数学模型。除此之外,对偶理论是该理论体系中的一大亮点,常常在理论推导和算法设计中扮演去足轻重的角色。

1:连续优化算法

这类算法用到了一个东西,那就是——“梯度”。“梯度”告诉我们往哪个方向走,如果步长足够小的话,则一定是更优的。利

用这个“梯度”信息,我们就可以从当前迭代点迭代至下一个迭代点。

根据二阶信息使用的区别,又可由最基本的最速下降法改进至牛顿法、拟牛顿法、信赖域法、BFGS、Limited-BFGS等。

2:离散优化算法

这类算法基本都归结为一类专门的优化算法——网络优化算法。其最典型最核心的算法设计思路便是动态规划。如果动态规划实

现成本过高,则会放弃部分精度而衍生出近似动态规划。如果最优子结构无法建立成功,则设计相应的贪婪算法。

二、理论体系之外算法

1:基本算法

遗传算法、粒子群算法(鸟群算法、鱼群算法、蜂群算法)、蚁群算法。其中遗传算法作为代表,他的迭代用到了“遗传”、“交叉”、“变异”三个迭代策略,这三种迭代都是概率形势的“乱来”,没有依赖于任何优化信息,这一点跟连续优化和离散优化中的动态规划策略截然不同。然后通过个体“适应度”函数(实质就是目标函数或者其变形)进行筛选。这种迭代不是点到点的迭代,而是一个“种群”到另一个“种群”的演化(进化),且目标函数不影响迭代步,只是影响迭代后(事后)的筛选。

一般来讲给类启发式算法目的是为了将原来大的没边的求解空间缩小到一个较小的求解空间,然后再通过有理论保证的精确优化技术做一个“局部搜索”。

如果求解一个网络的最短路问题,当网络过于庞大且网络结构过于复杂时,动态规划算法基本就难以在一个合理地时间范围内求解出最优解了。这时有两种策略,一种是近似动态规划技术。另一种就是启发式“群智能”优化,例如蚁群算法。

2:框架算法

这类算法单独做没有什么意义,一般都要作为框架,结合其他算法来用,在其框架中不断调用其他算法。

分支定界算法,模拟退火算法。其中分支定界算法结合连续优化算法可以将松弛问题的连续解“过渡”到整数解。针对非凸优化目标函数,一般连续优化算法(凸优化算法)只能收敛到一个“局部最优解”,如何使跳出这种“局部最优解”,慢慢找到“全部最优解”呢?这时,你就要结合模拟退火算法来做了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我为峰666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值