任务车间调度问题的混合整数规划模型(代码片段)

leapms leapms     2023-02-15     776

关键词:

任务车间调度问题的混合整数规划模型

文献[1]的7.3节讲了一个任务车间调度问题。

一个车间生产套印纸张,分别套印蓝绿黄三种颜色。三种纸张根据需求分别在蓝、绿、黄三个机器上印刷,印刷时间如下表:

  印制颜色 纸1 纸2 纸3
机器1 45 20 12
机器2 绿   10 17
机器3 10 34 28

纸张需要满足下图所示的印制次序:

技术分享图片

要求安排工艺调度(即安排纸张在各个机床上的加工时间)以使得总完成时间最短。

模型及求解

从上图可以读出纸张的印制次序为:

  Paper 1:  1 --> 3 

  Paper 2:  2 --> 1 -->3

  Paper 3:  3--> 1 --> 2

Paper 1 不需要在机器2上加工。为一致起见,设其在机器2上的加工时间为0,加工次序为3。得到下面的加工次序矩阵。

  S=

    1  3  2

    2  1  3

    3  1  2

  

设 T[i][j] 为纸张 j 在机器 i 上的加工时长。设 t[i][j] 为纸张 j 在机器 i 上的开始加工时刻。

模型的目标是极小化总完工时间tt:

  min  tt               //(1)

显然tt必须大于等于三种纸张的各自完成时间:

  tt >= t[S[j][3]][j]+T[S[j][3]][j] | j=1,...,3   //(2)

对任意纸张j和k, 如果 j<>k, 则他们在同一台机器上的加工时间不可冲突:

       t[i][k] >= t[i][j] + T[i][j] 或 t[i][j] >= t[i][k] + T[i][k] | i=1,...,3;j=1,...,3;k=1,..,3;j<>k

 上面是两个或约束,不可以直接写入混合线性规划的。解决办法是引入二值变量u[i][j][k]和大M,把上面的逻辑转换成两个联立约束:

  t[i][k] >= t[i][j] + T[i][j] - M*u[i][j][k] | i=1,...,3;j=1,...,3;k=1,..,3;j<>k //(3)
  t[i][j] >= t[i][k] + T[i][k] -M(1-u[i][j][k]) | i=1,...,3;j=1,...,3;k=1,..,3;j<>k //(4)

纸张需要满足加工次序约束:

  t[S[j][k+1]][j] >= t[S[j][k]][j] + T[S[j][k]][j] |j=1,...,3; k=1,...,2  //(5)

完整的+Leapms模型:

min  tt               //(1)

subject to

    //tt大于等于三种纸张的各自完成时间:
  tt >= t[S[j][3]][j]+T[S[j][3]][j] | j=1,...,3   //(2)

    //对任意纸张j和k,如果j<>k,则他们在同一台机器上的加工时间不能冲突:
    t[i][k] >= t[i][j] + T[i][j] - M*u[i][j][k] | i=1,...,3;j=1,...,3;k=1,..,3;j<>k   //(3)
  t[i][j] >= t[i][k] + T[i][k] -M(1-u[i][j][k]) | i=1,...,3;j=1,...,3;k=1,..,3;j<>k //(4)

   //加工次序约束:
   t[S[j][k+1]][j] >= t[S[j][k]][j] + T[S[j][k]][j] |j=1,...,3; k=1,...,2  //(5)

where
   M is a number
   T[i][j] is a number | i=1,...,3;j=1,...,3
   S[i][j] is an integer | i=1,...,3;j=1,...,3
   tt is a variable of nonnegative number
   t[i][j] is a variable of nonnegative number | i=1,...,3;j=1,...,3
   u[i][j][k] is a variable of binary|i=1,...,3;j=1,...,3;k=1,..,3;j<>k

data

   T=
	45 20 12
	 0 10 17
	10 34 28
    

    S=
    1  3  2
    2  1  3
    3  1  2
  
    M=1000

