旅行商问题的粒子群优化

news/2024/5/19 22:30:53/文章来源:https://blog.csdn.net/qq_45874683/article/details/129705609

英文标题:Optimization of Particle Swarms for Travelling Salesman Problem

摘要:旅行推销员问题是原子种群优化在本研究中的一个应用。我们已经开发了几种新的技术,旨在用粒子群算法解决TSP问题。此外,我们引入了交换操作和交换时序的概念,并重新定义了剩余操作的基础;这样,这项研究创造了独特的粒子群算法。研究证明它可以产生令人满意的结果。本文的目的是评估粒子群优化的功能,用于解决TSP问题。这个问题的解决方案通常是NP——很难,它有N!排列。这项研究的目标是检验这两种算法解决洲际和其他基准问题的能力。总体而言,结果表明,使用的算法比PSO算法更了解如何理解高质量的解释,但在正常生成方面还不够好。

引言

由于TSP于20世纪20年代开始进入研究领域,许多研究人员一直在寻找它。众所周知,T.S.P.在非连接或组合优化的主题中定位为N.P难问题。然而,TSP关注的是在使用组织预先发现的城市中确定最佳旅行路线,即使减少了线路的总费用,并在地图“Bhattacharyya and Bandyopadhyay 2009”上进行了各种限制的交易。

它也被称为N.P难(不确定多项式)问题(Garey和Johnson,1979年)。老式的优化方法在解释这些问题时是无用的。粒子群优化P.S.O由Kennedy a,Eberhart[1]创建,并已与[4,5,6]相匹配。从与人的共同行为来看,这是非常棒的,这些实体通过一个n维的检查窗口,每个元素都代表着对困难的可能解释,每个粒子都可以回忆起它移动过的最佳位置。由于元素知道如何传达有关追击空间的信息,因此有可能做出世界范围内最好的解释。每个粒子在每次迭代中都使用以下公式来确定其速度:

但0表示惰性因子,Xid表示粒子的当前位置,Pid表示该颗粒物的最佳解,Pgd表示所有粒子达到的全局最优解。是决定Pid和Pid影响的权重。在计算Vid之后,我们可能会在随后的复制中获得一个新的位置:

粒子群算法是一种进化计算过程,因为它与其他进化系统具有一些共同的进化特征:

•它的特点是一个初始阶段,在该阶段建立了一个群体,每个人都被分配了一个唯一的ID。

•它通过产生不同的世代来扩大外层空间的发现

•它基于上一代的输出。旅行商问题TSP是一个众所周知的组合优化“hard问题”

T.S.P已经利用最近邻搜索N.N.S、建模退火S.A、禁忌搜索T.S、神经网络(A.C.S[7]和G.A[8])等方法进行了广泛的研究。自1995年以来,单位群优化器在不间断故障中表现出了成功;尽管如此,它是离散问题的一个新课题;特别是,将P.SO应用于T.S.P是一个新的研究方向。

文献综述Eberhart和Kennedy在1995年提出PSO作为一种进化乘法实践[9,10]。它源于对成群鸟类行为的研究,该研究涉及复制一群鸟在一个地区随机寻找食物的剧本。PSO是一种基于居民的优化技术,通过更新产量来搜索最佳结果,尽管它具有较少的参数交叉和变异算子。PSO需要被证明可以有效地解决全局优化和工程问题[11,12]。经过近10年的发展,粒子群算法被广泛应用于各个领域,包括特征优化(人工神经网络准备、FSC、电路板学校组装、组合优化、决策邮寄等)[13-18]。PSO的性能在探索手段的早期迭代中被证明是良好的,但它很难找到接近最优的解,导致收敛速度低,难以聚集到全局最优。

T.S.P的定义如下:给定n个市镇和两个任意城市中间的距离,以找到n个城镇的最佳旅游路线,每个城镇只访问一次,没有次游览。T.S.P代表这是一个非常著名的组合优化问题,类似于N.P-Hard。它总是被用来检查[15]的智能实验算法的合法性。通过Lan作为一组类型到唯一的碎片群优化规则进行解释,提供了交换操作、交换进展的思想作为参考,然后成功地将其应用于20节点的冒险推销员问题。尽管直接的P.S.O和任何其他传统规则解决T.S.P的力量和动量存在显著差异,但这是将T.S.P与P.S.O一起解开的新挑战[16]。在这项工作中,对基本粒子群算法进行了改进。粒子群是使用贪婪算法的推理开始的。为了同时搜索,使用了两个群。在这两个群中,粒子群算法是独立运行的。这两个蜂群的粒子会根据突变的机会发生转化。两个群体中碎片的单独目标以特定的概率相交,提高了居民的素质,加速了知识转移。根据模拟数据[17-25],增强型PS.O具有较高的收敛速度和速率

三、基本概念

本节定义了交换操作:

交换操作:考虑一种传统的TSP方法,将时间顺序一起以及n

