tsp问题用蚁群算法java实现_TSP解决之道——蚁群算法
参考
蚁群算法原理与应用1-自然计算与群体智能
简介
1、蚁群算法(Ant Clony Optimization,ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的可能性。
2、是一种仿生学的算法,是由自然界中蚂蚁觅食的行为而启发。(artificial ants;双桥实验)
3、运作机理:当一定路径上通过的蚂蚁越来越多时,其留下的信息素轨迹也越来越多,后来蚂蚁选择该路径的概率也越高,从而更增加了该路径的信息素强度,而强度大的信息素会吸引更多的蚂蚁,从而形成一种正反馈机制。
4、蚁群算法欧化过程中的两个重要原则:
a、蚂蚁在众多路径中转移路线的选择规则。
b、全局化信息素更新规则。信息素更新的实质就是人工蚂蚁根据真实蚂蚁在访问过的边上留下的信息素和蒸发的信息素来模拟真实信息素数量的变化,从而使得越好的解得到越多的增强。这就形成了一种自催化强化学习(Autocatalytic Reinforcement Learning)的正反馈机制。
原理
1、描述:蚂蚁数量m;城市之间的信息素矩阵pheromone;每次迭代的m个蚂蚁的最短路径 BestLength;最佳路径BestTour。 每只蚂蚁都有:禁忌表(Tabu)存储已访问过的城市,允许访问的城市表(Allowed)存储还可以访问的城市,矩阵(Delta)来存储它在一个循环(或者迭代)中给所经过的路径释放的信息素。
2、状态转移概率:在搜索过程中,蚂蚁根据各条路径上的信息量及路径的启发信息来计算状态转移概率。在t时刻蚂蚁k由元素(城市)i转移到元素(城市)j的状态转移概率:
τij (t) :时刻路径(i, j)上的信息量。ηij=1/dij :启发函数。
α为信息启发式因子,表示轨迹的相对重要性,反映了蚂蚁在运动过程中积累的信息在蚂蚁运动时所起的作用,其值越大,则该蚂蚁越倾向于选择其它蚂蚁经过的路径,蚂蚁之间的协作性越强;
β为期望启发式因子,表示能见度的相对重要性,反映蚂蚁在运动过程中启发信息在蚂蚁选择路径中的受重视程度,其值越大,则该状态状态转移概率越接近于贪心规则;
3、息素更新规则:
ρ表示信息素挥发系数;Δτij(t)表示本次循环中路径(i, j)上的信息素增量,初始时刻Δτij(t) =0。
4、三种信息增量计算方法:
第一种
第二种
第三种
区别:第一种利用了全局信息,在走一圈后更新。二、三中都利用的是局部信息。通常使用第一种。
5、TSP中流程图
tsp问题用蚁群算法java实现_TSP解决之道——蚁群算法相关推荐
- java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)-–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...
- [转]java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码
http://www.cnblogs.com/chenssy/ java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码 随着计算机的发展.普及,世界各国为了适应本国的语言 ...
- java堆算法,Java 基本功04-JVM-Java堆详解和GC算法
JVM GC 机制 1. 在此之前需要了解相关概念: 1.1 Java 堆内存: 在 HotSpot JVM 实现中 Heap 内存被"分代"管理. JVM 的内存首先被分割成两部 ...
- l bfgs算法java代码_数值优化:理解L-BFGS算法
译自<Numerical Optimization: Understanding L-BFGS>,本来只想作为学习CRF的补充材料,读完后发现收获很多,把许多以前零散的知识点都串起来了.对 ...
- 算法java语言描述_java语言描述数据结构与算法崔笑颜的博客
java语言描述数据结构与算法崔笑颜的博客 冒泡排序 插入排序 选择排序 希尔排序 快速排序 归并排序 二分查找package com.demo.test; import java.util.Arra ...
- 两个矩阵是否相交的算法_刷透近200道数据结构与算法,成功加冕“题王”,挤进梦中的字节!...
不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...
- 跑胡子c语言算法,跑胡子胡牌算法Java版(带赖子、基于回溯算法)
跑胡子规则 跑胡子,小写"一"到"十"各4张共40张,大写"壹"到"拾"各4张共40张. 砌牌:跑胡子为3人同玩,庄家砌 ...
- java蛮力法解决任务分配问题_【算法题】任务分配问题---匈牙利算法
一.问题描述 问题描述:N个人分配N项任务,一个人只能分配一项任务,一项任务只能分配给一个人,将一项任务分配给一个人是需要支付报酬,如何分配任务,保证支付的报酬总数最小. 问题数学描述: 二.实例分析 ...
- 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例
本文实例讲述了C++并查集亲戚(Relations)算法.分享给大家供大家参考.具体分析如下: 题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女 ...
最新文章
- 全球权威声纹识别竞赛斩获双料冠军 网易AI Lab智能技术领先国际
- 网络地址和广播地址的作用
- Android 搜索框 search dialog 和 search widget
- Java 自增(++) 和 C语言中自增的区别
- RHEL5.5 安装 oracle 11g
- 关于标签系统的又一点想法。
- delphi实现两个目录路径的链接
- angular语言前端开发_web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万...
- matlab将矩阵分解成lu,10行代码实现矩阵的LU分解(matlab)
- 事务的四个属性ACID
- java学习--自定义类的实例的大小比较和排序
- 网易云IM(即时通讯) 互动直播集成
- win10浏览器加载很慢_win10系统打开网页速度慢的排除原因及解决方法
- MySQL 必知必会系列(五)
- 小马哥--高仿三星G9200 主板型号A208刷机拆机主板图
- 计算机期刊杂志投稿指南
- java-php-python-仁爱公益网站计算机毕业设计
- 移动硬盘误删分区,数据完美找回
- Oracle_Linux of Creation hr user for Oracle 18c oracle 练习的账户(hr user)
- go 语言 优势及 主要用途
热门文章
- getElementById、getElementsByTagName、getElementsByClassName复合使用浅析
- 写外挂为什么都用易语言?
- 【UiPath2022+C#】UiPathExcel 和数据表
- Go-Linq 使用
- @Column注解及属性详解
- 解决 duplicate column name
- 关于VB里的ScaleMode问题
- webservice Connection timed out
- process获取父进程_Windows Process Explorer获取有关进程的详细信息
- <1> ODOO15中关于MIS Builder的报表研究