一种小众且适合发文的智能优化算法应用——三维TSP问题

news2024/9/23 9:29:32

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

今天给大家介绍一种非常小众的智能优化算法应用,这个应用非常容易理解而且新颖小众。目前,知网和WOS上也几乎没有类似的文献,非常适合作为创新点,让审稿人眼前一亮,也能够检验一个优化算法的性能好坏。

以往论文中通常用工程应用来证明一个算法在实际工程中的好坏,但实际上这些工程应用也仅仅是一些带约束的优化问题,已经被彻底用烂了,不光是中文核心,很多SCI也是重灾区,审稿人也早已看腻。

因此,我们本期要介绍的一个应用是三维TSP问题,并且,利用2024年的最新优化算法——北极海鹦优化算法APO进行求解,且调用的算法均为大家常用的算法格式,学会这一篇,大家可自行替换成自己想要的算法。

TSP问题,也就是旅行商问题,属于路径规划类一个非常经典的问题之一,它指的是给定一组城市和城市之间的距离,要求找出一个最短的路线,使得旅行商从一个城市出发,经过每个城市一次后返回起点。TSP属于NP难问题。随着城市数量的增加,解的数量呈指数级增长,如果靠死算,甚至要以年为单位来计算时间。因此,TSP问题非常适合利用智能优化算法进行求解,也能判断一个算法的性能好坏

传统的TSP问题都是二维,也就是只有x和y两个坐标。三维TSP问题则加入了z坐标,也就是三个坐标。大家在输入数据的时候非常简单,只需在txt文件内输入一行的三个坐标即可:

从左到右分别是x坐标、y坐标、z坐标。同时,设置种群数量为100,最大迭代为5000(均可自行修改),利用大家所熟知的优化算法函数格式输入,如下所示:

load('data.txt')             % 导入TSP数据集
N = 100;                     % 种群数量(可以修改)
Max_iteration = 5000;        % 最大迭代次数(可以修改)
dim = size(data,1)-1;        % 维度
lb = -100;                   % 下界
ub = 100;                    % 上界
fobj = @Fun;                 % 目标函数
[Best_Pos,Best_fit,curve]=APO(N,Max_iteration,lb,ub,dim,fobj);

得到的结果如下所示:

第一张图是三维路径图,相比于二维路径图更具挑战性、也更美观,整个路径空间以三维方式呈现,大家也可自由拖动其中的路径,更直观的展现路径优化结果。

第二张图是APO的收敛曲线图,这个算法性能也是非常不错,在CEC2017上取得过很好的效果,之前也做过一期推文:

2024年9月SCI新算法-北极海鹦优化算法(APO)-公式原理详解与性能测评 Matlab代码免费获取

由收敛曲线图可知,大概5000次时已经接近收敛,同时,控制台也会输出每次迭代的数值以及最优路线结果:

为了方便大家写作,这边也给出此应用的数学模型(很容易理解):

TSP问题的目标非常简单,就是找到一条经过每个城市一次的最短路线,最后回到出发城市,用公式可以表示为:

其中,𝑎𝑏为使用路线城市𝑎到城市𝑏的决策变量。另外,𝑐𝑎𝑏表示城市𝑎到城市𝑏的距离,同时𝑐𝑎𝑏> 0。目标函数是总行程最短,第一个约束确保通过求解优化问题所提供的解中不包含子行程;第二个约束确保列表中的每个城市只从一个城市到达;第三个约束则保证每个城市与另一个城市之间的距离和距离都只有一个。对于三维TSP问题,坐标从二维变成了三维,整体模型架构并没有改变。

以上所有图片,一键运行main即可全部出图,非常清晰,适合新手小白。

想要以上Matlab代码的,可以点击下方小卡片,再后台回复关键词,不区分大小写:

SWTSP

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

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

相关文章

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等…

2024/9/9 408“回头看”:

B树是什么?有什么作用?B树的插入和删除具体细节是什么?除了B树还有一个是B+树、还是B-树,他们有什么区别,又有什么相同点? b树在王道考研查找这一章,所以他的主要作用就是查找。 在…

MySQL中binary放在判断语句之前有什么作用

为什么要加binary进行判断 ① 因为 mysql中等号比较是不区分大小写的,select aA这个输出结果为1。 ② 在判断语句之前 加上binary可以以区分大小写比较 ,因为这样底层会用二进制形式比较,实现精确匹配。 代码比较 忽略大小写比较 select …

Ftrans跨域文件传输方案,数据流动无阻的高效路径

