Q学习算法求解FJSP

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

摘要

论文:A Learning-based Memetic Algorithm for Energy-Efficient Flexible Job Shop Scheduling With Type-2 Fuzzy Processing Time
发表期刊:IEEE Transactions on Evolutionary Computation (中科院T1,IF=16.554)
论文链接:论文连接
论文测试集和代码链接:论文代码链接
MILP模型也可以在代码链接下载。
如有疑问请联系邮箱:liruicug@163.com

论文简介

本文,采用Q学习算法驱动的模因算法求解第二类型模糊加工时间的柔性作业车间调度问题。采用了混合启发式初始化方法,MOEA/D多目标优化框架,最小化最大完工时间和总能耗。提出了四种知识驱动的邻域结构,并采用Q学习算法根据收敛性和分布性指标,自适应选择MOEAD的参数T,最后提出了贪心节能策略。

下面介绍一下Q学习算法的设计精髓。本人最近正在学习DQN,Double DQN和Dueling DQN, GAN,seqGAN等技术。

Q-learning 算法

Q学习算法

Q学习算法:

假设有N个状态和M个动作,设定Q表维度为Q(M,N)

Step1:获取智能体当前状态 S t S_t St​
Step2:根据 ϵ \epsilon ϵ-greedy算法,生成随机数r, 如果小于 ϵ \epsilon ϵ则随机选取一个动作 A t A_t At​, 否则选取Q表中当前状态下 Q ( S t , : ) Q(S_t,:) Q(St​,:)这一行Q值最大 m a x Q ( S t , : ) maxQ(S_t,:) maxQ(St​,:)的动作 A t ′ A_t' At′​
Step3:执行完当前动作 A t A_t At​后,在环境中获取当前状态 S t + 1 S_{t+1} St+1​,并根据动作 A t A_t At​产生的效果决定是否给予奖励 R t R_t Rt​。那么获取完一个元组 { S t , A t , R t , S t + 1 } \{S_t,A_t,R_t,S_{t+1}\} {St​,At​,Rt​,St+1​}中的所有元素。就根据以下公式来更新 Q ( S t , A t ) Q(S_t,A_t) Q(St​,At​)的值。
Q ( S t , A t ) ← Q ( S t , A t ) + α ∗ ( R t + γ ∗ m a x Q ( S t + 1 , : ) − Q ( S t , A t ) ) Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha*(R_t+\gamma*maxQ(S_{t+1},:)-Q(S_t,A_t)) Q(St​,At​)←Q(St​,At​)+α∗(Rt​+γ∗maxQ(St+1​,:)−Q(St​,At​))

α \alpha α是学习速率一般是0.01-0.02
γ \gamma γ是折扣因子,来衡量未来因素对当前状态的影响一般是0.8-0.9
Step4:循环到step1,直到训练结束

如何设计Q学习算法

Q-learning算法如何设计描述如下:

  1. 设定好全部状态集 { S 1 , S 2 , . . . S t , S t + 1 , . . . , S n } \{S_1,S_2,...S_t,S_{t+1},...,S_n\} {S1​,S2​,...St​,St+1​,...,Sn​},使得状态转移的时候能够形成闭环,状态集要描述你所有可能出现的状态。
  2. 设定动作集 { A 1 , A 2 , . . . A m } \{A_1,A_2,...A_m\} {A1​,A2​,...Am​}即智能体需要采取的动作
  3. 设定奖励R,可以有负奖励,也可以没有,一般R=10或者根据目标自适应设定。
  4. 状态对描述越精细,轨迹越长,那么性能就越好。

我是如何设计的

首先,MOEA/D的参数T很敏感,所以需要自适应选取。如何自适应,那么我希望,种群能够自动的根据自己的状态调整T以增加自己的分布性。那么结果一般由算法求得的PF衡量,那么我就直接将算法求得的PF作为一个智能体。根据PF的收敛性变化,分布性变化。设定四个状态。分别是:

状态1.收敛性和分布性都增加
状态2:收敛性增加,分布性减少
状态3:收敛性减少,分布性增加
状态4:收敛性和分布性同时减少

那么如何衡量PF的收敛性和分布性,我用了多目标优化的GD指标和Spread指标。但GD指标需要设定参考点。而实际组合优化问题的前沿面不可知,但点的值都很大,所以我在坐标系中0-1均匀的取一系列点。形状像一个斜率为-1的直线。这样便可以衡量GD和Spread的变化。

动作就是MOEA/D的参数T,设置了4个值分别是5,10,15,20

奖励设置为R=10,如果动作使得Spread增加则给予奖励。

第二类型模糊数的FJSP问题

和FJSP一样,也需要确定工序顺序和机器选择。不同的是使用第二类型模糊系统来对现实排产车间中,加工时间不确定性的约束进行预测。文献证明第二类型模糊系统比三角模糊数更好。

同样的模糊集合也有加减操作也有比较大小的操作。

这样就构建了一个fuzzy FJSP模型。目的是对加工时间不确定性进行预测,进而预测整个排产车间的最早完成时间,最晚完成时间。
甘特图就变成了这样

提出的算法

框架

基于学习和参考向量的模因算法LRVMA

