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

求解集值折扣{0-1}背包問題的改進動態規劃算法

2022-10-10 09:34:50王茂萍潘大志
計算機應用與軟件 2022年9期
關鍵詞:定義

王茂萍 潘大志,2*

1(西華師范大學數學與信息學院 四川 南充 637009) 2(西華師范大學計算方法與應用研究所 四川 南充 637009)

0 引 言

折扣{0-1}背包問題(Discounted{0-1} Knapsack Problem, D{0-1}KP)[1-4]是典型的組合優化問題,D{0-1}KP的模型及求解算法在資源配置、資金預算和項目決策等諸多領域具有重要的理論意義和使用價值[5-7],隨著應用背景逐漸廣泛,針對不同的實際問題,尋求新的模型及其求解算法變得越來越重要。針對生產不同類商品需選擇不同生產機械和模具的實際問題,提出D{0-1}KP的擴展模型,即集值折扣{0-1}背包問題(D{0-1}KPS)。

1 D{0-1}KPS的定義及數學模型

定義1(D{0-1}KPS) 給定N個均含3個項(或物品)的類別,設第i(1≤i≤N)個類別中第j(1≤j≤3)個項對應的價值和重量分別為pij和wij。其中每個類別的第3項是該類別中前兩項的折扣項,其價值系數pi3和重量系數wi3分別滿足:pi3=pi1+pi2,wi3∈[max{wi1,wi2}+1,wi1+wi2-1],每個類別的項可以同時選擇,但當某個類別中的項被選中時,會產生固定成本和固定背包容量消耗,其大小由負整數ti和非負整數ai表示。給定一個容量為C的背包,如何選擇項裝入背包,在容量限制下使得凈利潤最大?

D{0-1}KPS的數學模型描述如下:

(1)

(2)

xij≤yi?i∈{1,2,…,N} ?j∈{1,2,3}

(3)

xij,yi∈{0,1} ?i∈{1,2,…,N} ?j∈{1,2,3}

(4)

式(3)表示只有當類別被選中時,該類別中的項才擁有被選中的機會;決策變量xij表示第i個類別中第j個項是否被裝入背包;yi表示第i個類別是否被選中。

2 求解D{0-1}KPS的改進DP算法

DP算法[8-12]是20世紀50年代初美國數學家Bellman等在研究多階段決策過程的優化問題時所提出的,是一種強大的算法設計技術,其核心思想是分而治之,將問題劃分為子問題,通過遞推公式保存子問題的最優解,避免重復計算,用于求解背包問題具有良好的效果。

2.1 D{0-1}KPS的子模型

D{0-1}KPS與D{0-1}KP不同,當某個項被選擇時,需考慮以下四個因素:價值、重量、固定成本和固定背包容量消耗。因此在得到D{0-1}KPS的子模型之前,需要進行相關預處理,確定該項所在的類別及在該類別中的順序號。設某個項對應的編號為k,則k的范圍為:1≤k≤3N。

現給出在前k個項中選擇項裝入背包容量為γ的D{0-1}KPS子問題模型。

定義3(D{0-1}KPS(k,γ)) 當背包容量為γ∈{0,1,…,C}時,前k個項中選擇項裝入背包,在不超過背包容量γ的情況下,獲得利潤最大,將該子問題記為D{0-1}KPS(k,γ)。為更好地構造子問題的數學模型,將前k個項中選擇裝入背包的項集分成兩個集合A(k,γ)(1)和A(k,γ)(2):A(k,γ)(1)由前h(k)-1個類別中所選擇的項構成,A(k,γ)(2)由第h(k)個類別中選擇的項構成。其模型如下:

(5)

(6)

xij≤yi?i∈{1,2,…,h(k)},?j∈{1,2,3}

(7)

xij,yi∈{0,1} ?i∈{(1,2,…,h(k)},?j∈{(1,2,3}

(8)

式(5)表示當背包容量為γ時,前k個項中選擇項集裝入背包時的最大利潤,由三部分組成:A(k,γ)(1)中的項集價值總和、A(k,γ)(2)中的項集價值總和、裝入背包項集所在類別的固定成本總和;式(6)表示選擇項集應滿足的重量約束;式(7)表示只有對應類別被選中時,該類別中的物品才擁有被選中的機會;式(8)表示物品和類別的選中情況。

2.2 DP求解D{0-1}KPS

當選擇第k項時,需要分以下兩種情況進行討論:

1) 在前k個項中第h(k)類別有其他項被裝入背包,代表第h(k)類別被選中,記為D{0-1}KPS(k,γ)(1),V(k,γ)(1)表示D{0-1}KPS(k,γ)(1)的最優值。

2) 在前k個項中第h(k)類別無其他項被裝入背包,代表第h(k)類別未選中,記為D{0-1}KPS(k,γ)(0),V(k,γ)(0)表示D{0-1}KPS(k,γ)(0)的最優值。

