利用遗传算法求解旅行商问题
可执行文件下载:
/Files/gpcuster/TSPGA.rar
修正显示的版本下载:
/Files/gpcuster/TSPGA2.rar
简介
首先,咱们可以看看用遗传算法求解的旅行商问题的效果图:
您可以在黑色背景的区域内看到问题的求解结果,下面对该程序的使用做一些说明:
- 黑色区域的绿色空心点是需要访问的点。
- 黑色区域的红色空心点是开始访问的起点。(有且只有一个)
- 白色的连线代表从起点(红色空心点)开始,分别经过需要访问的点(绿色空心点)的行走路线。(注意:这里定义的旅行商问题和传统的定义有一点不同。这里的定义不需要从终点再回来起点。)
程序使用说明
启动程序,您将看到如下界面:
下面,我对程序的界面做一些说明:
- Population Size:这个参数代表种群的个体数量。
- Generations:这个参数代表种群的繁殖代数。
- CorssOverRate:这个参数代表种群的个体之间发生交配的概率。
- MutationRate:这个参数代表种群个体发生变异的概率。
- CitiesNum:这个参数代表需要访问的城市的数量(体现为黑色区域中绿色空心点的个数)。
- Random:点击这个按钮,将随机参数起始点(红色空心点)和需要访问的城市(绿色空心点)。
- Reset:点击这个按钮,将清除所有在黑色区域的点。
- Start:点击这个按钮,将根据黑色区域的数据开始计算旅行商问题,并显示最后计算的结果。
更加您的需要,可以不用点击Random按钮随机产生问题的描述。您可以自己手动地在黑色区域设置起点和需要访问的点。设置方法如下:
将鼠标移到到黑色区域,点击鼠标的右键将在黑色区域设置一个需要访问的点,点击鼠标的左键将在黑色区域设置访问的起点(有且仅有一个)。
当您完成黑色区域的设置以后,在点击Start就可以运行程序,并观看到最后的计算结果了。
程序的组织结构
整个程序分为2个部分:
- 表现层:Form1.cs
- 逻辑层:World.cs
您在使用的时候不需要考虑表现层中的内容。(如果您想对程序的界面做修改那就是另外一回事了J)
您关注的重点应该在逻辑层当中。里面描述了整个程序的计算过程。
程序的计算原理
整个程序的计算流程相对简单,根据初中做学的达尔文关于《物种起源》的思想。描述如下:
Start
配置种群的相关参数
_world.Population = Int32.Parse(population.Text);
_world.Generation = Int32.Parse(generation.Text);
_world.CrossOverRate = Double.Parse(crossOverRate.Text);
_world.MutationRate = Double.Parse(mutationRate.Text);
初始化种群的第一代
generateFirstGeneration();
进化到下一代
generateNextGeneration()
返回最优的个体
End
具体的实现原理和方法,可以参考这篇论文
/Files/gpcuster/AFastTSPSolverUsingGAOnJAVA.rar
最后,程序的源代码下载:
/Files/gpcuster/TSPGACode1.rar
利用遗传算法求解旅行商问题相关推荐
- 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1909期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GA TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1909期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...
- 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1337期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...
- 利用遗传算法求解函数极值
1.利用遗传算法求解函数极值 例1 利用遗传算法求函数 f(x) = 11sin(6x) + 7cos(5x),x∈[- π,π]的最大值点. 解:在MATLAB中编制绘制函数曲线的代码,运行得到题中 ...
- 用遗传算法求解旅行商问题
以下是用遗传算法解决旅行商问题的实验报告 1.问题描述 旅行商问题(Travelling Salesman Problem, 简记TSP,亦称货郎担问题):设有n个城市和距离矩阵D=[dij],其中d ...
- 遗传算法求解旅行商问题
问题描述 旅行商问题即TSP(traveling salesman problem),也就是求解最短汉密尔顿回路问题. 给定一个图G,要求找一条回路,使得该回路过每个顶点一次且仅一次,并且要让这条路最 ...
- 基于Matlab的协同进化遗传算法求解旅行商问题
旅行商问题(Traveling Salesman Problem,简称TSP问题),即为求解最优化的城市线路组合,要求每个城市都要走且只走一遍,终点城市同出发城市为同一个,最终所走路程需最短.本文在传 ...
- c语言旅行规划问题,利用动态规划法求解旅行商问题(TSP)的C语言实现(一)...
算法改进:通过改进集合操作降低比较次数,利用二进制表示集合.确定元素k是否在集合S中的比较次数为1,从而降低了时间复杂度到O(n2^n) #include #include #include #inc ...
- 【TSP问题】基于改进遗传算法求解旅行商问题matlab源码
1 算法介绍 模型介绍见这里. 2 部分代码 nn=40; % number of cities asz=10; % area size asx x asz ps=3000; % popula ...
- 遗传算法顺序交叉java,求解旅行商问题的顺序交叉多子代遗传算法
求解旅行商问题的顺序交叉多子代遗传算法 [专利摘要]本发明公开了一种求解旅行商问题的顺序交叉多子代遗传算法.首先依据生物进化理论和数学生态学理论,提出了一种求解旅行商问题的顺序交叉多子代遗传算法,并给 ...
- 人工智能导论——遗传算法求解TSP问题实验
一.实验目的: 熟悉和掌握遗传算法的原理.流程和编码策略,并利用遗传算法求解组合优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响. 二.实验原理: 旅行商问题,即TSP问题(Traveli ...
最新文章
- 授以渔 - Autodesk Forge 学习简谈 - 引言
- SD-WAN能带来什么好处?
- 洛谷P2680:运输计划(倍增、二分、树上差分)
- Day5 - 前端高频面试题之计算机网络相关
- Python+django网页设计入门(15):公用模板设计与使用
- c语言学生综合测评系统_综合测评线上系统帮助文档
- 【每日算法Day 67】经典面试题:手动开根号,你知道几种方法?
- mysql一主多从同步配置
- afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )的参数和作用分析
- 单片机步进电机正反转C语言程序,单片机控制步进电机正反转
- 多元相关分析与回归分析(转)
- MySQL数据库—SQL汇总
- Python excel数据处理之公式---openpyxl
- 《想做视频号必须要懂的知识——音质篇》
- ENVI中的3种图像分类方法
- 手机收到回复TD退订的短信,需要回复吗?今天算是搞明白了
- pip install了之后还是显示no module named xxx的解决办法
- 网络安全专业的就业方向有哪些?
- 艾永亮:耐克阿迪都慌了,成功逆袭的李宁,产品创新战略是什么
- Scrapy爬取知乎Python专题精华,连答主头像都给爬下来,不放过一切
热门文章
- Android 四大组件学习之Service三
- 车牌识别 php,eoLinker-API_Shop_OCR-车牌识别_API接口_PHP调用示例代码
- mysql怎么判断多行数据日期是否连续_MySQL学习笔记(一)
- VPP 20.09版本正式发布
- netlink 011 -- generic netlink 编程入门
- linux文件界面画面,Linux对比文件,很好用的图形界面
- 题目241-字母统计
- C#网络编程----(二)启动、停止和观察进程
- vue检测是不是360浏览器兼容模式_Vue项目兼容IE11
- linux最小化连接开放wifi,CentOS最小化安装后启用无线连接网络