SO,(i,,iz)等价于切换答案S中的节点ql,qz。然后,我们将S’=S+SO(il,i2)定义为由操作SO(i,、iz)控制的新结果。因此,加号“+'我获得了一个新的含义。具体说明如下:假设存在一个具有五个节点的TSP问题,则以下解决方案是可能的:S等于(l,3,5,2,4)。S0(1,2)是交换运算符,而节点,S'=S+S0(1,2-)=(1,3,5,2,4)

交换序列:一个或多个交换运算符组成交换序列SS。=ss(so,soz,so,…,so“)这知道如何用数学表达如下:

四基本互换结构的构建

由于我们想创建一个简单的SS,知道如何对B进行操作以获得答案a,因此我们将其定义为SS=A-B。(在这里,符号-也有了新的含义)。为了得到SS,我们可以将B中的节点从左向右翻转。因此,一个方程必须存在A=B+SS。例如:

A(1 2 3 4 5)

B(2 3 1 5 4)

第一步:因为A(1)=B(3)=1.所以第一次交换算子 为SO(1,3)

B(l)=B+SO(1,3)=(1 3 2 5 4)

第二步: A(2)= B1(3) =2 ,所以第二次交换算子 为SO(2,3)

B(2)=B(1)+SO(2,3)=(1 2 3 5 4)

第三步:SO(4,5)

A=B(2)+SO(4 5)

所以完整的交叉算子是SS =A-B =(SO(I 3),S0(2 3), SO( 4 5))

交换运算符(Pid-Xid)应在基本交换序列(Pid)(PpdXid)中保留一个概率。交换运算符保留得越多,att的值就越高,Pid(PgdXid)的影响就越大 。

五、T.S.P.S.O程序说明

Wang等人(2003)通过引入Swap运算的概念,重新定义了TSP问题的PSO算子,Swap进展。这里简要解释了非推进PSO算法。粒子群算法被认为是随机搜索算法,每次运行后可能会获得不同的结果。因此,可以使用不同的随机种子进行多次独立的运行,并且PSO被认为是随机搜索算法,每次运行后可能会获得不同的结果。因此,可以使用不同的随机种子进行多次独立运行。以达成一项体面的决议。下图显示了算法群标准和改进的工作原理。

常规P.S.O程序的方法如下所示,参见“图1”:

•步骤1:在N维空间中,产生具有随机集合和速率的原子群体。

•第2步:使用目标问题目标函数,评估每个粒子的适当性。

步骤3:对于每次迭代,将每个粒子的适应度与其先前的最佳适应度进行比较。将p最佳值替换为当前价格,如果当前值优于p最佳值,则将p最佳设置设置为现有位置。

•第4步:比较每个比特的p最佳值,并将群的全局最佳位置修改为具有最佳适当性的位置(例如最佳)。

•步骤5:分别使用方程(1)和(2)调整位置和速度。

•第6步:评估粒子的状况。如果情况得到满足,停止并产生结果。如果没有,重复步骤2-5,直到表面状况得到满足。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【k8s】k8s部署mariadb数据库

文章目录前言:一、构建mariadb的dockerfile二、docker build打包并上传到harbor仓库三、编写yaml文件四、使用kubectl apply部署到K8s总结前言: MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 M…

5.网络爬虫——Xpath解析

网络爬虫——Xpath解析Xpath简介Xpath解析节点选择路径表达式谓语未知节点Xpath实战演示豆果美食实战获取数据源代码前言: 📝​📝​此专栏文章是专门针对Python零基础爬虫,欢迎免费订阅! 📝​📝…

Python绘制论文曲线图

1、折线图 plt.plot() 常用的一些参数: 颜色(color): ‘c’ 青红(cyan) ‘r’ 红色(red) ‘m’ 品红(magente) ‘g’ 绿色(green) ‘y’ 黄色…

什么平台制作表单工具效率高?

目前,低代码开发平台在很多行业中得到了应用和推广。如果需要制作表单工具,还依然用传统的表单工具来制作表单,效率不仅得不到提升,而且办公自动化发展步伐也将缓慢发展。那么,借助什么样的平台可以让制作表单工具更高…

OpenHarmony开发一个App,安装到BearPi-HM Micro开发板

一、前言 建议先阅读我们这篇 OpenHarmony 快速上手 BearPi-HM Micro 一个带显示屏的开发板,这里面详细介绍了Micro开发板如何进行源码编译烧录,以及hap包安装的全过程。 本篇是介绍如何开发一个App,然后安装到BearPi-HM Micro开发板上。 有同学会问,这不是有手就行了吗?…

基于YOLOv5的停车位检测系统(清新UI+深度学习+训练数据集)

摘要:基于YOLOv5的停车位检测系统用于露天停车场车位检测,应用深度学习技术检测停车位是否占用,以辅助停车场对车位进行智能化管理。在介绍算法原理的同时,给出Python的实现代码、训练数据集以及PyQt的UI界面。博文提供了完整的Py…

xss-labs靶场分析及绕过

level1源码&#xff1a;图中框示的为注入点&#xff0c;下同payloadname<script>alert(1)</script>注入结果&#xff1a;原理&#xff1a;由于第一关没有做任何的过滤所以直接注入就行level2源码&#xff1a;payload&#xff1a;keyworda"><script>a…

Vue3学习笔记(1.0)

