蚁群算法c++代码

时间:2022-11-23 14:28:48 作者:壹号 字数:1715字

可以运行,有详细步骤说明

#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]; //城市间距离

…… 此处隐藏0字 ……

};

GInfo Map; //环境信息对象 全局变量Map

class ant//定义蚂蚁类

{

private:

int ChooseNextCity();//选择下一个城市

double prob[iCityCount]; //未走的城市选择概率,临时变量数组,选择下一个城市的时候,保存各个城市被选中的概率值

int m_iCityCount; //记录蚂蚁已经走过的城市数目