加工调度问题的计算机仿真模型_第1页
加工调度问题的计算机仿真模型_第2页
加工调度问题的计算机仿真模型_第3页
加工调度问题的计算机仿真模型_第4页
加工调度问题的计算机仿真模型_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 编号:第六届计算机仿真大赛参赛作品题号: 4 组别: 高年级 作者: xxx 学院: xxx 联系电话: xxx 有关加工调度问题的计算机仿真模型摘要本文讨论在工业生产中,利用建立模型,优化多个零件在多台机器上进行加工的顺序安排,以提高设备利用率和生产效率的调度问题。主要建立的模型如下:流水线调度优化模型:通过利用约翰逊贝尔曼法则找出最优结果排序。首先写出约翰逊贝尔曼法则在多个机器(m>2)的算法,根据算法利用matlab软件进行计算机仿真,得出最优加工顺序的结果(见正文第9页)。为了形象描述问题并得到本系统的流程图和核心程序的流程图,利用甘特图模型进行仿真,最终形象的表示机器设备的生

2、产进度。关键字:加工顺序最优 matlab 甘特图 约翰逊贝尔曼算法目录一、问题重述与分析21.1问题的重述21.2问题的分析2二、符号说明2三、调度问题模型的建立33.1 两个工作条件的给出33.3算法的描述43.4问题的求解和结果5四、参考文献9五、附录9一、 问题重述与分析1.1问题的重述工厂中,有n个不同的配件需要生产,每个配件都必须由m台不同的机器进行顺序加工处理,配件i在机器j上所需的处理时间为t(i,j)。现约定未完工前不允许中断处理,配件不能拆分成更小配件。要求给出一种配件调度方案,使所给的n个配件在尽可能短的时间内处理完成。1.2问题的分析 此问题的求解主要依靠运用运筹学相关

3、理论学科,解决加工顺序的最优安排以达到零件生产效率提高的工业要求,可以利用约翰逊贝尔曼法则找出最优结果排序,利用matlab软件进行计算机仿真,并画出形象表达生产进度的甘特图。二、 符号说明变量含义d1表示第d1种分组no(n,1)表示编号t2(n,2)t2用来存放2台虚拟机器存放的时间t2(:,1)表示第一台a(n,m-1)用来存放m-1种分组方式下,按大小排序后的t2(:,1)b(n,m-1)用来存放m-1种分组方式下,按大小排序后的t2(:,2)index1(n,m-1)用来存放m-1种分组方式下,按大小排序后的 t2(:,1)零件序号index2(n,m-1)用来存放m-1种分组方式下

4、,按大小排序后的 t2(:,2)零件序号newsort(n,m-1)用来存放m-1种分组方式下,按大小排序后的零件序号,即加工顺序t1(n,m,m-1)t1(:,:,i)表示根据 j&b 法则第i中分法下的加工顺序后的加工时间表t1(n,m,m-1)t2(:,:,i)表示根据 j&b 法则第i中分法下的加工顺序后的完工时间表t(1,m-1)表示m-1种分组方式下的最短工期数组no_sort(1,n)m-1中分法下的t中元素最小最优解加工零件的排序tmin(n,m)m-1中分法下的t中元素最小最优解加工顺序后的完工时间表t1(n,m)对应最优排序后的加工时间矩阵j0表示靠前加工零

5、件的个数j1表示靠后加工零件的个数i1i1,i2分别表示每轮最小值a(:,d1)、b(:d1)下标(共n次,确定newsort(:,d1)的零件排序)i2resultresult=no,no_sort,tmin输出结果说明第一列元素表示加工顺序,第二列表示加工零件编号,第三列到以后为:每个零件在不同机器上的完工时间矩阵三、 调度问题模型的建立3.1 两个工作条件的给出:n个工件在m台机器上的加工顺序相同。工件在机器上的加工时间是给定的(时间矩阵t(n,m),t(i,j)表示i零件在机器j上加工时间)。问题的目标是求n个工件在每合机器上的最大完工时间等于最大流程时间。这种流水线调度问题要在满足以

