下面詳細說明介紹VC++6.0代碼的編制問題,對原來寫過的代碼做了一點修改,些內容都是一些門戶網站和技術論壇找到的,中間可能有不少錯誤是我沒有挑出的,歡迎大家指正。
VC++6.0代碼如下:
- public:
- void addcity(int city);
- int tabu[iCityCount];
- void Clear();
- void UpdateResult();
- double m_dLength;
- double m_dShortest;
- void move();
- ant();
- void move2last();
- };
- void ant::move2last()
- {
- int i;
- for(i=0;i《iCityCount;i++)
- if (AllowedCity[i]==1)
- {
- addcity(i);
- break;
- }
- }
- void ant::Clear()
- {
- m_dLength=0;
- int i;
- for(i=0; i〈iCityCount;i++)
- prob[i]=0;
- AllowedCity[i]=1;
- }
- i=tabu[iCityCount-1];
- m_iCityCount=0;
- addcity(i);
- }
- ant::ant()
- {
- m_dLength=m_dShortest=0;
- m_iCityCount=0;
- int i;
- for(i=0;i〈iCityCount;i++)
- 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);
- }
- }
以上就是VC++6.0代碼的舉例說明,可以修改循環次數和其他參數。以得到更好的解。使用TSP數據的時候,將前面的一些字符串信息刪除,只留下坐標數據。