制 造 业 信 息 化
MMMaaannn###$$$%%%&&&’’’###((()))nnn*** +++nnn$$$,,,(((---%%%’’’))),,,nnn%%%...)))///aaa’’’))),,,nnn
蚂蚁算法在矩形件优化排样中的应用
黄红兵
(福建农林大学 计算机学院 ,福建 福州 350002)
摘 要’蚂蚁算法是解决优化问题的一种相对较新的启发式算法,大规模的矩形件优化排样问题是个 !" 难题% 文中尝
试用蚂蚁算法求解矩形件优化排样问题,根据提出的求解算法,开发出了基于蚂蚁算法的计算机辅助优化排样系统,并将
蚂蚁算法的求解结果和遗传算法进行了对比,试验结果证明了用蚂蚁算法求解矩形件优化排样问题的可行性和有效性%
关键词’蚂蚁算法( 矩形件排样( 启发式算法( 遗传算法
中图分类号’#"$%&
文章编号’"##$%$&&&) $##’$ #$%##’(%#&
文献标识码’!
1 引 言
蚂 蚁 算 法( %&’ %()*+,’-.$ !/"是 一 种 源 于 生 物 世 界 的
仿生类进化算法,该算法模仿蚂蚁觅食时的行为,按照启
发式思想 ,借助信息素 0-1+*.*&1 的作用 ,通过个 体 之 间
的信息交流与协作,逐步收敛到问题的全局最优解%
蚂蚁算法自问世以来表现出了强大的生命力 % 蚂蚁
算法出现后,用来求解的典型问题主要有旅行商问题&二
次规划 &度限制树 &背包 问 题 !3" &工 件 排 序 优 化 !2"&装 箱 问
题 !5"等%
矩形件优化排样是指在给定的矩形板材上排放出所
需要的矩形件,使材料的浪费尽量少% 如何合理地在原材
料上切割出给定规格的零件, 尽可能提高原材料的利用
率,是一个有重大经济意义的课题% 大规模的矩形件优化
排样问题是个 30 难题,目前的求解算法多采用启发式算
法,如遗传算法&模拟退火算法等% 启发式算法能够在较
短的时间内求出问题的较优解, 但不能保证求得问题的
最优解% 本文尝试用蚂蚁算法来求解矩形件优化排样问题%
" 矩形件排样问题的蚂蚁算法求解
!"# 问题求解的基本思路
对于给定的 $ 个矩形 , 排样时除了要确定每个矩形
的排放顺序和排放方式外, 还要确定矩形在板材上具体
的排放位置% 对于排放顺序已定的矩形序列,用何种排放
算法进行排放,对问题的求解效果影响很大% 本文中采用
的矩形排放算法为基于最低水平线的搜索算法 !4"%
矩形件优化排样问题的蚂蚁算法求解, 其基本思想
是将问题分为两个相互融合的部分’ 先通过蚂蚁算法确
定矩形的排放顺序, 然后按照特定的矩形排放算法生成
排样图,即’借助信息素,通过蚂蚁对矩形的访问,用蚂蚁
找 出矩 形 的 排 放 先 后 顺 序 并 确 定 每 个 矩形 的 排 放 方 式 %
按矩形排放算法生成排样图后, 通过比较不同的矩形访
问序列对应的板材利用率,最终得到较优的排样方案%
在蚂蚁算法中,信息素对蚂蚁的行动具有指导作用 ,
而 蚂 蚁 访 问 矩 形 的 先 后 顺 序 对 应 矩 形 被 排 放 的 先 后 次
序,所以在用蚂蚁算法求解矩形排样问题时,矩形上信息
素 的 计 算 及 信 息 素 的更 新 规 则 如 何 确 定 才 比 较 合 理 ,是
问题求解的关键%
!%! 信息素的计算和更新
在实际排放过程中, 矩形往往按面积从大到小进行
排放% 一般情况下,零件面积越小,板材的面积越大,材料
的利用率就会越高% 当大零件排放完后再排放小零件,板
材空间变得越来越小且会产生很多碎块, 如果比较小的
矩形最后排放,填充这些碎块的可能性将会增加,有利于
提高板材的利用率(反之如果先排放小零件,后面留给大
零件的空间选择余地就会越来越少, 板材的利用率就会
越来越低% 另一方面,对于长宽比相差较大的矩形件,应
该优先排放 !5"%
考虑到以上两点,本文对矩形 &16’ 上的信息素7-1+*.*&1
) &16’$, 定 义 为 ’ 7-1+*.*&1 ( &16’$ 891,)-’%+1:;%+1:
( &16’$ <91,)-’=:’,*;( >?9$ &16’, 其 中 91,)-’%+1: 表 示 面 积
因素在信息素中计算中所占的权重,%+1:( &16’$ 表示矩形
&16’ 的 面 积 ,91,)-’=:’,* 表 示 矩 形 长 宽 比 值 因 素 在 信 息
素 中 所 占 的 权 重 ,( >?9$ &16’
表 示 矩 形 &16’ 的 长 度 与 宽 度
的比值%
每当一个矩形被蚂蚁访问时, 就表示对应的矩形被
选中参与排样,矩形上的信息素就要及时进行更新,由于
每一个矩形迟早都会被不同的蚂蚁访问到, 只不过是被
蚂蚁访问到的先后顺序有差别,本文中约定’!蚂蚁访问
到矩形的不同顺序对应不同的优先级, 如果一个蚂蚁访
问到一个矩形的次序越早,那么该次访问的优先级越高,
蚂 蚁 在 相 应 的 矩 形 上 留 下 的 信 息 素浓 度 增 量 就 越 大 (反
之, 则相应的蚂蚁在对应的矩形上留下的信息素浓度增
量就越小% 即’多个蚂蚁即使都访问了同一个矩形,由于
访问到的先后次序不同, 每个蚂蚁留给同一个矩形的信
息素浓度增量可以不一样% "同一个蚂蚁访问了面积大
小不等的矩形后, 给各个矩形带来的信息素浓度增量是
不一样的, 增量与矩形的面积成反比% 对于信息素的更
新 , 本 文 采 用 如 下 的 处 理 方 法 ’7-1+*.*&1@( &16’$ 8( A-
BCD;*+E1+* @+ ?&$ ; F&,’ ;) A?%+1:) &16’$$ , 其 中 7-1+*.*&1@
) &16’$ 表示第 & 个蚂蚁给矩形 &16’ 留下的信息素浓度增
量 ,*+E1+* @+ 表 示 蚂 蚁 @ 从 出 发 矩 形 开 始 ,当 访 问 到 矩 形
!" 机械工程师 $##) 年第 $ 期
MMMaaannn###$$$%%%&&&’’’###((()))nnn*** +++nnn$$$,,,(((---%%%’’’))),,,nnn %%%...)))///aaa’’’))),,, nnn
制 造 业 信 息 化
ne#$ 时已经访问过的矩形总数( 包括矩形 ne#$) ,n 表示要
排放的矩形总数 ,%n&$ 表示一个标准的信息素 单 位 ,’(e)
( ne#$) 表示矩形 ne#$ 的面积$
!"# 蚂蚁算法的参数设置
( !) 状态转移规则
在确定状态转移概率规则时, 要综合考虑矩形面积
和矩 形 长 宽 比 两 个 方 面 的 因 素 $ 在 下 面的 式 子( !) 中 ,
*+((en$%ne#$ 表示矩形, ,-./($)n*e 是常数参数,表示矩形
面 积 大 小 对 蚂 蚁 选 择 影 响 程 度 的 系 数 ,(e-)&n 表 示 尚 未
排放的矩形$ 如果蚂蚁 $ 选择矩形 ne#$ 作为下一个要访
问的矩形 ,0+-.1(/23)345( *+((en$,ne#$) 表示第 $ 只 蚂 蚁 从
当前所在矩形 *+((en$ 转移到下一个矩形 ne#$ 的概率 &当
ne#$ 属 于 蚂 蚁 $ 已 经 访 问 过 的 矩 形 时 ,0+-.1(/2)2345
( *+((en$,ne#$) 67, 否 则 0+-.1(/2)2345 ( *+((en$,ne#$) 6
(’ .8e(/-/ne( ne#$)( 9’ ’(e)( ne#$) ,-./($)n*e() :( ! .8e(/-/ne
( (e-)&n) 9’(e)( (e-)&n) ,-./($)n*e) $
( ") 全局信息素修正规则
当每一只蚂蚁都访问完所有的矩形时, 对每个矩形
上的信息素作一次全面的修正, 公式如下&.8e(/-/ne;& ( $ <
=.)n)6>)=$9.8e(/-/ne;& ( $)#!".8e(/-/ne;&( ?@6,@6-) !A",
7@>)=$@?,>)=$ 表 示 矩 形 上 信 息 素 的 持 久 性 系 数 ,- 对 应
表示
蚂蚁的个数 ,蚂蚁的编号从 ? 到 -,!".8e(/-/ne;&
- 个蚂蚁留在矩形 ;&
上的信息素总和, =.)n 表示一个时
间段$
( $) 局部信息素修正规则
.8e(/-/ne5 ( ;) 6 ! ( ?%7BC9/(De( ’ 5( :n) 9%n&$ 9( ?:
’(e)( ;)) <’ ?E7BF9( ?:-)( 9 .8e(/-/ne5( ;)
其 中 ,’ ?E7BF9( ?:-)( 9 .8e(/-/ne5( ;) 是 为 了 使 蚂 蚁
算法跳出局部最优解陷阱而采取的措施$
( &) 蚂蚁数量的选择&文献 !9"经 过 复 杂 计 算 和部 分 经
验,得出最佳的蚂蚁数量是 ?7$
( ’) 目 标 函 数 & 本 文 中 目 标 函 数 的 定 义 为 G ( #) 6
’(e)?:’(e)H , 其中 ’(e)? 为要排放的矩形总面积 ,’(e)H
为排样图最大高度以下的板材面积$
!"% 求解算法及步骤
由于蚂蚁算法是一种正反馈算法, 在算法收敛速度
较快的同时,也容易陷入局部最优解$ 本文在用蚂蚁算法
求解矩形排样问题时, 为了减少蚂蚁算法在求解过程中
陷入局部最优陷阱的可能性,采取如下措施&当一个矩形
被一只蚂蚁访问时,一方面蚂蚁留下了一定量的信息素)
另一方面,除了挥发会使矩形上的信息素减少外,被蚂蚁
访问过的矩形的信息素还按照一定比例自动减少$ 即使
某个矩形上最初信息素水平较高,几只蚂蚁经过后,它的
信息素浓度就会有一定程度的下降, 使该矩形在后面的
搜索过程中对其它蚂蚁的吸引力相对减弱, 其它蚂蚁就
有更大的概率去搜索其它路径, 从而避免搜索过度集中
而导致搜索停滞, 使蚂蚁算法有更大的几率搜索到问题
的全局最优解$
示要排放的矩形总数 ,IJ 为迭代次数计数器 , $)2+ 列 表
中保存的是已经被蚂蚁访问过的矩形,*/+n$ 是 $)2+ 列表
的计数器$
用蚂蚁算法求解矩形件排样问题的具体步骤&
( !) 初始化相关参数,计算出每个矩形上的信息素浓
度初始值$
( ") 按照一定策略确定每个蚂蚁访问的第一个矩形 ,
将每个蚂蚁的出发矩形加入到 $)2+5( */+n$) 列表中( $)2+5
( */+n$) 表示第 $ 只蚂蚁已经访问过的 &’()* 个矩形) ,对
每个蚂蚁访问过的出发矩形进行信息素的局部修正$
( $) 循环执行 K.e()$&/n? 操作 + 次 ,为每个蚂蚁找出
各自的矩形访问序列 &
* K.e()$&/n?L 循 环 执 行 下 列 操 作( )E?) 次 , 为 蚂 蚁 5
( ?@65@6-) 找出剩余( )E?) 个矩形的访问序列 &按转移概
率 0+-.1(/2)2345( *+((en$,ne#$) 从还没有 访 问 过 的 矩 形 中
选择出下一个要访问的矩形 ne#$ ( 如果转移概率相同的
矩 形 有 若 干 个 ,那 么 就 选 取 编 号 最 小的 那 个) )将 第 $ 只
蚂 蚁 移 动 到 矩 形 ne#$, 然 后 将 矩 形 ne#$ 加 入 到 $)2+5
( */+n$) 列 表 中 ,*/+n$ 的 值 增 加 ?)对 矩 形 ne#$ 上 的 信 息
素 .8e(/-/ne( ne#$) 进行局部修正$ +
( &) 记录下 + 个蚂蚁所访问过的矩形序列,根据产生
的 矩 形 序 列 按 基 于 最 低 水 平线 的 搜 索 算 法 排 放 矩 形 ,计
算出对应排样图的材料利用率, 根据板材利用率最高的
矩形访问序列,得出本次迭代找到的矩形最佳访问序列$
保存当前找到的矩形最佳排放顺序和每个矩形排放
的位置) 判断当前 + 只蚂蚁搜索到的解中是否存在比目
前最优解还要好的解,如果存在的话则保存这个最优解,
否则执行( ’) $
( ’) 根据等式 .8e(/-/ne;&( $<=.)n) 6>)=$9.8e(/-/ne;&( $)
#!".8e(/-/ne;&( 5) ,为每个 矩 形 进 行 全 局 信 息 素 修 正 ,
其中 =.)n 表示一个时间段,!".8e(/-/ne;&( 5) 表示 + 个
蚂蚁访问矩形 ;&
带来的信息素增量$
后给矩形 ;&
( () IJ6IJ,如 果 IJ 小 于 最 大 迭 代 次 数 ,那 么 清
空所有的 $)2+ 列表,重新初始化相关参数,转到( ") )如果
迭代次数已经达到规定值, 则输出当前找到的最佳排样
方案,结束$
! 算例分析
根据以上算法, 笔者已经开发出了基于蚂蚁算法的
矩形件优化排样系统,其中蚂蚁算法的运行参数设置为&
蚂蚁个数 +6?7,矩形面积大小对蚂蚁选择影响程度的系
数 ,-./($)n*e6H, 最 大 迭 代 次 数 M)#IJ6?7, 权 重 系 数
Ne&O8$’(e)67B?,Ne&O8$;)$&/67BC, 信 息 素 的 持 久 性 系 数
>)=$67BF,标准的信息素单位 %n&$6?77$
为了便于和其它启发式算法进行比较, 笔者根据基
于最低水平线的搜索算法, 也开发出了基于基本遗传算
法的矩形件优化排样系统$ 在遗传算法的运行参数中,群
体规模为 ?7,进化代 数 为 ?7 代 ,变 异 概 率 为 7BP,交叉 概
率为 7BF$
为了算法说明的方便,先对有关参数进行说明$ n 表
蚂蚁算法和遗传算法由于其概率性,对同一数据 ,每
机械工程师 !""! 年第 ! 期
!!
制 造 业 信 息 化
MMMaaannn###$$$%%%&&&’’’###((()))nnn*** +++nnn$$$,,,(((---%%%’’’))),,,nnn%%%...)))///aaa’’’))),,,nnn
次运行结果都不一定相同。 为了对算法的性能进行评价,
对同一问题采用多次运行, 取多次算结果平均值来对算
法的性能进行比较,本文中取 !" 次适应度的平均值来进
行对比。 板材的规格为 #""!$"",矩形数据如下#
表 " 矩形数据
!
%#
M6
$
!M
ML
Q%
%
%
!O
%$
#
!$
M!
%#
%
M
QL
O$
M
!#
QO
%$
M
$
!%!
M"
$
!6
$!
6#
%
#
%L
$O
!!
!Q
!L
!!
%
6
6$
LO
%
!O
6M
M6
%
Q
M6
%!
%
!L
!"
M"
M
O
$O
#L
M
%"
#"
6!
%
L
!!
!Q
%
%!
!""
%"
%
!"
$6
!%!
%
%%
#"
M"
%
!!
##
%%
!
%M
!#"
#"
!
!%
OQ
$!
%
%$
$"
%"
%
表 # 蚂蚁算法求出的板材利用率
图 * 遗传算法生成的排样图$ 利用率 &!’+,)%
!
%
M
$
#
6
Q
O
L
!"
编号
长度
宽度
个数
编号
长度
宽度
个数
编 号
板材利用率
"4O6QL
"4O6%Q
"4OO!%
"4O#%#
"4O$Q#
表 $ 遗传算法求出的板材利用率
"4O6%Q
"4OOML
"4OQ"#
"4OQO#
"4O!!Q
编 号
板材利用率
!
%
M
$
#
6
Q
O
L
!"
"4Q6"M
"4O"$L
"4O$Q#
"4O"Q!
"4O%O"
"4O"L$
"4O!6M
"4QQ$6
"4OM"$
"4O!O6
表 ! 遗传算法和蚂蚁算法的结果对比
平均值
板材利用率最高值
最低值
所用时间
遗传算法
蚂蚁算法
"4O$Q#
"4OOML
"4Q6"M
"4O!!Q
"4O"LQ
"4O6%"
! ,
M ,
图 ! 和图 % 分别是基于蚂蚁算法的排样系统和基于
基 本 遗 传 算 法 的 排 样 系 统在 !" 次 运 行 中 找 到 的 最 优 排
样图$注#矩形左上角标注的数字表示矩形排放的先后顺
序 % & 以 上 两 个 排 样 系 统 的 运 行 环 境 # 操 作 系 统
&’()*+,%""",-(./0 123 %4""5,内存 %#67&
图 % 蚂蚁算法生成的排样图$ 利用率 &&’$()%
! 结束语
蚂蚁 算 法 这 种 来 自 大 自 然 的 随 机 搜 索 寻 优 方 法 ,目
前已在许多方面表现出相当好的性能, 蚂蚁算法的出现
为许多困难问题的求解提供了新的途径& 在过去的短短
几年时间里蚂蚁算法的应用领域不断扩大&
用启发式算法求解 82 难题时,算法的效率是决定算
法能否推广应用的一个重要因素& 蚂蚁算法隐含的并行
!"" 机械工程师 !""! 年第 ! 期
性使之具有极强的发展潜力& 蚂蚁算法作为一种新型的
模 拟 进 化 算 法 , 其 研 究 刚 刚 开 始 , 理 论 还 不 是 很 成 熟 ,
有 很多不完善的地方有待改进& 相信随着研究的深入,蚂
蚁算法也将同其它模拟进化算法一样, 获得越来越广的
应用&
本文 尝 试 用 蚂 蚁 算 法 来 求 解 矩 形 件 优 化 排 样 问 题 ,
试验结果证明了用蚂蚁算法求解矩形件优化排样问题的
可行性和有效性& 在用蚂蚁算法来求解矩形件优化排样
问题时, 蚂蚁算法的运行参数对求解结果和求解效率有
一定的影响,但目前尚无合理选择它们的理论依据,实际
应用中需要针对具体情况, 根据多次试验结果来确定它
们的合理取值& 如何才能使蚂蚁算法求解矩形排样问题
的效果更好,有待于作进一步的深入研究&
’参考文献(
’"( 1*0*9(’ :, ;*9’<* 7=() 7=(’/>>* ?4 ;’,.9’@A./) *B.’C’>=.’*( @D
=(. E*0*(’/,’:(4 -(F29*E4*G !,. HA9*B/=( 1*(G4 :9.’G’E’=0 I’G/’1(4
2=(,, J9=(E/F H0,/K’/9,!LL!#!M$$!$%
’%( 马良,王龙德&背包问题的蚂蚁优化算法’’(&计算机应用,%""!,%!
NOPF$$#4
’(( 孙 新 宇&基 于 蚂 蚁 算 法 的 工 件 排 序 优 化 ’’(&系 统 工 程 理 论 与 实
践,%""M,N!!P#%"$%$4
’)( 赵中凯,梅国建&基 于混合 蚂蚁 算法 的二 维装箱 问题 求解 ’’(&计
算机应用,%""$,%$N*P#%LQ$%LO4
’+( 龚 志 辉&基 于 遗 传 算 法 的 矩 形 件 优 化 排 样 系 统 研 究 ’;(&长 沙 #
湖南大学,%""M,%)N6P#!$$!#4
’6( 计 华 & 一 种 基 于 四 叉 树 结 构 的 排 料 算 法 ’’(& 计 算 机 工 程 ,
%""M,%LNLP#O"$O%4
’Q( 7=9E* ;*9’<*, H9’E R*(=@/=A,
4 :(. =0<*9’.TC,
=() ,.’