專利名稱:一種基于類電磁機(jī)制的離散型優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,具體涉及一種基于類電磁機(jī)制的離散型優(yōu)化方法,將連 續(xù)型的類電磁機(jī)制算法進(jìn)行離散化,擴(kuò)展了其應(yīng)用領(lǐng)域,使其可以更好地用于解決組合優(yōu) 化問題。
背景技術(shù):
學(xué)者Birbil和Fang受電磁場(chǎng)中帶電粒子間吸引-排斥機(jī)制的啟發(fā),于2003年提 出了一種新的全局優(yōu)化啟發(fā)式算法——類電磁機(jī)制(Electromagnetism-like Mechanism, EM)算法。EM算法是一種隨機(jī)全局優(yōu)化算法。和遺傳算法類似,EM算法也是先隨機(jī)從可行 域中產(chǎn)生一組初始解(這里稱之為一群初始粒子),然后根據(jù)每個(gè)粒子所確定的目標(biāo)函數(shù) 值來確定吸引域,以某種機(jī)制產(chǎn)生新一代粒子。在遺傳算法里,產(chǎn)生新一代粒子的機(jī)制是復(fù) 制、交叉和變異,而EM算法模擬電磁場(chǎng)中的吸引與排斥機(jī)制,將每個(gè)解比作一個(gè)帶電粒子, 然后按一定的準(zhǔn)則使得搜索粒子朝最優(yōu)解移動(dòng)。這種思想來自于與電磁理論中吸引與排斥 機(jī)制的類比,由于兩者之間存在一些差異,因此稱之為類電磁機(jī)制。更重要的是EM算法的 收斂性已經(jīng)得到了證明,證明結(jié)果表明當(dāng)?shù)呌跇O限時(shí),種群中至少有一個(gè)粒子以概率1 移動(dòng)到全局最優(yōu)附近。下面以如下形式的非線性、無約束(變量有界)的優(yōu)化問題為例,具體介紹EM算 法的步驟,目標(biāo)函數(shù)如下minf(x)(1)其中f :Rn — R為一非線性函數(shù),χ e S,S為一有界可行域。η為問題的維度,f (χ) 為待優(yōu)化的函數(shù)。EM算法由四個(gè)階段構(gòu)成,即粒子的初始化,計(jì)算每個(gè)粒子上的合力,粒子沿合力方 向移動(dòng),以及局部搜索。(1)初始化初始化就是從已知可行域中隨機(jī)取一定數(shù)量的m個(gè)點(diǎn),然后在后面的步驟中以這 些點(diǎn)為基礎(chǔ)來進(jìn)行更進(jìn)一步的搜索。在這里,將初始粒子隨機(jī)均勻地分布在可行域里,然后 計(jì)算出每個(gè)粒子的目標(biāo)函數(shù)值,并將目標(biāo)函數(shù)值最優(yōu)的粒子記為Xtest。⑵局部搜索局部搜索是對(duì)單個(gè)粒子進(jìn)行的,用來改進(jìn)種群已搜索到的解。對(duì)于EM算法,局部 搜索起著非常重要的作用,因?yàn)樗鼮榉N群的全局搜索提供了有效的局部信息,這樣使算法 既具有全局搜索能力,又具有局部區(qū)域精細(xì)搜索的能力。這里使用的局部搜索是最簡單的 線性搜索,對(duì)每個(gè)粒子的每一維按照一定的步長進(jìn)行搜索,一旦找到一個(gè)更好的解就停止。(3)計(jì)算合力計(jì)算合力是EM算法最重要的一步,這一步將粒子所獲得的局部信息與全局信息 結(jié)合起來了?;倦姶爬碚摾锏寞B加原理是一個(gè)粒子受到的其它粒子施加的電磁力與粒子之間的距離成反比且與它們所帶電荷數(shù)的乘積成正比。從這個(gè)角度出發(fā),EM通過計(jì)算合 力來為下一步的搜索提供信息。 粒子i的電荷量Cii決定了粒子i所受的吸引力或者排斥力的大小。該電荷由下 式算得 這樣,目標(biāo)函數(shù)值較優(yōu)的粒子將擁有較大的電荷數(shù),具有更強(qiáng)的吸引力。這一點(diǎn)并 不同于真正的電荷,因?yàn)楣?2)中各粒子的電荷都是沒有正負(fù)號(hào)的。我們?cè)诒容^兩粒子 的目標(biāo)函數(shù)值后決定兩粒子間作用力的方向。因此,作用在粒子i上的合力Fi由下式計(jì)算
(3)根據(jù)這個(gè)公式,對(duì)于兩個(gè)粒子而言,目標(biāo)函數(shù)值較優(yōu)(即較小)的粒子將吸引另一 個(gè)粒子,反之,目標(biāo)函數(shù)值較劣(即較大)的粒子將排斥另一個(gè)粒子。由于Xtest的目標(biāo)函數(shù) 值最小,它充當(dāng)著一個(gè)絕對(duì)吸引的粒子,即它吸引著種群中的其它所有粒子。(4)移動(dòng)粒子計(jì)算完合力向量Fi后,粒子i將沿著合力的方向以一個(gè)隨機(jī)步長(如公式(4)中 給出)移動(dòng)。該步長λ在
上均勻分布。在公式(4)中,RNG為一個(gè)向量,其分(向)量表示對(duì)應(yīng)的朝上邊界Uk或者下邊界 Ik移動(dòng)的可行步長。另外,作用在每個(gè)粒子上的力都被“歸一化”了,從而保證了移動(dòng)的可 行性。因此,粒子每一步移動(dòng)的公式為 A = X, + 義
F
Il 巧 Il
(RNG),/i
(4) 這樣每個(gè)粒子的位置就得到了更新,也就完成了 EM算法的一次迭代。從前面的步 驟可以看到,類電磁機(jī)制算法是基于函數(shù)優(yōu)化問題提出的,是一種連續(xù)型的優(yōu)化算法。目前 采用類電磁機(jī)制算法解決組合優(yōu)化問題的很少,而且都是采取的隨機(jī)鍵的轉(zhuǎn)換方式,將組 合優(yōu)化問題的離散型編碼轉(zhuǎn)換成了連續(xù)型的編碼進(jìn)行求解,這樣增大了算法搜索的空間。
發(fā)明內(nèi)容
本發(fā)明在原始類電磁機(jī)制算法的基礎(chǔ)上,通過設(shè)計(jì)距離的計(jì)算方式和移動(dòng)的方 式,提出了類電磁機(jī)制算法離散化的方法,該技術(shù)可以使類電磁機(jī)制算法能更好地解決組 合優(yōu)化問題。為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下(1)初始化。設(shè)置種群大小m、變異率PR0BMU、UP值以及最大迭代次數(shù)maxGen。在 可行域空間隨機(jī)選取m個(gè)粒子,對(duì)每個(gè)粒子進(jìn)行編碼。(2)評(píng)價(jià)上述經(jīng)初始化后的種群,找出當(dāng)前種群中的最優(yōu)粒子,并令迭代次數(shù)Gen=1。(3)計(jì)算粒子間的距離。距離的計(jì)算方式如下比較兩個(gè)粒子編碼中對(duì)應(yīng)位置上 的值,不一樣的值的個(gè)數(shù)就是粒子間的距離。假定有兩個(gè)粒子,粒子1是[1 2 3 4 5],粒 子2是[1 3 4 5 2],那么第2、3、4和5位上的值不一樣,所以這兩個(gè)粒子之間的距離是4。 (4)計(jì)算粒子間的作用力。對(duì)于任一粒子i,所帶電量的計(jì)算公式為 f (electron1)是粒子i的目標(biāo)函數(shù)值,f (beSt_perSOnal)是當(dāng)前種群中最優(yōu)粒子 的目標(biāo)函數(shù)值,UP是設(shè)定的常數(shù),這個(gè)公式能保證越優(yōu)的個(gè)體帶有的電量值越大。粒子i和粒子j之間的作用力的計(jì)算公式為 Dis表示粒子i和粒子j之間的距離。(5)移動(dòng)粒子。移動(dòng)是使減少兩個(gè)粒子之間的距離的一種操作,也就是使一個(gè)粒子 向另一個(gè)粒子進(jìn)行靠近。針對(duì)不同的組合優(yōu)化問題,在保證不產(chǎn)生非法解的情況下,可以采 取交換或者插入的方式,使得兩個(gè)粒子的距離減小。(6)變異操作。當(dāng)r < PROBMU時(shí),如果隨機(jī)數(shù)r > 0. 5,對(duì)要移動(dòng)的粒子進(jìn)行變異 操作1 ;如果r < 0. 5,對(duì)要移動(dòng)的粒子進(jìn)行變異操作2。r是(0,1)之間的隨機(jī)數(shù)。(7)評(píng)價(jià)每個(gè)粒子的目標(biāo)函數(shù)值。(8)對(duì)當(dāng)前的最優(yōu)粒子進(jìn)行局部搜索。通過在局部范圍內(nèi)進(jìn)行搜索,提高算法精細(xì) 搜索的能力。本技術(shù)采取了變鄰域的局部搜索策略。要針對(duì)具體問題,采用相應(yīng)的領(lǐng)域構(gòu) 造方法。(9)判斷迭代次數(shù)Gen是否達(dá)到規(guī)定的閾值maxGen,若是,則算法結(jié)束,輸出當(dāng)前 最優(yōu)粒子以及對(duì)應(yīng)的目標(biāo)函數(shù)值;否則令Gen = Gen+Ι,再回到步驟(3)。本發(fā)明和現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)(1)使類電磁機(jī)制算法從連續(xù)型的編碼空間擴(kuò)展到了離散型的編碼空間。 (2)和采用隨機(jī)鍵的方式相比,可以縮小搜索空間,使類電磁機(jī)制算法能更好地解 決組合優(yōu)化問題。隨機(jī)鍵的方式雖然可以使連續(xù)型的算法可以用來解決組合優(yōu)化問題,但 是還是針對(duì)連續(xù)型的編碼進(jìn)行操作,這樣搜索空間很大。 (3)采用了變鄰域的局部搜索策略。針對(duì)具體問題設(shè)計(jì)鄰域結(jié)構(gòu),可以克服原始算 法中局部搜索的盲目性,提高算法的精度和效率。
圖1本發(fā)明的實(shí)現(xiàn)流程圖
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。以解決分布式流水車間調(diào)度問題為例,詳細(xì)介紹一下算法的實(shí)施過程。分布式流水車間調(diào)度問題是流水車間調(diào)度問題的一般化,問題描述如下,有N個(gè)工件要在F個(gè)車間加 工,每個(gè)車間包含M臺(tái)機(jī)器,所有的車間都能處理每個(gè)工件,那么調(diào)度的任務(wù)就是要將N個(gè) 工件分配到F個(gè)車間并排序,使得所有車間中的最大完工時(shí)間最小。具體實(shí)施步驟如下(1)初始化設(shè)置種群大小m、變異率PROBMU、UP值以及最大迭代次數(shù)maxGen。在可行域空間 隨機(jī)選取m個(gè)粒子,并對(duì)選取的每個(gè)粒子進(jìn)行編碼。(2)評(píng)價(jià)上述經(jīng)初始化后的種群,找出當(dāng)前種群中的最優(yōu)粒子,并令迭代次數(shù)Gen =1。(3)計(jì)算粒子間的距離距離的計(jì)算方式如下比較兩個(gè)粒子編碼中對(duì)應(yīng)位置上的值,不一樣的值的個(gè)數(shù) 就是粒子間的距離。假定有兩個(gè)粒子,粒子1是[1 2 3 4 5],粒子2是[1 3 4 5 2],那么 第2、3、4和5位上的值不一樣,所以我們?cè)O(shè)定這兩個(gè)粒子之間的距離是4。(4)計(jì)算粒子間的作用力。作用力的計(jì)算方式如下對(duì)于任一粒子i,所帶電量的計(jì)算公式為 其中,f (electron)是粒子i的目標(biāo)函數(shù)值,f (best_personal)是當(dāng)前粒子所找 到的最優(yōu)值,UP是設(shè)定的常數(shù),這個(gè)公式能保證越優(yōu)的個(gè)體帶有的電量值越大。
廠 ,· ,· Dis -1粒子i和粒子j之間的作用力的計(jì)算公式為= W其中,Dis表示粒子
i和粒子j之間的距離。(5)移動(dòng)粒子,以減小粒子間的距離。移動(dòng)是使減少兩個(gè)粒子之間的距離的一種操作,也就是使一個(gè)粒子向另一個(gè)粒 子進(jìn)行靠近。在這里采用兩種移動(dòng)策略,一種是交換,稱作m0Ve_SWap,一種是插入,稱作 move_insertion0move_swap具體的實(shí)施步驟如下有兩個(gè)粒子,本實(shí)施例中粒子1是[1 2 3 4 5],粒子2是[1 3 4 5 2]。假設(shè)我 們要使粒子1向粒子2移動(dòng),1)計(jì)算兩個(gè)粒子間的距離,這里距離為4 ;2)令變量 t = 1 ;3)判斷兩個(gè)粒子第t位的數(shù)是否相同,如果不相同,那么轉(zhuǎn)到第4步,否則令t = t+Ι,并重復(fù)該第3)步。比如對(duì)于前面兩個(gè)粒子,當(dāng)t = 2時(shí)跳過第三步;4)將粒子1上第t位上的數(shù)和粒子2上第t位上的數(shù)在粒子1上進(jìn)行交換。比如對(duì)前面兩個(gè)粒子,應(yīng)該交換的數(shù)為2和3,所以采用一次m0Ve_SWap后的粒子 1變成了 [1 3 2 4 5]。經(jīng)過三次m0ve_swap后,粒子1和2之間的距離將變成0。move_insertion具體的實(shí)施步驟如下有兩個(gè)粒子,粒子1是[1 2 3 4 5],粒子2是[5 3 2 1 4]。假設(shè)我們要使粒子 1向粒子2移動(dòng),
7
1)計(jì)算兩個(gè)粒子間的距離,這里粒子1和2之間的距離是4 ;2)令變量 t = 1 ;3)判斷兩個(gè)粒子第t位的數(shù)是否相同,如果不相同,那么轉(zhuǎn)到第4步,否則令t = t+Ι,并重復(fù)第三步。比如對(duì)于前面兩個(gè)粒子,當(dāng)t = 1時(shí)跳過第三步;4)在粒子1中找到與粒子2中第t位的數(shù)字相同的數(shù)字,將它插到粒子1中第t 的位置。粒子1中原第t位至所述找到的位置之間的數(shù)字順序保持不變,依次后移一位,完 成移動(dòng)操作。對(duì)于這里的粒子1和2,經(jīng)過兩次movejnsertion后,粒子1和2的距離就變成了 O0移動(dòng)粒子的具體操作如下如果隨機(jī)數(shù)RAND > 0. 5,那么對(duì)要移動(dòng)的粒子進(jìn)行m0Ve_SWap操作;如果隨機(jī)數(shù) RAND < 0. 5,那么對(duì)要移動(dòng)的粒子進(jìn)行move_insertion操作。(6)變異操作。當(dāng)r < PROBMU時(shí),如果r > 0. 5,對(duì)粒子i進(jìn)行變異操作1 ;如果r < 0. 5,對(duì)粒子 i進(jìn)行變異操作2。r是(0,1)之間的隨機(jī)數(shù)。其中,所述變異操作1是指隨機(jī)交換粒子編碼中的兩個(gè)位置,變異操作2是指對(duì)編 碼中隨機(jī)截取的一段位置的排列進(jìn)行倒置操作,即將排列中的第K個(gè)位置和對(duì)應(yīng)的倒數(shù)第 K個(gè)位置進(jìn)行交換,如第一個(gè)位置和最后位置進(jìn)行交換,第二個(gè)和倒數(shù)第二個(gè)交換等。(7)評(píng)價(jià)每個(gè)粒子的目標(biāo)函數(shù)值,得到當(dāng)前的最優(yōu)粒子。根據(jù)粒子的編碼計(jì)算每個(gè)車間的最大完工時(shí)間,把其中最大的完工時(shí)間作為目標(biāo) 函數(shù)值。其中目標(biāo)函數(shù)值最小的粒子就是當(dāng)前的最優(yōu)粒子。(8)對(duì)當(dāng)前的最優(yōu)粒子進(jìn)行局部搜索,改善當(dāng)前的最優(yōu)粒子。為了提高算法的精度,本發(fā)明采用基于變鄰域(VNS)的局部搜索策略,針對(duì)分布 式流水車間調(diào)度問題,我們采取了四種領(lǐng)域構(gòu)造方式。前兩種是基于關(guān)鍵車間的,關(guān)鍵車間 指的是SUb-最大完工時(shí)間最大的車間,SUb-最大完工時(shí)間指的是每個(gè)子車間的最大完工 時(shí)間。這四種領(lǐng)域構(gòu)造方式如下a 在關(guān)鍵車間進(jìn)行插入操作,即隨機(jī)將關(guān)鍵車間中的一個(gè)工件插到另一個(gè)工件的 前面;b 在關(guān)鍵車間進(jìn)行交換操作,即隨機(jī)交換關(guān)鍵車間中的兩個(gè)工件的位置;c 插入,即隨機(jī)將任一車間中的一個(gè)工件插到另一個(gè)工件的前面;d 交換,即隨機(jī)交換任一車間中的兩個(gè)工件的位置?;赩NS的局部搜索策略如下首先對(duì)當(dāng)前最優(yōu)粒子按方式a進(jìn)行局部搜索,然后依次按方式b、方式c和方式d 進(jìn)行局部搜索,循環(huán)上述過程,直到滿足局部搜索的終止條件為止。(9)判斷迭代次數(shù)Gen是否達(dá)到規(guī)定的閾值maxGen,若是,則算法結(jié)束,輸出當(dāng)前 最優(yōu)粒子以及對(duì)應(yīng)的目標(biāo)函數(shù)值;否則令Gen = Gen+l,再回到步驟(3)。本發(fā)明的效果可以通過以下仿真實(shí)驗(yàn)進(jìn)一步說明選取分布式流水車間調(diào)度問題進(jìn)行測(cè)試,測(cè)試數(shù)據(jù)來自Naderia標(biāo)準(zhǔn)實(shí)例庫和 Taillard標(biāo)準(zhǔn)實(shí)例庫。通過C++進(jìn)行編程,計(jì)算機(jī)配置為=Intel雙核、2GB內(nèi)存、2. IGHz的筆記本電腦。參數(shù)設(shè)置如下1、EM的終止條件最大迭代次數(shù)150,或者當(dāng)前最優(yōu)粒子的目標(biāo)值在10次內(nèi)沒有 發(fā)生變化,就終止算法。2、基于VNS的局部搜索的終止條件當(dāng)局部搜索中的目標(biāo)函數(shù)值在三次迭代中沒 有發(fā)生變化就終止。3、m = 100 ;PROBMU = 0. 6 ;UP = 0. 91 ;實(shí)例結(jié)果如表1和表2所示。表1 Naderia標(biāo)準(zhǔn)實(shí)例庫測(cè)試得到的新解實(shí)例車丄機(jī)舊最新最實(shí)例車丄機(jī)舊最新最間 數(shù)件 數(shù)器 數(shù)優(yōu)解優(yōu)解間 數(shù)件 數(shù)器 數(shù)優(yōu)解優(yōu)解 表1是用Naderia標(biāo)準(zhǔn)實(shí)例庫測(cè)試的結(jié)果,對(duì)于這720個(gè)實(shí)例,我們可以找到151 個(gè)更好的新最優(yōu)解。
表2是用Taillard標(biāo)準(zhǔn)實(shí)例庫測(cè)試的結(jié)果,并將測(cè)試結(jié)果和原始的連續(xù)型的EM 算法(采用的隨機(jī)鍵的編碼轉(zhuǎn)換方式)進(jìn)行了比較。表中min,aver和max分別代表最小 相對(duì)誤差,平均相對(duì)誤差和最大相對(duì)誤差。Taver代表平均CPU時(shí)間。從表2可以看出,離 散的EM算法在計(jì)算時(shí)間方面比連續(xù)的EM要快,在誤差方面也基本上都比連續(xù)的EM要小。表2離散EM和連續(xù)EM算法的比較 Ta051_51730502012.77517.92524.1625.1522.4287.53213.3534.333Ta051_61636502010.88018.60324.1444.1292.5068.77116.1984.176Ta05111553502010.75317.83625.8216.1402.6408.53818.2874.085Ta0612284610052.8117.37914.68711.2100.1411.8853.97010.143Ta061_31792100520.25724.74930.4699.72111.21713.99618.0809.963Ta061_41505100517.27623.86430.63110.2845.44910.48220.0008.485Ta061__51256100515.76426.52140.4469.3745.49412.30930.49410.063Ta061_61070100521.68236.06545.7949.9977.10317.34637.3839.571Ta0611956100520.81637.60555.4399.34510.56522.47436.7159.103Ta071228461001021.29326.60233.20411.05516.69018.17520.2749.302Ta071_319721001034.48340.24644.9297.90923.93527.23631.3899.207Ta071_415051001045.44952.23960.1999.39032.69138.61550.8318.945Ta071_512561001055.25565.47883.9178.36538.85445.33856.2108.374Ta071_610701001064.01975.12687.2909.24248.78558.76269.2527.693Ta071—79561001064.95881.271107.9508.53451.88365.32980.6497.471Ta081_23892100207.86212.59818.88512.2544.1115.8749.7899.784Ta081_329851002014.20417.44125.0929.2674.4228.31016.6169.688Ta081_424971002016.54021.45231.4389.0894.64610.94520.9859.132Ta081_522421002014.98722.89933.0518.8588.25213.43720.7409.088Ta081_620311002017.43026.05431.7588.0738.66614.41422.1079.226Ta081119041002022.00630.08941.4399.5599.34916.16322.5328.110Ta09125721200104.92910.61415.17215.5942.6744.8406.53717.464Ta091_339952001015.14417.81522.37813.9284.7817.33312.76617.067Ta091__430982001019.17424.26743.02815.8038.61812.87824.14516.890Ta091_525682001020.87229.85246.69018.55110.20219.65034.73516.571Ta091_622442001028.38735.01847.86116.53215.33022.68331.41716.368Ta091J20042001022.30537.28054.54119.33014.82026.04045.75816.648TaOlO26406200209.66313.51118.42021.5268.6649.65310.72417.618TaOlO_347272002014.13218.43923.24915.7737.99710.45712.08016.809TaOlO_438282002018.15622.42829.99015.53713.03617.84629.72816.981TaOlO_533022002016.83826.62837.43217.26211.78117.55127.01416.727TaO 10__629252002022.12029.88039.96614.27910.66722.21535.17916.922TaOlO726822002023.11736.10749.96313.69112.86423.02432.32716.676TaOll213968500209.91613.66516.76025.03510.13012.39813.56040.263TaOll_398345002014.30818.51124.51722.89113.86017.48023.70333.821TaOll_476625002017.75025.78134.27328.57715.91025.34645.88931.492TaOll_564025002022.54031.75342.95527.70319.27529.57442.90829.229TaOll_655465002022.77333.59852.72324.61111.12532.56044.46428.711TaOll749345002024.17938.72848.94627.53123.38934.58244.12227.821 通過這兩個(gè)實(shí)例庫進(jìn)行測(cè)試,驗(yàn)證了離散的EM算法的有效性和優(yōu)越性。
1權(quán)利要求
一種基于類電磁機(jī)制的離散型優(yōu)化方法,將類電磁機(jī)制算法從連續(xù)型的編碼空間擴(kuò)展到離散型的編碼空間,以解決離散制造工業(yè)或流程工業(yè)的流水線生產(chǎn)調(diào)度問題,該方法具體步驟如下(1)初始化在可行域空間隨機(jī)選取m個(gè)粒子,預(yù)設(shè)置變異率PROBMU、常數(shù)UP以及最大迭代次數(shù)maxGen,并記錄下由該m個(gè)粒子構(gòu)成的種群中的最優(yōu)粒子,并對(duì)選取的每個(gè)粒子進(jìn)行編碼;(2)評(píng)價(jià)上述經(jīng)初始化后的種群,找出當(dāng)前種群中的最優(yōu)粒子,并令迭代次數(shù)Gen=1;(3)計(jì)算粒子間的距離距離的計(jì)算方式如下比較兩個(gè)粒子編碼中對(duì)應(yīng)位置上的數(shù)字,數(shù)字不一樣的位置個(gè)數(shù)就是該兩粒子間的距離;(4)計(jì)算粒子間的作用力對(duì)于任一粒子i,所帶電量的計(jì)算公式為 <mrow><msup> <mi>q</mi> <mi>i</mi></msup><mo>=</mo><mi>UP</mi><mo>×</mo><mi>exp</mi><mrow> <mo>(</mo> <mo>-</mo> <mfrac><mrow> <mi>f</mi> <mrow><mo>(</mo><msup> <mi>electron</mi> <mi>i</mi></msup><mo>)</mo> </mrow> <mo>-</mo> <mi>f</mi> <mrow><mo>(</mo><mi>best</mi><mo>_</mo><mi>personal</mi><mo>)</mo> </mrow></mrow><mrow> <mi>f</mi> <mrow><mo>(</mo><mi>best</mi><mo>_</mo><mi>personal</mi><mo>)</mo> </mrow></mrow> </mfrac> <mo>)</mo></mrow> </mrow>其中,f(electroni)是該粒子i的目標(biāo)函數(shù)值,f(best_personal)是當(dāng)前種群所找到的最優(yōu)值;粒子i和j之間的作用力的計(jì)算公式為其中,Dis表示粒子i和j之間的距離,其中j表示不同于i的任意粒子;(5)移動(dòng)粒子,以減小粒子間的距離;(6)對(duì)粒子進(jìn)行變異操作;當(dāng)變異隨機(jī)數(shù)r<PROBMU時(shí),如果隨機(jī)數(shù)r>0.5,對(duì)粒子進(jìn)行一種變異操作,即隨機(jī)交換粒子編碼中的兩個(gè)位置;如果隨機(jī)數(shù)r<0.5,則對(duì)粒子進(jìn)行另一種變異操作,即對(duì)粒子的編碼中隨機(jī)截取的一段位置的排列進(jìn)行倒置操作,其中,r∈(0,1);(7)評(píng)價(jià)每個(gè)粒子的目標(biāo)函數(shù)值;根據(jù)粒子的編碼計(jì)算每個(gè)車間的最大完工時(shí)間,把其中最大的完工時(shí)間作為目標(biāo)函數(shù)值,其中目標(biāo)函數(shù)值最小的粒子就是當(dāng)前的最優(yōu)粒子;(8)對(duì)當(dāng)前的最優(yōu)粒子進(jìn)行局部搜索,改善當(dāng)前的最優(yōu)粒子;(9)判斷迭代次數(shù)Gen是否達(dá)到規(guī)定的閾值maxGen,若是,則算法結(jié)束,輸出當(dāng)前最優(yōu)粒子以及對(duì)應(yīng)的目標(biāo)函數(shù)值;否則令Gen=Gen+1,重復(fù)執(zhí)行步驟(3) (8)。FDA0000023730670000012.tif
2.根據(jù)權(quán)利要求1所述的一種基于類電磁機(jī)制的離散型優(yōu)化方法,其特征在于,所述 的步驟(5)中的移動(dòng)包括交換和插入兩種,如果隨機(jī)數(shù)RAND>0. 5,那么要移動(dòng)的粒子進(jìn)行 交換操作;如果隨機(jī)數(shù)RAND < 0. 5,對(duì)要移動(dòng)的粒子進(jìn)行插入操作,其中RAND e (0,1)。
3.根據(jù)權(quán)利要求2所述的一種基于類電磁機(jī)制的離散型優(yōu)化方法,其特征在于,所述 的交換的具體步驟為3. 1)計(jì)算兩個(gè)粒子間的距離; 3. 2)令變量t = 1 ;3. 3)判斷兩個(gè)粒子第t位的編碼值是否相同,如果不相同,那么轉(zhuǎn)到第3. 4)步,否則令t = t+Ι,并重復(fù)該第3.3)步;·3.4)將其中一個(gè)粒子上第t位上的數(shù)和另一個(gè)粒子上第t位上的數(shù)進(jìn)行交換。
4.根據(jù)權(quán)利要求2或3所述的一種基于類電磁機(jī)制的離散型優(yōu)化方法,其特征在于,所 述的插入的具體步驟為·4. 1)計(jì)算兩個(gè)粒子間的距離; 4. 2)令變量t = 1 ;·4. 3)判斷兩個(gè)粒子第t位的數(shù)是否相同,如果不相同,那么轉(zhuǎn)到第4. 4)步,否則令t = t+Ι,并重復(fù)第三步;·4.4)在其中一個(gè)粒子中找到與另一粒子第t位的值相同的數(shù)字,將其插到所述其中一 個(gè)粒子的第t位,而所述其中一個(gè)粒子中原第t位至所述找到的數(shù)字位置之間的數(shù)字保持 順序不變,依次相后移動(dòng)一位。
5.根據(jù)權(quán)利要求1-4之一所述的一種基于類電磁機(jī)制的離散型優(yōu)化方法,其特征在 于,所述步驟(8)中的局部搜索采用基于變鄰域(VNS)的局部搜索。
6.根據(jù)權(quán)利要求5所述的一種基于類電磁機(jī)制的離散型優(yōu)化方法,其特征在于,所述 基于變鄰域(VNS)的局部搜索采取四種領(lǐng)域構(gòu)造方式,所述四種領(lǐng)域構(gòu)造方式如下a 在關(guān)鍵車間進(jìn)行插入操作,即隨機(jī)將關(guān)鍵車間中的一個(gè)工件插到另一個(gè)工件的前 面,其中所述關(guān)鍵車間指最大完工時(shí)間最大的車間;b 在關(guān)鍵車間進(jìn)行交換操作,即隨機(jī)交換關(guān)鍵車間中的兩個(gè)工件的位置; c 插入,即將任一車間中的一個(gè)工件隨機(jī)插到另一個(gè)工件的前面; d 交換,即隨機(jī)交換任一車間中的兩個(gè)工件的位置。具體搜索過程為首先對(duì)當(dāng)前最優(yōu)粒子按方式a進(jìn)行局部搜索,然后依次按方式b、方 式c和方式d進(jìn)行局部搜索,循環(huán)上述過程,直到滿足局部搜索的終止條件為止。
全文摘要
本發(fā)明提出了一種基于類電磁機(jī)制的離散型優(yōu)化方法,通過距離計(jì)算和移動(dòng)操作,使類電磁機(jī)制算法的操作應(yīng)用在了離散型的編碼上,從連續(xù)的空間擴(kuò)展到了離散的空間。首先針對(duì)具體問題進(jìn)行編碼,然后根據(jù)目標(biāo)值計(jì)算每個(gè)粒子的電量,并根據(jù)距離的定義來計(jì)算粒子間的距離,然后計(jì)算粒子間的作用力以及每個(gè)粒子所受的合力,再根據(jù)合力移動(dòng)粒子,更新種群后再對(duì)當(dāng)前最優(yōu)粒子進(jìn)行局部搜索。該發(fā)明擴(kuò)展了原有算法的應(yīng)用領(lǐng)域,有助于其更好地解決組合優(yōu)化問題。
文檔編號(hào)G06N99/00GK101923664SQ20101023739
公開日2010年12月22日 申請(qǐng)日期2010年7月27日 優(yōu)先權(quán)日2010年7月27日
發(fā)明者張利平, 李新宇, 王曉娟, 邵新宇, 高亮 申請(qǐng)人:華中科技大學(xué)