Vue.js是一套构建用户界面的渐进式框架。 Vue只关注视图层&#xff0c;采用自底向上增量开发的设计。 Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。 <div id"hello-world" class"demo"> {{message}} </div><scr…

Spring WebSocket入门实例、源码解读、STOMP客户端

1 Spring WebSocket入门实例 在浏览器和服务器之间,使用WebSocket发送和接收消息。具体会使用到WebSocket子协议STOMP。 1.1 创建Spring Boot项目,添加WebSocket依赖 后端Spring Boot的WebSocket依赖,前端使用Thymeleaf,所以需要webjars依赖。 pom.xml如下: <!-- 后端W…

buu刷题(4)

目录 [HFCTF2020]BabyUpload [XNUCA2019Qualifier]EasyPHP .htaccess包含文件 第一种方法 第二种方法 [GWCTF 2019]你的名字 [EIS 2019]EzPOP [2020 新春红包题]1 如何绕过后缀名呢 方法一 还有一点就是json格式的数据会被执行吗&#xff0c;实践试试 构造一下试试&am…

【kubernetes云原生】k8s标签选择器使用详解

目录 一、标签选择器来源 二、什么是标签选择器 2.1 标签选择器概述 2.2 标签选择器概述属性 三、标签使用场景 四、标签选择器特点 4.1 基本特点 4.2 核心标签选择器 4.3 补充说明 五、标签选择器常用操作命令 5.1 前置准备 5.2 常用操作命令 5.2.1 查看namespac…

git与gitee结合使用,提交代码,文件到远程仓库

git与gitee结合使用&#xff0c;如何提交文件到远程仓库&#xff0c;以及如何克隆仓库的内容到本地1.安装git1.1 git 安装以后&#xff0c;cmd git --version 说 git 不存在&#xff0c;问题的解决2.配置ssh公钥和创建配置gitee仓库2.1 配置ssh公钥2.2 创建并配置gitee仓库3. 小…

蓝桥杯训练day3

day31.递推&#xff08;1&#xff09;3777. 砖块&#xff08;2&#xff09;95. 费解的开关&#xff08;3&#xff09;1208. 翻硬币2.递归&#xff08;1&#xff09;1497. 树的遍历&#xff08;2&#xff09;97. 约数之和1.递推 &#xff08;1&#xff09;3777. 砖块 思路&…

纯干货:分享一些跨境电商客服经常会用到的话术(含中英文)

纯干货&#xff1a;分享一些跨境电商客服经常会用到的话术&#xff08;含中英文&#xff09;跨境电商同国内的电商平台一样&#xff0c;是将国内的产品卖到国外去赚取信息差&#xff0c;只不过客服面对的是国外的客户&#xff0c;仍旧需要为客户解决一系列服务问题。让前来咨询…

go_admin开源项目笔记

git clone 到本地 然后进入到 go-admin 根目录 执行 &#xff1a;go build 报错如下&#xff1a; 拿第一个详细解读&#xff1a; common\middleware\sentinel.go:4:2: missing go.sum entry for module providing package github.com/alibaba/sentinel-golang/core/system (im…

41.解构赋值

目录 1 数组解构 1.1 基本用法 1.2 交换值 1.3 数组排序 1.4 多解构多余的会变为undefined 1.5 少的就按顺序来 1.6 解构其余的值 1.7 默认解构值 1.8 跳过一些值 1.9 支持多维数组 2 对象解构 2.1 基本用法 2.2 数组套对象 2.3 多级对象 2.4 数…

ideal导入Spring源码详解

前言 踩过很多坑&#xff0c;参考过很多博客&#xff0c;在不懈的坚持下终于迈进了spring源码的门槛 1、环境配置 本博客使用的是 ideal2020.3gradle-6.4.1spring-framework-5.1.xjdk8 1.1安装和配置gradle 1.1.1下载gradle 下载链接 我使用的是gradle-6.4.1-bin.zip这个…

win下pytorch安装—cuda11.7 + cudnn8.4 + pytorch1.13 + tensorRT

安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch安装四、tensorRT8.X安装写在前面 博主这里装的是cuda11.7&#xff0c;最后一步tensorRT运行的时候有个pycuda的安装&#xff0c;它的最新版本只支持到cuda11.6&#xff0c;所以博主最后是又把cuda…

【UML】项目开发流程

以下模型是一个项目从启动到最终部署&#xff0c;逐步细化&#xff08;精化&#xff09;、实现的过程 1、业务用例模型 业务用例模型在项目启动阶段&#xff0c;使用业务用例模型来获取需求&#xff0c;是为了真是业务建立模型&#xff0c;为了和客户达成共识&#xff0c;暂不…

Android network — ipv6邻居发现协议

Android network — ipv6邻居发现协议0. 前言1. 地址解析1.1 IPv6地址解析过程分析&#xff1a;1.2 报文抓包分析&#xff1a;2. 跟踪邻居状态3. 重复地址检测3.1 抓包分析3.2 IPv6地址生命周期&#xff1a;4. 路由器发现4.1 地址自动配置&#xff1a;4.2 默认路由器优先级和路…