本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流。

混合优化算法优化策略

变邻域搜索算法是一种快速和有效的求解复杂组合优化问题的局部搜索算法,通过邻域结构的系统化变换避免陷入局部最优。但是,传统的遗传算法的局部搜索能力较差,而变邻域搜索对初始解和邻域结构的质量有较强的依赖性。
混合优化算法GAVNS(genetic algorithm variable neighborhood search),在改进遗传算法的基础上,与局部搜索能力强的变邻域搜索进行有机组合。

初始解产生

初始解的产生有多种方式,可以采用随机方式和改进的优先分配规则等方式。由于在FJSP中存在某一道工序可以被多台机器进行加工,为了尽量保持各机器之间的负荷平衡,本章采用GLR方法产生初始解。在进行染色体个体解码时,仍采用之前的工序插入式解码方法,将染色体解码成活动调度

记忆库保优策略

传统遗传算法中进行交叉操作的个体都是从种群中选取的,这只是个体从种群中获取更新信息的一种方式。在这种信息交换机制中,个体过于“贪婪”地获取更新信息,算法容易早熟。针对这种信息共享机制的局限性,同时为了更好保护进化过程中出现的优良个体,本章利用记忆库来保留搜索过程中好的解。Tamaki提到柔性作业车间调度问题解的搜索空间到可行解目标函数值的映射并不是一对一的,而是多对一的关系如下图。为此在外部记忆库更新过程中引入海明距离的概念,以保留最优值(目标函数值)相等,但最优解(调度方案)不同的个体.

为此,当新的优良个体准备插入到外部记忆库时,更新过程可以描述为,将每一个优良个体与记忆库中的每一个个体目标函数值进行比较,如果优于记忆库中的个体,则替换;如果与记忆库中最好的目标函数值相同再比较机器选择部分的海明距离,若为零,则不替换;若不为零,替换记忆库中的最差个体。如此反复,直到所有优良个体比较完毕为止。

遗传操作

1.选择操作

选择操作是根据个体适应度值的优劣程度决定其是否作为交叉操作的个体,以保证优良个体信息能够继续保留的方法。采用锦标赛选择方法,设k=2,随机选择两个个体,比较两个个体的适应度值,选择较优个体作为交叉对象。采用轮盘赌选择时,需要将目标函数值映射成适应度值,在映射过程中,存在参数影响。而锦标赛选择则避免了这一问题。

2.交叉操作

交叉操作影响着遗传算法的全局搜索能力,它是将两个个体的部分结构加以重组进而产生新个体的操作。采用之前文中分别对机器选择部分和工序排序部分进行交叉的方式。以往单一的个体选择方法使得适应度大的个体被选择的机会大大增加,此类个体很快就会占领全部种群,从而导致超级个体问题,种群的多样性减少,导致算法“早熟”收敛。

3.变异操作

变异操作影响着遗传算法的局部搜索能力,影响种群的多样性。在操作过程中只能对个体进行较小的扰动,以防止优良信息及优良信息片段被破坏。本章针对FJSP染色体编码方式的特点,对机器选择部分采用3.2.5节中的变异方式;对于工序排序部分,不采用基于邻域的变异方式而是采用交换变异方式,即在染色体中随机选择两个不相同的位置,将其进行交换。采取这些操作主要为了提高混合算法的效率,同时避免和变邻域搜索算法的重复。

邻域结构研究

变邻域搜索算法主要利用多个邻域结构的系统化变换的思想,提高算法局部搜索能力,并避免陷入局部最优。邻域结构的设计是否合理对变邻域搜索算法的寻优性能将产生直接影响。在作业车间调度问题中,关键路径直接影响一个调度方案的最大完工时间,一般邻域的移动都是通过对关键路径上的工序进行小的扰动产生的,只有如此,才有可能缩短当前解的最大完工时间。对于经典JSP的邻域结构研究较多,并且大都是基于关键路径进行设计的,由最初的以关键工序为单位到后来的以关键块为单位。如Laarhoven等、Dell’Amico和Trubian、Nowicki和Smutnicki、Balas和Vazacopoulos曾分别提出了不同的邻域结构,但是对于FJSP需要考虑机器选择问题,在设计邻域结构时也必须考虑到机器选择问题。为此本章结合变邻域搜索算法特点,针对FJSP主要采用两种邻域结构,即移动一道工序邻域结构和移动两道工序邻域结构.

1.移动一道工序邻域

