基于MOEA/D 和 NSGA-II多目标优化算法解决柔性车间调度问题(Python代码实现)

本文探讨了柔性作业车间调度问题,提出了使用非支配排序遗传算法(NSGA-II)和多目标进化算法/MOEA/D来解决多目标优化问题,旨在最小化最大完工时间、总机器负载和最大机器负载。通过这些算法,可以改进现代制造业的调度效率和实践应用。
摘要由CSDN通过智能技术生成

👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Puyhon代码实现


 

💥1 概述

车间调度方法是企业生产实现高效率、高质量、高柔性、低成本的关键。随着现代制造业的发展,传统的车间调度方法和调度优化技术已经不适合解决目前的调度问题。探索和设计一种更适合制造企业生产现状的车间调度问题模型和求解方法,从而更好的指导企业生产,具有重要的理论意义和实践意义。本文结合目前的车间调度现状,对传统的车间调度方法和调度优化技术进行扩展和改进,构建了多目标柔性作业车间调度问题(FJSP)模型,提出了非支配排序遗传算法(NSGA-II),并通过NSGA-II算法求解多目标FJSP,最后将研究成果运用于实际生产企业。

针对柔性作业车间调度问题中关于求解多目标优化的研究中,利用模糊数表示相关参数,以最小化最大完工时间、总机器负载和最大机器负载为优化目标,提出MOEA/D算法求解柔性车间调度问题。并用MOEA/D和NSGA-Ⅱ算法对比。

📚2 运行结果

​ 

 

 

部分代码:

class Job_shop:
    def __init__(self,args):
        self.n= args.n
        self.m=args.m
        self.O_num=args.O_num
        self.PM = args.Processing_Machine
        self.PT = args.Processing_Time
        self.reset()

    def reset(self):
        self.C_max = 0      #makespan
        self.load=0         # Total load of machines
        self.max_EndM=None  # the last end machine
        self.mac_load=[0]*self.m    # load of each machine
        self.Jobs=[]
        for i in range(self.n):
            Ji=Job(i,self.PM[i],self.PT[i])
            self.Jobs.append(Ji)
        self.Machines=[]
        for j in range(self.m):
            Mi=Machine(j)
            self.Machines.append(Mi)

    # decode of chs[i]
    def decode(self,Job,Machine):
        Ji=self.Jobs[Job]
        # obtain processing time/start time/processing machine of current operation
        o_pt, s,M_idx = Ji.get_next_info(Machine)
        Mi=self.Machines[M_idx-1]
        start=Mi.find_start(s,o_pt)     # obtatin real start time on machine
        end=start+o_pt
        self.load+=o_pt
        self.mac_load[Mi.idx]+=o_pt
        Mi.update(start, end, [Ji.idx, Ji.cur_op])  # update machine state
        Ji.update(start,end,Mi.idx)     #update Job state
        if end>self.C_max:  # update makespan
            self.C_max=end
            self.max_EndM=Mi
        self.max_load = max(self.mac_load)  #update max_load of machine

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]孙爱红,宋豫川,杨云帆,雷琦.考虑关键件加工质量的双资源约束车间调度算法[J].中国机械工程,2022,33(21):2590-2600.

[2]曹海涛. 基于改进NSGA-Ⅱ的多目标柔性作业车间调度问题研究[D].浙江工业大学,2019.

[3]范书宁,余开朝,万雨松.改进MOEA/D算法求解多目标模糊柔性车间调度问题[J].计算机应用研究,2023,40(01):192-197.DOI:10.19734/j.issn.1001-3695.2022.06.0290.

🌈4 Puyhon代码实现

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值