不闭合三维TSP:成长优化算法GO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB代码

news2024/11/20 1:47:19

一、旅行商问题

旅行商问题(Traveling salesman problem, TSP)是一个经典的组合优化问题,它可以描述为一个商品推销员去若干城市推销商品,要求遍历所有城市后回到出发地,目的是选择一个最短的路线。当城市数目较少时,可以使用穷举法求解。而随着城市数增多,求解空间比较复杂,无法使用穷举法求解,因此需要使用优化算法来解决TSP问题。
一般地,TSP问题可描述为:一个旅行商需要拜访n个城市,城市之间的距离是已知的,若旅行商对每个城市必须拜访且只拜访一次,求旅行商从某个城市出发并最终回到起点的一条最短路径。
记n个城市序号构成集合为N={1,2,…,n},旅行商拜访完n个城市所经过的回路记为:
P = { p 1 → p 2 → ⋯ → p n → p 1 } P=\left\{p_{1} \rightarrow p_{2} \rightarrow \cdots \rightarrow p_{n} \rightarrow p_{1}\right\} P={p1p2pnp1}
其中, p i ∈ N , p i ≠ p j ( i ≠ j ) , i = 1 , 2 , ⋯   , n p_{i} \in N, p_{i} \neq p_{j}(i \neq j), i=1,2, \cdots, n piN,pi=pj(i=j),i=1,2,,n
若城市之间的距离矩阵为 D = ∣ d i j ∣ n × n D=\left|d_{i j}\right|_{n \times n} D=dijn×n,则TSP问题的数学模型可表示为:
min ⁡ f ( P ) = ∑ i = 1 n − 1 d p i , p i + 1 + d p n , p 1 \min f(P)=\sum_{i=1}^{n-1} d_{p_{i}, p_{i+1}}+d_{p_{n}, p_{1}} minf(P)=i=1n1dpi,pi+1+dpn,p1
其中, f ( P ) f(P) f(P)表示旅行商行走路线的总路径长度。
旅行商从城市1出发,终点城市依据算法而定

二、部分代码

close all
clear
clc
global data
load(‘data.txt’)%导入TSP数据集
Dim=size(data,1)-1;%维度
lb=-100;%下界
ub=100;%上界
fobj=@Fun;%计算总距离
SearchAgents_no=100; % 种群大小(可以修改)
Max_iteration=2000; % 最大迭代次数(可以修改)
%% 画最终的结果 Kd是最终的城市序列
[~,idx]=sort(bestX);
idx=idx+1;
Kd(1)=1;
Kd(2:length(idx)+1)=idx;
%% 画收敛曲线图
figure
plot(curve,‘g-’,‘linewidth’,2)
xlabel(‘迭代次数’)
ylabel(‘总距离’)
legend(‘GO’)
%% 显示结果
fprintf(‘算法得到的路径:%d’,Kd(1))
for i=2:length(Kd)
fprintf(’ > %d’,Kd(i));
end
fprintf(‘\n’);
display([‘算法求解的总路径总长:’ num2str(curve(end))]);
%% 保存数据
dlmwrite(‘Kd.txt’,Kd,‘delimiter’, ‘\n’)%保留最终的城市序列
dlmwrite(‘curve.txt’,curve,‘delimiter’, ‘\n’)%保留算法求解的收敛曲线

三、部分结果

算法得到的路径:1 > 24 > 27 > 8 > 28 > 6 > 12 > 9 > 26 > 3 > 29 > 5 > 21 > 2 > 20 > 10 > 4 > 13 > 16 > 23 > 7 > 25 > 19 > 15 > 11 > 22 > 17 > 14 > 18

算法求解的总路径总长:9798.2528

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1683201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年AI发展的四大趋势

近日,OpenAI发布首个视频生成模型“Sora”——通过接收文本指令,即可生成60秒短视频。一年前,同样是OpenAI发布的语言模型ChatGPT,让文本创作变得易如反掌。 在2023年,随着一系列AIGC的相继问世,我们看到A…

深度学习之基于Pytorch框架的卷积神经网络图像去雨系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在图像处理领域,图像去雨技术一直是一个热门的研究方向。随着深度学习技术的快速发展&am…

2024电工杯数学建模 - 案例:最短时间生产计划安排

# 前言 2024电工杯(中国电机工程学会杯)数学建模思路解析 最新思路更新(看最新发布的文章即可): https://blog.csdn.net/dc_sinor/article/details/138726153 最短时间生产计划模型 该模型出现在好几个竞赛赛题上,预测2022今年国赛也会与该模型相关。 1 模型描…

ASP+ACCESS基于BS产品销售管理系统

2. 网页制作工具 a) 网页设计工具 网页主要使用Frontpage2003,Dreamweaver Mx辅助制作。 Frontpage 2003 frontpage2003是在frontpage2000基础上的网页工具。frontpage2003保留和发展了frontpage 2000的优秀功能,并根据用户的的要求再次增加了九大新…