求解过程

技术分享图片
+Leapms>load
 Current directory is "ROOT".
 .........
        jobshop.leap
 .........
please input the filename:jobshop
================================================================
1:  min  tt               //(1)
2:
3:  subject to
4:
5:      //tt大于等于三种纸张的各自完成时间:
6:    tt >= t[S[j][3]][j]+T[S[j][3]][j] | j=1,...,3   //(2)
7:
8:      //对任意纸张j和k,如果j<>k,则他们在同一台机器上的加工时间不能冲突:
9:      t[i][k] >= t[i][j] + T[i][j] - M*u[i][j][k] | i=1,...,3;j=1,...,3;k=1,..
,3;j<>k   //(3)
10:    t[i][j] >= t[i][k] + T[i][k] -M(1-u[i][j][k]) | i=1,...,3;j=1,...,3;k=1
,..,3;j<>k //(4)
11:
12:     //加工次序约束:
13:     t[S[j][k+1]][j] >= t[S[j][k]][j] + T[S[j][k]][j] |j=1,...,3; k=1,...,2
//(5)
14:
15:  where
16:     M is a number
17:     T[i][j] is a number | i=1,...,3;j=1,...,3
18:     S[i][j] is an integer | i=1,...,3;j=1,...,3
19:     tt is a variable of nonnegative number
20:     t[i][j] is a variable of nonnegative number | i=1,...,3;j=1,...,3
21:     u[i][j][k] is a variable of binary|i=1,...,3;j=1,...,3;k=1,..,3;j<>k
22:
23:  data
24:
25:     T=
26:     45 20 12
27:      0 10 17
28:     10 34 28
29:      
30:
31:      S=
32:      1  3  2
33:      2  1  3
34:      3  1  2
35:    
36:      M=1000
================================================================
>>end of the file.
Parsing model:
1D
2R
3V
4O
5C
6S
7End.
..................................
number of variables=28
number of constraints=45
..................................
+Leapms>mip
relexed_solution=64; number_of_nodes_branched=0; memindex=(2,2)
The Problem is solved to optimal as an MIP.
找到整数规划的最优解.非零变量值和最优目标值如下:
  .........
    t1_1* =42
    t1_2* =10
    t1_3* =30
    t2_1* =97
    t2_3* =42
    t3_1* =87
    t3_2* =30
    t3_3* =2
    tt* =97
    u1_1_2* =1
    u1_1_3* =1
    u1_3_2* =1
    u2_1_2* =1
    u2_1_3* =1
    u2_3_2* =1
    u3_1_2* =1
    u3_1_3* =1
    u3_2_3* =1
  .........
    Objective*=97
  .........
+Leapms>
求解过程(按+查看)

求解结果

+Leapms>mip
relexed_solution=64; number_of_nodes_branched=0; memindex=(2,2)
The Problem is solved to optimal as an MIP.
找到整数规划的最优解.非零变量值和最优目标值如下:
  .........
    t1_1* =42
    t1_2* =10
    t1_3* =30
    t2_1* =97
    t2_3* =42
    t3_1* =87
    t3_2* =30
    t3_3* =2
    tt* =97
    u1_1_2* =1
    u1_1_3* =1
    u1_3_2* =1
    u2_1_2* =1
    u2_1_3* =1
    u2_3_2* =1
    u3_1_2* =1
    u3_1_3* =1
    u3_2_3* =1
  .........
    Objective*=97
  .........
+Leapms>

反向生成Latex数学概念模型

+Leapms提供从+Leapms模型向Latex数学概念模型的转换。

当模型调整和测试完毕,使用+Leapms的latex命令可生成本问题的如下数学概念模型:

 技术分享图片

参考文献

[1] Christelle Guéret, Christian Prins, Marc Sevaux. Applications of optimization with Xpress-MP (Translated and revised by Susanne Heipcke). Dash Optimization Ltd. 2000


