问题描述:
已知
1:有n 个工件需要在m台机器上流水加工
2:每个工件的加工顺序相同
3:从第一台机器至最后一台机器每个工件均在0时刻释放
4:每个工件在每台机器上只加工一次
5:一个工件不能同时在不同的机器上加工
6:每个机器同时只能加工一个工件
7:各个工件在各个机器上的加工时间(共nm个数字)
目标
给出调度方案,使调度总完工时间最小
要求
使用模拟退火算法进行求解
解决方案:
根据模拟退火算法,我们要从一个随机的初始状态出发,然后在此状态周围的解空间找新解,评估,然后概率选择这个新解。应用到流水车间调度问题的这个场景,解空间是
那么大。我们为了简化这个问题,可以认为每个工件在每个机器上的加工时间差距不会过大,这将使得很大的概率每个机器的加工顺序是一样的,而这样的解空间只有n!这么大,所以我们接下来的实验将在这个前提下进行。我们可以随机生成一个初始的顺序,然后随机交换其中两个工件的顺序,把新的顺序传入计算时间的函数,如果新顺序的时间比开始的小,我们就直接采纳这个新顺序;如果新顺序的时间比开始的大,我们通过