亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        求解0-1背包問題的改進(jìn)二進(jìn)制捕魚算法

        2023-05-19 07:55:38陳建榮
        關(guān)鍵詞:撒網(wǎng)高維二進(jìn)制

        陳建榮

        (右江民族醫(yī)學(xué)院 公共衛(wèi)生與管理學(xué)院,廣西 百色 533000)

        0 引 言

        背包問題(Knapsack Problem,KP)[1-3]是經(jīng)典的NP難問題,其目標(biāo)是尋找在給定背包容量的限制條件下價值量最大的物品選擇方案。當(dāng)涉及資源或任務(wù)分配等工作時,可使用背包問題的相關(guān)理論去處理和解決,如投資決策等。背包問題有多個變體,最基本的是0-1背包問題,其它類型問題能轉(zhuǎn)換成該問題而順利求解[3]。

        求解0-1背包問題的方法包括精確算法和啟發(fā)式算法這兩類[2-3]。其中,精確算法包括貪心算法、動態(tài)規(guī)劃法、分支定界法、窮舉法、回溯法等。這些算法普遍存在計算效率低、計算量隨問題維數(shù)的增加而呈指數(shù)級增長等缺點,因而難以有效處理高維背包問題。另一類算法是啟發(fā)式算法,其本質(zhì)上屬于近似搜索算法,能在合理時間內(nèi)找到問題的最優(yōu)解或者滿意解。常見的有遺傳算法[2]、模擬退火算法[4]、粒子群算法[5]、蟻群算法[6]、布谷鳥算法[7]、蝙蝠算法[8]等。但這些算法在求解0-1背包問題時,仍存在全局搜索能力不強(qiáng)、收斂速度慢等不足。

        陳建榮等人[9]通過觀察漁夫在江面上捕魚的行為習(xí)慣而提出了捕魚算法(Fishing Algorithm)。目前,該算法及其改進(jìn)或結(jié)合算法已被應(yīng)用于解決各類優(yōu)化問題,并獲得良好的效果[10-13]。

        捕魚算法是針對連續(xù)問題提出的,無法直接應(yīng)用于求解0-1背包問題,所以該文首先對漁夫編碼及搜索方法進(jìn)行重新定義和描述,稱之為二進(jìn)制捕魚算法(Binary Fishing Algorithm,BFA)。然后,在對其分析的基礎(chǔ)上,提出改進(jìn)二進(jìn)制捕魚算法(Improved Binary Fishing Algorithm,IBFA)。最后,使用不同維度的背包問題對算法進(jìn)行性能測試。

        1 捕魚算法

        捕魚算法對漁夫捕魚行為的模擬主要包括7個假設(shè)和3類搜索方法[12]。7個假設(shè)分別是:(1)水中魚的分布保持不變;(2)漁夫不知道魚在水里的分布情況;(3)漁夫總是向魚多的方向前進(jìn);(4)漁夫傾向于停留在魚密度大的位置捕魚;(5)漁夫希望通過使用網(wǎng)眼更小的漁網(wǎng)將魚打盡;(6)漁夫會離開沒有魚的位置前往其它地方捕魚;(7)漁夫之間避免碰撞。3類搜索方法包括移動搜索、收縮搜索和隨機(jī)搜索。

        算法運行過程中,漁夫在給定的尋優(yōu)區(qū)域(問題的定義域)內(nèi)撒網(wǎng)捕魚,并通過漁夫之間的通力合作最終找到水中魚密度最高的位置(問題的最優(yōu)解)。

        2 問題描述及二進(jìn)制捕魚算法

        2.1 問題描述

        0-1背包問題可描述為:給定一個最大容量為C的背包和n個物品,第k個物品的價值和體積分別為pk和wk。在不超過背包最大容量的條件下,將物品盡可能地裝進(jìn)背包,使得背包中物品的總價值達(dá)到最大。

        若假定xi的取值0和1分別表示第k個物品沒有裝入背包和裝入背包兩種狀態(tài),則該問題用數(shù)學(xué)模型可表示為:

        其中,xk∈{0,1}。

        引入罰函數(shù)法,可將上述問題轉(zhuǎn)化為:

        (1)

        2.2 漁夫編碼及相關(guān)定義

        對于n維的0-1背包問題,第i個漁夫的位置向量表示為Xi=(xi1,…,xik,…,xin)。其中,xik是Xi的第k個分量,取值為0或1。該漁夫?qū)?yīng)位置的目標(biāo)函數(shù)值可通過(1)式求得。

        定義1:設(shè)兩個位置向量分別為Xi1和Xi2,則它們之間的距離定義為D=sum(|Xi1-Xi2|)。其中,|·|表示對向量中的每一個分量取絕對值,sum(·)表示將向量的所有分量相加。

        例1:給定位置X1=(1,0,1,0)和X2=(0,1,1,0),那么兩位置間的距離D=|1-0|+|0-1|+|1-1|+|0-0|=2。

        由定義可知,當(dāng)漁夫撒網(wǎng)時,其所在位置和撒網(wǎng)點之間的距離剛好等于撒網(wǎng)半徑。

        2.3 搜索方法

        (2)

        下面給出三類搜索方法的具體描述。

        (1)移動搜索。

        (2)收縮搜索。

        (3)隨機(jī)搜索。

        若漁夫i不滿足前兩類搜索的執(zhí)行條件,且連續(xù)執(zhí)行收縮搜索的次數(shù)達(dá)到算法給定的閾值,則對該漁夫進(jìn)行隨機(jī)初始化,并按式(2)構(gòu)造撒網(wǎng)點集。

        2.4 算法流程

        算法設(shè)置有公告板,輸入?yún)?shù)為:漁夫個體數(shù)量N、撒網(wǎng)半徑L、撒網(wǎng)次數(shù)ξ、收縮系數(shù)β、收縮搜索閾值η和迭代次數(shù)T。

        算法流程:

        步驟1:對漁夫進(jìn)行隨機(jī)初始化;

        步驟2:算法迭代次數(shù)達(dá)到T(或找到已知最優(yōu)解)則停機(jī),并輸出最優(yōu)值和最優(yōu)解;

        步驟3:各漁夫根據(jù)當(dāng)前情況,選擇執(zhí)行相應(yīng)的搜索方法(移動搜索、收縮搜索和隨機(jī)搜索);

        步驟4:找到更優(yōu)值則更新公告板;轉(zhuǎn)Step 2。

        3 改進(jìn)二進(jìn)制捕魚算法

        3.1 分析與說明

        首先,在BFA算法中,使用隨機(jī)函數(shù)生成并給漁夫個體位置賦初值,由于受到隨機(jī)性的影響可能會使得算法收斂速度偏慢。其次,漁夫的撒網(wǎng)半徑對算法收斂速度影響較大,而所求解問題的維數(shù)不盡相同,若撒網(wǎng)半徑設(shè)置為固定值,則會出現(xiàn)對于不同問題需要頻繁設(shè)置不同半徑值的尷尬局面。最后,為提高漁夫之間的信息共享,避免陷入局部最優(yōu),增加了一種名為靠近搜索的搜索方法。

        3.2 貪心輪盤賭

        3.3 自適應(yīng)半徑

        通過下式給出初始半徑值:

        R=εn

        (3)

        其中,ε∈(0,1]為給定的自適應(yīng)半徑系數(shù);n是所求問題的維數(shù),即0-1背包問題中物品的總數(shù)。

        3.4 隨機(jī)比例

        為避免因出現(xiàn)早熟而陷入局部最優(yōu),算法設(shè)置有隨機(jī)比例參數(shù)Υ用于控制采用隨機(jī)函數(shù)進(jìn)行初始化漁夫位置的比例,其取值范圍是[0,1]。當(dāng)Υ=0時,全部采用隨機(jī)函數(shù)進(jìn)行初始化;當(dāng)Υ=1時,則全部使用貪心輪盤賭的方法對漁夫位置進(jìn)行初始化。

        3.5 靠近搜索

        定義3:設(shè)漁夫位置和目標(biāo)位置分別為Xi和XG,且Xi與XG之間的距離D>R。從|Xi-XG|中隨機(jī)選出R個非零分量,并將Xi中位于該非零分量位置的R個分量值用其二進(jìn)制反碼替換,則稱漁夫Xi以步長R向位置XG隨機(jī)靠近一次。

        靠近搜索可描述為:若漁夫i連續(xù)執(zhí)行收縮搜索的次數(shù)達(dá)到算法給定的閾值η,且其當(dāng)前所處的位置并非群體最優(yōu),則該漁夫以步長?R×rand」向群體最優(yōu)位置靠近(?·」表示向上取整);漁夫每向群體最優(yōu)位置隨機(jī)靠近一次,都重新按式(2)構(gòu)造撒網(wǎng)點集。

        3.6 算法流程

        與BFA算法相比,IBFA算法取消了撒網(wǎng)半徑L,新增自適應(yīng)半徑系數(shù)ε和隨機(jī)比例參數(shù)Υ,其它參數(shù)保持不變。IBFA算法使用自適應(yīng)半徑和隨機(jī)比例對漁夫進(jìn)行初始化,并在搜索方法中增加了靠近搜索,其余操作和流程均與原算法相同。

        4 實驗與對比

        4.1 軟硬件環(huán)境與說明

        實驗電腦是華為MateBook X Pro超極本,配置為:Intel Core i7-1165G7 CPU @2.8 GHz,16 GB LPDDR4X內(nèi)存;64位Windows 11家庭版操作系統(tǒng),MATLAB版本是2020a。

        實驗分為常用算例測試和高維算例測試兩部分。除另有說明外,各算法均使用固定的參數(shù),并且連續(xù)運行一定次數(shù),以降低隨機(jī)性對結(jié)果的影響,同時也能在一定程度上反映不同算法在穩(wěn)定性方面的差異。

        4.2 常用算例測試與結(jié)果對比

        常用算例測試中的九個經(jīng)典算例均來自參考文獻(xiàn)[3],各算法運行參數(shù)見表1。測試時,所有算法都連續(xù)運行30次,并記錄包括最優(yōu)值、最差值、平均值、標(biāo)準(zhǔn)差等指標(biāo)在內(nèi)的數(shù)據(jù)以便后續(xù)對比。七種不同算法的測試結(jié)果見表2。其中,對比算法的運行結(jié)果均來自文獻(xiàn)[3]。

        BFA與IBFA算法測試結(jié)果對比:從表2中的數(shù)據(jù)可以看出,IBFA算法能找到全部九個背包問題的最優(yōu)解,且標(biāo)準(zhǔn)差均為零,說明算法適應(yīng)性強(qiáng)、穩(wěn)定性好;而BFA算法只能找到前三個問題的最優(yōu)解,這說明對于維數(shù)相對較高的問題(KP4-KP9)來說,IBFA算法的性能有較明顯的改善。

        IBFA算法與其它算法測試結(jié)果對比:從最差值指標(biāo)可知,對比算法中的ACPSO、BBA和HBA算法,在最差的情況下,未能找到全部九個背包問題(KP1-KP9)的最優(yōu)解。對于IBFA、DPSPO和BLSO這三個能找到九個問題最優(yōu)解的算法來說,它們的測試結(jié)果數(shù)據(jù)各有優(yōu)勢。值得注意的是,從100維的五個問題(KP5-KP9)的測試結(jié)果來看,除KP6外,IBFA在最小迭代次數(shù)指標(biāo)上是最優(yōu)的,均優(yōu)于其它對比算法;特別是對于KP5和KP7這兩個問題,在連續(xù)的30次運行中,IBFA算法在每一次初始化時都能找到問題的最優(yōu)解,其對比指標(biāo)均優(yōu)于其它算法,這說明本文的改進(jìn)方法在獲得優(yōu)秀初始值方面有較好的效果。注意到,IBFA算法的種群數(shù)量只有20,而其它對比算法均為50,這表明該算法的全局搜索能力較強(qiáng),即使在種群數(shù)量較少的情況下,也不容易陷入局部極值點。此外,IBFA在求解背包問題時的運行耗時非常短,只需要不足0.04秒的時間就能找到問題的最優(yōu)解。

        表1 各算法運行參數(shù)設(shè)置

        表2 七種不同算法的測試結(jié)果對比

        續(xù)表2

        4.3 高維算例測試與結(jié)果對比

        為進(jìn)一步驗證算法性能,本節(jié)進(jìn)行了高維算例的測試,這些算例使用下面的公式隨機(jī)產(chǎn)生[7]:

        其中,wi、pi和C分別表示算例中的物品體積、價值和背包容量;randint[1,10]表示隨機(jī)地從集合{1,2,…,10}中抽取一個整數(shù)。根據(jù)上述公式,隨機(jī)產(chǎn)生維數(shù)為100、200、400、600、800和1 000的六個高維0-1背包問題,每個算例產(chǎn)生后就保持不變。測試時,算法均連續(xù)運行50次,最大迭代次數(shù)均設(shè)置為500代。BBA算法參數(shù)取表1中的對應(yīng)值;BFA和IBFA算法除η=20和θ=70外,其余參數(shù)均與表1保持一致。測試結(jié)果見表3。

        表3 高維算例測試結(jié)果

        從表3中的數(shù)據(jù)可以看到,對于這六個高維背包問題而言,IBFA算法能找到的解是最優(yōu)的,且其標(biāo)準(zhǔn)差均為零,說明該算法性能穩(wěn)定,魯棒性強(qiáng),不易陷入局部極值。

        從各項對比指標(biāo)上看,BBA和BFA算法性能基本相當(dāng),且這兩種算法均因陷入局部極值而未能找到全局最優(yōu)解。此外,隨著問題維數(shù)的提高,各對比算法的運行耗時都相應(yīng)地增加了:BBA算法耗時增加最快,其次是IBFA,最后是BFA。從最小迭代次數(shù)、最大迭代次數(shù)和平均迭代次數(shù)上看,問題維數(shù)的變化(提高)對IBFA算法收斂速度的影響不大,對于這六個高維問題,該算法最多只需要23次迭代就能找到最優(yōu)解。

        圖1至圖6展示的是BBA、BFA和IBFA算法連續(xù)運行50次的平均進(jìn)化曲線。從圖中可以看出,IBFA算法的收斂速度很快,僅需要20次左右的迭代就能收斂到最優(yōu)值,而BBA和BFA算法經(jīng)歷500次迭代后仍未能收斂到穩(wěn)定值。

        圖1 KP01(100維)問題平均進(jìn)化曲線

        圖2 KP02(200維)問題平均進(jìn)化曲線

        圖3 KP03(400維)問題平均進(jìn)化曲線

        圖4 KP04(600維)問題平均進(jìn)化曲線

        圖5 KP05(800維)問題平均進(jìn)化曲線

        圖6 KP06(1 000維)問題平均進(jìn)化曲線

        5 結(jié)束語

        為求解0-1背包問題,首先對捕魚算法進(jìn)行修改,即引入二進(jìn)制編碼而提出二進(jìn)制捕魚算法。并在此基礎(chǔ)上,對其進(jìn)行優(yōu)化和改進(jìn),提出了改進(jìn)二進(jìn)制捕魚算法。數(shù)值實驗結(jié)果表明,與其它群智能算法相比,改進(jìn)二進(jìn)制捕魚算法具有收斂速度快、全局搜索能力強(qiáng)、求解結(jié)果穩(wěn)定、魯棒性好等優(yōu)點。特別是對于高維背包問題,與經(jīng)典二進(jìn)制蝙蝠算法相比,改進(jìn)二進(jìn)制捕魚算法的綜合性能明顯占優(yōu)。在未來的研究中,擬將該算法應(yīng)用于車間調(diào)度等問題,以進(jìn)一步測試其性能。

        猜你喜歡
        撒網(wǎng)高維二進(jìn)制
        用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
        深為基礎(chǔ) 漫天撒網(wǎng) 石魯同志創(chuàng)作一瞥
        人生需要勤撒網(wǎng)
        有趣的進(jìn)度
        撒網(wǎng)的父親
        草堂(2019年4期)2019-11-13 18:04:12
        二進(jìn)制在競賽題中的應(yīng)用
        人生需要勤撒網(wǎng)
        一種改進(jìn)的GP-CLIQUE自適應(yīng)高維子空間聚類算法
        基于加權(quán)自學(xué)習(xí)散列的高維數(shù)據(jù)最近鄰查詢算法
        一般非齊次非線性擴(kuò)散方程的等價變換和高維不變子空間
        亚洲国产成人精品女人久久久| 精品人妻少妇av中文字幕| 婷婷久久香蕉五月综合加勒比| 精品性高朝久久久久久久| 久久亚洲国产欧洲精品一| 在线不卡精品免费视频| 亚洲av无码专区国产不卡顿| 久久精品人人爽人人爽| 男人天堂av在线成人av| 在线看亚洲一区二区三区| 国产成人午夜福利在线观看| 少妇人妻真实偷人精品视频| 国产v精品成人免费视频400条| 久久久国产熟女综合一区二区三区 | 欧美深夜福利视频| 亚洲性日韩一区二区三区| 亚洲精品蜜夜内射| 国产成人av一区二区三区无码| 中文字幕偷拍亚洲九色| 高清日韩av在线免费观看| 久久www免费人成—看片| 欧美精品一级| 亚洲一区视频中文字幕| 国产精品理论片在线观看| 双乳被一左一右吃着动态图| 亚洲欧美日韩精品香蕉| 日本午夜剧场日本东京热| 国产又色又爽又高潮免费视频麻豆 | 奇米影视久久777中文字幕| 日韩在线手机专区av| 久久九九精品国产av| 中文字幕在线播放| 在线观看av国产自拍| 99久久精品国产91| 香港台湾经典三级a视频| 成人激情四射网| 亚洲av免费看一区二区三区| 97精品人人妻人人| 精品久久久久久久久免费午夜福利| 免费啪啪av人妻一区二区 | 最新国产精品久久精品|