999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VB環(huán)境下的模擬退火算法求指派問題

2008-12-31 00:00:00段姹莉
電腦知識(shí)與技術(shù) 2008年35期

摘要:模擬退火算法是一種隨機(jī)搜索算法,可應(yīng)用于許多前提信息很少的問題,能漸進(jìn)地收斂于全局最優(yōu)解。指派問題是組合優(yōu)化問題中的一種,可用模擬退火算法來解此問題。模擬退火算法解決指派問題時(shí),需要考慮實(shí)現(xiàn)此算法的技術(shù)問題,例如解的形式,初始溫度的計(jì)算,鄰域的生成方式,解的接受和舍棄,內(nèi)外循環(huán)的中止條件等。在VB編程環(huán)境下,實(shí)現(xiàn)了該算法的求解過程。實(shí)例仿真表明了該方法能夠以一定的概率跳出局部最優(yōu)而實(shí)現(xiàn)全局尋優(yōu)。

關(guān)鍵詞:VB;模擬退火算法;指派問題;仿真

中圖分類號(hào):TP18文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)35-2153-03

Simulated Annealing Algorithm to Solve Assignment Problem under VB

DUAN Cha-li,CHEN Bo

(Lanzhou Jiaotong University,Lanzhou 730070,China)

Abstract: Simulated annealing algorithm is a random search algorithm, and it can be applied to many problems with little premise information, gradual convergence in the global optimal solution. The assignment problem is one of combinatorial optimization problems. Simulated annealing algorithm can be used to solve assignment problem. When using the algorithm, various technical issues of the algorithm must be considered, such as the form of solution, the initial temperature account, the formation of neighborhood, accepting and giving up the solution, suspension conditions of both inside and outside cycles etc. Under VB programming environment, the author carries out the solution process of the algorithm. Examples simulation shows that the method can jump out of local optimum solution with a certain probability to achieve global optimization.

Key words: VB;simulated annealing algorithm;assignment problem;simulation

1 引言

在企業(yè)、公司的運(yùn)營與管理中,管理者總是希望把人員最佳分派以發(fā)揮其優(yōu)勢(shì),從而降低成本、提高效益。例如某公司需完成 m項(xiàng)任務(wù),恰好有n名員工可承擔(dān)這些任務(wù)(n≥m);每項(xiàng)任務(wù)只能由一名員工來做,每名員工也只能做一項(xiàng)任務(wù);不同的員工完成各項(xiàng)任務(wù)的成本不同。問怎樣分配任務(wù)公司的花費(fèi)最小[1] ?這類問題被稱為標(biāo)準(zhǔn)的指派問題 (assignment problem)。模擬退火算法(Simulated Annealing,簡(jiǎn)稱SA)的思想最早是由Metropolis等(1953年)提出的,1983年Kirkpatrick等成功的將其用于組合優(yōu)化問題中。模擬退火算法在某初溫下,伴隨溫度參數(shù)的不斷下降,結(jié)合概率突跳特性在解空間中隨機(jī)尋找目標(biāo)函數(shù)的全局最優(yōu)解,即在局部?jī)?yōu)解能概率性地跳出并最終趨于全局最優(yōu)[2]。本文在VB編程環(huán)境完成模擬退火算法求解指派問題。

2 指派問題模型

有n個(gè)人,m項(xiàng)任務(wù)(n≥m),一個(gè)人最多可以干一項(xiàng)任務(wù),而一項(xiàng)任務(wù)只能由一個(gè)人做。cij表示第i個(gè)人做第j項(xiàng)任務(wù)的費(fèi)用,找出任務(wù)分配方案,使得總費(fèi)用最小。首先引入一個(gè)0-1變量xij:

(1)

模型為:

3 模擬退火算法(SA算法)

模擬退火算法的基本思想是將組合優(yōu)化問題比做成一個(gè)熱力學(xué)系統(tǒng),將優(yōu)化問題的費(fèi)用函數(shù)f(s)比擬成系統(tǒng)的能量E(i),組合優(yōu)化問題的解s就比擬成退火過程中能量的狀態(tài)i。把優(yōu)化求解過程比擬成系統(tǒng)逐步降溫( 迭代搜索) 達(dá)到最低能量狀態(tài)的退火過程。通過模擬退火過程獲得優(yōu)化問題的全局最優(yōu)解,其算法先確定一個(gè)能量函數(shù)即目標(biāo)函數(shù),求解最優(yōu)化問題一般通過Metropolis抽樣和退火兩個(gè)過程實(shí)現(xiàn)。該算法在接受較優(yōu)解的同時(shí),還在一定范圍內(nèi)接受差解,從而使模擬退火算法能跳出局部最優(yōu)解而獲得最優(yōu)解[3]。

