PSO应用TSP(引入交换子)
在退火算法解决简单优化问题一文中提到在一般智能算法应用于实际问题时,需要着重注意以下几个方面,并根据具体问题决定实现思路。
- 构造初始解
- 目标函数最优
- 产生新解(重点)
目标函数
即商人行进耗费也可称之为适应度。根据邻接矩阵以及行进路径得到行进耗费
function [tsp_ans] = calculate_ans(path,d)
tsp_ans = 0;
n = size(path,2);
for i = 2:ntsp_ans = tsp_ans+ d(path(i-1),path(i));
end
end
构造初始解
randperm函数可生成随机排列
新解的产生
与连续区间不同,tsp的新解(离散)产生需借助BBS来实现
SS = (SO1+SO2+SO3+SO4+SO5+……+SON)
SON表示交换的第N步
例SON为(1,2)表示解的1,2位置元素互换。可知交换子的顺序不可变换即B+SS=A。若SS中的交换子顺序变换则最后结果也很可能发生变化。
以X = 3 4 2 1 5, pbest = 1 2 3 4 5 为例
定义SS = [(1,4),(2,3),(3,4),(1,1)] (1,1)可忽略
3 4 2 1 5 + SS1 = 1 4 2 3 5
1 4 2 3 5 + SS2 = 1 2 4 3 5
1 2 4 3 5 + SS3 = 1 2 3 4 5
1 2 3 4 5 + SS4 = 1 2 3 4 5
则B+ SS = A实现
交换子求解代码请参考本文
由上面B + SS = A求解过程可知
设 BB = B+ [SS1+SS2+……+SSK] (K<=N)
K越大BB越接近A的状态
定义 v (0.0<v<1.0);L = round(v*N);
BBS[1:L]则为此次选出交换子序列使得x接近pbest;
可知v越大x越接近pbest,可根据v来调整x接近最优值的速度。
PSO应用TSP(引入交换子)相关推荐
- 利用PSO求解TSP问题
简介 PSO(粒子群算法)是群智能算法的一种,其他的群智能算法还有蚁群算法,遗传算法等.其他的智能算法还有模拟退火.之前看过一段时间的PSO,商务智能课程最后的大作业便想用一下,刚好在github上看 ...
- pso解决tsp matlab,计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc...
计算智能课程设计_粒子群优化算法求解旅行商问题_Matlab实现.doc 摘要:TSP是一个典型的NPC问题.本文首先介绍旅行商问题和粒子群优化算法的基本概念.然后构造一种基于交换子和交换序[1]概念 ...
- 通过 PSO实现TSP问题优化
clc; clear; close all; warning off; data=load('Oliver30.txt'); a=data(:,2); b=data(:,3); C=[a b]; ...
- 基于 PSO 算法解决 TSP 项目
PSO (Particle Swarm Optimization) 算法即粒子群优化算法,源于对鸟群捕食行为的学习.基本思想是:个体获取的局部信息提供给群体,群体根据所有局部信息获得一个动态的全局最优 ...
- 超快激光微加工的Burst Mode和PSO功能
本期本媒介绍超快激光微加工中两个重要的功能 - Burst Mode和PSO,它们间接影响着超快激光的加工质量和产能. 单词解释 0 1 Burst Mode 在激光行业里,通常简称"脉冲串 ...
- 粒子群算法(PSO)的C++实现
粒子群算法(PSO)的C++实现 粒子群算法(PSO----Particle Swarm Optimization)是常用的智能算法之一,它模拟了 鸟群觅食 行为,是一种具有随机性的 仿生算法 .PS ...
- 粒子群算法求解旅行商问题
算法原理 旅行商问题是一个经典的NP问题,假设有N个城市,需要确定一个访问顺序,使得每个城市都访问一面,最后回到起点城市,且保证行走的总距离最短. 假设随机生成10个城市坐标,城市之间的 ...
- 【MATLAB第3期】源码分享#数学建模常用算法程序整理
- 本次分享内容包含神经网络.层次分析.移动平均.聚类.非线性优化问题.常微分方程问题.主成分分析.自动元胞机.图论.排队问题等. 本次分享MATLAB及PYTHON编程语言解决数学建模问题使用的基本 ...
- 【优秀作业】粒子群算法(Python)
粒子群优化算法 一.概述 粒子群优化算法(Particle Swarm Optimization,PSO)的思想来源于对鸟捕食行为的模仿,最初,Reynolds.Heppner 等科学家研究的是鸟类飞 ...
最新文章
- android get请求最长字符,Android OKHTTP3的GET和POST方法(带basic auth)
- Spring注入service为null另类解决办法 工具类 一般类 静态 非controller
- linux 如何查看服务和端口
- ng serve 和 ng build 的区别
- JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))
- php怎么选择路径,利用php+mcDropdown实现文件路径可在下拉框选择
- linux shell调用c 程序设计,linux – 在bash -c中设置变量
- SprinBoot-data-jpa整合Vue使用Swagger2实现前后端分离
- 鸿蒙车载智慧屏评测,华为智慧屏S Pro体验:告诉你鸿蒙OS有多优秀?
- 怎么制作OC材质预设?
- 在idea中部署Tomcat
- Mac ERROR launching JD-GUI
- 对Java中常见的四种I/O模型理解
- SMP、NUMA、MMP的简介
- antd vue 将表格导出为Excel
- 我对价值投资的思考(一)
- 苹果手机上运行python_手机上运行Python
- 查看当前系统 jave 版本 ,Eclipse版本
- AutoCAD.net-错误消息大全
- CARLA传感器详细文档介绍+python实例(持续更新ing)
热门文章
- matlab图注的上标和下标,关于matlab中特殊字符, 上标和下标
- K210学习笔记(五)——MAIX BIT(K210)与STM32串口通讯
- Word doc/docx 格式文件转换为 MarkDown
- 银行定期存三个月利息计算机公式,银行存款利息如何计算?如定期三个月,半年、一年、二年 爱问知识人...
- [陕师大校赛] A 正正的毒奶粉
- 赛门铁克:看***如何能够通过LED灯泡窃取你的隐私
- 编程获得CPU的主频
- IB36分斩获藤校?看艺术设计类专业
- 计算机启动显示不正确的分区表,每次开机提示invalid partition table怎么解决?
- 谈谈IBM布局的Bluemix和SoftLayer生态体系