可以运行,有详细步骤说明
double mSelect=0;
for ( i=0;i<iCityCount;i++) {
if((AllowedCity[i]==1))
mSelect+=prob[i] ;
if (mSelect>=mRate) {j=i;break;}
}
if (j==10000) //这种情况只有在temp=0.0的时候才会出现
{
temp=-1;
for (i=0;i<iCityCount;i++) {
if((AllowedCity[i]==1))
if (temp) {
temp=pow((1.0/Map.distance[curCity][i]),beta)*pow((double)(Map.m_dTrial[curCity][i]),alpha); j=i;
}
}
}
return j;
}
void ant::UpdateResult()//计算周游完城市后,走过的路径长度
{
// Update the length of tour
int i;
for(i=0;i<iCityCount-1;i++)
m_dLength+=Map.distance[tabu[i]][tabu[i+1]];
m_dLength+=Map.distance[tabu[iCityCount-1]][tabu[0]]; //最后城市和开始城市间的距离 }
void ant::move()//移动到下一个城市
{
//the ant move to next town and add town ID to tabu.
int j;
j=ChooseNextCity();
addcity(j);
}
class project
{
public:
void UpdateTrial();//更新环境信息素
double m_dLength; //整个蚁群走过的最短路径
void initmap();//初始化环境信息素的挥发系数