发明名称 基于一维粒子群算法获得零件加工最优调度方案的方法
摘要 基于一维粒子群算法获得零件加工最优调度方案的方法,具体按照以下步骤实施:步骤1:对柔性车间生产调度的问题进行数学符号的形式化描述,并确定优化目标的评定指标;步骤2:建立综合优化目标函数F;步骤3:建立调度优化过程的约束条件;步骤4:设计基于启发式规则的一维编码方式粒子群算法;步骤5:进行迭代运算,输出最优粒子,对其进行解码作为调度方案的最终结果。本发明在满足资源约束与工序约束等条件下,以制造期、机床总负荷和单机最大负荷为综合优化目标,采用一维编码方式的粒子群算法可以迅速获得零件加工的最优调度方案;加入完工时间最早的启发式规则,加速了综合目标的收敛。
申请公布号 CN103809506B 申请公布日期 2016.06.01
申请号 CN201410037802.X 申请日期 2014.01.26
申请人 西安理工大学 发明人 刘永;高新勤;杨明顺;武志强;朱林林
分类号 G05B19/18(2006.01)I 主分类号 G05B19/18(2006.01)I
代理机构 西安弘理专利事务所 61214 代理人 李娜
主权项 基于一维粒子群算法获得零件加工最优调度方案的方法,其特征在于,以离散型柔性制造车间进行多工件多工艺路线加工为应用对象,具体按照以下步骤实施:步骤1:对柔性车间生产调度的问题进行数学符号的形式化描述,并确定优化目标的评定指标;步骤2:建立综合优化目标函数F;步骤3:建立调度优化过程的约束条件;步骤4:设计基于启发式规则的一维编码方式粒子群算法,具体为:4.1)首先定义如下变量:N——粒子种群规模;d——粒子编号,d=1,...,N;g——当前进化代数;g<sub>max</sub>——进化总代数;<img file="FDA0000927847850000011.GIF" wi="150" he="71" />——第g代粒子d的个体极值点;gbest<sup>g</sup>——第g代的全局极值点;<img file="FDA0000927847850000012.GIF" wi="60" he="70" />——第g代粒子d的飞行速度;<img file="FDA0000927847850000013.GIF" wi="62" he="71" />——第g代粒子d的位置rand()——服从U[0,1]的随机数;ω——粒子飞行惯性系数,0.4≤ω≤0.9;c<sub>1</sub>、c<sub>2</sub>——学习系数;r——未完工工件数目,r≤n;j_end<sub>ij</sub>——工序O<sub>ij</sub>的完工时间;m_end<sub>kl</sub>——机床k加工第l道工序的完工时间;粒子在优化过程中会产生两个极值,一个是粒子飞行经过的最好位置,称为个体极值点<img file="FDA0000927847850000023.GIF" wi="169" he="62" />另一个是所有粒子目前找到的最好位置,称为全局极值点gbest<sup>g</sup>;在优化过程中,粒子不断向两个极值点“学习”,并且保留一定的原飞行方向,逐步向最优位置逼近;粒子在飞行过程中速度和位置的计算公式如下:速度计算公式:<maths num="0001"><math><![CDATA[<mrow><msubsup><mi>v</mi><mi>d</mi><mrow><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><mi>&omega;</mi><mo>*</mo><msubsup><mi>v</mi><mi>d</mi><mi>g</mi></msubsup><mo>+</mo><msub><mi>c</mi><mn>1</mn></msub><mo>*</mo><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mrow><mo>(</mo><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><msubsup><mi>pbest</mi><mi>d</mi><mi>g</mi></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>d</mi><mi>g</mi></msubsup><mo>)</mo></mrow><mo>+</mo><msub><mi>c</mi><mn>2</mn></msub><mo>*</mo><mi>r</mi><mi>a</mi><mi>n</mi><mi>d</mi><mrow><mo>(</mo><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><msubsup><mi>gbest</mi><mi>d</mi><mi>g</mi></msubsup><mo>-</mo><msubsup><mi>x</mi><mi>d</mi><mi>g</mi></msubsup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000927847850000021.GIF" wi="1293" he="95" /></maths>位置计算公式:<maths num="0002"><math><![CDATA[<mrow><msubsup><mi>x</mi><mi>d</mi><mrow><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>x</mi><mi>d</mi><mi>g</mi></msubsup><mo>+</mo><msubsup><mi>v</mi><mi>d</mi><mrow><mi>g</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>;</mo></mrow>]]></math><img file="FDA0000927847850000022.GIF" wi="420" he="87" /></maths>4.2)粒子编码和解码编码时,设定粒子的每个分量表示一个选定工序,总工序数目决定粒子编码长度,使用rand()生成粒子位置、速度的各分量,形成初始粒子种群及初始速度种群;解码时,假设此时未完工工件数量为r个,且这r个工件按编号从小到大排列,按等概率挑选工件;粒子各分量视为概率p∈(0,1];设变量q∈{1,2,...,r},依次挑选q值,当p∈((q‑1)/r,q/r]时,选择剩余r个工件中的第q个进行加工;变量u<sub>i</sub>表示工件i被挑中的次数,亦即工件i的第u<sub>i</sub>个工序;若u<sub>i</sub>等于工件i工序总数,表示该工件加工完毕,未完工工件数目r=r‑1;如此遍历粒子的每一个分量,完成解码过程;4.3)设计启发式规则设工序O<sub>ij</sub>可选的加工机床集合M<sub>ij</sub>,集合中机床M<sub>k</sub>已完成l道工序的加工任务,完工时间为m_end<sub>kl</sub>;工序O<sub>i(j‑1)</sub>完工时间为j_end<sub>i(j‑1)</sub>,则工序O<sub>ij</sub>的在机床M<sub>k</sub>上的预完工时间C<sub>ijk</sub>=max(m_end<sub>kl</sub>,j_end<sub>i(j‑1)</sub>)+t<sub>ijk</sub>;遍历集合M<sub>ij</sub>,选择C<sub>ijk</sub>最小的机床M<sub>k′</sub>作为O<sub>ij</sub>的加工机床,则最终O<sub>ij</sub>的开工时间为S<sub>ijk′</sub>=max(m_end<sub>k′l</sub>,j_end<sub>i(j‑1)</sub>)+t<sub>ijk′</sub>,完工时间C<sub>ijk′</sub>=S<sub>ijk′</sub>+t<sub>ijk′</sub>;4.4)设计算法流程粒子群算法的操作步骤如下,第1步:生成种群规模为N的初始粒子群,并随机生成粒子初始位置、速度,令g=1,d=1;第2步:对第g代中的粒子d进行解码,根据启发式规则选定机床,计算该粒子的适应度值(目标函数)F;第3步:判断粒子d的适应度值F是否小于个体极值<img file="FDA0000927847850000031.GIF" wi="143" he="71" />和全局极值gbest<sup>g</sup>,如果是则更新<img file="FDA0000927847850000032.GIF" wi="150" he="70" />和gbest<sup>g</sup>值为F;第4步:如果d&lt;N则d=d+1并转入第2步,否则g=g+1并执行第5步;第5步:更新粒子速度<img file="FDA0000927847850000033.GIF" wi="65" he="70" />和粒子位置<img file="FDA0000927847850000034.GIF" wi="103" he="71" />并限制粒子位置在[0,1]区间;第6步:如果g<g<sub>max</sub>,是则转入第2步,否则找出最优粒子进行解码;步骤5:进行迭代运算,输出最优粒子,对其进行解码作为调度方案的最终结果。
地址 710048 陕西省西安市金花南路5号