结构在移动一道工序邻域结构中,通过对关键路径上的一道工序在机器链表中位置进行移动或插入操作来得到新解。对一道工序从在可选加工机器集中确定加工机器,以及选定机器之后如何插入到可行节点位置这两个方面同时考虑。假设:用O表示所有工序的集合,即O={Ojh∣j=1,2...n;1≤n≤hj}O=\{O_{jh}|j=1,2...n;1≤n≤h_j\}O={Ojh​∣j=1,2...n;1≤n≤hj​},其中第j个工件包含hjh_jhj​个工序;G表示当前调度解的有向图,G-表示将节点工序v(v∈O)移除后的有向图,G′表示将工序v插入到G-之后的有向图;工序v的可选加工机器集为Ωv。那么工序v在关键路径上的移动和插入操作如下。

  • 步骤1删除节点v与同一台机器上其他节点的弧连接,设置节点v的权值为零。
  • 步骤2从v的可选加工机器集中选择一台机器i(i∈Ωv),将v分配给机器i,并且选择合适的插入位置,设置节点v的权值即在机器i上的加工时间为pivp_{iv}piv​。
  • 假设sxs_xsx​和cxc_xcx​分别表示在图G−G^-G−中工序x(x∈O)的开始加工时间和完工时间。则在图G−G^-G−中,对于任意工序x,都有

    并且对于节点v处的开始时间和完工时间分别为

    如果节点v是第1道(最后一道)工序,那么PJ(v)=0(SJ(v)=*),并且节点工序v移除之后并不能影响前序工序的开始时间和后续工序的结束时间,即

    所有的v插入位置中必然包括一个使总完工时间最小的插入,通过上面的操作可以得到工序v的所有邻域解集为

    式中:FivF_{iv}Fiv​表示在机器i上的所有可行邻域解集。但是节点插入位置必须满足一定条件才可以是可行解,假设QiQ_iQi​是图G-G^-G-中在机器i上加工的工序集,其中v∉QiQ_iQi​,设QiQ_iQi​中的两个子节点集RiR_iRi​和LiL_iLi​定义为

    则将工序v插入到LiL_iLi​(或RiR_iRi​)所有工序之后,并且在RiR_iRi​(或LiL_iLi​)所有工序之前的邻域解集合为FivF_{iv}Fiv​。

(1)RiR_iRi​的特点通过上面对RiR_iRi​的定义可知:在图G-中,从任意工序x(其中x∈RiR_iRi​)到工序v都不存在路径。如果x是属于QiQ_iQi​或RiR_iRi​的一个工序,那么Sx+px≤svS_x+p_x≤s_vSx​+px​≤sv​。因此,sv≥sv−,pv>0s_v≥s_v^-,p_v>0sv​≥sv−​,pv​>0,则sx<sv+pvs_x<s_v+p_vsx​<sv​+pv​。但是在图G中(包括在图G-中)从v到QiQ_iQi​或RiR_iRi​任何工序的路径是不存在的。
(2)LiL_iLi​的特点同样,通过上面对Li的定义可知:在图G-G^-G-中,从工序v到任意工序x(其中x∈Li)的路径是不存在的。如果x是属于QiQ_iQi​或LiL_iLi​中的一个工序,那么px+cx≤cv−p_x+c_x≤c_v^-px​+cx​≤cv−​。因此,既然cv≥cv−c_v≥c_v^-cv​≥cv−​和pv>0p_v>0pv​>0,则cx<pv+cvc_x<p_v+c_vcx​<pv​+cv​。但是在图G中(包括在图G-G^-G-中)从QiQ_iQi​或Ri任何工序到v的路径是不存在的。
换言之,当工序v换到机器i上时,如果在图G-G^-G-中从x到v的路径存在,只有当工序x必须在工序v之前调度时才会产生可行解;反之,如果从工序v到工序x的路径存在,只有当工序x必须在工序v之后调度时才会产生可行解;如果在工序x和工序v之间不存在路径,无论工序x放到工序v前或后都会产生可行解。Mastrolilli已经证明:节点v的最优插入位置在所有节点LiL_iLi​∩RiR_iRi​之后和在所有节点RiR_iRi​∩LiL_iLi​之前