6、下两个约束条件的前提下,使得加工完所有的工件所花的时间尽可能地少:1、工件约束每个工件在每台机器上恰好加工一次,每个工件在各机器上加工顺序相同。不失一般性,假设各工件按机器1至m的顺序进行加工。各工件在各机器上的加工时间已知。2、机器约束每台机器在任何时刻至多加工一个工件,每台机器加工的各工件的顺序相同。3.2 工件加工顺序的原则:置换流水线调度问题实质是如何调整加工工件的序列,提高机器的利用率的问题,即在同一时刻正在加工的机器数越多,机器利用率越大口根据该原则,我们根据下面规则安排:1、在前面机器加工时间较短、后面机器加工时间较长的工件,安排在序列前。这样可以使得后面的机器尽快参加工作,并且

7、后面的机器不需要作空等待,2、机器加工时间较为平均且加工时间较长的工件,安排在序列的中部。这样可以使得各个机器在中期的时候都能得到运作。3、前面加工时间较长,后面加工时间较短的工件按排在序列尾部。这样使得前面的机器能“延迟”完工,后面的机器尽快完工。3.3算法的描述【1】【2】:我们采用约翰逊-贝尔曼法则(johnson-bellman rule,一下简称 j&b)1、n种零件在两台机器上加工(m1,m2),根据j&b法则,最短工期加工顺序,方法如下:(1) 检索t(:,1),t(:,2)(表示各零件分别在m1,m2上加工时间)的各种数据,找出其中最小值(2) 上述最小值如果属

8、于第一列,则该零件应靠前加工,相反,若在第二列则靠后加工2、将j&b法则推广到m台机器情况,把m台机器分成第1、第2两组,每组看成一个机器,分法如下(该步为2台虚拟机器假设过程)组号(d1)第一组(加工时间t2(:,1))第二组(加工时间t2(:,2))1m1m2+m3+ +mm2m1+m2m3+m4+ +mmm-1m1+m2+ +mm-1mmm台机器共有m-1种分法,每种分法均按照j&b法则找出最短加工期的加工顺序。newsort(:,d1)表示第d1种分组方式下的零件序号排序(此部分用子程序i完成)3、在d1中分组方式下生成的加工时间矩阵t1(:,:,d1)和完工时间矩阵t

9、2(:,:,d1)t2(i,:,d1),t1(i,:,d1)中i等于newsort(i,d1)t2(n,m,d1)表示第d1种分组方式下的最短工期t表示第m-1种分组方式下的最短工期数组4、算出t2后,就可以找出m-1种分组方式下的最优解了。3.4问题的求解和结果工作流程否子程序i开始d1>m-1 ?第d1种分组方式下2个虚拟机器,对应加工时间t2对加工零件时间排序:t2(:,1)a(:,d1) 下标index1t2(:,2)b(:,d1) 下标index22台机器下确定零件加工顺序newsort(:,d1)按上加工顺序的时间矩阵t1(:,:,d1)按约定算法生成按上加工顺序的完工时间矩

10、阵- t1(:,:,d1)将该分组方式下产生的最短工期放入矩阵td1=d1+1输入原始数据t是对t进行排序,sort(t)tmint下标index0最优解:最优零件排序 -no_sort 最优完工时间矩阵tmin最优加工时间矩阵t1限制坐标范围画出甘特图结束输出结果:(包含加工编号,零件编号,最优加工时间绝阵t1,最短工期)-result子程序ii算法流程图如下:i >n?初始线索index1/2下标i1=1; i2=1是否最小值下标index1(i1,d1)=0?i1=i1+1否是最小值下标index2(i2,d1)=0?i2=i2+1得到没有排位的零件index1/2下标i1,i2是