第一步:混合启发式规则初始化,有五个启发式规则
第二步:计算当前PF前沿的收敛性CV和分布性DV。初始化变化量都是0
第三步:根据 Δ C V \Delta CV ΔCV和 Δ D V \Delta DV ΔDV获取当前PF的状态 S t S_t St​,并选取一个动作 A t A_t At​也就是MOEA/D的参数T
第四步:更新MOEA/D框架下的参考点
第五步:采用POX进行工序交叉,UX做机器交叉。突变用swap 2op和随机替换机器。获得两个子代
第六步:子代进行局部搜索提升收敛性,并进行贪心节能策略降低能耗
第七步:用子代去更新邻域。
第八步:获取新种群的PF,计算CV和DV,并计算 Δ C V \Delta CV ΔCV和 Δ D V \Delta DV ΔDV获取当前PF的状态 S t + 1 S_{t+1} St+1​
第九步:用公式更新Q表

CV就是GD指标,DV是spead指标

初始化方法

将种群分为5份,ps=100
第一份大小ps/5,随机产生工序顺序,选择当前工序最小加工时间的机器。
第二份大小ps/5,随机产生工序顺序,选择当前工厂中,当前工序进入调度场景中,目前负载最小的机器。
第三份大小ps/5,随机产生工序顺序,选择当前工厂中,当前工序进入调度场景中,目前完工最小的机器。
第四份大小ps/5,首先将工序按照可选机器数量从小 到大排序生成工序顺序,选择当前工厂中,当前工序进入调度场景中,目前负载最小的机器。
第五份大小ps/5,用随机初始化补充完全。直到种群个数为100

局部搜索策略

1.将最后一个完成的工序,换一个加工时间最小的机器
2.将机器负载最大的机器,选一个该机器上工序,换一个机器
3.随机交换两个工序的位置
4.随机选两个工序,后一个插到前一个前。

贪心节能策略

取一个解,根据工序顺序,重构当前每个工序的机器选择。根据两条规则。
1.当前工序到来,尝试插入每个机器末尾,如果没有空闲时间,则当前工序会选择自己加工时间最小的机器
2.如果有空闲时间,则计算在每个机器末尾的能耗,能耗和加工时间还有空闲时间有关。选择能耗最小的机器。
重复以上过程,直到所有工序重构 完成。

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

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

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

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

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

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

  4. 【车间调度】变邻域遗传算法求解柔性作业车间调度问题

    本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流. 混合优化算法优化策略 变邻域搜索算法是一种快速和有效的求解复杂组合优化问题的局部搜索算法,通过邻域结构的系统 ...

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

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

  6. 【优化调度】基于鸟群算法求解车间调度问题Matlab源码

    1 简介 柔性作业车间调度问题是生产调度领域中非常重要的一类带约束优化问题.根据其求解特性,提出一种基于鸟群算法求解以最小化最大完工时间为目标的柔性作业车间调度问题的方法 2 部分代码 clc;cle ...

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

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

  8. 【调度】经典作业车间调度问题VS柔性作业车间调度问题

    经典作业车间调度问题 在传统车间调度模型中,假设工序加工所需要的资源是不具备柔性的资源,工件的所有工序的加工机器是唯一的,且机器顺序是已知的,则可通过确定工序在每台机器上的加工顺序来优化完工时间等系统 ...

  9. 灰狼优化算法GWO求解置换流水车间调度问题FSP

    灰狼优化算法GWO求解置换流水车间调度问题 置换流水车间调度问题(PFSP)是一类最基本.最经典的流水车间调度问题,本文主要讨论使用灰狼优化算法(GWO)求解单目标PFSP. 置换流水车间调度问题模型 ...

最新文章

  1. http://demo.netfoucs.com/jianglonghuang/article/details/44888133
  2. Python 测试开发从入门到高手成长之路
  3. ios--用证书进行真机调试(转)
  4. Android 之 布局训练
  5. 【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )
  6. commons-lang3工具类学习(三)
  7. Flume 中文入门手冊
  8. 如何在结构体里面套结构体_Rust 学习笔记-13 Rust 结构体
  9. RStudio的下载与安装
  10. 2022年安全员-A证考试模拟100题模拟考试平台操作
  11. EditPlus中文版
  12. ActiveX开发流程
  13. erp采购总监个人总结_ERP沙盘实训采购总监总结,学到了很多知识,受益匪浅
  14. 群晖docker安装cms_群晖docker安装蚂蚁笔记安装教程
  15. 大量数据批量插入数据库
  16. 12c及以上参数推荐设置
  17. excel双条件筛选
  18. python处理数据
  19. java xtend_Eclipse Xtend对Java说:我帮你瘦身
  20. Error creating bean with name ‘sqlSessionFactory‘ defined in class path reso

热门文章

  1. 中兴微型计算机,「简讯」5nm Zen4架构锐龙7000处理器曝光;中兴Axon 30系列发布会定档……...
  2. 微信跳转支付宝直接领红包
  3. 分享几款分析流量的工具
  4. Android OpenCv4 图像透视变换之图片矫正
  5. Elasticsearch系列---聚合查询原理
  6. linux查看redis安装目录查看redis端口占用
  7. 如何解决电脑固定IP后无法上网
  8. DS-6602HF配置主码流和子码流访问
  9. 新零售, 听听行业大佬们是怎么说的吧
  10. linux将文件内容全角转半角,字符串半角全角互转详解