一、实验目的
(1)通过实验问题的描述,让学生对静态置换流水车间调度问题有一个初步的理解并掌握调度的目的。
(2)通过总体方案的构思让学生了解该调度的工作原理,并学会绘制流程图。
(3)通过操作MATLAB仿真软件,了解编码和解码的过程,并且理解目标的求解过程和寻优原理。
(4)用过自主编程解决后续问题,促进学生进行深层次的思考和实践。
二、实验内容
通过分析实验案例和实验代码,自行设计出一套程序对相关数据进行模拟,并求出近似解。
三、实验设备
计算机,MATLAB软件
四、实验步骤
(1)理解什么静态置换流水车间调度问题
(2)对问题进行假设
(3)数学模型的建立
(4)目标函数的求解
(5)调度算法的设计
(6)设计迭代终止条件
(7)算法性能测试
(8)得出目标函数值并分析
五、实验原理
(1)模拟退火算法原理
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温升变为无序状,内能增大,在冷却的过程中,粒子从无序变为当前温度下的有序状,然后温度降低。每一个温度都对应一个有序状态,最后在常温时达到内能最小。
(2)模拟退火算法的过程
Step1. 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点),每个温度的迭代次数L=1000(每个温度状态下找1000次寻找该温度下的稳定状态);
Step2. 对k=1, … L做第(3)至第6步;
Step3. 产生新解S’,计算增量 =C(S’)-C(S),其中C(S)为评价函数;
Step4. 若 <0则接受S’作为新的当前解;
Step5. 如果满足终止条件,则进行下一步。(终止条件为当前温度下是否寻找1000次);
Step6. T逐渐减少,且T>Tmin(Tmin为程序终止温度),然后转第2步,反之程序结束,输出最优解。
六、问题描述
本次实验解决的问题是100个工件在9台机器上加工的过程,每个工件在各台机器上的加工顺序一致,同时限制每个工件只能在各台机器上加工一次,每台机器一次只能加工一个工件,各工件在各台机器上的加工时间已知。调度的最终目的是求得各工件在机器上的加工顺序,使某项优化指标达到最优。
假设条件:
(1) 一个工件在同一时刻不能在两台或两台以上机器上加工。
(2) 加工过程中,工件采用平行移动方式,即加工完上一道工序后立即将工件送去加工下一道工序。
(3) 每个工件在每台机器上的加工时间固定,与工件的加工顺序无关。
(4) 工件在加工过程中不允许中断,即工件的某个工序一旦开始加工,就必须等到完工后才能离开,中途不能停止或插人其他工序。
(5)允许工件等待和机器闲置。
七、目标函数求解
(1)完工时间目标函数
完工时间为机床加工好最后一个工件的最后一道工序的时间。因此完工时间可由公式:
表示第i个工件的第j个工序的加工时间, 是第1个工件的完工时间, 是第 个工件的完工时间, 表示第i个工件的第j个工序的完工时间。目标函数最大完工时间 = (第100个工件工序9的完工时间)。
(2)新解的生成
在大规模问题下,单一的搜寻方式极易陷人局部最优解,从而使解的质量下降。为了提升算法在大规模问题下的普适性,采用基于概率选择的多邻域搜索操作协同的方式生成新解。3种邻域搜索操作如下:
(1)二交换 在编码序列中随机选择两点,颠倒两点间所有工件的顺序。
(2)三交换 在编码序列中随机选择三点,交换三点之间的两段序列位置。
(3)点交换 在编码序列中随机选择两点,交换这两点对应的工件的加工顺序。(如果前种不好实现,可以只用这一种)
C=zeros(41,7)*nan;
S=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41];
A=[48.3 163.8 197.4 81.9 6.3 84 37.8 86.1;
42 27.3 52.5 123.9 191.1 142.8 155.4 172.2;
2.1 102.9 21 14.7 71.4 157.5 195.3 199.5;
113.4 31.5 75.6 123.9 170.1 151.2 25.2 31.5;
115.5 65.1 182.7 4.2 121.8 10.5 117.6 50.4;
136.5 195.3 77.7 147 100.8 10.5 75.6 161.7;
46.2 174.3 180.6 151.2 149.1 21 149.1 12.6;
207.9 42 159.6 189 119.7 69.3 79.8 165.9;
203.7 2.1 147 117.6 10.5 117.6 201.6 75.6;
44.1 27.3 35.7 54.6 16.8 186.9 176.4 37.8;
132.3 75.6 193.2 105 39.9 113.4 176.4 44.1;
94.5 12.6 189 8.4 163.8 65.1 136.5 71.4;
147 46.2 121.8 16.8 4.2 2.1 35.7 88.2;
86.1 92.4 39.9 126 2.1 128.1 163.8 155.4;
12.6 136.5 203.7 126 163.8 52.5 94.5 96.6;
147 182.7 168 168 16.8 23.1 174.3 2.1;
69.3 105 58