【车间调度】变邻域遗传算法求解柔性作业车间调度问题相关推荐

  1. 【车间调度】免疫遗传算法求解多目标生产调度问题【含Matlab源码 710期】

    ⛄一.生产调度简介 1 车间调度定义 车间调度是指给定一个加工任务,根据已有的生产条件,对有限的系统资源进行分配,对产品的加工步骤进行安排,使得某项性能指标最优.在实际生产过程中,所涉及的约束条件主要 ...

  2. 【车间调度】基于遗传算法求解柔性生产调度问题GA-FJSP附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  3. 【车间调度】灰狼优化算法求解柔性作业车间问题【含Matlab源码 661期】

    ⛄一.车间调度简介 1 车间调度定义 车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源.提高企业经济效益的目的.车间调度问题从数学上可以描述为有n个待加工的零件要在m台 ...

  4. ga设置迭代次数_种群进化+邻域搜索的混合算法(GA+TS)求解柔性作业车间调度问题(FJSP)算法介绍...

    程序猿声 代码黑科技的分享区 过去小编简单了解过作业车间调度问题(JSP),这两个月简单接触了柔性车间调度问题(FJSP),但是因为一些原因打算暂时研究到这里.在研究的时候,小编发现网上这方面的中文资 ...

  5. 【车间调度】基于灰狼优化算法求解柔性作业车间问题matlab源码

    一.简介 Grey Wolf Optimizer是Seyedali Mirjalili受大灰狼捕食策略的启发,于2014年提出的一种元启发式算法,主要模拟了搜索猎物.包围猎物和攻击猎物,源代码关注公众 ...

  6. Q-learning算法辅助求解柔性作业车间调度问题--附带源码测试集模型

    Q学习算法求解FJSP 摘要 论文简介 Q-learning 算法 Q学习算法 如何设计Q学习算法 我是如何设计的 第二类型模糊数的FJSP问题 提出的算法 框架 初始化方法 局部搜索策略 贪心节能策 ...

  7. (MATLAB代码分享,可运行)基于改进遗传算法的柔性作业车间调度优化研究

    问题描述 柔性加工车间,一个工件的单个工序的加工机床可以由多台机床完成,一个机床可以加工多种工件. 多目标优化的时候,加权系数暂定a=1,b=1; a+b=1,a=0.6或0.7或,0.8 单目标的时 ...

  8. 改进差分进化算法及其求解柔性作业车间调度问题(Python代码实现)

  9. 柔性作业车间调度问题研究-思考

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 作业车间调度vs柔性作业车间调度 深挖柔性作业车间调度 算法层面: 问题层面: 融合层面: 应用层面: 结语 最近一段时间写了一些算法原理相关的文章, ...

最新文章

  1. 怎样学好python-如何学好python——致python初学者的天梯
  2. 计算机二级c在哪里学习,2017年计算机二级C语言考点学习
  3. Python基础教程:列表字典的键值修改
  4. 彻底搞清楚javascript中的require、import和export
  5. TypeError: 'numpy.ndarray' object is not callable
  6. idea代码可以编译但是爆红_推荐一款 IDEA 生成代码神器,写代码再也不用加班了...
  7. wxpython有哪些基本功能_用Python中的wxPython实现最基本的浏览器功能
  8. STL9-vector容器
  9. macos 下 vmware fusion 安装 vmware tools教程
  10. opengl学习笔记(六)
  11. 【Elasticsearch】ARS提升检索吞吐率
  12. python解释器安装步骤_Python 解释器
  13. Confluence或JIRA验证码乱码的问题
  14. 云服务器项目乱码,云服务器Ubuntu系统下中文乱码问题解决方案
  15. java jersey_Java Jersey使用总结(转)
  16. python 发送邮件实现 抄送,密送
  17. [BZOJ]4699: 树上的最短路 特殊技巧的最短路
  18. 读书笔记(十二)--穷爸爸,富爸爸
  19. 【python初学者日记】selenium初体验——“秒杀商品”、“清空购物车”技能养成记(一)
  20. 巴拿赫空间上的复变函数

热门文章

  1. mmWave SDK Module Documentation--Millimeter Wave(mmw) Demo for XWR18XX
  2. windows搭建go语言开发环境
  3. html js怎么访问url地址,HTML URL地址解析
  4. 图片循环滚动代码(无缝滚动)
  5. BOSS直聘上市背后:招聘新人与行业老炮的终极对决
  6. 凤凰网读书频道源代码泄露漏洞
  7. 摄像头编码模式定码率CBR和变码率VBR有什么区别
  8. [jzoj 3461]【NOIP2013模拟联考5】小麦亩产一千八 {Fibonacci数列}
  9. 【uni-app框架介绍及环境配置】
  10. 常用数学符号读法及其含义