当前位置: 首页 > java >正文

2022年TASE SCI2区,学习灰狼算法LGWO+随机柔性车间调度,深度解析+性能实测

目录

    • 1.摘要
    • 2.术语
    • 3.随机柔性车间调度
    • 4.问题模型
    • 5.LGWO算法
    • 6.结果展示
    • 7.参考文献
    • 8.代码获取
    • 9.算法辅导·应用定制·读者交流


1.摘要

本研究针对半导体制造环境中的具有受限额外资源和设备相关设置时间的随机柔性作业车间调度问题,这一问题属于NP-难问题。为了在合理的时间内获得可靠且高性能的调度结果,本文提出了一种基于学习的灰狼算法(LGWO)。LGWO设计了一种基于最优计算预算分配(OCBA)的方法,适用于两个来自实际制造环境的情境,用来实现计算资源的智能分配并提高搜索效率,该方法在理论上扩展了最优计算预算分配的应用领域。为了在迭代过程中获得合适的控制参数,本文引入了一种具有新设计延迟更新策略的强化学习算法,用于构建灰狼算法的参数调优机制,该机制能够有效平衡全局搜索与局部搜索之间的关系,从而提升算法性能。

2.术语

术语

3.随机柔性车间调度

经典的作业车间调度问题(JSP)作为一种NP难题,要求将n个作业分配到m台机器上进行处理,并最大化性能。每个作业包含多个操作,这些操作需要按照特定的顺序完成。其推广形式为FJSP,其中多台机器可以处理作业。进一步的推广是随机版本,其中作业或机器的处理时间/设置时间通过随机分布描述,而不是固定的数值。原因在于许多工业过程中,系统可能会出现不可控的干扰,如机器故障、装卸时间变化和设备性能不稳定。

本研究提出了一种基于学习灰狼算法(LGWO),结合了强化学习(RL)和最优计算预算分配(OCBA),有效且高效地解决我们所考虑的问题。

4.问题模型

本文构建了一个混合整数规划模型。,假设所有作业和机器在初始时刻均可用,且一旦某个工序开始加工,中途不得中断。目标函数为最小化期望完工时间:
M i n i m i z e E [ C max ⁡ ] \mathrm{Minimize~E}[C_{\max}] Minimize E[Cmax]

其中, N M N_M NM为每个个体基本采样次数,通过蒙特卡罗采样计算得到:
E ⁡ [ C max ⁡ ] = 1 N M ∑ y = 1 N M C max ⁡ ( y ) \operatorname{E}[C_{\max}]=\frac{1}{N_M}\sum_{y=1}^{N_M}C_{\max}(y) E[Cmax]=NM1y=1NMCmax(y)
C max ⁡ ( y ) = max ⁡ i = 1 , ⋯ , n , u = 1 , ⋯ , O i , k = 1 , ⋯ , m t i , u , k c ( y ) C_{\max}(y)=\max_{i=1,\cdots,n,u=1,\cdots,O_{i},k=1,\cdots,m}t_{i,u,k}^{c}(y) Cmax(y)=i=1,,n,u=1,,Oi,k=1,,mmaxti,u,kc(y)

其中, C m a x ( y ) C_{max}(y) Cmax(y)为第 y y y次模拟的最大跨度。操作分配约束:
∑ k ∈ E i , u x i , u , k = 1 , x i , u , k ∈ { 0 , 1 } i = 1 , ⋯ , n , u = 1 , ⋯ , N ˚ i \sum_{k\in\mathbf{E}_{i,u}x_{i,u,k}}=1,x_{i,u,k}\in\{0,1\}i=1,\cdots,n,u=1,\cdots,\mathring{N}_{i} kEi,uxi,u,k=1,xi,u,k{0,1}i=1,,n,u=1,,N˚i