模擬退火算法步驟[4]:

STEP 1:任選—個(gè)初始解s0;s:=s0;k:=0;t0:=tmax(初始溫度);

STEP 2:若在該溫度達(dá)到內(nèi)循環(huán)停止條件,則到STEP3;否則,從鄰域N(s)中隨機(jī)選一個(gè)(新解)q,計(jì)算Δfsq=f(s)-f(q);若Δfsq≤0,則s:=q;否則若時(shí),則s:=q;重復(fù)STEP 2。

STEP 3:tk+1=d(tk);k:=k+1;若滿足停止條件,終止計(jì)算;否則,回到STEP 2。

3.1 指派問題解s的形式

n表示員工數(shù)目,m表示任務(wù)數(shù)。在輸出結(jié)果時(shí),用一個(gè)2×m的二維數(shù)組來表示解,即第一行表示各項(xiàng)工作,由1到m;第二行表示任務(wù)分配 ,即從n個(gè)人中選擇m個(gè)做各項(xiàng)工作。

顯然該解滿足模型中的約束條件 (3) 、(4) ,如果此解還滿足條件(1) 、(2),則為可行解,否則為不可行解。

3.2 鄰域的生成

模擬退火算法中,解的搜索過程是在一個(gè)能量狀態(tài)點(diǎn)附近搜索另外一個(gè)能量狀態(tài)點(diǎn)。在溫度tk時(shí)刻,指定一個(gè)可行解s,然后任意交換兩個(gè)人的工作,生成一個(gè)新的解q,如果滿足模型的約束條件(1)和(2) ,則q就是s鄰域中的一個(gè)可行解。解s的鄰域就是由以上方法生成的可行解。

3.3 新解的接受與淘汰

在當(dāng)前解的鄰域中搜索到一個(gè)新解,是否接受,要看新解的目標(biāo)函數(shù)值(費(fèi)用)和當(dāng)前最優(yōu)解的目標(biāo)函數(shù)值(費(fèi)用)的差Δfsq,如果Δfsq≤0,則說明新解的目標(biāo)函數(shù)值較小,當(dāng)前解被新解代替;否則Δfsq>0,看新解的接受概率是否大于一個(gè)在0到1之間的隨機(jī)數(shù)ε,若大于,則接收新解為當(dāng)前最優(yōu)解,否則舍棄該解。

3.4 初始溫度以及退溫函數(shù)

初始溫度t0=Kδ,K是充分大的數(shù),其中δ=max{f(s)∣s∈D}-min{f(s)∣s∈D}[4],在實(shí)際計(jì)算中,可以選取K=10,20,100…等試驗(yàn)值, max{f(s)∣s∈D}和min{f(s)∣s∈D}是解空間隨機(jī)取的兩個(gè)解的目標(biāo)函數(shù)值。退溫函數(shù)采用tk+1=αtk,其中0<α<1,α越接近1,溫度下降越慢,溫度以相同的比率下降。

3.5 內(nèi)外循環(huán)中止條件

內(nèi)循環(huán)是在溫度tk時(shí),采用固定長(zhǎng)度法結(jié)束內(nèi)循環(huán)。因?yàn)橹概蓡栴}的鄰域是兩個(gè)人的任務(wù)交換生產(chǎn)新的解,故它的大小是n(n-1)/2,我們可以選取迭代步數(shù)為n(n-1)/2。外循環(huán)采用零度法,模擬退火的最終溫度為零,因此可以給定一個(gè)比較小的正數(shù)ε,當(dāng)溫度tk≤ε時(shí),外循環(huán)停止。

4 SA算法解指派問題的VB的實(shí)現(xiàn)

4.1 算法中所需的主要變量的定義

包括最優(yōu)解數(shù)組Mn(Pn,Tn),最優(yōu)解的解碼數(shù)組Nn(2,Tn);搜索鄰域中的隨機(jī)解Ch(Pn,Tn),該隨機(jī)解的接受概率變量Pc,C(Pn,Tn)工作價(jià)值矩陣。

