3 1 基於遺傳演算法的單機排程

2021-10-08 13:21:09 字數 1309 閱讀 1866

遺傳演算法(genetic algorithm)是最早的啟發式進化演算法,與生物進化的遺傳過程相似。遺傳演算法依靠種群的搜尋能力,進化過程中,優良的個體將會得到保留,適應度較小的個體將會被淘汰,最後,種群將會逐步收斂到最佳個體。

單機排程是最為常見的一類排程問題,flow-shop排程問題可以簡化為單機排程問題。單機排程問題的本質是排序問題。沿用上一章描述的單機排程問題案例,本節中考慮零件的到達時間,即,零件的最早開始時間,如下表所示:

如上表所示的單機排程問題,一般的優化目標有:最短完工時間,最短流程時間,最小延遲等,可以優化單個目標,也可以同時優化多個目標。

遺傳演算法是求解單目標或多目標組合優化問題的常用演算法,其編碼簡單,演算法收斂速度快。本節介紹最基本的遺傳演算法框架,包括:遺傳編碼、初始化、適值計算、選擇、子代生成等過程。遺傳演算法偽**如下所示

3.1.1 遺傳編碼

遺傳編碼是求解問題的基本,常用的編碼方式有二進位制編碼、實數編碼、自然數編碼等,較好的編碼方式需要便於遺傳操作。求解單機排程問題一般使用自然數編碼,使用自然數代表生產系統內的每個工件。例如:上述問題可以編碼為:12345,分別代表工件abcde。當求解的最優個體為24351時,代表零件的最優加工順序為bdcea.

3.1.2 種群初始化

種群初始化對啟發式演算法的收斂速度均有著較大的影響,遺傳演算法也同樣如此,因此,較好的初始化演算法將有利於演算法更快的收斂。常用的初始化演算法有隨機初始化、啟發式初始化、擇優選擇初始化等。

3.1.3 適值計算

適值計算是解碼過程,將編碼的個體進行解碼,進而計算個體對應的適應度,一般情況下直接選擇優化目標當作適應度,當優化目標是最小化時將其轉化為最大化問題進行求解。

3.1.4 遺傳選擇

遺傳選擇過程較為簡單,一般使用的方法有優先權選擇和輪盤賭選擇。

3.1.5 子代生成

子代生成是將選擇出來的優良個體依靠一定的規則進行交叉和變異生成子代進行遺傳,一般包括交叉和變異兩種操作。

演算法實現:

c語言**,參考:

matlab**,參考:

自適應遺傳演算法 基於遺傳演算法生成資料

首先,設定好了初始種群群大小。然後,我們定義了乙個函式,用它來區分好樣本和壞的樣本。再次,我們選擇出好的樣本,並讓他們繁殖自己的後代。最後,這些後代們從原來的樣本中替代了部分壞的樣本,並不斷重複這一過程。遺傳演算法實際上就是這樣工作的,也就是說,它基本上盡力地在某種程度上模擬進化的過程。關於遺傳演算...

基於遺傳演算法的排課系統

一 介紹 隨著近幾年各個高校的合併與擴招,我國的綜合性大學和各個高校中在校的學生數量的大大增加,對於高校教務部門來說,排課工作是非常令人頭痛的事,經常會出現課程排列衝突,比如 乙個教師在同一時間上兩門課,有兩個教師同時去乙個教室上不同的課程,有些教師在特定時間不可以上課。如果沒有很好地解決這些衝突,...

基於遺傳演算法的排課系統

一 介紹 隨著近幾年各個高校的合併與擴招,我國的綜合性大學和各個高校中在校的學生數量的大大增加,對於高校教務部門來說,排課工作是非常令人頭痛的事,經常會出現課程排列衝突,比如 乙個教師在同一時間上兩門課,有兩個教師同時去乙個教室上不同的課程,有些教師在特定時間不可以上課。如果沒有很好地解決這些衝突,...