第一范文网 - 专业文章范例文档资料分享平台

蚁群算法(C++版)

来源:用户分享 时间:2025/5/28 16:00:42 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

//如果蚂蚁去过的城市数量小于城市数量,就继续移动 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++版) 的文档
蚁群算法(C++版).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c01bdj3w06i5zpak1cslt1is530855j00i79_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top