现代生产与物流运作管理(平行机调度问题)Cplex求解,OPL语言

编程入门 行业动态 更新时间:2024-10-11 19:14:15

现代生产与物流运作管理(平行机调度问题)Cplex求解,OPL<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言"/>

现代生产与物流运作管理(平行机调度问题)Cplex求解,OPL语言

问题描述

按照机器环境分为单机调度、平行机调度、Flow Shop调度和Job Shop调度。单机调度是指所有工件都在同一台机器上加工完成。平行机调度是指每个工件只需在多台加工功能相同的机器中的任意一台上加工一次,其中,根据平行机加工速度的不同,又可将平行机分为具有相同加工速度的同型(identical)机、具有不同的加工速度但此速度不依赖于工件的同速(uniform)机和随加工的工件不同加工速度也不同的非同类型(unrelated)机。Flow Shop调度是指所有工件以相同的工艺路径在多台机器上加工。Job Shop调度是指每个工件以各自特定的工艺路径进行加工。

已知产品批次数,机器个数,批次m在机器j内的加工时间。采用平行机调度使得最大完工时间最短,并求出每批产品在各个机器中加工的开始时间和各批次产品在各个机器中加工的顺序。

参数设置

        产品批次数

        机器个数

        机器编号

        产品批次编号

        某批产品在对应机器中的加工顺序编号

        批次在机器内的加工时间

         机器内第批产品的开始时间

  

模型建立

最小化最大完工时间:

一个批次只能分配给一个机器,不能被拆分:

一个机器在同一个时间段只能加工一批产品:

最大完工时间大于各个机器的完工时间:

每个机器中第一批产品的开始时间都是0:

只有第k-1位的批次加工完成后才能开始加工第k批产品:

分配规则,产品批次必须按顺序进行分配:

案例数据

M=8;

J=5;

p=[[544.5,539.01,534.6,463.05,449.82,519.75,495.72,453.6],[574.2,615.33,563.76,546.84,480.69,613.8,529.74,496.8],[524.7,581.94,515.16,511.56,423.36,574.2,466.56,423.36],[544.5,524.7,534.6,480.69,414.54,539.55,456.84,427.68],[534.6,586.71,524.88,471.87,423.36,529.65,466.56,475.2]];

/*********************************************

 * OPL 12.8.0.0 Model

 * Author: Sealand

 * Creation Date: 2022年11月12日 at 下午11:33:53

 *********************************************/

int M = 8;

int J = 5;

float p[1..J][1..M] =[[544.5,539.01,534.6,463.05,449.82,519.75,495.72,453.6],[574.2,615.33,563.76,546.84,480.69,613.8,529.74,496.8],[524.7,581.94,515.16,511.56,423.36,574.2,466.56,423.36],[544.5,524.7,534.6,480.69,414.54,539.55,456.84,427.68],[534.6,586.71,524.88,471.87,423.36,529.65,466.56,475.2]];

dvar boolean z[1..M][1..J][1..M];

dvar float t[1..J][1..M];

dvar float makespan;

minimize makespan;

subject to {

    forall(m in 1..M)

    sum(j in 1..J,k in 1..M)

    z[m][j][k] == 1;

   

    forall(j in 1..J, k in 1..M)

    sum(m in 1..M)

    z[m][j][k] <= 1;

   

    forall(j in 1..J, m in 1..M)

    makespan >= t[j][M] + sum(m in 1..M) z[m][j][M] * p[j][m];

   

   

    forall(j in 1..J)

    t[j][1] == 0;

   

    forall(j in 1..J, k in 2..M)

    t[j][k] >= t[j][k-1] + sum(m in 1..M) z[m][j][k-1] * p[j][m];

   

   

    forall(j in 1..J, k in 2..M)

    sum(m in 1..M) z[m][j][k] <= sum(m in 1..M) z[m][j][k-1];

     

}

 求解结果

makespan = 939.24;
 [[0,519.75,519.75,519.75,519.75,519.75,519.75,519.75],[0,574.2,574.2,574.2,574.2,574.2,574.2,574.2],[0,423.36,938.52,938.52,938.52,938.52,938.52,938.52],[0,524.7,939.24,939.24,939.24,939.24,939.24,939.24],[0,466.56,938.43,938.43,938.43,938.43,938.43,938.43]];
 [[[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,1,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],[[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0]],[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]]];


 

更多推荐

现代生产与物流运作管理(平行机调度问题)Cplex求解,OPL语言

本文发布于:2024-02-14 04:11:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761972.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   物流   Cplex   OPL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!