蜜蜂采蜜最短路径c语言算法,粒子群算法解最短路径.doc

摘要

粒子群优化算法(Particle Swarm Optimization,PSO)是由美国的Eberhart和Kennedy在1995年提出的一种高效的并行优化算法。由于该算法具有深刻的智能背景,且简单、易实现,因此,一经提出便引起了许多学者的广泛关注,并在短短的几年里出现了大量的研究成果,现已成为研究的热点。目前,已提出了多种PSO的改进算法,被广泛应用于函数优化、神经网络训练、模式分类、模糊系统控制等领域。但其应用大多是连续优化问题,很少被用来解决离散问题,而现实生活中的许多工程实例只能抽象出离散模型,如典型的旅行商问题(Traveling Salesman Problem,TSP)、加工调度(Job-slmp)问题等。Dijkstra算法是应用最短路径解决实际问题的理论基础。但是算法在具体的城市道路网络中执行的效率比较低,无法满足实时高效的应用需求,因此国内外很多学者开始了最短路径问题的粒子群优化算法研究。

本文主要是研究在最短路径问题中的粒子群算法。文中给出了基于交换序的基本的粒子群算法,并在此基础上提出了一种改进的粒子群算法。基本的粒子群算法是在计算完粒子速度之后再更新粒子的位置,改进算法则是计算粒子速度的同时更新粒子的位置。文中还引入自适应惯性权重的改进策略,使粒子在开始时惯性速度大,能快速的向最优值点运动,而在粒子迭代过程中惯性速度越来越小,从而使粒子能更好的接近最优值点。引入罚函数,把约束优化问题转化为无约束优化问题来解,从而减化求解过程。本文用实例对基本的粒子群算法和改进粒子群算法进行了对比分析,并得出了改进算法确实存在优势的结论。文中还对算法的主要参数如何取值进行了分析,并结合经验给出了总结。本文最后用实例验证了算法确实在执行了若干次迭代后收敛。程序的编程环境为Microsoft Visual Studio 2008,编程语言为C#。

关键词: 粒子群算法 最短路径 约束优化 惯性权重

粒子群优化算法理论

2.1粒子群优化算法基本定义

群居昆虫以集体的力量觅食、御敌、筑巢,单个个体只能完成简单的认务,而由单个个体组成的群体却能完成复杂的认务,这种群体所表现出来的“智能”称为群体智能(Swarm Intelligence,SI)[1]。如蜜蜂采蜜、筑巢,蚂蚁觅食、筑巢等。从群居昆虫互相合作进行工作中得到启迪,研究其中的原理,以此设计新的算法被称为群智能算法[2]。粒子群优化算法是一种新兴的群智能优化算法,其思想来源于人工生命和演化计算理论,粒子在解空间根据所处的情况进行搜索,容易实现并且没有许多参数需要调整,另外收敛速度快,相对于遗传算法等更简单有效。PSO已经得到众多学者的重视和研究[3-4],在许多实际应用中被证明是有效的。国际上已有专门从事相关科研内容的研究组织以及进行学术交流和会议发布的网站和论坛。

基本定义[5]

定义1:(粒子)

d-粒子p是维度为d的空间粒子,简称粒子;d称做粒子的维度,p=(x1,x2,….,xj,…..xd)为d-粒子空间。

定义 2:(粒子群)

n-种群是n个粒子组成的群落(粒子允许重复),简称粒子群。N称为粒子群规模,Sn={p|pi=(xi,1,xi,2,……,xi,j,……,xi,d),in}为n-种群空间。

定义 3:(个性算子)

粒子在d维解空间搜索的过程中,下一步的飞翔速度和到达的位置与粒子自身的飞翔速度有关,即V(t+1)=wV(t),该操作称为个性算子。

定义 4:(自意识算子)

粒子在d维解空间搜索过程中,下一步的飞翔速度和到达的位置与粒子自身到当前为止所到达的最好位置有关。也就是说,粒子在d维解空间搜索的过程中受到粒子自身的经历影响,在整个飞翔过程中一直下意识地根据自身的经验调整飞行速度和方向,即

Vi,j(t+1)=c1U(0,1)(Xi,j#(t)-Xi,j(t)) (2-1)

该操作称为自意识算子。C1是正常数,称为自意识学习因子;U(0,1)是[0,1]区间正态分布的随机数。

定义 5:(群意识算子)粒子在d 维解空间搜索的过程中,下一步的飞翔速度和到达的位置与粒子群到当前为止所到达的最好位置有关。也就是说,粒子在d维解空间搜索过程中受粒子群的经历影响,在整个飞翔过程中一直下意识得根据粒子群的经验调整飞行速度和方向,即

Vi,j(t+1)=c2U(0,1)(Xi,j*(t)-Xi,j(t)) (2-2)

该操作算子称为群意识算子。C2是正常数,称为群意识学习因子;U(0,1)是[0,1]区间正态分布的随机数。

定义 6:(粒子种群多样性)粒子群中的粒子因在解空间飞行所到达的

你可能感兴趣的:(蜜蜂采蜜最短路径c语言算法)