基于MOEA/D和NSGA算法的柔性车间调度研究(Python代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python代码、数据


💥1 概述

柔性车间调度问题(Flexible Job Shop Scheduling Problem, FJSP)是一种广泛应用在生产和制造业中用以优化资源分配、提高生产效率和降低成本的重要问题。该问题旨在安排一组机器上的作业加工顺序,每项作业都可以在任何一台能够完成该工序的机器上加工,目的是寻找一个最优的作业加工顺序,以达到特定的优化目标,如最小化完工时间(Makespan)、最小化总加工时间(Total Processing Time)、最小化延迟时间(Tardiness)等。

MOEA/D(多目标进化算法基于分解,Multi-Objective Evolutionary Algorithm based on Decomposition)和NSGA(非支配排序遗传算法,Nondominated Sorting Genetic Algorithm,特别是NSGA-II是其改进版)是解决这类多目标优化问题的常用算法。

1. **MOEA/D**:此算法是首先将多目标优化问题分解为一系列的子问题,每个子问题着重于优化一组特定的权重下的目标组合,并采用进化算法进行求解。对于柔性车间调度问题,算法可能针对降低完成时间和减少机器空闲时间这两个目标,将问题分解并分别优化。MOEA/D的优点在于能够有效处理多目标问题,并可以根据实际需求获取Pareto最优解集。

2. **NSGA-II**:NSGA-II通过一种称为非支配排序的方法来维护遗传算法种群的多样性,并且采用拥挤度比较操作来指导种群向Pareto最优前沿发展。在处理柔性车间调度问题时,NSGA-II能同时考虑多种优化目标,并通过进化过程有效地逼近最优解集。NSGA-II在处理复杂的多目标问题时表现出色,因其高效的排序和选择机制。

**基于MOEA/D和NSGA-II算法的柔性车间调度研究常涉及以下几个方面:**

- **建模与算法设计**:首先对柔性车间调度问题进行准确的建模,定义优化目标和约束条件。然后根据所选择的算法(MOEA/D或NSGA-II)设计具体的求解过程。
- **参数调整与优化**:通过实验寻找算法执行的最佳参数设置,以改善算法的性能和解的质量。
- **实验与评估**:在标准测试问题集上或实际生产数据上验证所提算法的有效性和效率,通常通过与其他算法的比较分析来展现其优势。
- **应用与实践**:将研究成果应用到实际生产调度中,进一步调整和优化算法来满足特定生产环境的需求。

综上所述,基于MOEA/D和NSGA-II算法的柔性车间调度研究是解决多目标优化问题的有效途径,它们在提高生产效率、降低运营成本等方面具有重要的理论研究和实际应用价值。

📚2 运行结果

部分代码:

from Algorithms.Algorithm import *
from Algorithms.Params import get_args

def Algo_Solver(f):
    fig = plt.figure(figsize=(14, 8), facecolor='w')
    ax = plt.axes(projection='3d')
    file = r'.\Instance\FJSP_Instance' + '/'+f
    import time
    t1 = time.time()
    n, m, PT, MT, ni = Instance(file)
    mm = 2
    args = get_args(n, m, PT, MT, ni, mm)
    Algo = Algorithms(args)
    EP = Algo.MOEAD_main()
    t2 = time.time()
    print('the CPU(s) time of MOEA/D', t2 - t1)
    TriPlot_NonDominatedSet(ax,'blue',EP,f.split('.')[0],'MOEA/D',round(t2 - t1,2))
    EP=Algo.NSGA_main()
    t3 = time.time()
    print('the CPU(s) time of NSGA', t3 - t2)
    TriPlot_NonDominatedSet(ax,'red',EP, f.split('.')[0],'NSGA',round(t3 - t2,2))
    plt.legend()
    plt.savefig(r'Tri_obj_result/'+f.split(',')[0]+'.png')
    plt.close()

if __name__=="__main__":
    for i in range(10):
        if i<9:f = 'Mk0'+str(i+1)+'.pkl'
        else:f = 'Mk'+str(i+1)+'.pkl'
        Algo_Solver(f)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]汪和平,赵登宇,陈梦凯,等.基于MO-CGJaya/D算法的PC构件混流生产作业指派优化研究[J].[2024-03-23].

[2]陈辅斌,李忠学,杨喜娟.基于改进NSGA2算法的多目标柔性作业车间调度[J].工业工程, 2018, 21(2):7.DOI:10.3969/j.issn.1007-7375.e17-3276.

[3]陈文献.基于智能优化算法的柔性车间调度问题研究[D]. 2011.DOI:http://dspace.xmu.edu.cn:8080/dspace/handle/2288/50747.

🌈4 Python代码、数据

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值