最优化方法在很多领域都特别有用,目的就是要求:最大值或者最小值,优化算法有很多中,不同的优化问题(离散的/连续的,有约束的/没约束的,线性的/非线性)有不一样的优化算法的。对于连续和线性等简单的问题,可以选择一些经典算法:梯度、Hessian矩阵、拉格朗日乘数、单纯形法、牛顿法、梯度下降等等;对于更为复杂的问题,可能需要考虑一些智能优化算法,如遗传算法、蚁群算法、模拟退火、禁忌搜索、粒子群算法、蛙跳算法、人工鱼群算法、细菌觅食算法、果蝇算法、神经网络等等。
优化算法的分类
1.传统优化算法
大多数利用目标函数的梯度(或导数)信息实现单可行解的惯序、确定性搜索。
2.启发式算法:
神奇的大自然,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(Heuristic Algorithm)。启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。按百科的定义是:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度不一定事先可以预计。
启发式算法的难点是建立符合实际问题的一系列启发式规则。下面是网上转来的:
智能优化算法,其实也就是现代启发式算法。它们都是通过模拟自然界生物群体行为从而寻求全局最优的仿生优化算法
遗传算法(GA)、蚁群算法、模拟退火(SA)、禁忌搜索(TS)、粒子群算法、蛙跳算法、人工鱼群算法、细菌觅食算法、果蝇算法、神经网络、杂草优化算法、差分进化算法等等。(感觉不可思议,大自然给人的启示太多了)
启发式方法以仿生算法为主,通过启发式搜索策略,实现多可行解的并行、随机化。另外,启发式搜索算法不要求目标函数连续、可微等信息,具有较好的全局寻优能力、因而成为最优化领域的一个研究热点。
下面我们将进行一个小小的总结:
一、无约束极值(最大值和最小值)问题
1.牛顿法
以爬山为例子:
如果你在山脚,看到了山顶(这意味着这种算法得到的是一个全局最优解,当然是条件的,函数需要满足一定的条件),你就不管三七二十一了,直接就往山顶那个方向不要命的冲,直到到达山顶。这个就是牛顿法