💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文内容如下:🎁🎁🎁
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
基于非支配吸血水蛭优化算法(NSBSLO)求解多目标柔性作业车间调度问题(FJSP)的研究
摘要
本文提出了一种基于非支配吸血水蛭优化算法(NSBSLO)的多目标优化方法,用于解决柔性作业车间调度问题(FJSP)。NSBSLO算法结合了吸血水蛭优化算法(BSLO)的局部搜索能力和非支配排序策略,旨在同时优化多个冲突目标,如最小化最大完工时间、最小化机器总负载和最小化总延迟时间。通过仿真实验验证了NSBSLO算法在解决FJSP问题上的有效性和优越性。
1. 引言
柔性作业车间调度问题(FJSP)是生产调度领域中的经典难题,其特点在于每个工件的工序可以在多台不同机器上加工,且工序的加工时间随机器的不同而变化。FJSP问题包含两个子问题:机器选择和工序排序,且需要满足一系列复杂的约束条件。传统的单目标优化方法难以有效处理FJSP中的多目标冲突问题,因此多目标优化算法在FJSP中的应用逐渐成为研究热点。
吸血水蛭优化算法(BSLO)是一种模拟吸血水蛭觅食行为的智能优化算法,具有较强的局部搜索能力和逃逸局部最优的能力。然而,BSLO算法在解决多目标优化问题时存在解的多样性和非支配解集维护不足的问题。为此,本文提出了一种基于非支配排序的吸血水蛭优化算法(NSBSLO),通过引入非支配排序和拥挤度算子来改进BSLO算法,以提高其在多目标FJSP问题上的求解性能。
2. 问题描述与数学模型
2.1 问题描述
FJSP问题可以描述为:有n个工件{J₁, J₂, ..., Jₙ}需要在m台机器{M₁, M₂, ..., Mₘ}上加工。每个工件包含一道或多道工序,工序顺序预先确定,每道工序可以在多台不同机器上加工,且加工时间随机器的不同而变化。调度目标是为每道工序选择最合适的机器,确定每台机器上各个工序的最佳加工顺序和开工时间,以优化某些性能指标。
2.2 数学模型
- 符号定义:
- n:工件总数
- m:机器总数
- j:工件序号,j = 1, 2, ..., n
- i:机器序号,i = 1, 2, ..., m
- h:工序序号,h = 1, 2, ..., hⱼ(hⱼ为工件j的工序总数)
- Ωⱼₕ:工件j的第h道工序的可选加工机器集
- pᵢⱼₕ:工件j的第h道工序在机器i上的加工时间
- sⱼₕ:工件j的第h道工序加工开始时间
- cⱼₕ:工件j的第h道工序加工完成时间
- Cⱼ:工件j的完成时间
- Cₘₐₓ:最大完工时间
- Lᵢ:机器i的总负载
- Tⱼ:工件j的延迟时间
- 目标函数:
- 最小化最大完工时间:min Cₘₐₓ
- 最小化机器总负载:min ∑ᵢ₌₁ᵐ Lᵢ
- 最小化总延迟时间:min ∑ⱼ₌₁ⁿ Tⱼ
- 约束条件:
- 同一台机器同一时刻只能加工一个工件
- 同一工件的同一道工序在同一时刻只能被一台机器加工
- 每个工件的每道工序一旦开始加工不能中断
- 不同工件之间具有相同的优先级
- 不同工件的工序之间没有先后约束,同一工件的工序之间有先后约束
- 所有工件在零时刻都可以被加工
3. 非支配吸血水蛭优化算法(NSBSLO)
3.1 算法原理
NSBSLO算法结合了吸血水蛭优化算法(BSLO)的非线性搜索能力和非支配排序策略的多目标优化能力。BSLO算法模拟了吸血水蛭的觅食行为,包括附着、吸血、移动和脱离等阶段,具有较强的局部搜索能力。NSBSLO算法在此基础上引入了非支配排序和拥挤度算子,以维护解的多样性和非支配解集的平衡。
3.2 算法步骤
3.2.1 初始化种群
随机生成初始种群,每个个体代表一个可行的调度方案。个体的编码方式采用双层编码结构,第一层表示工序排序,第二层表示机器分配。
3.2.2 非支配排序
计算每个个体的适应度值(即目标函数值),并根据个体间的支配关系进行非支配排序。将解集分为不同的前沿(Fronts),每个前沿内的个体都是相互非支配的。
3.2.3 拥挤度计算
为了维持Pareto前沿的多样性,计算每个个体的拥挤度。拥挤度表示个体在目标空间中的分布密度,拥挤度较高的个体更可能被选择。
3.2.4 吸血水蛭行为模拟
模拟吸血水蛭的觅食行为,包括附着、吸血、移动和脱离等阶段,对个体进行局部搜索和更新。在移动阶段,引入非支配排序和拥挤度算子来指导搜索方向,以避免早熟收敛到局部最优解。
3.2.5 选择、交叉和变异
根据非支配排序和拥挤度选择优质的个体进行交叉和变异操作,生成新一代种群。交叉和变异操作采用传统的遗传算法操作符,如单点交叉和均匀变异。
3.2.6 精英策略
采用精英策略,将父代和子代种群合并后进行非支配排序和拥挤度计算,然后根据排序和拥挤度选择下一代种群。这样可以确保优秀的个体不会被丢失。
3.2.7 终止条件
当达到预设的迭代次数或满足其他终止条件时,算法停止运行,并输出非支配解集作为最终的优化结果。
4. 仿真实验与结果分析
4.1 实验设置
选取经典的FJSP测试案例进行仿真实验,如Brandimarte测试案例集。设置算法参数,如种群规模、迭代次数、交叉概率和变异概率等。将NSBSLO算法与其他多目标优化算法(如NSPSO、NSOOA、NSDBO等)进行对比实验。
4.2 实验结果
通过仿真实验得到不同算法在多个测试案例上的优化结果,包括Pareto前沿、最大完工时间、机器总负载和总延迟时间等指标。实验结果表明,NSBSLO算法在解决多目标FJSP问题上具有较好的性能和鲁棒性,能够找到更多优质的非支配解,且解的分布更加均匀。
4.3 结果分析
对实验结果进行深入分析,探讨NSBSLO算法在解决FJSP问题上的优势和不足。分析算法在不同测试案例上的表现差异,以及参数设置对算法性能的影响。提出改进算法性能的建议和方向。
5. 结论与展望
5.1 结论
本文提出了一种基于非支配吸血水蛭优化算法(NSBSLO)的多目标优化方法,用于解决柔性作业车间调度问题(FJSP)。通过仿真实验验证了NSBSLO算法在解决FJSP问题上的有效性和优越性。NSBSLO算法结合了吸血水蛭优化算法的局部搜索能力和非支配排序策略的多目标优化能力,能够同时优化多个冲突目标,并找到更多优质的非支配解。
5.2 展望
未来的研究可以进一步改进NSBSLO算法的性能,如引入更复杂的局部搜索策略、动态调整算法参数等。同时,可以将NSBSLO算法应用于其他复杂的组合优化问题中,如车间布局优化、供应链调度等。此外,还可以探索NSBSLO算法与其他智能优化算法的融合方法,以进一步提高算法的求解性能和鲁棒性。
📚2 运行结果
编辑
编辑
编辑
编辑
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】