蚁群算法c++代码(3)

发布时间:2021-06-08

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

AllowedCity[i]=1;

prob[i]=0;

}

}

void ant::addcity(int city) //增加一个城市到走过的城市数组中,并改变没走过的城市数组中的标志

{

//add city to tabu;

tabu[m_iCityCount]=city;

m_iCityCount++;

AllowedCity[city]=0;

}

int ant::ChooseNextCity()//蚂蚁选择下一个城市号

{

//Update the probability of path selection

//select a path from tabu[m_iCityCount-1] to next

int i;

int j=10000;

double temp=0;

int curCity=tabu[m_iCityCount-1]; //当前选择的城市号

for (i=0;i<iCityCount;i++){//先计算当前城市和没有走过的城市,两两之间的信息素的总和

if((AllowedCity[i]==1))

{

temp+=pow((1.0/Map.distance[curCity][i]),beta)*pow((Map.m_dTrial[curCity][i]),alpha); //信息素总和

}

}

double sel=0; //计算没有走过的城市被选中的概率

for (i=0;i<iCityCount;i++) {

if((AllowedCity[i]==1))

{

prob[i]=pow((1.0/Map.distance[curCity][i]),(int)beta)*pow((Map.m_dTrial[curCity][i]),(int)alpha)/temp;

sel+=prob[i];

}

else

prob[i]=0; //如果已经走过,则概率为0

}

double mRate=rnd(0,sel); //下面的操作实际上就是遗传算法中的轮盘选择

蚁群算法c++代码(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

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

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