蟻群演算法解決車間排程問題

2021-09-02 15:22:02 字數 1839 閱讀 9700

蟻群系統(ant system或ant colony system)是由義大利學者dorigo、maniezzo等人於20世紀90年代首先提出來的。他們在研究螞蟻覓食的過程中,發現單個螞蟻的行為比較簡單,但是蟻群整體卻可以體現一些智慧型的行為。例如蟻群可以在不同的環境下,尋找最短到達食物源的路徑。這是因為蟻群內的螞蟻可以通過某種資訊機制實現資訊的傳遞。後又經進一步研究發現,螞蟻會在其經過的路徑上釋放一種可以稱之為「資訊素」的物質,蟻群內的螞蟻對「資訊素」具有感知能力,它們會沿著「資訊素」濃度較高路徑行走,而每只路過的螞蟻都會在路上留下「資訊素」,這就形成一種類似正反饋的機制,這樣經過一段時間後,整個蟻群就會沿著最短路徑到達食物源了。

車間排程問題我們可以轉換為近似於最大流問題。任務當中的每乙個階段,都是這個圖當中的乙個節點。我們新增乙個超級源點,超級源點和所有任務的第一階段相連。其他的節點,當同時滿足屬於同一任務的兩個節點中間不跳躍階段的條件下相連。

初始情況下,將螞蟻統一放置到超級源點,並且將整個圖的所有路徑上的資訊素設為乙個固定值。之後,所有螞蟻一起向終點行動,螞蟻會受到資訊素的影響,螞蟻選擇路徑的方式是螞蟻當前可走路徑的資訊素加和,作為取隨機數m的最大值,通過隨機數m和可選資訊素,計算出螞蟻選擇的路徑。當所有螞蟻都走到終點的時候,將全圖的資訊素按照資訊素消散引數進行消散,並計算出這些螞蟻的路徑。這個路徑一種工件加工的順序,按照這個順序計算出工件加工的時間t。通過這個時間,計算出這個螞蟻新增的資訊素w=q/t(q是乙個常數)。這個螞蟻之前經歷過的路徑上的資訊素都加上w。當所有的螞蟻的資訊素全部新增到圖當中的時候。將所有螞蟻再放回到起點,重複之前的步驟,隨著重複次數的增多,螞蟻會越來越向著最優解靠近。

在計算螞蟻行走的路徑過程中,會時刻記錄著當前出現過的,工件加工時間最短的情況。在程式結束之後,把最短的加工時間輸出出來。

#include#define maxn 60 //最大工作量

#define init_pre 3000//道路初始資訊素量

#define k 2000 //迴圈次數

#define dis 0.5 //資訊素消散速率

#define super_start 48

using namespace std;

int totalstep;

int step[maxn];

int phe[maxn][maxn][maxn][maxn];

int n,m;

struct pair

}jobnum[maxn];

struct job

job[maxn][maxn];

struct ant

randselectnum -= phe[nowjob][ ant[i].jobstep[nowjob] ][select][ ant[i].jobstep[select] ];

select++;

}select--;

//printf("螞蟻選擇了%d\n",select);

//螞蟻選中的任務

ant[i].path[ant[i].pathlen]=select;

ant[i].paths[ant[i].pathlen++].get(select,ant[i].jobstep[select]);

ant[i].jobstep[select]++;

nowjob = select;

//printf("選擇任務%d 階段%d\n",select,ant[i].jobstep[select]);}}

dissipation(); //每次螞蟻行走完後,資訊素都會消散

for (int i = 0; i < antnum; i++)

;timecalcu(a,true);*/

return 0;

}}

蟻群演算法解決tsp問題

控制蟻群演算法走向的關鍵是資訊素,資訊素類似遺傳演算法的適應性函式,類似退火演算法的評價函式,影響著其中乙隻螞蟻的下一步的選擇。螞蟻 類似遺傳演算法的染色體,就是一條解,在tsp問題中螞蟻的路徑就是tsp的解。資訊素 評價函式,與路徑成反比 迭代次數t 所有螞蟻跑完視為一次迭代週期。程式流程 1,隨...

蟻群演算法解決TSP問題

一 論述 1 演算法 蟻群演算法的基本原理 於自然界螞蟻覓食的最短路徑原理,根據昆蟲學家的觀察,發現自然界的螞蟻雖然視覺不發達,但它可以在沒有任何提示的情況下找到從食物源到巢穴的最短路徑,並且能在環境發生變化 如原有路徑上有了障礙物 後,自適應地搜尋新的最佳路徑。2 單個螞蟻尋找路徑 正反饋 單個的...

車間排程 車間排程問題的特點

多約束性在通常情況下,工件的加工路線是已知的,並且受到嚴格的工藝約束,使得各道工序在加工順序上具有先後約束關係 同時,工件的加工機器集是已知的,工件必須按照工序順序在可以選擇的工具機上進行加工。離散性車間生產系統是典型的離散系統,其排程問題是離散優化問題。工件的開始加工時間 任務的到達 訂單的變更,...