大型集团企业由于其规模庞大、业务广泛且往往将分支机构、办事处分布在多个地域,因此会涉及到跨域文件传输的需求。主要源于以下几个方面: 1.业务协同:集团内部的不同部门或子公司可能位于不同的地理位置,但需要进行紧密的业务协…

【C++】STL学习——priority_queue(了解仿函数)

目录 priority_queue介绍迭代器种类priority_queue实现仿函数仿函数的使用 priority_queue介绍 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素&#x…

Linux 磁盘管理-RAID磁盘冗余阵列看这一篇就够了

今天给伙伴们分享一下Linux 磁盘管理-RAID磁盘冗余阵列,希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到…

机器学习深度学习

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 深度学习概述 1.1 定义与历史背景 深度学习作为机器学习领域的一个重要分支,其核心在于构建由多层(深层)的人工神经网络组成的计算模型,这些模型能够学习数据的多层次抽象表示。深度学习的…

东大成贤资源库-数据挖掘技术与应用 实验一:数据预处理_熟悉数据挖掘数据预处理流程。 基于给定的数据集(csv)文件,完成下列数据处理。 1

【实验内容】 程序清单 import pandas as pd import numpy as np# 读入文件,存放在字典data里 data pd.read_csv("D:\\Desktop\\data1.csv")# 填入Id列空缺的值 for i in range(1,len(data)):if pd.isnull(data[Id][i]):data[Id][i]i1# Id属性列去重&a…

虚拟机的安装步骤

我这里使用的是VMware 1.下载centos7 2.配置 跟这图来就好 开启虚拟机 第一个页面直接回车,忘了截图 等待安装 选择语言,看自己 点击完成 点击继续安装 设置账号密码 然后等待就行 安装完成之后会有一个重启,点击(又忘了截图) 完成许可和网络 最后就可以了

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵…

数据权限的设计与实现系列7——前端筛选器组件Everright-filter用法说明

背景 官方给了全局性的介绍和示例,不过到了具体使用环节,介绍就不是那么清楚明确了,往往是直接放 demo,需要去推测和揣测,然后动手验证。去百度了下,也没找到现成的对该组件的使用说明,得以开荒…

Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题

一 毛发缓存数据巨大的问题(及5个解决方案) 在引擎里模拟毛发,并且把它缓存下来,我们就不需要从外部导入了,所以我们要解决的问题就是怎么样在引擎里自由地控制毛发 1.物理场控制 延申 [技术分享]《UE中的世界物理场…

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介&am…

P1071 [NOIP2009 提高组] 潜伏者

1.题目太长要耐性总结出题目的要求 2.map中count的使用方法 #include <bits/stdc.h> using namespace std; map<char, char>m0, m1;//m0记录密文对明文&#xff0c;m1记录明文对密文int main() {string x, y, z ;//x为密文&#xff0c;y为明文&#xff0c;z为待翻…

SpringBoot+Redis极简整合

1 前言 Redis是现在最受欢迎的NoSQL数据库之一&#xff0c;下面将以最简洁的代码演示&#xff0c;在SpringBoot中使用redis。 2 下载安装Redis 2.1 下载 Redis3.x windows安装版下载地址 2.2 安装到任意位置 一直Next到完即可。 2.3 启动 打开安装目录&#xff0c;点击…

【数据结构】堆——堆排序与海量TopK问题

目录 前言一、堆排序1.1 整体思路1.2 代码部分1.3 建堆的时间复杂度1.4 堆排序的总结 二、向下调整算法的时间复杂度三、向上调整算法的复杂度四、海量TopK问题4.1 TopK题目 总结 前言 上一篇我们学习了堆的数据结构&#xff0c;现在我们来看看堆的日常应用和排序 一、堆排序 …

内网安全-横向移动【3】

1.域横向移动-内网服务-Exchange探针 Exchange是一个电子右键服务组件&#xff0c;由微软公司开发。它不仅是一个邮件系统&#xff0c;还是一个消息与协作系统。Exchange可以用来构建企业、学校的邮件系统&#xff0c;同时也是一个协作平台&#xff0c;可以基于此开发工作流、…

用广播星历计算卫星运动的平均角速度

用广播星历计算卫星位置 1.计算卫星运动的平均角速度 首先根据广播星历中给出的参数计算参考时刻的平均角速度: 式中&#xff0c;GM为万有引力常数G与地球总质量M之乘积&#xff0c;其值为GM3.98600510^14b m3/s2。 然后根据广播星历中给定的摄动参数计算观测时刻卫星的平均…

模版方法模式template method

学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架&#xff0c; 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法