可以运行,有详细步骤说明
#include <stdio.h>
#include <cmath>
#include <iostream>
#include <fstream>
#include <time.h> #include <cstdlib>
using namespace std; //下面的程序使用std
const int iAntCount=34;//蚂蚁数量,一般取值原则为:城市数量 / 蚂蚁数量 = 1.5左右 const int iCityCount=51;//城市数量
const int iItCount=2000;// 迭代次数,就是搜索次数
const double Q=100; //总的信息素
const double alpha=1; //信息素重要程度
const double beta=5; //这个数越大,则蚂蚁往信息素大的地方走的概率就越大
const double rou=0.5; //环境信息素挥发速度
int besttour[iCityCount];// 最佳路径列表
double rnd(int low,double uper)// 返回指定范围内的一个随机数
{
double p=(rand()/(double)RAND_MAX)*((uper)-(low))+(low);
return (p);
};
int rnd(int uper) //返回指定上限范围内的一个随机数
{
return (rand()%uper);
};
class GInfo//tsp地图信息,包含了信息素,城市距离,和信息素变化矩阵
{
public:
double m_dDeltTrial[iCityCount][iCityCount]; //临时保存信息素,更新环境信息素的时候使用,每只蚂蚁周游完各个城市后开始计算
double m_dTrial[iCityCount][iCityCount]; //当前环境信息素的增加
double distance[iCityCount][iCityCount]; //城市间距离
};
GInfo Map; //环境信息对象 全局变量Map
class ant//定义蚂蚁类
{
private:
int ChooseNextCity();//选择下一个城市
double prob[iCityCount]; //未走的城市选择概率,临时变量数组,选择下一个城市的时候,保存各个城市被选中的概率值
int m_iCityCount; //记录蚂蚁已经走过的城市数目