改进遗传算法求解FJSP—西门子极客挑战赛

问题来源于西门子的一个调度比赛(网址:https://www.biendata.xyz/competition/Siemens02/data/),同时也是一个经典的柔性车间调度问题(FJSP)。

1. 问题描述

在工厂车间中,会同时加工多个零件,进行合理的生产调度可以最大化资源利用率。我们假设一个车间需要加工n个零件(J1,J2,…Jn),每个零件都有i个加工步骤(K1,K2,…Kl),可在m台机器(M1,M2,…,Mm)上加工。每个零件的加工步骤有一步或多步;步骤顺序已经提前确定且不能改变,每个零件的步骤是互斥的。每个步骤的加工机器有多个候选,可根据条件选择其中一个。此外每个步骤的加工时间随加工机器的不同而不同。我们最终的调度目标是为每一道步骤选择最合适的机器,确定每台机器上各道工序的最佳加工顺序以及开工时间,最终使得整体加工时间最短。

整个加工过程需要满足以下约束:

a. 同一台机器在某一个时刻只能加工一个工件;

b. 同一个零件的同一道步骤在同一时刻只能被一台机器进行加工;

c. 每个零件的每道步骤一旦开始,加工便不能中断;

d. 不同零件之间具有相同的优先级;

e. 不同零件的步骤之间没有先后约束,同一零件的步骤之间有先后约束;

f. 在开始时刻,任何零件都可以被选择进行加工。

例如:有A,B两个零件,A的加工步骤为(A1,A2),B的加工步骤为(B1,B2), 候选机器为M1, M2, M3。其中A1在M1机器的加工时间为1,在M2的加工时间为2;A2在M2的加工时间为1。B1在M3的加工时间为3;B2在M3的加工时间为4,在M1的加工时间为2. 则根据条件,在初始时刻,我们可以选择开始加工A或B;而A1可以选择在M1或M2机器。

2.算例描述

程序的输入文件,文件中的数据包括以上所有信息,数据格式如下:
661

6132111126147163153

6128135151016101110142

6135144168119121157

6123115133143158169

6139123155164113141

6123143168119154131

数据说明如下:

第一行6 6 1 代表:一共有6个零件,6台机器,每个步骤只能在1台机器上进行加工。

第二行 6 1 3 2 1 1 3 1 2 6 1 4 7 1 6 3 1 5 3 代表:零件1一共有6个步骤,(1 3 1)表示第一个步骤可以在1台机器上进行加工,机器序号是3,所需时间为1。其它行的数据含义以此类推。

3. 输出结果样例

代码输出结果的格式如下:
机器号:(零件编号,零件步骤号,开始时刻,结束时刻)

例如题例中,一个可能的输出结果为:
M1:(A,A1,0,1),(B,B2,3,5)

M2:(A,A2,1,2)

M3:(B,B1,0,3)

该输出结果的总耗时为5个时间单位,其中B2因为需要在B1结束后才能开始,所以在M1机器上是从时刻3才能开始。而A2在M2机器上也必须从时刻1才能开始。

其中机器编号,零件编号,步骤编号可以自定义,无特殊要求。时刻统一从0时刻开始。

4.求解方法

参见原文地址:https://mp.weixin.qq.com/s/eVZ9nKkIOWi-XXtX3HecJQ

5. 代码及PPT获取

https://mianbaoduo.com/o/bread/Y5iVlZ5v
(或点击阅读原文获取)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值