2.1 蚁群算法的基本原理蚁群优化算法是模拟蚂蚁觅食的原理,设计出的一种群集智能算法。
蚂蚁在觅食过程中能够在其经过的路径上留下一种称之为信息素的物质,并在觅食过程中能够感知这种物质的强度,并指导自己行动方向,它们总是朝着该物质强度高的方向移动,因此大量蚂蚁组成的集体觅食就表现为一种对信息素的正反馈现象。
某一条路径越短,路径上经过的蚂蚁越多,其信息素遗留的也就越多,信息素的浓度也就越高,蚂蚁选择这条路径的几率也就越高,由此构成的正反馈过程,从而逐渐的逼近最优路径,找到最优路径。
蚂蚁在觅食过程时,是以信息素作为媒介而间接进行信息交流,当蚂蚁从食物源走到蚁穴,或者从蚁穴走到食物源时,都会在经过的路径上释放信息素,从而形成了一条含有信息素的路径,蚂蚁可以感觉出路径上信息素浓度的大小,并且以较高的概率选择信息素浓度较高的路径。
(a)蚁穴 1 2 食物源A B (b)人工蚂蚁的搜索主要包括三种智能行为: (1)蚂蚁的记忆行为。
一只蚂蚁搜索过的路径在下次搜索时就不再被该蚂蚁选择,因此在蚁群算法中建立禁忌表进行模拟。
(2)蚂蚁利用信息素进行相互通信。
蚂蚁在所选择的路径上会释放一种信息素的物质,当其他蚂蚁进行路径选择时,会根据路径上的信息素浓度进行选择,这样信息素就成为蚂蚁之间进行通信的媒介。
(3)蚂蚁的集群活动。
通过一只蚂蚁的运动很难达到事物源,但整个蚁群进行搜索就完全不同。
当某些路径上通过的蚂蚁越来越多时,路径上留下的信息素数量也就越多,导致信息素强度增大,蚂蚁选择该路径的概率随之增加,从而进一步增加该路径的信息素强度,而通过的蚂蚁比较少的路径上的信息素会随着时间的推移而挥发,从而变得越来越少。
3.3.1蚂蚁系统蚂蚁系统是最早的蚁群算法。
其搜索过程大致如下:在初始时刻,m 只蚂蚁随机放置于城市中,各条路径上的信息素初始值相等,设为:0(0)ij ττ=为信息素初始值,可设0m m L τ=,m L 是由最近邻启发式方法构造的路径长度。
其次,蚂蚁(1,2,)k k m =,按照随机比例规则选择下一步要转移的城市,其选择概率为:[()][()],[()][()]()0k ij ij k k is is ij s allowed t t j allowed t t p t αβαβτητη∈⎧∈⎪⎪=⎨⎪⎪⎩∑,否则其中,ij τ为边(,)i j 上的信息素,1ij ij d η=为从城市i 转移到城市j 的启发式因子,k allowed 为蚂蚁k 下一步被允许访问的城市集合。
为了不让蚂蚁选择已经访问过的城市,采用禁忌表k tabu 来记录蚂蚁k 当前所走过的城市。
经过t 时刻,所有蚂蚁都完成一次周游,计算每只蚂蚁所走过的路径长度,并保存最短的路径长度,同时,更新各边上的信息素。
首先是信息素挥发,其次是蚂蚁在它们所经过的边上释放信息素,其公式如下:(1)ij ij τρτ=- ,其中ρ为信息素挥发系数,且01ρ<≤。
1mk ij ij ij k τττ==+∆∑,其中k ij τ∆是第k 只蚂蚁向它经过的边释放的信息素,定义为:10k ij k ijd τ⎧⎪∆=⎨⎪⎩,如果边(i,j)在路径T 上,否则 (3.2) 根据(3.2)可知,蚂蚁构建的路径长度ij d 越小,则路径上各条边就会获得更多的信息素,则在以后的迭代中就更有可能被其他的蚂蚁选择。
蚂蚁完成一次循环后,清空禁忌表,重新回到初始城市,准备下一次周游。
大量的仿真实验发现,蚂蚁系统在解决小规模TSP 问题时性能尚可,能较快的发现最优解,但随着测试问题规模的扩大,AS 算法的性能下降的比较严重,容易出现停滞现象。
因此,出现了大量的针对其缺点的改进算法。
3.3.2精英蚂蚁系统精英蚂蚁系统[11]是对基本AS 算法的第一次改进,它首先由Dorigo 等人中提出,它的设计思想是对算法每次循环之后给予最优路径额外的信息素量。
找出这个解的蚂蚁称为精英蚂蚁。
将这条最优路径记为bs T (best-so-far tour )。
针对路径bs T 的额外强化是通过向bs T 中的每一条边增加bs L e /大小的信息素得到的,其中e 是一个参数,它定义了给予路径bs T 的权值大小,bs L 代表了bs T 的长度。
这样相应的信息素的更新公式如式(3.3):1(1)(1)()()()mk bs ij ij ij ij k t t t e t τρτττ=+=-+∆+∆∑ (3.3)其中,)(t k ij τ∆的定义方法跟以前的相同,)(t bs ij τ∆的定义则如式(3.4):⎪⎩⎪⎨⎧∈=∆ otherwise 0T j)(i, f 1)(bs ,,i Lt bs bs ij τ (3.4) Dorigo 等人的文章列举的计算结果表明,使用精英策略并选取一个适当的e 值将使得AS 算法不但可以得到更好的解,而且能够在更少的迭代次数下得到一些更好的解。
3.3.3最大-最小蚂蚁系统最大-最小蚂蚁系统(MM AS [13-15])是到目前为止解决TSP 问题最好的ACO 算法方案之一。
MM AS 算法是在AS 算法的基础之上,主要作了如下的改进:(1)为避免算法过早收敛于局部最优解,将各条路径可能的外激素浓度限制于[]max min ,ττ,超出这个范围的值被强制设为m in τ或者是m ax τ,可以有效地避免某条路径上的信息量远大于其余路径,避免所有蚂蚁都集中到同一条路径上;(2)强调对最优解的利用。
每次迭代结束后,只有最优解所属路径上的信息被更新,从而更好地利用了历史信息;(3)信息素的初始值被设定为其取值范围的上界。
在算法的初始时刻,ρ取较小的值时,算法有更好的发现较好解的能力。
所有蚂蚁完成一次迭代后,按(3.5)式对路径上的信息作全局更新:()()()()()1,0,11∈∆+⋅-=+ρττρτt t t best ij ij ij (3.5)()⎪⎩⎪⎨⎧=∆否则,包含在最优路径中如果边0,,1j i L bestbest ij τ (3.6) 允许更新的路径可以是全局最优解,或本次迭代的最优解。
实践证明逐渐增加全局最优解的使用频率,会使该算法获得较好的性能。
3.3.4基于排序的蚁群算法基于排序的蚂蚁系统(AS rank )[16]是对AS 算法的一种改进。
其改进思想是:在每次迭代完成后,蚂蚁所经路径将按从小到大的顺序排列,即)()()(21t L t L t L m ≤≤。
算法根据路径长度赋予不同的权重,路径长度越短权重越大。
全局最优解的权重为w ,第r 个最优解的权重为{}r w -,0m ax ,则AS rank 的信息素更新规则为:()()()()()()()gb gb ij r r ij gb ij r ijw r ij ij L t t L t t w t r w t t /1/11,0,)()1()1(11=∆=∆∈∆⋅+∆⋅-+⋅-=+∑-=ττρτττρτ,其中, (3.7)3.3.5蚁群系统蚁群系统(ACS [12])是由Dorigo 等人提出来的改进的蚁群算法,它与AS 的不同之处主要体现在三个方面:(1)采用不同的路径选择规则,能更好地利用蚂蚁所积累的搜索经验。
(2)信息素挥发和信息素释放动作只在至今最优路径的边上执行,即每次迭代之后只有至今最优蚂蚁被允许释放信息素;(3)除了全局信息素更新规则外,还采用了局部信息素更新规则。
在ACS 中,位于城市i 的蚂蚁k ,根据伪随机比例规则选择城市j 作为下一个访问的城市。
路径选择规则由下面式子给出:[]{}0arg max ,k il il l allowed q q j J βτη∈⎧≤⎪=⎨⎪⎩如果,否则 (3.8)()()()()()0kij ij k k is is ij s allowed t t if j allowed t t p t elseαβαβτητη⊂⎧⎡⎤⎡⎤⎣⎦⎣⎦⎪∈⎪⎡⎤⎡⎤=⎨⎣⎦⎣⎦⎪⎪⎩∑ (3.9) 其中,q 是均匀分布在区间[]01,中的一个随机变量,()0001q q ≤≤是一个参数,J 是根据(3.9)给出的概率分布产生出来的一个随机变量(其中1α=)。
ACS 的全局信息素更新规则为:()1bs ij ij ij τρτρτ=-+∆ , (),bs i j T ∀∈ (3.10)1bs bs ij C τ∆= (3.11)ACS 的局部信息素更新规则方式定义:在路径构建过程中,蚂蚁每经过一条边(),i j ,都将立刻调用这条规则更新该边上的信息素:()01ij ij τρτξτ=-+ (3.12)其中,ξ和0τ是两个参数,ξ满足01ξ<<,0τ是信息素量的初始值。
局部更新的作用在于,蚂蚁每一次经过边(),i j ,该边的信息素ij τ将会减少,从而使得其他蚂蚁选中该边的概率相对减少。
一、一个星期七天Sunday Monday Tuesday Wednesday Thursday Friday Saturday二、一年十二个月January February March April May JuneJuly August September October November December三、一年四季1. spring2. summer3. autumn4. winter四、容易拼写错的数字1. eighth第八2. ninth第九3. forty四十4. twelfth第十二5. twentieth第二十四、亲属称呼1. daughter (女儿)2. niece (女性晚辈)3. nephew (男性晚辈)4. cousin (同辈兄弟姐妹)5. aunt (女性长辈)6. uncle (男性长辈)五、以下动词加-ed或-ing要双写最后一个字母1. regret (regretted, regretting) 后悔2. control (controlled, controlling) 控制3. admit (admitted, admitting) 承认4. occur (occurred, occurring) 出现5. prefer (preferred, preferring) 宁愿6. refer (referred, referring) 提到7. forget (forgetting ) 忘记8. permit (permitted, permitting)允许9. equip (equipped, equipping) 装备注意:quarrel, signal, travel中的l可双写(英国英语)也可不双写(美国英语)六、部分过去式和过去分词不规则变化的动词1. broadcast (broadcast, broadcast) 广播2. flee (fled, fled) 逃跑3. forbid (forbade, forbidden) 禁止4. forgive (forgave, forgiven) 原谅5. freeze (froze, frozen) 结冰6. hang (作“绞死”讲,是规则的;作“悬挂”讲,其过去式过去分词都是hung)7. lie –lied –lied 说谎; lie—lay---lain躺下lay-laid-laid 放置8. seek (sought, sought) 寻求 9. shake (shook, shaken) 发抖10. sing (sang, sung) 唱歌 11. sink (sank, sunk/sunken) 下沉12. spread (spread, spread) 传播 13. swim (swam, swum) 游泳14. tear (tore, torn) 撕碎 16.wear( wore;worn) 穿/戴17.hold (held, held ) 18.make (made, made)19. keep (kept, kept)七、意思相近的词1. check (核对)/ examine(检查)/ test(测试)2. receive(收到) / accept(接受)3. destroy (毁坏;毁灭)/ damage(破坏)4. celebrate(庆祝)/ congratulate(祝贺)5. wear sth / dress sb 穿衣八、注意形容词变名词时的拼写变化1. long—length 长度2. wide—width 宽度3. high—height 高度4. strong—strength力量九、以-ic结尾的动词,应先把-ic变为-ick,再加ing或ed1. picnic (picnicked, picnicking) 野餐十、个别名词的复数拼写1. German (Germans) 德国人2. gulf (gulfs) 海湾3. handkerchief (handkerchiefs) 手帕roof (roofs) 房顶4. hero (英雄),potato (土豆),tomato (西红柿) 等有生命的以-o结尾的名词变复数时要加-es。