说明:信息素权重,路径权重和信息素蒸发率对最后的结果影响很大,需要微调。
目前发现 2 / 5 / 0.5 能达到稍微让人满意的效果。本程序离完美的 ACO 还差很远,仅供参考。
本蚁群算法为 AS 算法。
用法:
1.new 一个对象
ACOforTSP tsp = new ACPforTSP(tsp 数据文件名,迭代次数,蚂蚁数量,信息素权重,路径权重,信息素蒸发率);
2.用 go()方法运行
tsp.go();
ACOforTSP.java
___________________________________________________________________
import java.io.File;
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
import static java.lang.Math.random;
import java.util.HashMap;
import java.io.FileReader;
import java.io.BufferedReader;
/**
*
* @author dvdface
*/
public class ACOforTSP {
//城市的距离表
private double[][] distance;
//距离的倒数表
private double[][] heuristic;
//启发信息表
private double[][] pheromone;
//权重
private int alpha, beta;
//迭代的次数
private int iterationTimes;
//蚂蚁的数量
private int numbersOfAnt;
//蒸发率
private double rate;