【MATLAB】基于EMD-PCA-LSTM的回归预测模型

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 基于EMD-PCA-LSTM的回归预测模型是一种结合了经验模态分解(Empirical Mode Decomposition, EMD)、主成分分析(Principal Component Analysis, PCA)和长短期记忆…

STM32使用DMA+空闲中断方式实现串口数据接收

欢迎入群共同学习交流 时间记录:2024/5/23 一、概念介绍 (1)DMA:直接存储器存取(DMA)(Direct Memory Access)也是一个挂载在AHB总线上的外设,用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须…

超详细的前后端实战项目(Spring系列加上vue3)(一步步实现+源码)前端篇(一)

最近想着一步步搭建一个前后端项目,将每一步详细的做出来。(如果有不足或者建议,也希望大佬们指出哦) 前端初始化 1.根据vue脚手架创建vue项目 这里可以用很多方法创建vue项目,大家看着创建吧,只要能创建…

H4vdo 台湾APT-27视频投放工具

地址:https://github.com/MartinxMax/H4vdo 视频 关于 H4vdo RTMP lock 屏播放视频工具,可以向目标发送有效载荷,播放目标的屏幕内容。目标无法曹作计算机 使用方法 安装依赖 根据你的操作系统选择一个安装程序 RTMP 服务端 ./rtsp-simple-server.…

HiWoo Box边缘计算网关

​在数字化浪潮汹涌的今天,边缘计算网关成为了连接物理世界与数字世界的桥梁,其重要性日益凸显。HiWoo Box,作为一款功能强大的边缘计算网关,不仅具备了传统网关的基本功能,更在数据采集、处理、传输等方面展现出了卓越…

不闭合三维TSP:蛇优化算法SO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB代码

旅行商从城市1出发,终点城市由算法求解而定 部分代码 close all clear clc global data load(data.txt)%导入TSP数据集 Dimsize(data,1)-1;%维度 lb-100;%下界 ub100;%上界 fobjFun;%计算总距离 SearchAgents_no100; % 种群大小(可以修改) …

【数据库基础】基本认识数据库--入门引导

文章目录 什么是数据库?主流数据库基本使用安装MySQL连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL架构SQL语句分类什么叫存储引擎 什么是数据库? 数据库是指在磁盘和内存中存储特定结构组织的数据。数据库通常用于存储于某个系统、组织或…

Python自带爬虫库urllib

一、什么是urllib 它是一个http请求的Python自带的标准库,无需安装,直接可以用。并且提供了如下功能:网页请求、响应获取、代理和cookie设置、异常处理、URL解析,可以说是一个比较强大的模块。 二、urllib模块 可分为以下模块&am…

2024中青杯数学建模C题:“X 疾病”在人群中的传播代码论文思路分析

2024中青杯数学建模C题论文和代码已完成,代码为C题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解)、模型的评价…

Docker Compose使用

Docker-Compose是什么 docker建议我们每一个容器中只运行一个服务,因为doker容器本身占用资源极少,所以最好是将每个服务单独分割开来,但是这样我们又面临了一个问题: 如果我需要同时部署好多个服务,难道要每个服务单独写Docker…

如何彻底搞懂迭代器(Iterator)设计模式?

说起迭代器(Iterator),相信你并不会陌生,因为我们几乎每天都在使用JDK中自带的各种迭代器。那么,这些迭代器是如何构建出来的呢?就需要用到了今天内容要介绍的迭代器设计模式。在日常开发过程中&#xff0c…

刷题之将有序数组转换成二叉搜索树(leetcode)

将有序数组转换成二叉搜索树 正常递归,中序遍历 递归经常会把自己绕晕,还是得画图分析 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(null…

【LeetCode 随笔】面试经典 150 题【中等+困难】持续更新中。。。

文章目录 380.【中等】O(1) 时间插入、删除和获取随机元素238.【中等】除自身以外数组的乘积134.【中等】 加油站135.【困难】分发糖果42.【困难】接雨水 🌈你好呀!我是 山顶风景独好 💝欢迎来到我的博客,很高兴能够在这里和您见面…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

vue中数据已经改变了,但是table里面内容没更新渲染!

解决方案&#xff1a; 给table或者el-table标签上添加一个动态key值&#xff0c;只要数据发生改变&#xff0c;key值变动一下即可 标签上&#xff1a; :key“timeStamp” 初始data&#xff1a;timeStamp:0, 更新数据&#xff1a;this.timeStamp 这样每次更新数据&#xff…

网络的基础理解

文章目录 网络的基础认识 网络协议协议分层OSI七层模型TCP/IP 五层/四层 模型 网络的基础认识 先来看下面几个问题 什么是网络&#xff1f; 网络就是有许多台设备包括计算机单不仅限于计算机&#xff0c;这些设备通过相互通信所组成起来系统&#xff0c;我们称之为网络所以如…