👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥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.