顯然D{0-1}KPS(k,γ)的最優值為:max{V(k,γ)(0),V(k,γ)(1)},以下為DP求解D{0-1}KPS的遞推公式:

1) 當k=1時,初始值設定如下:

V(1,γ)(0)=0 0≤γ≤C

2) 當k>1時,需先判斷第k個項所屬類別是否與第k-1個項所屬類別一致,需要分兩種情況討論。

(1)h(k)=h(k-1)

V(k,γ)(0)=V(k-1,γ)(0)0≤γ≤C

(2)h(k)≠h(k-1)

V(k,γ)(0)=max{V(k-1,γ)(0),V(k-1,γ)(1)} 0≤γ≤C

2.3 改進DP算法求解D{0-1}KPS

為了討論改進動態規劃算法求解集值折扣{0-1}背包問題,現給出如下定義:

定義4第k(1≤k≤n)階段當前所裝物品的總重量m、當前所裝物品的總價值p和當前所裝最后一個物品的類別號h構成一個狀態,記作(m,p,h)k。將第k(1≤k≤n)階段的所有狀態所構成的集合稱為狀態集,記作Rk。

定義5任意給定兩個狀態(m1,p1,h1)、(m2,p2,h2),當且僅當m1≤m2且p1≥p2,(m1,p1,h1)?(m2,p2,h2),也稱(m1,p1,h1)支配(m2,p2,h2)。

定義6(非支配狀態) 一個狀態(m,p,h)被稱為非支配狀態,當且僅當滿足如下條件:

?(m,p,h)′∈R:(m,p,h)′?(m,p,h)

定義7(非支配狀態集) 非支配狀態集是所有非支配狀態的集合,記作D,定義為D={(m,p,h)|?(m,p,h)′∈R:(m,p,h)′?(m,p,h)},將第k(1≤k≤n)階段的非支配狀態集記作Dk。

以下是改進的DP算法求解D{0-1}KPS的遞推公式:

1)k=1時,初始狀態集設定如下:

R(1)={(0,0,0)(1),(wh(1),1+ah(1),ph(1),1+th(1),h(1))(1)}

2)k>1時,第k階段的狀態由第k-1階段的狀態組成和產生,首先將Rk-1的狀態作為Rk的初始狀態,然后分以下兩種情況討論新狀態的產生:

(1) 當(m,p,h)k的類別號與h(k)相同,且滿足m+wh(k),b(k)≤C時:

R(k)=R(k-1)∪{(m+wh(k),b(k),p+ph(k),b(k),h(k))(k)}

(2) 當(m,p,h)(k)的類別號與h(k)不同,且滿足m+wh(k),b(k)+ah(k)≤C時:

R(k)=R(k-1)∪{(m+wh(k),b(k)+ah(k),p+ph(k),b(k)+th(k),h(k))k}

在形成R(k)后,需要利用狀態與狀態之間的非支配關系進行剪枝,簡化第k階段的狀態數量,得到D(k),即D(k)=ND(R(k)),其中ND是求非支配狀態集的運算符。D{0-1}KPS的最優值是Dn中狀態的最大價值,即Opt_D{0-1}KPS=max(Dn(:,2))。以下是算法的具體描述:

算法1改進的DP算法

1.R(1)←{(0,0,0)(1),(wh(1),1+ah(1),ph(1),1+th(1),h(1))(1)};

2.fork←2 ton

3.R(k)←R(k-1);

4.fori←1 tolength(R(k))

5.ifR(k)(i,3)==h(k)

6.ifR(k)(i,1)+wh(k),b(k)>C

7.continue;

8.end if

9.R(k)←{R(k-1),(R(k)(i,1)+wh(k),b(k),R(k)(i,2)+ph(k),b(k),h(k))(k)};

10.else

11.ifR(k)(i,1)+wh(k),b(k)+ah(k)>C

12.continue;

13.end if

14.R(k)←{R(k-1),(R(k)(i,1)+wh(k),b(k)+ah(k),R(k)(i,2)+ph(k),b(k)+th(k),h(k))(k)};

15.end if

16.end for

17.D(k)←ND(R(k));

18.end for

19.Opt_D{0-1}KPS=max(Dn(:,2))

算法1中,第1行表示第一階段的狀態集;第2-第18行表示第2-第n階段狀態集的情況處理,其中第5-第9行表示當(m,p,h)(k)的類別號與h(k)相同時,產生新狀態的情況處理;第11-第16行表示當(m,p,h)(k)的類別號與h(k)不同時,產生新狀態的情況處理;第17行表示運用狀態之間的支配與非支配關系對Rk進行剪枝,得到非支配解集D(k);第19行表示得到D{0-1}KPS的最優值Opt_D{0-1}KPS。

3 D{0-1}KPS實例計算

