遗传演算法求解混合流水车间调度问题(附C++代码)
欲获取相关代码,请关注我们的微信公众号:数据魔术师。在后台回复遗传车间调度即可下载。
0 前言
各位读者大家好,好久没有介绍演算法的推文了,感觉愧对了读者们热爱学习的心灵。于是,今天我们带来了一个神奇的优化演算法——遗传演算法!
它的优点包括但不限于:遗传演算法对所求解的优化问题没有太多的数学要求,由于他的进化特性,搜索过程中不需要问题的内在性质,对于任意形式的目标函数和约束,无论是线性的还是非线性的,离散的还是连续的都可处理。
进化运算元的遍历性(各态历经性)使得遗传演算法能够非常有效地进行概率意义的全局搜素。
遗传演算法对于各种特殊问题可以提供极大的灵活性来混合构造领域特有的启发式,从而保证演算法的有效性看完了是不是顿时觉得遗传演算法很强大呢?其实遗传演算法在我们之前的推文中就已经出现啦,在干货 | 遗传演算法(Genetic Algorithm) (附代码及注释)以及干货 | 遗传演算法(Genetic Algorithm) Java 详细代码及注释里你都可以学到遗传演算法的相关知识。这次我们要介绍的是
遗传演算法解决混合流水车间调度问题。需要注意的是,在以上两篇推文中求解的是连续优化问题,采用浮点数编码方式可以更好达到精度和空间要求(具体见两篇推文)。而本文求解的是离散优化问题,使用二进位编码和浮点数编码会存在精度误差,使用符号编码是更好的选择。符号编码法是指个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集如{A,B,C…}、{1,2,3...}(数字仅表示为符号)、{A1、A2、A3...}等。本文采用了
符号编码中的数字元号编码。废话不多说,我们赶紧来学习一下这么niubility的演算法吧~