退火爐優(yōu)化調(diào)度算法
原創(chuàng)文章轉(zhuǎn)載請(qǐng)注明:http://m.cclfs.cn,版權(quán)歸江蘇恒力爐業(yè)有限公司所有
退火爐優(yōu)化調(diào)度算法如下。
假定有M個(gè)爐臺(tái),H個(gè)加熱罩,C個(gè)冷卻罩,L部行車,N個(gè)待排產(chǎn)的生產(chǎn)計(jì)劃。
步驟1.啟動(dòng)遺傳算法模塊.遺傳算法模塊把N個(gè)待排產(chǎn)的生產(chǎn)計(jì)劃從1到N
編號(hào)產(chǎn)生初始種群,初始種群的每個(gè)個(gè)體代表一個(gè)調(diào)度方案,采用自然數(shù)編碼,例如(1,2,3,...,N一1, N)是一個(gè)個(gè)體,代表一種調(diào)度方案;而(N, N一1,...,3,2,1)是另一個(gè)個(gè)休,代表另一種調(diào)度方案,其生產(chǎn)順序與上一種相反.把初始種群作為當(dāng)前種群保存。
步驟2.判斷是否達(dá)到規(guī)定的最大代數(shù).若達(dá)到規(guī)定的最大代數(shù),從仿真過(guò)的所有種群中選出具有最優(yōu)生產(chǎn)指標(biāo)的個(gè)體,該個(gè)體所代表的排產(chǎn)計(jì)劃作為最優(yōu)的調(diào)度方案,結(jié)束程序運(yùn)行;否則進(jìn)入下一步.
步驟3.把當(dāng)前種群中的每個(gè)個(gè)體作為輸入調(diào)用離散事件仿真模塊.每個(gè)個(gè)體的仿真過(guò)程如步驟4至步驟11.
步驟4.仿真初始化.讀入M個(gè)爐臺(tái)的當(dāng)前生產(chǎn)狀態(tài),把這些生產(chǎn)狀態(tài)轉(zhuǎn)換成對(duì)應(yīng)的事件或者等待事件,事件按時(shí)間順序放入事件隊(duì)列,事件隊(duì)列只有1個(gè),等待事件放入等待事件隊(duì)列,根據(jù)實(shí)際情況按優(yōu)先級(jí)不同把等待事件分成4類,用4個(gè)二叉排序樹存放這4類等待事件,每個(gè)二又排序樹就是一個(gè)等待事件隊(duì)列,相同優(yōu)先級(jí)的等待事件按發(fā)生時(shí)問(wèn)排序。然后,設(shè)置仿真時(shí)鐘為0。
步驟5.判斷有沒(méi)有滿足條件的等待事件。按優(yōu)先級(jí)查看哪個(gè)等待事件所等待的條件可以得到滿足如果滿足,從等待事件隊(duì)列中提出此等待事件,進(jìn)入下一步;如果不滿足則跳過(guò)下一步
步驟6執(zhí)行滿足條件的等待事件.其操作包括產(chǎn)生下一個(gè)事件,占用相關(guān)資源,銷毀自身(即釋放該等待事件對(duì)象占用的內(nèi)存資源).將所有滿足條件的等待事件都執(zhí)行后,進(jìn)入下一步.
步驟7.退火爐選擇一個(gè)最早發(fā)生的非等待事件。從事件隊(duì)列中選擇一個(gè)發(fā)生時(shí)間最早的事件,如果不只一個(gè),一并選擇出來(lái)。
步驟8.將仿真時(shí)鐘推進(jìn)到該事件的發(fā)生時(shí)間。
步驟9.執(zhí)行該非等待事件.操作包括釋放與占用相關(guān)資源,產(chǎn)生下一個(gè)事件或者等待事件,銷毀自身(即釋放該非等待事件對(duì)象占用的內(nèi)存資源)。
步驟10.判斷仿真是否可以結(jié)束.判斷結(jié)束條件是否滿足,即判斷事件隊(duì)列是否為空,若為空則進(jìn)入下一步;若不為空,則回到步驟5繼續(xù)執(zhí)行。
步驟11.結(jié)束仿真。
步驟12.進(jìn)行選擇運(yùn)算.在仿真的執(zhí)行過(guò)程當(dāng)中,不斷記錄程序狀態(tài),包括等待受限資源的時(shí)間以及工作時(shí)間等.一個(gè)個(gè)體仿真結(jié)束后,利用所記錄的數(shù)據(jù)計(jì)算式(1)的目標(biāo)函數(shù),并計(jì)算相應(yīng)的適應(yīng)度函數(shù)值送入遺傳算法模塊,遺傳算法模塊會(huì)根據(jù)當(dāng)前種群中所有個(gè)體的適應(yīng)度函數(shù)值采用輪盤賭的方法對(duì)這些個(gè)體進(jìn)行選擇。
步驟13.進(jìn)行交又運(yùn)算.將選擇后的各個(gè)個(gè)體采用部分映射交叉(PMX)法交叉,按式(2)計(jì)算交義率。
步驟14.進(jìn)行變異運(yùn)算。退火爐采用的是互打:變異,隨機(jī)的迭擇兩個(gè)位置,并將這兩個(gè)位置互換,按式(3)計(jì)算變異率。
步驟15.識(shí)經(jīng)過(guò)選擇泛叉和變異的所有個(gè)體作為當(dāng)前種群,返回步驟2。