蚁群算法c++
Posted 优化大师傅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蚁群算法c++相关的知识,希望对你有一定的参考价值。
//轮盘赌选择下一步行进城市
int citySelect(int k, int f)
int c = 0;//记录蚂蚁可行进的城市个数
//1、计算可行进的各城市 选择概率
for (int m = 0; m < cityNum; m++)
//若城市(i,j)之间有路且j不在蚂蚁k的禁忌表中,则计算概率
if (dist(ants[k].loc, m) != -1 && !ifCityInTabu(m, k))
cityProb[c].num = m;
cityProb[c].prob = citySelProb(k, m);
c++;
//2、线性化选择概率
for (int m = 0; m < c; m++)
for (int n = m; n >= 0; n--)
lineCityProb[m] += cityProb[n].prob;
//3、产生随机数选择城市
double r = rand() / double(RAND_MAX);
int j = 0; //选取的目标城市
for (int m = 0; m < cityNum; m++)
if (r <= lineCityProb[m])
j = cityProb[m].num;
updateAnt(k, j);
if (j == f)
ants[k].flag = 1; //若蚂蚁k下一步城市为目的地城市,则修改标志
return j;
以上是关于蚁群算法c++的主要内容,如果未能解决你的问题,请参考以下文章