版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基本蟻群算法的C+源程序 2006-12-01 09:36關(guān)鍵詞: 蟻群算法 C+ 源程 序 ACS基本蟻群算法的C+源程序/ 基本蟻群算法程序/ 程序在 vc+6.0 下面同過(guò),對(duì)原來(lái)的做了一點(diǎn)修改。/ 你可以使用本代碼,如果感到對(duì)你有用的話(huà),請(qǐng)通知作者,作者會(huì)很高興/ 通訊地址: fashionxu/by FashionXu#include "stdafx.h"#include#include#include#include螞蟻數(shù)量城市數(shù)量 最大跌代次數(shù)using namespace std;const int iAntCount=34;/ const int iCit
2、yCount=51;/ const int iItCount=2000;/ const double Q=100;const double alpha=1; const double beta=5;const double rou=0.5;int besttouriCityCount;/最有路徑列表double rnd(int low,double uper)/獲得隨機(jī)數(shù)double p=(rand()/(double)RAND_MAX)*(uper)-(low)+(low); return (p);int rnd(int uper) return (rand()%uper);class GI
3、nfo/tsp 地圖信息,包含了信息素,城市距離,和信息素變化矩陣 public:double m_dDeltTrialiCityCountiCityCount;double m_dTrialiCityCountiCityCount;double distanceiCityCountiCityCount;GInfo Map;class antprivate:int ChooseNextCity();/選擇城市double probiCityCount;int m_iCityCount;int AllowedCityiCityCount;/沒(méi)有走過(guò)的城市public: void addcity(
4、int city); int tabuiCityCount;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 (AllowedCityi=1)addcity(i);break; void ant:Clear()m_dLength=0;int i;for(i=0; i iCityCount;i+)probi=0;AllowedCi
5、tyi=1;i=tabuiCityCount-1;m_iCityCount=0;addcity(i);ant:ant()m_dLength=m_dShortest=0; m_iCityCount=0;int i;for(i=0;i iCityCount;i+)AllowedCityi=1;probi=0;void ant:addcity(int city)/add city to tabu;tabum_iCityCount=city;m_iCityCount+;AllowedCitycity=0;int ant:ChooseNextCity()/Update the probability o
6、f path selection/select a path from tabum_iCityCount-1 to nextint i;int j=10000;double temp=0;int curCity=tabum_iCityCount-1;for (i=0;i iCityCount;i+)if(AllowedCityi=1)temp+=pow(1.0/Map.distancecurCityi),beta)*pow(Map.m_dTrialc urCityi),alpha);double sel=0;for (i=0;i iCityCount;i+)if(AllowedCityi=1)
7、probi=pow(1.0/Map.distancecurCityi),beta)*pow(Map.m_dTrial curCityi),alpha)/temp;sel+=probi;elseprobi=0;double mRate=rnd(0,sel);double mSelect=0;for ( i=0;i iCityCount;i+)if(AllowedCityi=1)mSelect+=probi ;if (mSelect>=mRate) j=i;break;if (j=10000)temp=-1;for (i=0;i iCityCount;i+)if(AllowedCityi=1
8、)if (temp temp=pow(1.0/Map.distancecurCityi),beta)*pow(Map.m_dTrial curCityi),alpha);j=i;return j;void ant:UpdateResult()/ Update the length of tourint i;for(i=0;i iCityCount-1;i+)m_dLength+=Map.distancetabuitabui+1; m_dLength+=Map.distancetabuiCityCount-1tabu0;void ant:move()/the ant move to next t
9、own and add town ID to j;j=ChooseNextCity();addcity(j);class projectpublic:void UpdateTrial();double m_dLength;void initmap();ant antsiAntCount;void GetAnt();void StartSearch();project();void project:UpdateTrial()/calculate the changes of trial informationint i;int j;for(i=0;i iAntCount;i+)
10、for (j=0;j iCityCount-1;j+) Map.m_dDeltTrialantsi.tabujantsi.tabuj+1+=Q/antsi.m _dLength ;Map.m_dDeltTrialantsi.tabuj+1antsi.tabuj+=Q/antsi.m_ dLength;Map.m_dDeltTrialantsi.tabuiCityCount-1antsi.tabu0+=Q/an tsi.m_dLength;Map.m_dDeltTrialantsi.tabu0antsi.tabuiCityCount-1+=Q/an tsi.m_dLength;for (i=0;
11、i iCityCount;i+)for (j=0;j iCityCount;j+)Map.m_dTrialij=(rou*Map.m_dTrialij+Map.m_dDeltTrialij );Map.m_dDeltTrialij=0;void project:initmap()int i;int j;for(i=0;i iCityCount;i+)for (j=0;j iCityCount;j+)Map.m_dTrialij=1;Map.m_dDeltTrialij=0; project:project()/initial map,read map infomation from file
12、. et. initmap();m_dLength=10e9;ifstream in("eil51.tsp");struct cityint num;int x;int y;cciCityCount;for (int i=0;i iCityCount;i+)in>>cci.num>>cci.x>>cci.y;besttouri=0;int j;for(i=0;i iCityCount;i+)for (j=0;j iCityCount;j+)Map.distanceij=sqrt(pow(cci.x-ccj.x),2)+pow(cci.y-
13、cc j.y),2);void project:GetAnt()/randomly put ant into mapint i=0;int city;srand( (unsigned)time( NULL ) +rand();for (i=0;i iAntCount;i+)city=rnd(iCityCount);antsi.addcity(city);void project:StartSearch()/begin to find best solutionint max=0;/every ant tours timesint i;int j;double temp;int temptour
14、iCityCount;while (max iItCount)for(j=0;j iAntCount;j+)for (i=0;i iCityCount-1;i+)antsj.move();for(j=0;j iAntCount;j+) antsj.move2last();antsj.UpdateResult ();/find out the best solution of the step and put it into temp int t;temp=ants0.m_dLength;for (t=0;t iCityCount;t+)temptourt=ants0.tabut;for(j=0
15、;j iAntCount;j+)if (temp antsj.m_dLength) temp=antsj.m_dLength;for ( t=0;t iCityCount;t+)temptourt=antsj.tabut;if(temp m_dLength)m_dLength=temp;for ( t=0;t iCityCount;t+)besttourt=temptourt;printf("%d : %fn",max,m_dLength); UpdateTrial();for(j=0;j iAntCount;j+) antsj.Clear();max+;printf("The shor
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年限:跨境電子商務(wù)平臺(tái)運(yùn)營(yíng)合同
- 2024年項(xiàng)目合同管理與招投標(biāo)策略比較分析3篇
- 2024年高端餐具采購(gòu)供應(yīng)合作合同版
- 2024年項(xiàng)目托管管理合同
- 2024年跨區(qū)域水資源調(diào)配與利用合同
- 2024玉器行業(yè)廣告代理與購(gòu)銷(xiāo)合同范本3篇
- 政工師個(gè)人述職報(bào)告格式【三篇】
- 2024路沿石石材深加工采購(gòu)合同3篇
- 2019初級(jí)會(huì)計(jì)實(shí)務(wù)-第六章:財(cái)務(wù)報(bào)表-資產(chǎn)負(fù)債表
- 顱內(nèi)動(dòng)脈瘤血管內(nèi)介入治療中國(guó)專(zhuān)家共識(shí)-2103
- 汽車(chē)租賃流程圖
- 兒童糖尿病的飲食
- 回收二手機(jī)免責(zé)協(xié)議書(shū)模板
- DL∕T 5362-2018 水工瀝青混凝土試驗(yàn)規(guī)程
- 可下載打印的公司章程
- 隧道二襯、仰拱施工方案
- 顫?。ㄅ两鹕。┲嗅t(yī)護(hù)理常規(guī)
- 果膠項(xiàng)目商業(yè)計(jì)劃書(shū)(模板范本)
- 旋挖鉆成孔掏渣筒沉渣處理施工工藝
- 安全資料目錄清單
- 集團(tuán)后備人才培養(yǎng)方案
評(píng)論
0/150
提交評(píng)論