4.2 算法中所有功能函數(shù)的實(shí)現(xiàn)

模擬退火算法的初始化,此過程是用commond控件的click事件的來完成的,初始化包括:工作數(shù)、員工數(shù)、初始溫度比率和溫度下降率的輸入,價(jià)值矩陣的生成,計(jì)算初始退火溫度,給出一個(gè)可行的初始解;執(zhí)行模擬退火算法的外循環(huán),此過程在主函數(shù)中使用do…while語句來控制。在外循環(huán)中調(diào)用鄰域搜索函數(shù)LinYu(x(), y(), z()),退火溫度是通過tk+1=αtk方式下降。鄰域搜索函數(shù)LinYu(x(), y(), z())是整個(gè)算法的核心函數(shù),它實(shí)現(xiàn)的是在tk溫度下搜索可行解,并且判斷是否接受此解即實(shí)現(xiàn)的是算法的內(nèi)循環(huán)。此外還有幾個(gè)輔助函數(shù):求解目標(biāo)值函數(shù)f1(x(), y),拷貝函數(shù)copyArray x(), y(),解碼函數(shù)f3(x(), y())用于輸出最優(yōu)解等。

4.3鄰域搜索子函數(shù)LinYu Mn(), a(), Ch()的主要代碼

Fori = 1 To Pn - 1 '形成搜索鄰域

For d = i + 1 To Pn

b1 = 0

For j = 1 To Tn

b1 = b1 + z(i, j) + z(d, j)

Next j

Ifb1 >= 1 Then '如果兩個(gè)人中至少有一個(gè)人有工作,就可以交換兩j = 1個(gè)人的工作,否則不交換

For To Tn'滿足交換條件實(shí)行交換

h = z(i, j)

z(i, j) = z(d, j)

z(d, j) = h

Next j

f1 z(), m '計(jì)算交換之后所得新解的目標(biāo)函數(shù)值m

f1 x(), min'計(jì)算當(dāng)前最優(yōu)解的目標(biāo)函數(shù)值min

r = m - min'計(jì)算新解的目標(biāo)值和最優(yōu)解的函數(shù)值之間的差r

Ifr <= 0 Then'若新解的函數(shù)值小于最優(yōu)解的函數(shù)值,用當(dāng)前新解替換最優(yōu)解

copyArray z(), x()

Else'否則,判斷接收概率Pc是否大于(0,1)之間的一個(gè)隨機(jī)數(shù)

sjs = Rnd'sjs是一個(gè)隨機(jī)數(shù)

Pc = Exp(-r / T)

IfPc > sjsThen copyArray z(), x()'以概率Pc接受此新解為最優(yōu)解

End If

End If

End If

copyArrayy(), z() '重新給交換矩陣賦值

Next d'進(jìn)行下一個(gè)鄰域中可行解是搜索

Next i

5 仿真數(shù)據(jù)以及運(yùn)行結(jié)果分析

假設(shè)人數(shù)Pn=6,工作Tn=4,價(jià)值矩陣C(6,4)為:

<E:\\2008學(xué)術(shù)交流\\200學(xué)術(shù)交流第四卷第八期(2008總第35期)\\第1次96篇\\1.3軟件設(shè)計(jì)開發(fā)\\dcl05.tif>

當(dāng)rate=10,K=0.6時(shí),算法仿真圖及所得最優(yōu)分配方案見圖1:

<E:\\2008學(xué)術(shù)交流\\200學(xué)術(shù)交流第四卷第八期(2008總第35期)\\第1次96篇\\1.3軟件設(shè)計(jì)開發(fā)\\dcl06.tif>

由圖1可見,該算法可以實(shí)現(xiàn)全局尋優(yōu)。曲線隨著迭代次數(shù)的增加一直在波動(dòng),體現(xiàn)了該算法尋優(yōu)過程中以一定的概率接受較優(yōu)解,跳出局部最優(yōu),實(shí)現(xiàn)全局尋優(yōu)。

表1是該算法不同的初始溫度比率rate及不同的溫度下降率K下,執(zhí)行模擬退火算法時(shí)的迭代步數(shù)、所用時(shí)間,以及得到的最優(yōu)解目標(biāo)函數(shù)值情況。可以看出,改變初始溫度比率rate和溫度下降率K,雖然都可以得到最優(yōu)解,但是隨著rate和K的增大,迭代次數(shù)也在增加,效率在降低,所以要確定rate和K合理數(shù)值是提高該算法運(yùn)行是的效率方法之一。

