模拟退火算法智能车间流水调度

一、实验目的
(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

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
流水车间调度问题是指在一个车间中有多个工序需要完成,每个工序需要在一台特定机器上完成,不同工序之存在先后顺序的限制,同时每个机器只能同时处理一个工序。流水车间调度问题是一个NP难问题,难以通过精确求解算法得到最优解。模拟退火算法是一种常用的启发式算法,被广泛应用于求解NP难问题,包括流水车间调度问题。 模拟退火算法的基本思想是通过模拟物理系统的退火过程来寻找问题的全局最优解。在流水车间调度问题中,可以将不同的工序看作组成系统的粒子,每个粒子的状态对应着一种调度方案。算法从一个随机的初始状态开始,通过一系列随机变换(如交换两个工序的位置)来寻找更优的解,并以一定概率接受劣解,以避免陷入局部最优解。 具体地,模拟退火算法通过定义一个能量函数来衡量当前调度方案的质量,通常采用流水车间调度问题中的加权完工时(weighted completion time)作为能量函数。算法从一个随机的初始状态开始,通过一系列随机变换(如交换两个工序的位置)来寻找更优的解,并以一定概率接受劣解,以避免陷入局部最优解。随着算法迭代的进行,接受劣解的概率逐渐减小,直到最终收敛于一个较优的解。 需要注意的是,模拟退火算法的求解结果并不能保证是最优解,但可以得到一个较优的近似解。同时,算法的求解时也比较长,需要通过参数调优和合理的实现方式来提高求解效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值