實例1給定兩個類別(N=2),每個類別中包含3個項,其中前兩項的折扣項為每個類別中的第三個項,每個類別對應的固定成本為t={-4,-2},背包容量消耗為a={1,2},價值集P1={6,8,14,5,7,12},重量集W1={7,8,10,5,7,9},背包容量C=32,求此D{0-1}KPS的最優值及其最優解。

由D{0-1}KPS得定義可知,實例1對應的數學模型為:

maxz=6x1,1+8x1,2+14x1,3+5x2,1+7x2,2+

12x2,3+(-4y1)+(-2y2)

s.t. 7x1,1+8x1,2+10x1,3+5x2,1+7x2,2+9x2,3+

y1+2y2≤32

xij≤yi?i∈{1,2} ?j∈{1,2,3}

xij,yi∈{0,1} ?i∈{1,2} ?j∈{1,2,3}

運用算法1得到如圖1所示的狀態轉換圖。

圖1 實例1的狀態轉換圖

由圖1可知,D(6)={(0,0,0)(6),(7,3,2)(6),(9,5,2)(6),(11,10,1)(6),(16,15,2)(6),(18,17,2)(6),(19,18,1)(6),(22,20,2)(6),(26,21,2)(6),(28,23,2)(6),(30,28,2)(6)},因此實例1的最優值為28,最優解為X=[0,1,1,0,0,1]。

4 結 語

本文提出一種有效求解集值折扣{0-1}背包問題的改進動態規劃算法?;贒P算法求解D{0-1}KPS的遞推公式,結合狀態之間的支配與非支配關系,得到每個階段的非支配狀態集,D{0-1}KPS的最優值是第n階段的非支配狀態集中狀態的最大價值。運用改進DP算法求解D{0-1}KPS,在形成狀態轉換圖的過程中,減少了記錄的狀態數,為今后探究折扣背包模型提供了一種參考,接下來不妨從求解速率方向考慮,探究一種優化算法,當面對大規模值折扣{0-1}背包問題時,可以快速達到精確解。

猜你喜歡
定義
以愛之名,定義成長
活用定義巧解統計概率解答題
例談橢圓的定義及其應用
題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
嚴昊:不定義終點 一直在路上
華人時刊(2020年13期)2020-09-25 08:21:32
定義“風格”
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
有壹手——重新定義快修連鎖
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 亚洲无码一区在线观看| 亚洲欧美激情小说另类| 国产美女主播一级成人毛片| 无码高潮喷水在线观看| 久久精品66| 色亚洲激情综合精品无码视频 | 青青青视频蜜桃一区二区| 91九色视频网| 国内精品免费| 一级成人a做片免费| 精品三级在线| 99激情网| 67194亚洲无码| 亚洲清纯自偷自拍另类专区| 国产精品自在拍首页视频8| 直接黄91麻豆网站| 国产精品熟女亚洲AV麻豆| 综合人妻久久一区二区精品 | 欧洲一区二区三区无码| 国产精品一区二区在线播放| 五月天久久综合| 91久久精品国产| 中文字幕亚洲精品2页| 久久久亚洲色| 呦系列视频一区二区三区| 欧美亚洲一区二区三区在线| 国产精品无码AV片在线观看播放| 欧美精品亚洲精品日韩专区| 久久精品视频亚洲| 综合色区亚洲熟妇在线| 91九色国产在线| 99久久精品美女高潮喷水| 久久久久人妻一区精品色奶水 | 无码一区二区波多野结衣播放搜索| 国产成人AV男人的天堂| 97亚洲色综久久精品| 2020最新国产精品视频| 国产丝袜一区二区三区视频免下载| 日韩小视频在线播放| 国产一区二区三区精品久久呦| 五月婷婷伊人网| 欧美三级视频在线播放| 欧日韩在线不卡视频| 亚洲黄色视频在线观看一区| 国产91高清视频| 97av视频在线观看| 国产99免费视频| 国产精品一区二区不卡的视频| 亚洲综合18p| 国产麻豆aⅴ精品无码| 无码中文字幕精品推荐| 国产成人无码AV在线播放动漫| 色久综合在线| 亚洲一级毛片在线观| 久草视频精品| 国产超碰在线观看| 国产丝袜啪啪| 中文无码日韩精品| 好紧好深好大乳无码中文字幕| 深爱婷婷激情网| 久久网综合| 手机在线免费不卡一区二| 亚洲欧美成人影院| 日韩视频免费| 国产情精品嫩草影院88av| 玖玖免费视频在线观看| 国产肉感大码AV无码| 美女扒开下面流白浆在线试听| 亚洲成肉网| 亚洲人成色在线观看| 国产精品成人AⅤ在线一二三四| 99re经典视频在线| 午夜限制老子影院888| 毛片免费在线视频| 国产精欧美一区二区三区| 欧美色综合网站| 国产精品成人第一区| 重口调教一区二区视频| 91www在线观看| 色噜噜中文网| 国产精欧美一区二区三区| 麻豆精品在线播放|