8 Metaheuristics

作者&投稿:丰审 (若有异议请与网页底部的电邮联系)
~

下图介绍了两种不同种类的Metaheuristics,我们主要用左边的,尤其是Iterated Greedy。

I 和D 的过程用图像表示如下:

我在这里只用Iterated Greedy算法。原因如下:
其他算法诸如蚁群算法等,可能能提供非常接近最优解的方案,有些算法的运行速度也很快,可以弥补python运行慢的缺陷。但是这些算法通常存在诸多不足,例如算法太复杂,适用面很窄,需要设置过多参数导致很难实现。

Iterated Greedy的优势在于,它由两个简单的阶段构成:

D和I
更好的解决方案总会被接受
更坏的方案以特定的可能性接受,接受的概率如下图
类似 模拟退火法

从当前解决方案中随机删除 numberJobsToRemove 个订单。这里 numberJobsToRemove 是Iterated Greedy的一个参数。
输出的结果是被移除的订单集合 removedJobs 和一个不完整的解决方案 partialPermutation

* 注意:solver.RNG.choice的结果每次都一样,是因为我们设置了随机数种子,目的就是只要是用同一个种子作为参数构造出的solver的属性RNG都是同一个。

removedJobs 重新加回 partialPermutation ,并插入到最佳位置(NEH)的顺序,并返回新的完整解决方案。这个插入过程是通过排列Permutation实现的,看一下Construction函数的参数表可知,需要两个列表。
* 注:前面讲算法的时候说过,重构函数执行之后会生成一个新的方案newSolution,新方案就是通过把removedJobs插入到最佳位置得到的。最优位置的选择需要在Construction函数中借助 solver.EvaluationLogic.DetermineBestInsertion(completeSolution, i)来实现

我们通过简单的解构和重构,必然会得出一个新方案newSolution,那么我们接受新方案newSolution为当前方案currentSolution的前提是,如果

- 新的解决方案( newSolution ),
- 当前解决方案( currentSolution )。

* 公式中,T叫做baseTemperature,是Iterated Greedy的第二个参数,T越大,则接受更坏方案的概率也越大。新的最优方案存储在SolutionPool中(numberJobsToRemove是第一个参数)

下面开始对newSolution进行评估和比较:

* 注意:判断一个新方案是否可接受取决于两方面:1. 如果新方案更好,那么无论如何都会接受新方案;2. 如果新方案并没有优化,则视作WorseSolution,即使是worseSolution也是要按照公式计算出的概率来衡量是否要接受这个不好的方案

为了看起来更加直观,我把接受差方案的过程写成了函数AcceptWorseSolution。注意看参数表,以便于确定何时调用这个函数。

局部搜索可以被用于优化currentSOlution,但不是必须的。通常会使用IterativeImprovement结合Insertion邻域一起使用。

Iterated Greedy是一个迭代的解构D和构建C组成的序列。
在一个循环中被反复执行,直到达到 停止标准

在这里的例子中, 停止标准 是迭代次数 maxIterations ,但时间限制或没有优化的迭代次数也是可以的。

后面可能还会讲到怎么设计一个没有优化的迭代次数,这里可以先思考一下。

现在尝试运行一下:

IterativeImprovement 算法类似,现在要为 IteratedGreedy 创建一个单独的类,以便该类的一个实例可以传递给求解器Solver。

IterativeImprovement 一样, Iterated Greedy 应该继承自 ImprovementAlgorithm

必要的 参数 是以下属性:

EvaluationLogic, SolutionPool以及随机数生成器RNG都由求解器solver传递给算法。

添加 IteratedGreedy 类,以便它可以作为一种算法传递给求解器。

成员函数:Konstruktor, Initialize, Destruction, Construction, AcceptWorseSolution, Run




郑州市15599576081: 什么是带时间窗口的车辆路径问题? -
春狭云实: 车辆路线问题(VRP)最早是由Dantzig和Ramser于1959年首次提出,它是指一定数量的客户 ,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线,目标是使得客户的需求得到满足,并能...

郑州市15599576081: 8兆美元是多少人民币 -
春狭云实: 货币兑换: 1美元=7.1834人民币. 所以8兆美元=57.4672兆人民币. (截至2022年10月12日)

郑州市15599576081: 考虑一个由 8 个页面、每页 1024 字节组成的存储空间,把它映射到容量为 32 个物理块 的存储器中 -
春狭云实: 8是2的3次方,32是2的5次方;1024=2的10次方,偏移地址是10位.所以逻辑地址等于3+10=13位.物理地址等于5+10=15位啊

郑州市15599576081: 如何获取用OPAC? -
春狭云实: OPAC其实不是新玩艺儿,可以说是图书馆的老技术了.1998年,IFLA曾经发表了一个有关OPAC的guidelines, 大家如果有兴趣可以点击这里下载.这个guidelines可以说是一个标准,阐述了OPAC的基本要素和信...

郑州市15599576081: 一根木料锯成三段需要八分钟如果每锯一段所用的时间相 -
春狭云实: 解:已知一根木料锯成3段需要8分钟, 且每锯1段所用的时间相同, 得锯1次所用时间=锯3段所用时间÷锯的次数 =锯3段所用时间÷(锯的段数-1) =8÷(3-1) =8÷2 =4分钟 答:锯1次需要4分钟.

郑州市15599576081: 谁知道这代码的含义、请各位大师解答下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF - 8"
春狭云实: 一.这个是网页的头部标示代码:1.DOCTYPE html 的意思是告诉浏览器我是html文档类型,请用DTDs定义了标准解析我吧!(通俗的就像后缀是doc,默认要有word软件打开一样)2.lang=en的意思是告诉浏览器我的定义语言为英语3.charset=...

郑州市15599576081: 8克某物质中含有3.01*10^23个分子,则该物质的相对分子质量约为 -
春狭云实: XX个分子 即半摩尔 即一摩尔有16克 相对分子质量为16

郑州市15599576081: 8的计数单位是(),8.00的计数单位是(),它们的计数单位(),大小()? -
春狭云实: 8的计数单位是1,8.00的计数单位是0.01,

郑州市15599576081: 在密闭器中盛有8g碳和16g氧气,加热使之充分反应后,最后容器里的气体是 -
春狭云实: 8(g)/12(g/mol) = 2/3(mol)16(g)/16(g/mol)= 1 mol 一共有2/3的碳原子和1的氧原子 所以有1/3的一氧化碳和1/3的二氧化碳(单位mol)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网