表1 不同rate和K下的模擬退火算法比較

<E:\\2008學(xué)術(shù)交流\\200學(xué)術(shù)交流第四卷第八期(2008總第35期)\\第1次96篇\\1.3軟件設(shè)計(jì)開發(fā)\\dcl07.tif>

6 結(jié)束語

在VB編程語言環(huán)境下實(shí)現(xiàn)模擬退火算法,能夠找到指派問題最優(yōu)解分配方案。仿真結(jié)果表明了該算法的有效性。同時(shí)從仿真結(jié)果可以看出,初始溫度比率rate和溫度下降率K對(duì)找到最優(yōu)解的效率及迭代次數(shù)有影響。從最優(yōu)解目標(biāo)函數(shù)值的仿真曲線上可以看到,模擬退火算法的迭代過程體現(xiàn)了集中和擴(kuò)散兩個(gè)策略的平衡,該算法可以跳出局部最優(yōu),而實(shí)現(xiàn)全局最優(yōu)。

參考文獻(xiàn):

[1] 李秦渝,代存杰.禁忌搜索算法解指派問題[J].甘肅科技,2007,23(10):24-26.

[2] 王凌.智能優(yōu)化算法及其應(yīng)用[M].北京:清華大學(xué)出版社,2001.

[3] 駱文輝,劉少偉,周建美,等.目標(biāo)分配問題的模擬退火算法[J].上海航天,2008(1):61-64.

[4] 邢文訓(xùn),謝金星.智能優(yōu)化算法及其應(yīng)用[M].北京:清華大學(xué)出版社,1999:94-126.

主站蜘蛛池模板: 精品视频一区二区三区在线播| 无遮挡国产高潮视频免费观看| 青青草原国产精品啪啪视频| 99视频全部免费| 国产日韩精品欧美一区灰| 五月婷婷伊人网| 2021国产在线视频| 日本亚洲欧美在线| 国产精品2| 69av免费视频| 国产经典在线观看一区| 国产成人精品一区二区三在线观看| 亚洲天堂视频在线观看| 国产精品自在自线免费观看| 狠狠色噜噜狠狠狠狠色综合久| 中国国产高清免费AV片| 青青国产在线| 亚洲视频免| 日韩天堂视频| 亚洲v日韩v欧美在线观看| 人人澡人人爽欧美一区| 欧美性色综合网| 国产在线视频导航| 中文字幕首页系列人妻| 99九九成人免费视频精品| 国产激情无码一区二区APP| 亚洲欧州色色免费AV| 日韩福利在线观看| 手机在线看片不卡中文字幕| 久久福利片| 在线观看91香蕉国产免费| 成人av专区精品无码国产| 亚洲天堂首页| 美女无遮挡被啪啪到高潮免费| 人妻精品全国免费视频| 无码av免费不卡在线观看| 国产亚洲视频在线观看| 性欧美精品xxxx| 日韩av无码DVD| 欧美自拍另类欧美综合图区| 四虎成人在线视频| 亚洲精品成人片在线观看| 国产原创第一页在线观看| 91免费国产在线观看尤物| 国产亚洲精| 亚洲第一网站男人都懂| 国产午夜福利亚洲第一| 亚洲综合婷婷激情| 日韩精品成人在线| 亚洲成年人网| 欧日韩在线不卡视频| 欧美日韩精品一区二区在线线 | 成人午夜视频网站| 天天综合色天天综合网| 精品综合久久久久久97超人| 国产呦精品一区二区三区下载| 高清大学生毛片一级| 干中文字幕| 亚洲成aⅴ人片在线影院八| 区国产精品搜索视频| 毛片免费高清免费| 一本色道久久88综合日韩精品| 极品国产在线| 一本大道东京热无码av| 黄色污网站在线观看| 日本在线亚洲| 日本午夜精品一本在线观看| 国产无码高清视频不卡| 亚洲VA中文字幕| 国产亚洲精品97AA片在线播放| 亚洲第一黄色网址| 欧美日韩国产系列在线观看| 成年人视频一区二区| 视频二区亚洲精品| 性欧美在线| 欧美精品H在线播放| 国产又色又爽又黄| 亚洲福利视频一区二区| 国产乱子伦无码精品小说| 高清不卡一区二区三区香蕉| 爱做久久久久久| 国产丝袜精品|