最大最小螞蟻的TSP問題的實現

2021-06-21 20:38:11 字數 1556 閱讀 3318

最近,人工智慧課的作業,詳細文件就不寫了,感興趣可以聯絡我,旨在交流。

#include 

#include 

#include 

#include 

#include 

#define a 2

#define b 3

#define q 1

#define n 16

int main()  

}  memset(p,0,sizeof(p));  

srand((unsigned)time(null));//初始化隨機數

for ( i = 0; i < m; i++)//每只螞蟻的運動

sum=0;  

for ( k = 0; k < n; k++)//計算sum

}  p=0;//總的概率係數

for ( k = 0; k < n; k++)//計算每個候選城市的概率

else

//如果去過,概率是0

}  if (p < 1)  

else

for ( k = 0; k < n; k++)//輪盤賭法,根據每個城市的概率大小,選擇下乙個城市

}  path[j]=k;  

sign[path[j]]=1;  

}  path[n]=path[0];  

sum=0;  

for ( k = 0; k < n; k++)  

if (min >= sum)//只允許在當前一直發生的所有迴圈中找到最優路徑的螞蟻釋放資訊素

else

if (message[path[k]][path[k+1]] < 0.3)  

}  }  for ( k = 0; k < n+1; k++)  

printf("%lf",sum);  

printf("\n");  

}  }  

memset(sign,0,sizeof(sign));//標記螞蟻到過的城市,保證不重複

for ( i = 0; i < n; i++)//第j次選擇城市

k=i;  

for ( j = 0; j < n; j++)  

}  path[i]=k;  

sign[path[i]]=1;  

}  path[n]=path[0];  

sum=0;  

for ( k = 0; k < n; k++)  

printf("one of the best path:\n");  

for ( k = 0; k < n; k++)//列印其中一條最優路徑

printf("%d ",path[n]);  

printf("%lf",sum);  

printf("\n");  

for ( i = 0; i < n; i++)//列印最終的資訊素濃度

printf("\n");  

}  system("pause");  

return 0;  

}

本文出自 「天才鳥蛋」 部落格,請務必保留此出處

累了的小螞蟻

前幾天朋友發給我一條資訊,原文 我就是乙隻小螞蟻,有半個公尺粒就很開心,很幸福了。困了,累了的時候就會想起家的溫暖。無奈現在離家太遠,只能睡在路上,尋一片葉子暫時休棲身 有點傷感,但更多的是無奈和現實的寫照。像我們一樣畢業幾年生活 事業都不穩定的人群是常常會有這樣的感觸的。時常感覺看不到黑暗的盡頭,...

小螞蟻的TCP協議筆記

一 原理 accept時阻塞的,作用時等待客戶端連線 客戶端建立物件並連線伺服器,此時時通過三次握手保證與服務端連線 客戶端建立輸出流,服務端建立輸入流 read方法也是阻塞的 在關流的時候,還多了乙個往伺服器寫結束標記的動作 最後都拿開連線,通過四次揮手保證連線終止 二 三次握手 客戶端向伺服器發...

TSP問題 遺傳演算法的實現

遺傳演算法由群體集合和3個主要操作組成 主要操作 1.選擇 2.交叉 3.變異 4.增殖 其中選擇操作將群體中的優良個體選擇出來,而交叉操作和變異操作則根據交叉概率pc和變異概率pm對選擇出的個體進行不同的操作 遺傳演算法的核心 最後使用增殖操作使得種群數量保持穩定。採用c 物件導向思想進行設計 1...