不确定处理时间约束:
大量柔性作业车间调度问题(FJSPs)的统计结果表明,加工时间通常服从伽马分布或正态分布。Muralidhar 等人建议使用给定的平均加工时间 t i , u , k p t_{i,u,k}^p ti,u,kp和参数 θ \theta θ,来生成第 y y y次采样下的加工时间 t i , u , k g ( y ) t_{i,u,k}^g(y) ti,u,kg(y),其表达为:
t i , u , k g ( y ) ∼ G a m m a ( α i , u , k , β ) t_{i,u,k}^g(y)\sim\mathrm{Gamma}(\alpha_{i,u,k},\beta) ti,u,kg(y)Gamma(αi,u,k,β)
加工时间约束决定了第 y y y次采样中工序 O i , u O_{i,u} Oi,u完成时间:
[ t i , u , k b ( y ) + t i , u , k g ( y ) ] x i , u , k = t i , u , k c ( y ) x i , u , k [t_{i,u,k}^b(y)+t_{i,u,k}^g(y)]x_{i,u,k}=t_{i,u,k}^c(y)x_{i,u,k} [ti,u,kb(y)+ti,u,kg(y)]xi,u,k=ti,u,kc(y)xi,u,k

机器相关的设置时间限制:

为了维护不同操作的时间表,作业需要切换到下一台机器。如果一个作业的操作及其后续操作在不同的机器上处理,则需要设置时间。

t i , u + 1 , k b ≥ t i , u , k ′ c + t k ′ , k s t^{b}_{i,u+1,k} \geq t^{c}_{i,u,k'} + t^{s}_{k',k} ti,u+1,kbti,u,kc+tk,ks
τ i , u , j , c , k + τ j , c , i , u , k = x i , u , k x j , c , k \tau_{i,u,j,c,k} + \tau_{j,c,i,u,k} = x_{i,u,k} x_{j,c,k} τi,u,j,c,k+τj,c,i,u,k=xi,u,kxj,c,k

机器容量限制:

t i , u , k b ≥ t j , c , k c − D ( 1 − τ i , u , j , c , k ) t_{i,u,k}^b\geq t_{j,c,k}^c-\mathrm{D}(1-\tau_{i,u,j,c,k}) ti,u,kbtj,c,kcD(1τi,u,j,c,k)

有限的额外资源约束:
∑ k = 1 m η ( k , T ) ⋅ R k ( y ) ≤ R , ∀ T \sum_{k=1}^m\eta_{(k,T)}\cdot\mathbf{R}_k(y)\leq\mathbf{R},\forall T k=1mη(k,T)Rk(y)R,T

5.LGWO算法

LGWO伪代码

采用双段编码向量作为编码器,该向量由机器分配向量和操作顺序向量两部分组成。两个向量的长度均等于操作数,并使用区间 [ 0 , 1 ] [0,1] [0,1]内的正实数作为编码值。

OCBA的目标函数为:
max ⁡ N 1 , ⋯ , N N p 1 − ∑ h = 1 , h ≠ ∗ N p P { J ~ ∗ > J ~ u } , \max_{N_1,\cdots,N_{N_p}}1-\sum_{h=1,h\neq*}^{N_p}\mathbb{P}\{\tilde{J}^*>\tilde{J}_u\}, N1,,NNpmax1h=1,h=NpP{J~>J~u},
s . t . ∑ h = 1 N p I h ≤ I T , h = 1 , ⋯ , N p \mathrm{s.t.}\sum_{h=1}^{N_p}I_h\leq I_T,\quad h=1,\cdots,N_p s.t.h=1NpIhIT,h=1,,Np

OCBAP伪代码

在操作前使用RL离线训练参数调优方案。应用强化学习建立参数调优方案的三个重要问题是状态表示、动作构造和奖励函数定义。状态向量需要描述个体的主要特征并跟踪个体的变化:
s = { E t , D t D 0 , V t V 0 , U t U 0 , t N C } T \mathbf{s}=\left\{E^t,\frac{D^t}{D^0},\frac{V^t}{V^0},\frac{U^t}{U^0},\frac{t}{N_C}\right\}^T s={Et,D0Dt,V0Vt,U0Ut,NCt}T