车间调度基于matlab遗传算法求解车间调度问题含matlab源码1396期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab蝴蝶算法求解车间调度问题含matlab源码1395期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlabnsga2算法求解车间调度问题含matlab源码893期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab模拟退火算法求解车间调度问题含matlab源码894期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab粒子群算法求解车间生产调度问题含matlab源码245期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab改进的遗传算法求解车间调度问题含matlab源码h002期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab遗传算法求解车间调度问题(含甘特图)含matlab源码2216期(代码片段)

⛄一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上... 查看详情

车间调度基于matlab模拟退火算法求解车间调度(jobshop-3)问题含matlab源码1082期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

动态规划:任务调度问题(双塔问题)(代码片段)

题目链接两个CPU,处理N个任务,每个任务有一个处理时长(0~4096),要把这些任务全部处理完,如何调度才能最高效?N个圆柱,要搭建两个塔,要使这两个塔高度之差尽量小,问较高的那座塔多高?需要注意一个特殊情况:例... 查看详情

车间调度基于matlab模拟退火算法求解单约束车间流水线调度问题含matlab源码1457期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

dqn学习使用混合规则的柔性车间agv实时调度(关注点:状态奖励函数的设置)

...小化完工时间和延迟率为目标。2状态设置    主要考虑任务状态和AGV状态,如下:(1)任务数量,表示当前需要运输的任务总数。(2)当前任务的平均剩余时间:(3)当前任务的平均运... 查看详情

车间调度基于matlab差分进化算法求解作业车间调度问题含matlab源码1743期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab混合蛙跳算法(sfla)求解简单调度问题含matlab源码2247期

⛄一、车间调度简介在传统的SFLA中,每一个青蛙的位置代表一个解,若干个青蛙组成的种群代表一个解的集合,种群被划分为不同的组,即模因组,对每个模因组执行搜索过程,当达到终止条件后,重... 查看详情

写给那些准备入门车间调度问题的小伙伴,关于代码编写以及高效利用他人代码的方法(不要让代码能力限制了你的科研能力)(代码片段)

...#xff0c;这一年中遇到很多人问我代码的问题,尤其是做车间调度的同学,大部分同学都是没有编程经验的,很多时候无从下手,不知道从什么地方开始编,今天就讲讲我的一些经验。1 编码流程        我比... 查看详情

二维剪板机下料问题(2-dguillotinecuttingstockproblem)的混合整数规划精确求解——数学规划的计算智能特征(代码片段)

...维剪板机下料(2D-GCSP)的混合整数规划是最优美的整数规划模型之一。以往很多人认为像2D-GCSP这样的问题由于本质上的递归性,很难建立成混合整数规划模型,但是持这种观点的人忽略了数学规划的智能特征。所谓计算智能是... 查看详情

模糊时间的柔性车间调度问题-python实现遗传算法求解(代码片段)

目录1问题描述1.1模糊加工时间的运算 2编码解码 3算例4算法4.1 文献【2】中算例验证4部分代码展示完整代码:https://github.com/Aihong-Sun/FJSP_FP_GA1问题描述        模糊性和灵活性的概念普遍存在于实际制造系统中,因... 查看详情

matlab基于多层编码遗传算法的车间调度算法matlab优化算法十九(代码片段)

基于多层编码遗传算法的车间调度算法理论基础遗传算法具有较强的问题求解能力,能够解决非线性优化问题。遗传算法中的每个染色体表示问题中的一个潜在最优解,对于简单的问题来说,染色体可以方便地表达问... 查看详情

matlab基于多层编码遗传算法的车间调度算法matlab优化算法十九(代码片段)

基于多层编码遗传算法的车间调度算法理论基础遗传算法具有较强的问题求解能力,能够解决非线性优化问题。遗传算法中的每个染色体表示问题中的一个潜在最优解,对于简单的问题来说,染色体可以方便地表达问... 查看详情