一种新的模拟退火算法解决作业车间调度问题的制作方法

文档序号:11063800阅读:1480来源:国知局
一种新的模拟退火算法解决作业车间调度问题的制造方法与工艺

本发明涉及作业车间调度技术领域。



背景技术:

作业车间调度问题(Job-Shop Scheduling Problem,JSP)是制造执行系统研究的核心和重点之一,它的研究不仅具有重大的现实意义,而且具有深远的理论意义。JSP就是根据产品制造需求合理分配资源,进而达到合理利用产品制造资源、提高企业经济效益的目的。JSP是产品制造行业中共存的问题,它与计算机集成制造系统(Computer Integrated Manufacturing Systems,CIMS)的工厂管理、产品制造层次紧密相关,是CIMS领域中研究的重要课题。JSP是一个典型的NP-hard问题,它的研究必然会对NP问题的研究起到有意义的影响。

模拟退火算法(SA)是是一种适合解决大规模组合优化问题的算法。最早由Metropolis在1953年提出。源于统计物理学,它模拟实际固体退火过程的温度变化,即先将固体加温至充分高,在逐渐冷却。加温时,固体内部粒子变为无序状态,内能增大;而逐渐降温时,粒子趋于有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减到最小。模拟退火算法(SA)是局部搜索算法的扩展,它不同于局部搜索之处是以一定的概率选择领域中的最优值状态。在解决NP完全问题,SA有很大的利用价值。

模拟退火算法简单有效的搜索方式避免了数值算法的高计算量,又避免了局部搜索算法快速收敛于局部最优解的缺点。但是,模拟退火算法是一种串行优化算法,它的执行过程要经历双重循环:内循环(在当前温度下进行Markov链长度搜索)和外循环(利用降温函数进行降温求控制状态更新概率),而其每部只随机尝试当前状态领域中的一个状态,这无疑会增加其运算时间。另外,模拟退火算法由于全局收敛条件难以实现,并且,概率接受使得当前状态可能比搜索轨迹中的某些状态还要差,从而实际算法往往最终得到近似最优解,甚至可能比中间经历的最坏解要差,而且搜索效率差。



技术实现要素:

针对现有模拟退火算法中存在的上述不足,本发明要解决的技术问题是提供一种新的模拟退火算法解决作业车间的调度问题。

本发明的目的是克服现有技术中存在的:收敛速度不够快,最终最优解不够精确的缺点。

本发明为实现上述目的所采用的技术方案是:一种新的模拟退火算法解决作业车间调度问题,该算法的主要步骤如下:

步骤1:初始化算法参数:初始温度T0(保证充分大),初始解状态矩阵C(是算法迭代的起点),工序时间矩阵P,迭代次数L。

步骤2:计算当前解。

步骤3:降温。

步骤4:产生新解S′。

步骤5:如果满足终止条件输出当前解作为最优解,输出对应的状态矩阵C,工序时间矩阵P,结束程序。否则转步骤2。

本发明的有益效果是:

1、设定了简单的状态矩阵的转移函数,减少了算法的运行时间。

2、设定接受新解的判定准则,使算法不容易陷入局部最优。

3、设定了算法的终止条件,使算法的解更加精确。

附图说明

本发明的算法基本流程图。

具体实施方式

作业车间调度问题(JSP)是一类满足任务配置和顺序约束要求的组合优化问题,属于NP完全问题。作业车间调度问题是一种职能单位,它的工段或工作中心事围绕着不同类型设备或工序来组织的,如钻床、锻压机、装配线、解工总行等。作业车间调度问题可描述为:有n个加工顺序不同的工件要在m台机器上完成加工。

以下,结合流程图,对本发明进行详细说明,其具体实施步骤如下:

步骤1:初始化算法参数:初始温度T0(保证充分大),初始解状态矩阵C(是算法迭代的起点),工序时间矩阵P,迭代次数L。

步骤2:计算当前解:用数学模型描述如下:

目标函数:

S=minf(S1,S2,…,Sn)=min max1≤o≤w{max1≤k≤m{max1≤i≤n Coik}} (1)

约束条件:

Coik-Poik+M(1-aoihk)≥Coih

(o=1,2,…,w;i=1,2,…,n;h,k=1,2,…,m) (2)

Cojk-Coik+M(1-xoijk)≥poik

(i,j=1,2,…,n;o=1,2,…,w;k=1,2,…,m) (3)

Coik≥0(o=1,2,…,w;i=1,2,…,n;k=1,2,…,m) (4)

xoijk=0或1(i,j=1,2,…,n;o=1,2,…,w;k=1,2,…,m) (5)

maxi{Coi}≤Co (6)

其中,式(1)表示目标函数,即完成时间(Makespan);式(2)表示工艺约束条件决定的每个工件的操作的先后顺序;式(3)表示加工每个工件的每台机器的先后顺序;式(4)表示完工时间变量约束条件;式(5)表示变量可能的取值大小。上述公式中所涉及的符号定义含义如下:Coik和Poik分别为第o个订单(或阶数)中的第i个工件在机器k上的完成时间点和加工时间长度;M是一个足够大的整数;式(6)表示第o个订单的所有工件最大完成时间小于订单周期Co的时间约束;aoihk和xoijk分别为指示系数和指示变量,其含义为:

步骤3:降温:采用经典的衰退函数降温:其中,k为迭代次数,k=1,2,…n;

步骤4:产生新解S′:

(1)新解的产生机制:

状态矩阵C的变化:

迭代次数L:L=L-1。

将更新后的数据代入步骤2所列的方程,计算新的临时解S(k);

(2)计算新的临时解与当前解的目标函数差:ΔS=S(k)-S(k-1);

(3)接受新解准则:如果满足ΔS<0,则S′=S(k),否则以概率接受S(k)作为新的当前解。

步骤5:如果满足终止条件输出当前解作为最优解,输出对应的状态矩阵C,工序时间矩阵P,结束程序,否则转步骤2,终止条件为:

满足T(k)>0且ΔT=T(k)-T(k-1)<ε,S(k)-T(k-1)<δ,其中ε和δ是温度下降阈值和精确度,是正实数。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1