PSO(粒子群)求解TSP(旅行商问题)_pso tsp-程序员宅基地

技术标签: TSP  tsp  # 智能算法  PSO  

PSO(粒子群)求解TSP(旅行商问题)

  PSO求解TSP代码可以参考之前的博客PSO求解TSP
  但是有时候可能会加一些限制,例如某个城市需要先被访问。这里以城市8要第一个访问,其实只需要每次做完位置更新后,将城市8更换至第一个访问城市即可。

修改

  只需修改初始化和每次更新位置的函数,initpos.mupdatepos.m 文件。

function [ pos ] = initpos( pasize,padim )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% initpos()初始化粒子群
% pasize粒子群大小 padim维度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    pos =zeros(pasize,padim);         %初始化
    for i = 1:pasize
        t = 2:padim+1;                %生成初始访问
        ranorder = randperm(padim);   %乱序排列
        pos(i,:)=t(ranorder);         %生成粒子
    end

    % change city to the first city
    for i = 1:pasize
        t = find(pos(i,:)==8);    % index of city 8 
        temp = pos(i,t);     % city 8
        pos(i,t) = pos(i,1);
        pos(i,1) = temp;   
    end
    
end
function [ pos ] = updatepos( pos,v )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% updatepos( pos,v )对粒子的位置更新
% pos:位置    v:速度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[vx,vy] = size(v);     %粒子群维度和大小
for i = 1:vx           %循环每个粒子
    for j =1:vy/2      %对每个交换子运算
        tt = pos(i,v(i,2*j-1)); 
        pos(i,v(i,2*j-1)) = pos(i,v(i,2*j));
        pos(i,v(i,2*j))=tt;  %更新位置
    end
end

    for i = 1:vx
        t = find(pos(i,:)==8);    % index of city 8 
        temp = pos(i,t);     % city 8
        pos(i,t) = pos(i,1);
        pos(i,1) = temp;   
    end 
end
结果

在这里插入图片描述

"Routing:
     1     8     4     5     6     3     2     7    10     9     1"
源码

    GitHub传送门!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44231148/article/details/117928189

智能推荐

vue用户没有头像用姓名首字母做头像_前端头像生成如果没有头像用名字的第一位姓做头像-程序员宅基地

文章浏览阅读2.1k次。avatar.js/***@param widths 画布宽*@param heights 画布高*@param fontSize 字体大小*@param id canvas id值*@param className img ID值或者类名*@param name 用户名*@param index 索引值*/export function draw(widths,heights..._前端头像生成如果没有头像用名字的第一位姓做头像

树莓派pico mpu6050 一阶互补滤波&四元数法 解算姿态角_mpu6050怎样得到四元数-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏38次。树莓派pico mpu6050 一阶互补滤波&四元数法 解算姿态角_mpu6050怎样得到四元数

中职学校计算机教学参考文献,计算机教学论文-程序员宅基地

文章浏览阅读115次。导读:本文关于计算机教学论文范文,可以做为相关参考文献。计算机基础是每一个中职院校必修的公共课,学习计算机基础主要是为了让中职学生在掌握计算机基础知识的同时掌握一种基本技能.通过计算机基础教学提高中职学生利用计算机解决以后职业生涯中遇到问题的能力.特点分析 教学改革一、中职计算机基础教学的特点分析1.中职新生入校时计算机知识水平不平衡由于计算机教育发展不平衡,又由于中职学生主流是来自农村的学生(..._中职计算机课堂教学文献

nginx在Linux的安装和简单使用_检查nginx是否安装缓存插件-程序员宅基地

文章浏览阅读1.9k次。文章目录安装下载安装依赖安装下载安装依赖浏览器中输入http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz即可下载_检查nginx是否安装缓存插件

论文阅读:A Survey of Embodied AI: From Simulators toResearch Tasks_a survey of embodied ai: from simulators to resear-程序员宅基地

文章浏览阅读478次,点赞2次,收藏4次。具身智能可粗略定义为,。具身智能假设,智能行为可以被具有对应形态的智能体通过适应环境的方式学习到。因此,地球上所有的生物,都可以说是具身智能。但就目前而言,具身智能是将视觉、语言和推理等传统智能概念融入人工智能体中,以帮助解决虚拟环境中的人工智能问题。_a survey of embodied ai: from simulators to research tasks

结合 spring ,使用QLExpress做一个淘宝的场景模型,对于场景的描述可以参照这个demo_淘宝express defaultcontext-程序员宅基地

文章浏览阅读6.4k次。结合 spring ,使用QLExpress做一个淘宝的场景模型,对于场景的描述可以参照这个demo。下载最新的QlExpresss代码 http://code.taobao.org/svn/QLExpress/trunk运行下 com.ql.util.express.test.demo.TestQlExpress 的单元测试,即可看到效果。 /** * 使用qlExpr_淘宝express defaultcontext

随便推点

我的程序人生从今天开始-程序员宅基地

文章浏览阅读1.1k次。我的程序人生从今天开始我的程序人生从今天开始hello!

Vue.js_vue livehelp100service-程序员宅基地

文章浏览阅读5.1k次。Vue.js开发模式:CDNNPM在用 Vue 构建大型应用时推荐使用 NPM 。NPM 能很好地和诸如 webpack 或 Browserify 模块打包器配合使用。同时 Vue 也提供配套工具来开发单文件组件学习开发工具:Visual Studio Code工具下载网址:Visual Studio Code下载地址装好软件后装几个插件:1、Live Server为静态和动态页面启动带有实时重新加载功能的开发本地服务器2、Vetur用于VS代码的Vue工具3、V_vue livehelp100service

中文论文阅读笔记-程序员宅基地

文章浏览阅读3.9k次。中文论文基于语义信息与多视图几何的动态SLAM方法研究 仲星光 哈尔滨工程大学摘要:针对移动机器人在动态环境中进行精确定位和地图构建的迫切需求,本文在使用深度神经网络获得语义信息的基础上,对动态场景下的相机定位与建图方法进行了研究。同时针对深度神经网络分割不准确以及传统方法在计算位姿时受运动物体影响较大等问题,重点开展了基于语义信息的特征提取、点线融合的帧间位姿估计、结合多视图几何方法的运动物体检测等研究,并且搭建了基于RGB-D相机的动态SLAM系统。最后通过标准数据集和真实场景数据对算法的有效性

前端简单案例-程序员宅基地

文章浏览阅读612次,点赞3次,收藏5次。案例1. 新闻案例1. 新闻案例运用标题标签、段落标签和换行标签写的简单新闻页面<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, _前端简单案例

spring hibernate No Hibernate Session bound to thread异常_could not obtain current hibernate session;-程序员宅基地

文章浏览阅读676次。解决方法1 Service上加上@Transactional,这样就开启了事务,但是对于查询类的方法,他们不需要事务,怎么办呢?用下面的方法2 thread 具体解释:getHibernateTemplate().getSessionFactory().getCurrentSess_could not obtain current hibernate session;

推荐文章

热门文章

相关标签