朱仁貴 賀勝暉 劉加強(qiáng) 黃永慧
項(xiàng)目課題名稱:船體分段智能車間制造執(zhí)行管控技術(shù)研究(項(xiàng)目編號(hào):MC-201720-Z02);項(xiàng)目類別:工業(yè)和信息化部高技術(shù)船舶科研項(xiàng)目
摘要:合理的平面布局是充分利用人力資源、提高設(shè)備利用率、實(shí)現(xiàn)安全高效生產(chǎn)活動(dòng)的基礎(chǔ)。針對(duì)船廠車間布局優(yōu)化問(wèn)題,提出一種基于Levy飛行灰狼尋優(yōu)算法的車間布局優(yōu)化模型。該方法綜合考慮車間生產(chǎn)計(jì)劃、產(chǎn)品加工路線和不同工位的生產(chǎn)能力,以車間總物流距離最短為目標(biāo)構(gòu)建車間布局優(yōu)化函數(shù),利用能夠有效開展全局搜索、具有較優(yōu)收斂精度的Levy飛行灰狼尋優(yōu)算法求解函數(shù)最優(yōu)值。實(shí)現(xiàn)基于生產(chǎn)實(shí)際情況建立模型,切實(shí)的提高生產(chǎn)效率、降低物流強(qiáng)度、減少工序間停工帶料時(shí)間,促進(jìn)船舶企業(yè)的數(shù)字化生產(chǎn)管理水平的提供,提升船舶企業(yè)的生產(chǎn)能力。
關(guān)鍵詞:車間布局優(yōu)化;levy飛行;灰狼尋優(yōu)算法;群智能優(yōu)化算法
中圖分類號(hào):TP18文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-9129(2020)14-0047-02
引言:平面布局優(yōu)化能夠使制造企業(yè)生產(chǎn)過(guò)程物流更加順暢,充分利用人力資源,提高設(shè)備利用率,實(shí)現(xiàn)安全高效的生產(chǎn)活動(dòng),進(jìn)一步提高市場(chǎng)競(jìng)爭(zhēng)力。國(guó)內(nèi)外學(xué)者在車間平面布局優(yōu)化方面展開了大量的研究,其中分別從不同的角度和目標(biāo)開展物流優(yōu)化研究形成一些實(shí)用的傳統(tǒng)算法。
張屹等以物料搬運(yùn)費(fèi)用最小和車間設(shè)備占地面積利用率最大為目標(biāo),建立了車間設(shè)備布局多目標(biāo)優(yōu)化設(shè)計(jì)模型。李郝林等根據(jù)中小批量生產(chǎn)方式的特點(diǎn) ,提出了車間內(nèi)設(shè)備布局的優(yōu)化設(shè)計(jì)方法。胡廣華對(duì)優(yōu)化建模、模型求解算法,以及可視化輔助設(shè)計(jì)等方面分別進(jìn)行了研究。李建榮等以典型加工工藝為主要參考,構(gòu)建車間設(shè)備最優(yōu)布局?jǐn)?shù)學(xué)模型。但以上車間布局優(yōu)化均基于傳統(tǒng)的優(yōu)化算法,并且忽略船舶車間環(huán)境的復(fù)雜性和船舶生產(chǎn)存在調(diào)整等問(wèn)題。
本文構(gòu)建了基于車間生產(chǎn)力的車間布局優(yōu)化模型,并且利用基于萊維飛行的灰狼優(yōu)化算法(Grey Wolf Optimization Algorithm based on Levy flight,LGWO)尋求最優(yōu)車間布局,最后基于實(shí)際船舶企業(yè)中主要生產(chǎn)車間進(jìn)行驗(yàn)證,驗(yàn)證了算法的有效性。
1基于萊維飛行的灰狼優(yōu)化算法
levy飛行作為一種全局搜索能力極強(qiáng)的飛行機(jī)制常用來(lái)與群智能優(yōu)化算法進(jìn)行混合來(lái)提高原算法的優(yōu)化能力。在標(biāo)準(zhǔn)的灰狼優(yōu)化算法(GWO)中,由于受到適應(yīng)度值最高的狼的牽引和領(lǐng)導(dǎo),在算法迭代運(yùn)行的后半階段,局部尋優(yōu)能力增強(qiáng),使得算法在搜索時(shí)易陷入局部最優(yōu),喪失了種群的主動(dòng)性,出現(xiàn)早熟收斂現(xiàn)象。目前已經(jīng)有很多研究者們對(duì)灰狼優(yōu)化算法做了很多改進(jìn),但均是增加擾動(dòng)、異動(dòng)等運(yùn)算,此類方法雖然可以在某種程度上提升算法的收斂速度,但是難以解決GWO算法易于陷入局部極值的缺點(diǎn)。針對(duì)這些弊端,本文在原始的GWO算法中引入了levy飛行,提出了一種新的算法:基于萊維飛行的灰狼優(yōu)化算法(Grey Wolf Optimization Algorithm based on Levy flight,LGWO)。LGWO算法在搜索的后半階段能有效地抑制其局部搜索能力,增加其全局搜索能力,既保留了標(biāo)準(zhǔn) GWO 算法原來(lái)的優(yōu)勢(shì),又靈活地運(yùn)用了levy飛行機(jī)制的優(yōu)點(diǎn)。LGWO算法的基本思想是通過(guò)levy飛行機(jī)制使得灰狼群體中的頭狼能更加靈活移動(dòng),增加其搜索范圍,有利于開展全局搜索、提升算法的收斂精度,滿足深度精細(xì)搜索。
狼群搜索獵物的行為可以定義為如式(1)和式(2)所示。
其中Xpt為獵物在第t次迭代時(shí)的方位;Xt為灰狼個(gè)體在t次迭代式的方位;C是常數(shù),表示擺動(dòng)因子,由式(3)決定,A表示收斂因子,由式(4)決定。
素用pop()移除。pop的含義為:list.pop(obj=list[-1])
snakeBody.insert(0, list(snakePosition))
設(shè)定當(dāng)蛇頭與食物相重合時(shí),為食物被成功吃下,即蛇頭與食物的xy相等,寫出下列語(yǔ)句
if snakePosition[0] == targetposition[0] and snakePosition[1] == targetposition[1]:
如果吃到了食物,則蛇尾不用去除
eatenFlag = 0
如果沒有吃到食物,則需要去除蛇尾
else:
snakeBody.pop()
食物被吃掉后,會(huì)在新的地方重新生成新的食物
if eatenFlag == 0:
x = random.randrange(1, 32)
y = random.randrange(1, 24)
targetposition = [int(x * 20), int(y * 20)]
eatenFlag = 1
接下來(lái)再給背景板填充顏色,用一開始定義的黑色
playSurface.fill(blackColor)
然后定義蛇為白色
for position in snakeBody:
pygame.draw.rect(playSurface, whiteColor, Rect(position[0], position[1], 20, 20))
食物為紅色
pygame.draw.rect(playSurface, redColor, Rect(targetposition[0], targetposition[1], 20, 20))
pygame.display.flip()
如果撞墻了,也就是當(dāng)x軸大于620或者小于0時(shí),y軸大于460或小于0時(shí),意為游戲結(jié)束,以此寫出下面的語(yǔ)句
if snakePosition[0] > 620 or snakePosition[0] < 0:
gameOver()
elif snakePosition[1] > 460 or snakePosition[1] < 0:
gameOver()
下面這句話用于控制蛇移動(dòng)的速度,不同計(jì)算機(jī)有不同的速度,如果不寫這句話,蛇的移動(dòng)速度將會(huì)很快。
fps.tick(2)
最后寫上這句代碼,代表如果這個(gè)循環(huán)等于循環(huán)本身,則繼續(xù)循環(huán)。如果沒有這句話,這個(gè)循環(huán)將不會(huì)成立。
ifname== 'main':
main()
5結(jié)語(yǔ)
Pygame非常利于新手開發(fā)游戲,本文討論了關(guān)于使用pygame來(lái)研發(fā)貪吃蛇小游戲的核心算法。
參考文獻(xiàn):
[1]杜蘭 基于 Pygame 的壁球游戲的設(shè)計(jì)與開發(fā) 南京理工大學(xué)紫金學(xué)院計(jì)算機(jī)學(xué)院2018(000)022
[2]瞿蘇 基于python的飛機(jī)大戰(zhàn)游戲設(shè)計(jì) 揚(yáng)州職業(yè)大學(xué)學(xué)報(bào) 2019(23)1