蚁群算法(C++版)

2026/4/30 4:47:03

//如果蚂蚁去过的城市数量小于城市数量,就继续移动 while (m_nMovedCityCount < N_CITY_COUNT) {

Move(); }

//完成搜索后计算走过的路径长度 CalPathLength(); }

//计算蚂蚁走过的路径长度 void CAnt::CalPathLength() {

m_dbPathLength=0.0; //先把路径长度置0 int m=0; int n=0;

for (int i=1;i

m=m_nPath[i]; n=m_nPath[i-1];

m_dbPathLength=m_dbPathLength+g_Distance[m][n]; }

//加上从最后城市返回出发城市的距离 n=m_nPath[0];

m_dbPathLength=m_dbPathLength+g_Distance[m][n];

} //tsp类 class CTsp { public: CTsp(void); ~CTsp(void); public:

CAnt m_cAntAry[N_ANT_COUNT]; //蚂蚁数组

CAnt m_cBestAnt; //定义一个蚂蚁变量,用来保存搜索过程中的最优结果 //该蚂蚁不参与搜索,只是用来保存最优结果 public:

//初始化数据 void InitData();

//开始搜索 void Search();

//更新环境信息素 void UpdateTrial();

};

//构造函数 CTsp::CTsp(void) { }

CTsp::~CTsp(void) { }

//初始化数据 void CTsp::InitData() {

//先把最优蚂蚁的路径长度设置成一个很大的值 m_cBestAnt.m_dbPathLength=DB_MAX;

//计算两两城市间距离 double dbTemp=0.0;

for (int i=0;i

for (int j=0;j

dbTemp=(x_Ary[i]-x_Ary[j])*(x_Ary[i]-x_Ary[j])+(y_Ary[i]-y_Ary[j])*(y_Ary[i]-y_Ary[j]); dbTemp=pow(dbTemp,0.5);

g_Distance[i][j]=ROUND(dbTemp); } }

//初始化环境信息素,先把城市间的信息素设置成一样

//这里设置成1.0,设置成多少对结果影响不是太大,对算法收敛速度有些影响 for (int i=0;i

for (int j=0;j

g_Trial[i][j]=1.0; } } }

//更新环境信息素 void CTsp::UpdateTrial() {

//临时数组,保存各只蚂蚁在两两城市间新留下的信息素 double dbTempAry[N_CITY_COUNT][N_CITY_COUNT]; memset(dbTempAry,0,sizeof(dbTempAry)); //先全部设置为0

//计算新增加的信息素,保存到临时数组里 int m=0;


蚁群算法(C++版).doc 将本文的Word文档下载到电脑
搜索更多关于: 蚁群算法(C++版) 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219