TSP-蚁群算法求解

本文介绍了蚁群算法(ACO)的概念、原理及应用,重点在于如何使用蚁群算法求解旅行商问题(TSP)。通过Data、Ant和ACO类实现算法,解决att48实例,并给出了运行结果。
摘要由CSDN通过智能技术生成

1、蚁群算法
(1)概念
蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法,本质上是进化算法中的一种启发式全局优化算法
(2)原理
假如蚁群中所有蚂蚁的数量为m,所有城市之间的信息素用矩阵pheromone表示,最短路径为bestLength,最佳路径为bestTour。每只蚂蚁都有自己的内存,内存中用一个禁忌表(Tabu)来存储该蚂蚁已经访问过的城市,表示其在以后的搜索中将不能访问这些城市;还有用另外一个允许访问的城市表(Allowed)来存储它还可以访问的城市;另外还用一个矩阵(Delta)来存储它在一个循环(或者迭代)中给所经过的路径释放的信息素;还有另外一些数据,例如一些控制参数(α,β,ρ,Q),该蚂蚁行走玩全程的总成本或距离(tourLength),等等。假定算法总共运行MAX_GEN次,运行时间为t。
(3)过程
第一步:初始化
第二步:为每只蚂蚁选择下一个节点。
第三步:更新信息素矩阵
第四步:检查终止条件
第五步:输出最优值
(4)应用
蚁群算法应用广泛,如旅行商问题、指派问题、Job-shop调度问题、车辆路径问题、图着色问题、网络路由问题等等。

2、求解TSP
同样是求解att48实例(最优解为10628)
代码结构:
在这里插入图片描述
其中Data类表示定义数据、变量初始化和读取数据的类

package com.chb.Tabu;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Random;
import java.util.Scanner;

public class Data {
	public static int cityNum=48;//城市数量,手动设置
	public static final int MAX_GEN=100;//运行代数
	public static final float alpha=1.0f;//
	public static final float beta=5.0f;//
	public static final float rho=0.5f;//
	public static int bestLength;//最佳长度
	public static int bestTour[]=new int[cityNum+1];//最佳路径
	public static int point[][]=new int[cityNum][2];//每个城市的坐标
	public static int dist[][]=new int[cityNum][cityNum];//距离矩阵
	public static float pheromone[][]=new float[cityNum][cityNum];//信息素矩阵
	
	public static int antNum=10;//蚂蚁数量
	public static Ant[]ants=n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值