11、a(i1,d1)<=b(i2,d1) ?说明遍历t2,最小值在第一列零件index1(i1,d1)应靠前加工newsort(i)=index1(i1,d1)遍历index2(:,d1),在index2(:,d1)找到零件index1(i1,d1)并致零,index1(i1,d1)也=0说明遍历t2,最小值在第一列零件index2(i2,d1)应靠后加工newsort(n-i+1)=index2(i2,d1)遍历index2(:,d1),在index2(:,d1)找到零件index1(i1,d1)并致零,index1(i1,d1)也=0否i=i+1子程序i是否子程序ii/甘特图画法(过程1

12、包含一个条件若j为偶数,线条加粗,为简化流程图,此处未列出)求出加工零件在机器j上加工时间x0=tmin(i,j)-max(tmin(i-1,j),tmin(i,j-1)是否是否 j>n ?j=j+11i=i+11j=j+1i=i+1第i个加工零件在第一个机器上加工,开始时间为tmin(i,1)-x0,结束时间为tmin(i,1),高度为i,画出这一段时间内的加工图过程1第i个加工零件在第j个机器上加工,开始时间为tmin(i,j)-x0,结束时间为tmin(i,j). 高度为i,画出这一段时间内的加工图过程1标出机器号j 标出机器号j 求出加工零件在机器j上加工时间x0 =tmin(i

13、,1)-tmin(i-1,1)是否j=1 ? i>n ?标出第i个生产的零件编号no_sort(i)是i =1 ?否是否j=1 ?第一个加工零件在第一个机器上加工,开始时间为0,结束时间为tmin(1,1),高度为i,画出这一段时间内的加工图过程1第一个加工零件在第j个机器上加工,开始时间为tmin(1,j-1),结束时间为tmin(1,1). 高度为i,画出这一段时间内的加工图过程1标出机器号j 标出机器号j 根据上述利用软件进行仿真,最终运行结果为:>>请输入加工时间矩阵t(i,j)表示第i个零件在机器j上的加工时间:1 4 8 7;2 5 4 4;6 5 6 3;7 4

14、 3 1 ;1 4 6 8result = 1 5 1 5 11 19 2 1 2 9 19 26 3 2 4 14 23 30 4 3 10 19 29 33 5 4 17 23 32 34输出结果说明第一列元素表示加工顺序,第二列表示加工零件编号,第三列到以后为:每个零件在不同机器上的完工时间矩阵甘特图是一种用来形象的表示机器生产进度(加工顺序的)图形。此问题中求解出的甘特图如下:四、 参考文献1 朱德通著,最优化模型与实验m,同济大学出版社,2003.62 宋存利著,求解多工艺路线车间调度问题的禁忌-遗传算法j,大 连交通大学出版社,2008.4 3陈国良著,遗传算法及其应用m,人民邮电

15、出版社,2000.44董立华 高秀莲著 ,数学建模与数学实验m , 天津教育出版社,2009.5五、 附录有关工件加工顺序的程序:clear;clf;t=input('请输入加工时间矩阵nt(i,j)表示第i个零件在机器j上的加工时间:n');n m=size(t); % n 表示加工零件数,m 表示机器数t2=zeros(n,2); % t2 用来存放两台虚拟机器的时间a=zeros(n,m-1); % a b分别存放两台虚拟机器的时间排序后的时间, m-1为根据约翰逊贝尔曼法则(johnson-bellman rule,一下简称 j&b),当 m>2,可以分为

16、 m-1中情况 b=zeros(n,m-1); % a(:,i) 表示 第i中分法下的排序方法index1=zeros(n,m-1);index2=zeros(n,m-1); % index1 index2 分别存放两台虚拟机器的时间排序后对应的零件序号newsort=zeros(n,m-1); % newsort(:,i) 表示根据 j&b 法则第i中分法下的加工顺序t1=zeros(n,m,m-1); % t1(:,:,i)表示根据 j&b 法则第i中分法下的加工顺序后的时间表t2=zeros(n,m,m-1); % t2(:,:,i)表示根据 j&b 法则第i中分

17、法下的加工顺序后的最短工期表t=zeros(1,m-1); % tmin(n,m) 加工完成时间矩阵,表示i零件在j机器上完成后的总时间no_sort=zeros(1,n); % no_sort 为最后根据m-1中分法下的最后的最优解for i=1:n % 编号 no(i,1)=i;end% j&b法则模拟两个虚拟机器for d1=1:m-1 for i=1:d1 t2(:,1)=t2(:,1)+t(:,i); %机器1 end for i=d1:m t2(:,2)=t2(:,2)+t(:,i); %机器2 end a(:,d1), index1(:,d1)=sort(t2(:,1);

18、 % a(:,d1)中保存第d1分法中机器1中按从小到大的排序值,index1(:,d1)对应的零件下标 b(:,d1), index2(:,d1)=sort(t2(:,2); % b(:,d1)中保存第d1分法中机器2中按从小到大的排序值,index2(:,d1)对应的零件下标endfor d1=1:m-1% 求m-1中两个虚拟机的排序情况% 根据 j&b 法则第 d1 中分法下的加工顺序j0=1;j1=1; for i=1:n% 思想为:一组中有n个零件排序,t2(:,1)(机器1中时间值),t2(:,2)(机器1中时间值)% a(:d1) b(:,d1)分别将机器1中时间值、机器

19、2中时间值按从小到大排序% 判定t2中最小值属于机器(1,2),每次从a(:,d1)最小与b(:,d1)最小判定% 若newsort(:,d1)对应下标确定,则将inde1(:,d1),index2(:,d1)对应下标致零,确保下次不参与最小% 值比较 i1=1; % i1,i2分别表示每轮最小值a(:,d1)、b(:d1)下标(共n次,确定newsort(:,d1)的零件排序) i2=1; % 每次均从第一个最小值开始判定 while index1(i1,d1)=0 % 如果最小值下标为零,已经排位,不在比较,i1+;i2+,向下一位走 i1=i1+1; end while index2(i

20、2,d1)=0 i2=i2+1; end if a(i1,d1)<=b(i2,d1) % 如果最小值产生在a(:,d1),即机器1,则先加工 newsort(j0,d1)=index1(i1,d1); j0=j0+1; %说明靠前位置下移 for j=1:n if index2(j,d1)=index1(i1,d1) %遍历 index2,=0说明该工件已经加入排序中 index2(j,d1)=0; index1(i1,d1)=0; %加入排位后,将下标致零 end end else % 如果最小值产生在b(:,d1),即机器2,则最后加工 newsort(n-j1+1,d1)=inde

21、x2(i2,d1); j1=j1+1; for j=1:n if index1(j,d1)=index2(i2,d1) %遍历 index1,=0说明该工件已经加入排序中 index1(j,d1)=0; index2(i2,d1)=0; %加入排位后,将下标致零 end end end endendfor d1=1:m-1 for i=1:n t1(i,:,d1)=t(newsort(i,d1),:); % 排序后的时间矩阵 end for i=1:n %为t2第一列赋值 for j=1:i t2(i,1,d1)=t2(i,1,d1)+t1(j,1,d1); end end for i=2:m

22、 %为t2第一行赋值 for j=1:i t2(1,i,d1)=t2(1,i,d1)+t1(1,j,d1); end end for i=2:n %为i>1,j>1赋值 for j=2:m t2(i,j,d1)=t1(i,j,d1)+max(t2(i-1,j,d1),t2(i,j-1,d1); %实际含义是:零件i在机器j上完成的时间为零件i在机器j的加工时间 + %零件i在j-1机器(满足要求:顺序加工)和上一个零件加工完成中的最大一个(每个机器一次只能加工一个零件) end end t(d1)=t2(n,m,d1); % 将m-1种结果产生的最小时间赋值给tend% 对t排序,

23、得到m-1中结果中的最优解tmin,index0=sort(t); tmin=t2(:,:,index0(1); % 最优解中加工完成时间矩阵(排序后的,不同与t中零件排序) no_sort=newsort(:,index0(1); % tmin每行对应的的零件for i=1:n t1(i,:)=t(no_sort(i),:); % 对应最优排序后的加工时间矩阵 endresult=no,no_sort,tminfprintf('输出结果说明第一列元素表示加工顺序,n第二列表示加工零件编号,第三列到以后为:n每个零件在不同机器上的完工时间矩阵');% 画出加工零件的甘特图% 变量说明以及输出说明% 每一行表示一个零件加工过程% 在线条上的数字表示第几个机器% 图片开始的数字为零件的编号% line();画出i零件在j机器上的加工情况% text();标出机器代号grid on;axis(-4 tmin(n,m)+2 0 n+1); % 限制坐标范围for i=1:n k=no_sort(i); t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论