奖励函数:
r ( s , a ) = ∣ ∑ h = 1 N p ψ ( h , a ) N p − ω ∣ r(\mathbf{s},a)=\left|\sum_{h=1}^{N_p}\frac{\psi_{(h,a)}}{N_p}-\omega\right| r(s,a)= h=1NpNpψ(h,a)ω
ψ ( h , a ) = { 1 , f ( x h , a ) − f ( x h ) < 0 0 , f ( x h , a ) − f ( x h ) ≥ 0 \psi_{(h,a)}= \begin{cases} 1, & f(\mathbf{x}_h,a)-f(\mathbf{x}_h)<0 \\ 0, & f(\mathbf{x}_h,a)-f(\mathbf{x}_h)\geq0 & \end{cases} ψ(h,a)={1,0,f(xh,a)f(xh)<0f(xh,a)f(xh)0

具有延迟更新策略更新:
Q ( s , a ) ← Q ( s , a ) + β ⋅ [ r ( s , a ) + γ ⋅ max ⁡ Q ( s ′ , a ′ ) − Q ( s , a ) ] \begin{aligned} \mathbf{Q}(\mathbf{s},a) & \leftarrow\mathbf{Q}(\mathbf{s},a) \\ & +\beta\cdot[r(\mathbf{s},a)+\gamma\cdot\max\mathbf{Q}(\mathbf{s}^{\prime},a^{\prime})-\mathbf{Q}(\mathbf{s},a)] \end{aligned} Q(s,a)Q(s,a)+β[r(s,a)+γmaxQ(s,a)Q(s,a)]

6.结果展示

7.参考文献

[1] Lin C, Cao Z, Zhou M C. Learning-based grey wolf optimizer for stochastic flexible job shop scheduling[J]. IEEE Transactions on Automation Science and Engineering, 2022, 19(4): 3659-3671.

8.代码获取

xx

9.算法辅导·应用定制·读者交流

http://www.xdnf.cn/news/13664.html

相关文章:

  • 手写muduo网络库(七):深入剖析 Acceptor 类
  • 【leetcode】226. 翻转二叉树
  • 专题:2025年跨境B2B采购买家行为分析及采购渠道研究报告|附160+份报告PDF汇总下载
  • 公网 IP 地址SSL证书实现 HTTPS 访问完全指南
  • 暴雨亮相2025中关村论坛数字金融与金融安全大会
  • Guava 在大数据计算场景下的使用指南
  • 《性能之巅》第十章 网络
  • Linux下OLLAMA安装卡住怎么办?
  • 为什么TCP有粘包问题,而UDP没有
  • RK3568 1U机箱,支持电口光口B码对时,适用于电力、交通等
  • Oracle Form判断表单数据重复方法
  • linux 中pdf 的自动分页工具
  • 单片机的中断功能-简要描述(外部中断为例)(8)
  • ArkUI-X在Android上使用Fragment开发指南
  • 多节点并行处理架构
  • Linux 下 pcie 初始化设备枚举流程代码分析
  • 【软件开发】上位机 下位机概念
  • C++11 Type Aliases:从入门到精通
  • Linux笔记之Ubuntu22.04安装 fcitx5 输入法
  • pandas 字符串列迁移至 PyArrow 完整指南:从 object 到 string[pyarrow]
  • Nodejs特训专栏-基础篇:2. JavaScript核心知识在Node.js中的应用
  • STM32 开发 - STM32CubeMX 下载、安装、连接服务器
  • AUTOSAR图解==>AUTOSAR_TR_FrancaIntegration
  • oracle 表空间超过最大限度,清理数据释放内存
  • apple苹果商务管理联合验证使用自定义身份提供方
  • uniapp——input 禁止输入 ,但是可以点击(禁用、可点击)
  • 每日算法刷题Day29 6.12:leetcode二分答案4道题,用时1h10min
  • 给Markdown渲染网页增加一个目录组件(Vite+Vditor+Handlebars)(上)
  • 《TCP/IP协议卷1》TCP协议TCP连接建立和释放
  • IDEA2025(2025.1.1)都更新了什么???