计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc

摘要:TSP是一个典型的NPC问题。本文首先介绍旅行商问题和粒子群优化算法的基本概念。然后构造一种基于交换子和交换序[1]概念的粒子群优化算法,通过控制学习因子和、最大速度,尝试求解旅行商问题。本文以中国31个省会城市为例,通过MATLAB编程实施对旅行商问题的求解,得到了一定优化程度的路径,是粒子群优化算法在TSP问题中运用的一次大胆尝试。

关键字:TSP问题;粒子群优化算法;MATLAB;中国31个城市TSP。

粒子群优化算法求解旅行商问题

引言

旅行商问题的概述

旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。

TSP问题是一个组合优化问题N个城市需要考虑N!种情况并两两对比,找出最优,其算法复杂性呈指数增长,即所谓“指数爆炸”。所以,寻求和研究TSP问题的有效启发式算法,是问题的关键。粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 (Swarm intelligence, SI) 的一种。它可以被纳入多主体优化系统?(Multiagent Optimization System, MAOS). 粒子群优化算法是由Eberhart博士和ennedy博士发明。

PSO模拟鸟群的捕食行为。一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解,在每一次叠代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest,另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分最优粒子的邻居,那么在所有邻居中的极值就是局部极值。,并且是一个NP完全难题,其可能的路径数目与城市数目n是成指数型增长的,对n个城市而言,可能的路径总(n-1)!。随着n的增加,路径数将按数率急剧增长,即所谓的“指数爆炸”,所以一般很难精确地求出其最优解,因而寻找出其有效的近似求解算法就具有重要的理论意义。而粒子群优化算法是解决复杂问题的有效方法,自然也能应用于解决旅行商问题。

PSO模拟鸟群的捕食行为。一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域[2]

粒子群优化算法的基本原理

一个由个粒子(Particle)组成的群体(Swarm)在维搜索空间中以一定的速度飞行,每个粒子在搜索时,考虑到了自己搜索到的的历史最好点和群体内(或领域内)其它粒子的最好点,在此基础上进行位置(状态、也就是解)的变化。

第个粒子的位置表示为:

第个粒子的速度表示为:,

第个粒子所经历的历史最好点表示为:

群体内(或领域内)所有粒子所经历过的最好的点表示为:。

一般来说,粒子的位置和速度都是在连续的实数空间内进行取值,粒子的位置和速度根据如下方程进行变化

其中,为惯性权重。和称为学习因子(Learning Factor)或加速系数(Acceleration Coefficient),一般为正常数。学习因子使粒子具有自我总结和向群体中优秀个体学习的能力,从而向自己的历史最优点以及群体内或领域内的历史最优点靠近。和通常等于2。,,是在区间内均匀分布的伪随机数。粒子的速度被限制在一个最大的范围内。

当把群体内所有粒子都作为领域成员时,得到粒子群优化算法的全局版本;当群体内部分成员组成领域时得到粒子群优化算法的局部版本。局部版本中,一般有两种方式组成领域,一种是索引号相邻的粒子组成领域,另一种是位置相邻的粒子组成领域。粒子群优化算法的领域定义策略又可以称为粒子群的领域拓扑结构。[1]

粒子群优化算法的流程

粒子群优化算

pso解决tsp matlab,计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc...相关推荐

  1. matlab采用粒子群优化算法求解含压缩储能设备的综合能源系统运行优化

    matlab采用粒子群优化算法求解含压缩储能设备的综合能源系统运行优化. 结果包含储能设备24时出力,内燃机发电和发热出力,电制冷机出力等. 代码包含相关注释,方便对算法进行改进. 附相关参考文献. ...

  2. 【优化求解】基于自适应模拟退火粒子群优化算法求解单目标优化问题matlab代码

    1 简介 针对PSO算法在求解问题的优化问题中易陷入局部收敛且收敛速度较慢等缺陷,引入一种初始化改进策略,并将模拟退火算法与PSO算法相结合,提出了一种全新的算法.该算法将寻优过程分为两个阶段:为了提 ...

  3. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 权重改进 ...

  4. matlab nan变成0_最优化计算与matlab实现(17)——粒子群优化算法——带压缩因子的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 带压缩因 ...

  5. java粒子群优化算法_粒子群优化算法的JAVA实现

    说明:算法为了演示功能,所以没有优化,没有异常处理等,仅作演示用. /* * To change this template, choose Tools | Templates * and open ...

  6. 粒子群算法离散化各代表什么_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)...

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识!也可以搜索号:磐创AI,关注我们的文章. 作者:Geppetto 前 ...

  7. 【分布式能源的选址与定容】基于非支配排序多目标粒子群优化算法求解分布式能源的选址与定容附Matlab代码

    ​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  8. matlab粒子群优化算法工具箱,MATLAB粒子群优化算法(PSO)

    MATLAB粒子群优化算法(PSO) 一.介绍 粒子群优化算法(Particle Swarm Optimization Algorithm)是一种群智能算法,为了寻求全局最优.群体迭代,粒子在解空间追 ...

  9. matlab 动态邻域粒子群,求解TSP问题的动态邻域粒子群优化算法

    1引言粒子群优化(ParticleSwarmOptimization,PSO)算法于1995年由Eberhart博士和Kennedy博士提出,它是一类新兴的基于群智能优化算法[1],同其它的进化算法相 ...

最新文章

  1. 《剑指offer》第十五题(二进制中1的个数)
  2. 分布式事物解决方案-TCC
  3. centos7 没有pip命令_Linux(CentOS7)部署系列---Docker编排应用部署方案
  4. 年仅53岁,因连续工作、过度劳累,这位抗疫幕后的科研专家去世
  5. MachineLearning(6)-Daviad Silver强化学习课程脉络整理
  6. C++学习心得总结【20181128】
  7. Burp Post、Get数据包转为上传multipart/form-data格式数据包
  8. 【Python】ModuleNotFoundError: No module named 'pandas.io.data'
  9. cisco ip phone 7911 安装
  10. python基础: 选择语句
  11. 使用ComponentOne C1WebGrid控件
  12. abaqus算出来的转角单位是什么_ABAQUS统一单位方法
  13. Vim插件合集 (打造你的专属炫酷IDE)
  14. [转帖]团队管理 - 盖洛普Q12测评法
  15. 中国智能燃气表行业竞争现状及前景趋势展望报告2021-2027年
  16. 计算机一级怎么查错题,独家秘笈计算机一级错题解释.ppt
  17. SpringCloud(2)--服务调用
  18. java图片透明度,Java检查图像是否具有透明度
  19. Java 必会的工具库,让你的代码量减少90%
  20. C语言实验——一元二次方程Ⅱ

热门文章

  1. c语言循环计算分式加减乘除混合运算,计算()_分式的加减乘除混合运算及分式的化简_中学题库-沪江中学学科网...
  2. Xshell 5 解除强制更新方法汇总(文内含密钥与下载链接)
  3. 基于Docker的Mysql主从配置搭建
  4. 线性代数Python计算:向量空间坐标变换
  5. Java音视频处理——JavaCV
  6. 【python】数字日期转英文月日年
  7. Mp4 分割 怎么将mp4视频文件分割成几段
  8. 项目之网易游戏官网-合作产品部
  9. ORACLE使用中的常见、实用的问题
  10. Matlab三维矩阵变换行列