可以运行,有详细步骤说明
int i;
int j;
double temp;
int temptour[iCityCount];
while (max<iItCount)
{
for(j=0;j<iAntCount;j++)
{
for (i=0;i<iCityCount-1;i++)
ants[j].move();
}
for(j=0;j<iAntCount;j++)
{ ants[j].move2last();
ants[j].UpdateResult ();
}
//find out the best solution of the step and put it into temp
int t;
temp=ants[0].m_dLength; //初始化为第一个蚂蚁的路径长度
for (t=0;t<iCityCount;t++)
temptour[t]=ants[0].tabu[t];
for(j=0;j<iAntCount;j++)
{
if (temp>ants[j].m_dLength) {
temp=ants[j].m_dLength;
for ( t=0;t<iCityCount;t++)
temptour[t]=ants[j].tabu[t];
}
}
if(temp<m_dLength){
m_dLength=temp;
for ( t=0;t<iCityCount;t++)
besttour[t]=temptour[t];
}
printf("%d : %f\n",max,m_dLength); //输出循环次数 目前最好的路径长度
//更新全局环境信息素
UpdateTrial();//清除每只蚂蚁上次走过的路径信息
for(j=0;j<iAntCount;j++)
ants[j].Clear();
max++; //开始循环整个蚁群
}
printf("The shortest toure is : %f\n",m_dLength); //整个循环结束后 蚁群最小路径长度和
城市序号