一、登山搜索算法

  1. 产生一个初始点;
  2. 向领域最高的方向移动

Python 最优解计算 python求解最优化问题_Python 最优解计算

问题:依赖于初始状态,容易陷入局部最优

改进:

  1. 局部束搜索:随机产生多个初始点,并行搜索(多几个人从不同位置开始爬山,能到达最高点的概率就大大增加);
  2. 随机重启:在指定步以后,简单的随机选取一个状态重新开始登上搜索;

二、模拟退火算法

模拟退火算法是对登山算法的一种改进,以一定的概率接收更差的解,从而跳出局部最优的限制;

采用传统的登山搜索策略,但是不时朝产生改进解的方向移动,即下山移动。随着时间推移,采取下山移动的概率逐渐降低,并且下山移动的步长逐渐减小。

Python 最优解计算 python求解最优化问题_贪心算法_02

1.产生初始点;

2.随机向周围移动‘

3.移动后结果更优则接受;

4.移动后结果更差,则以一定的概率接收;

模拟退火模拟的是高温物体自然降温的过程,当温度较高的时候,分子运动速度快,接收更差解的概念更大。

Python 最优解计算 python求解最优化问题_启发式算法_03

三、群智能

1. 鸟群算法:

     模拟鸟群的三个性质

Python 最优解计算 python求解最优化问题_贪心算法_04

            1)鸟群的个体之间不会相撞;

            2)鸟群有一个共同的目标方向;

            3)个体会向团体中心聚拢。

产生初试点阵,每个点都有自己的运动方向与速度,这些点总体向着历史最优解方向移动,并且向当前所有点中的最优点聚拢;

Python 最优解计算 python求解最优化问题_最优解_05

Python 最优解计算 python求解最优化问题_Python 最优解计算_06

Python 最优解计算 python求解最优化问题_启发式算法_07

2.蚁群算法

  模拟蚁群寻找最短路的算法。

1)蚂蚁在行进的过程会留下信息素,当碰到分叉的时候,蚂蚁会倾向于走信息素浓度更大的路径;

2)信息素会随着时间的延迟而稀释;

3)蚂蚁行进的速度是一样的,因此在单位时间内,短路径上的蚂蚁数量比长路径上的蚂蚁数量要多,从而蚂蚁留下的信息素浓度也就越高。

Python 最优解计算 python求解最优化问题_贪心算法_08

 

四、遗传算法

 模拟自然界生物的遗传;DNA链上记载有信息;基因会发生变异;自然(人工)选择,适者生存。

Python 最优解计算 python求解最优化问题_最优解_09

Python 最优解计算 python求解最优化问题_启发式算法_10

五、元启发式算法

如果问题有n个解,一个启发式规则只能对应于n个解中的一个。启发式规则既可能产生很好的解也可能产生很差的解。

元启发式算法是一种寻有能力很强的启发式算法。

1.从一个或多个候选解开始作为初始值;

2.根据初始值计算目标函数值;

3.基于已获得的信息,通过个体变异、组合等方法不断更新候选解域;

4.新的候选解域进入下一轮迭代;

元启发算法相当于在整个解空间内搜索最优解,当运行时间无限大时,理论上可以得到全局最优解。但是当问题规模不断扩大,使用元启发算法的效率也会降低。

超启发算法通过制定高层控制策略来操纵底层贪心策略,从而压缩解空间,达到剪枝的目的(最优解所在的空间有可能被剪掉)。

可以这样理解:元启发算法是随机交换,而超启发算法交换的时候要从贪心策略库中随机选择一种规则,交换的部分满足交换规则。

超启发算法步骤:

1.根据常识或计算制定贪心规则库;

2.从贪心规则库里随机选择一条,交换的时候必须满足这一规则;


启发式方法

启发式方法指人在解决问题时所采取的一种根据经验规则进行解决的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统的、以确定的步骤寻求答案。

以下围绕生产调度的不同问题,分别使用三种不同层次的启发式方法进行求解。

一、启发式规则

贪心算法:对某些求最优解问题简单又迅速的设计技术。

贪心算法设计算法的特点是一步一步地进行,常以当前情况为基础,根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。

贪心算法的特点:

1)深度搜索,“一条路走到黑”;

2)一般可以快速得到一个解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间;

3)以当前情况为基础作最优选择,而不考虑各种可能的整体情况,不存在回溯。

二、元启发式算法

三、超启发式算法