本發(fā)明型專利用于制訂多目標(biāo)流水車間調(diào)度的生產(chǎn)調(diào)度計(jì)劃。
背景技術(shù):
遺傳算法是一種高效的全局搜索算法,其與局部搜索算法的結(jié)合,即遺傳局部搜索算法,使得算法對(duì)于非支配解的搜索能力大大提高。目前,這種全局搜索與局部搜索相結(jié)合的算法已經(jīng)被廣泛地運(yùn)用于生產(chǎn)優(yōu)化之中,并取得了很好的效果。然而,現(xiàn)有的局部搜索算法往往難以簡(jiǎn)單高效地找到多目標(biāo)問(wèn)題的全部非支配解。
技術(shù)實(shí)現(xiàn)要素:
本算法針對(duì)傳統(tǒng)的遺傳局部搜索算法作出改進(jìn),以簡(jiǎn)單高效地找到多目標(biāo)流水車間調(diào)度問(wèn)題的全部非支配解。本算法對(duì)傳統(tǒng)遺傳局部搜索在以下三個(gè)方面進(jìn)行改進(jìn):第一,每個(gè)目標(biāo)函數(shù)的加權(quán)值不易確定;第二,對(duì)局部搜索過(guò)程中產(chǎn)生的大量鄰域解的比較往往占據(jù)大量的計(jì)算時(shí)間;第三,局部搜索方向不夠全面;第四,搜索過(guò)程中得到的優(yōu)良解可能在之后的算法迭代過(guò)程中被遺失。
本發(fā)明型解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:第一,通過(guò)隨機(jī)加權(quán)法為每個(gè)目標(biāo)函數(shù)賦予加權(quán)值;第二,限制局部搜索過(guò)程中對(duì)每個(gè)當(dāng)前解搜索的鄰域解的個(gè)數(shù);第三,以產(chǎn)生子代解的父代解所使用的加權(quán)值作為子代解在局部搜索中的目標(biāo)函數(shù)加權(quán)值;第四,采用精英策略,將每一代中的非支配解存入暫時(shí)組并逐代更新。
本發(fā)明型的有益效果:第一,使確定目標(biāo)函數(shù)加權(quán)值的過(guò)程不再困難;第二,平衡了全局搜索與局部搜索;第三,局部搜索中的每個(gè)解都有自己獨(dú)特的搜索方向,使得局部搜索的方向多樣化;第四,避免了產(chǎn)生的優(yōu)良解在之后算法的迭代過(guò)程中被遺失。
附圖說(shuō)明
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明型進(jìn)一步說(shuō)明。
圖1是流水車間調(diào)度的示意圖。
圖2是局部搜索方向的示意圖。
圖3是非支配解的示意圖。
圖4是精英策略的示意圖。
圖5是加權(quán)式遺傳局部搜索流程的示意圖。
圖6是兩點(diǎn)交叉算子示意圖。
圖7是移動(dòng)突變示意圖。
圖8是算法詳細(xì)流程的示意圖
具體實(shí)施方式
一、生產(chǎn)信息的表示
如圖1,設(shè)在流水車間中,有n個(gè)待生產(chǎn)的工件J1,J2,…,Jn,有m臺(tái)機(jī)器M1,M2,…,Mm,工件Ji的釋放時(shí)間為ri,工件Ji的在機(jī)器Mj前的等待時(shí)間為wij,工件Ji的交貨時(shí)間:di。
二、調(diào)度方案的表示方法:
機(jī)器i上的調(diào)度方案表示為Xi=(s1,s2,…,sn),1≤i≤m(si表示工件編號(hào),1≤i≤n),則總調(diào)度方案表示為X=(X1,X2,…,Xm)
三、隨機(jī)加權(quán)法
對(duì)n個(gè)目標(biāo)的加權(quán)值的賦值方法:
1.隨機(jī)產(chǎn)生n個(gè)和為1的加權(quán)值random1,random2,…,randomn;
2.第i個(gè)目標(biāo)函數(shù)的加權(quán)值wi為
wi=randomi/(random1+…randomn),i=1,2,…,n.
四、只檢測(cè)部分鄰域解的局部搜索算法
指定鄰域解檢測(cè)個(gè)數(shù)k,將產(chǎn)生當(dāng)前解X的父代解的目標(biāo)函數(shù)加權(quán)值作為當(dāng)前解X的目標(biāo)函數(shù)加權(quán)值(這將使每個(gè)當(dāng)前解都有自己獨(dú)特的局部搜索方向,從而使局部搜索方向多樣化,其特點(diǎn)被圖2形象地描述出來(lái)),局部搜索采用移動(dòng)突變的方式產(chǎn)生鄰域解。
那么,對(duì)于解X的局部搜索過(guò)程如下:
1.檢測(cè)當(dāng)前解X的一個(gè)鄰域解X’;
2.如果X’是比X更優(yōu)的解,則用X’替代當(dāng)前解X并返回1;否則執(zhí)行下一步;
3.如果當(dāng)前解X的隨機(jī)選擇的k個(gè)鄰域解已經(jīng)被檢測(cè),即X的被檢測(cè)的k個(gè)鄰域解中沒(méi)有更優(yōu)的解,則程序結(jié)束;否則返回1。
五、非支配解
對(duì)于最大化n個(gè)目標(biāo)函數(shù)f1(x),f2(x),…,fn(x),當(dāng)兩個(gè)解x、y滿
足
且
fj(x)<fj(y)時(shí),則稱解y支配解x。如果一個(gè)解不被多目標(biāo)優(yōu)化問(wèn)題的任何其他解支配,那個(gè)解被稱為一個(gè)非支配解。對(duì)于兩目標(biāo)優(yōu)化問(wèn)題(最大化目標(biāo)函數(shù))的非支配解可以被圖3形象地描述出來(lái)。
六、精英策略
如圖4,本算法的執(zhí)行過(guò)程中含有兩組解,分別為當(dāng)前種群和存儲(chǔ)非支配解的暫時(shí)組。
每一代種群首先用本種群中的非支配解更新暫時(shí)組,并隨機(jī)選擇指定個(gè)數(shù)的解;然后,該種群經(jīng)遺傳算子處理后,將之前隨機(jī)選擇的非支配解加入當(dāng)前種群,共同進(jìn)行局部搜索;局部搜索結(jié)束后產(chǎn)生的種群作為下一代繼續(xù)執(zhí)行上述過(guò)程。七、加權(quán)式遺傳局部搜索
如圖5,本算法在初始化種群后,首先確定目標(biāo)函數(shù)加權(quán)值,接著通過(guò)遺傳算子對(duì)種群進(jìn)行全局搜索,然后進(jìn)行局部搜索,而后采用精英策略保護(hù)非支配解,最后通過(guò)對(duì)上述過(guò)程的反復(fù)迭代來(lái)尋找全部的非支配解。
八、兩點(diǎn)交叉算子
如圖6
九、移動(dòng)突變
如圖7
十、算法詳細(xì)流程如下
如圖8
步驟一——初始化(產(chǎn)生初始解)
1.產(chǎn)生m個(gè)序列(m為機(jī)器數(shù)),每個(gè)序列為數(shù)1-n的一個(gè)隨機(jī)排序序列(n為待生產(chǎn)工件數(shù))。
2.根據(jù)種群規(guī)模Npop,產(chǎn)生對(duì)應(yīng)數(shù)目的初始解。
步驟二——計(jì)算目標(biāo)函數(shù)值
1.計(jì)算目標(biāo)函數(shù)f1(x),f2(x),…,fn(x)的值。
步驟三——更新暫時(shí)組的非支配解
1.尋找初始種群中的非支配解。
2.將初始解中的非支配解復(fù)制入暫時(shí)組。
步驟四——計(jì)算適應(yīng)度函數(shù)值
對(duì)每個(gè)解——
1.確定加權(quán)值
wi=randomi/(random1+…randomn),i=1,2,…,n.
2.計(jì)算適應(yīng)度函數(shù)值:
f(x)=w1f1(x)+w2f2(x)+…+wnfn(x).
步驟五——選擇優(yōu)良個(gè)體
1.計(jì)算每個(gè)個(gè)體(解)的選擇概率
其中Ψ表示當(dāng)前種群,f(x)為解x的適應(yīng)度值,fmin(Ψ)=min{f(x)|x∈Ψ}。
2.根據(jù)選擇概率,選擇選擇概率大的(Npop-Nelite)個(gè)個(gè)體(解)。
步驟六——交叉
1.根據(jù)交叉概率計(jì)算進(jìn)行交叉的解的數(shù)目,隨即選出相應(yīng)個(gè)數(shù)的解。
2.隨機(jī)將被選擇的個(gè)體兩兩一組作為一對(duì)父代解,運(yùn)用兩點(diǎn)交叉算子進(jìn)行交叉。對(duì)每對(duì)父代解交叉時(shí),分別對(duì)兩個(gè)解的每行進(jìn)行交叉,再把結(jié)果重新組合成子代解。
步驟七——突變
1.根據(jù)突變概率計(jì)算進(jìn)行交叉的解的數(shù)目,隨即選出相應(yīng)個(gè)數(shù)的解。
2.對(duì)被選擇的個(gè)體進(jìn)行移動(dòng)突變。對(duì)每對(duì)父代解進(jìn)行突變時(shí),分別對(duì)每行突變,再把結(jié)果重新組合成子代解。
步驟八——局部搜索
1.從暫時(shí)組(步驟三產(chǎn)生)中隨機(jī)選擇Nelite個(gè)解,加入有(Npop-Nelite)個(gè)解的當(dāng)前種群,構(gòu)造一個(gè)有Npop個(gè)解的種群。
2.(對(duì)每個(gè)解)通過(guò)移動(dòng)突變隨機(jī)產(chǎn)生k個(gè)鄰域解。
3.(對(duì)每個(gè)解)通過(guò)選擇該解的父代解的適應(yīng)度函數(shù)加權(quán)值來(lái)構(gòu)造該解的適應(yīng)度函數(shù),然后計(jì)算這k個(gè)鄰域解的適應(yīng)度函數(shù)值。
4.(對(duì)每個(gè)解)如果這k個(gè)鄰域解中有比該解更優(yōu)的解,則以之替換該解;否則,該解不做變化。
步驟九——迭代
1.如果算法已經(jīng)搜索指定個(gè)數(shù)的解,則算法結(jié)束;否則返回步驟二。
步驟十——產(chǎn)生調(diào)度方案
1.迭代結(jié)束后,當(dāng)前種群中的最優(yōu)解和暫時(shí)組中的解即為算法所求得的優(yōu)良解,根據(jù)調(diào)度方案的表示方式,即可將這些解轉(zhuǎn)換為對(duì)應(yīng)的調(diào)度方案。