【数学建模】数学建模学习4---动态规划(例题+matlab代码实现)
文章目錄
- @[toc]
- 1 動態規劃
- 1.1 動態規劃的發展及研究內容
- 1.2 決策過程的分類
- 2 基本概念、基本方程和計算方法
- 2.1 動態規劃的基本概念和基本方程
- 2.1.1 階段
- 2.1.2 狀態
- 2.1.3 決策
- 2.1.4 策略
- 2.1.5. 狀態轉移方程
- 3 若干典型問題的動態規劃模型
- 3.1 最短路線問題
- 3.2 生產計劃問題
- 3.3 資源分配問題
- 4 具體的應用實例
- @[toc]
- 1 動態規劃
- 1.1 動態規劃的發展及研究內容
- 1.2 決策過程的分類
- 2 基本概念、基本方程和計算方法
- 2.1 動態規劃的基本概念和基本方程
- 2.1.1 階段
- 2.1.2 狀態
- 2.1.3 決策
- 2.1.4 策略
- 2.1.5. 狀態轉移方程
- 3 若干典型問題的動態規劃模型
- 3.1 最短路線問題
- 3.2 生產計劃問題
- 3.3 資源分配問題
- 4 具體的應用實例
1 動態規劃
1.1 動態規劃的發展及研究內容
??動態規劃(dynamic programming)是運籌學的一個分支,是求解決策過程(decision process)最優化的數學方法。20 世紀 50 年代初 R. E. Bellman 等人在研究多階段決策過程(multistep decision process)的優化問題時,提出了著名的最優性原理(principle of optimality),把多階段過程轉化為一系列單階段問題,逐個求解,創立了解決這類過程優化問題的新方法—動態規劃。1957 年出版了他的名著《Dynamic Programming》,這是該領域的第一本著作。
??動態規劃問世以來,在經濟管理、生產調度、工程技術和最優控制等方面得到了廣泛的應用。例如最短路線、庫存管理、資源分配、設備更新、排序、裝載等問題,用動態規劃方法比用其它方法求解更為方便。雖然動態規劃主要用于求解以時間劃分階段的動態過程的優化問題,但是一些與時間無關的靜態規劃(如線性規劃、非線性規劃),只要人為地引進時間因素,把它視為多階段決策過程,也可以用動態規劃方法方便地求解。應指出,動態規劃是求解某類問題的一種方法,是考察問題的一種途徑,而不是一種特殊算法(如線性規劃是一種算法)。因而,它不象線性規劃那樣有一個標準的數學表達式和明確定義的一組規則,而必須對具體問題進行具體分析處理。因此,在學習時,除了要對基本概念和方法正確理解外,應以豐富的想象力去建立模型,用創造性的技巧去求解。
例 1 最短路線問題
??圖 1 是一個線路網,連線上的數字表示兩點之間的距離(或費用)。試尋求一條由 A 到G 距離最短(或費用最省)的路線。
例 2 生產計劃問題
??工廠生產某種產品,每單位(千件)的成本為 1(千元),每次開工的固定成本為 3(千元),工廠每季度的最大生產能力為 6(千件)。經調查,市場對該產品的需求量第一、二、三、四季度分別為 2,3,2,4(千件)。如果工廠在第一、二季度將全年的需求都生產出來,自然可以降低成本(少付固定成本費),但是對于第三、四季度才能上市的產品需付存儲費,每季每千件的存儲費為 0.5(千元)。還規定年初和年末這種產品均無庫存。試制定一個生產計劃,即安排每個季度的產量,使一年的總費用(生產成本和存儲費)最少。
1.2 決策過程的分類
??根據過程的時間變量是離散的還是連續的,分為離散時間決策過程(discrete-time decision process)和連續時間決策過程(continuous-time decision process);根據過程的演變是確定的還是隨機的,分為確定性決策過程(deterministic decision process)和隨機性決策過程(stochastic decision process),其中應用最廣的是確定性多階段決策過程。
2 基本概念、基本方程和計算方法
2.1 動態規劃的基本概念和基本方程
??一個多階段決策過程最優化問題的動態規劃模型通常包含以下要素。
2.1.1 階段
??階段(step)是對整個過程的自然劃分。通常根據時間順序或空間順序特征來劃分階段,以便按階段的次序解優化問題。階段變量一般用k = 1,2,L,n 表示。在例 1 中由 A出發為 k = 1,由 Bi(i = 1,2) 出發為 k = 2 ,依此下去從 Fi(i =1,2) 出發為 k = 6 ,共n = 6個階段。在例 2 中按照第一、二、三、四季度分為k = 1,2,3,4,共四個階段。
2.1.2 狀態
??狀態(state)表示每個階段開始時過程所處的自然狀況。它應能描述過程的特征并且無后效性,即當某階段的狀態變量給定時,這個階段以后過程的演變與該階段以前各階段的狀態無關。通常還要求狀態是直接或間接可以觀測的。
??描述狀態的變量稱狀態變量(state variable)。變量允許取值的范圍稱允許狀態集合(set of admissible states)。用 xk 表示第k 階段的狀態變量,它可以是一個數或一個向量。用 Xk 表示第 k 階段的允許狀態集合。在例 1 中 x2 可取 B1,B2 ,或將 Bi 定義為i(i = 1,2) ,則 x2 = 1或2 ,而 X2 = {1,2}。 n 個階段的決策過程有n +1個狀態變量,xn+1表示 xn 演變的結果。在例 1 中 x7 取 G ,或定義為1,即 x7 = 1。
??根據過程演變的具體情況,狀態變量可以是離散的或連續的。為了計算的方便有時將連續變量離散化;為了分析的方便有時又將離散變量視為連續的。狀態變量簡稱為狀態。
2.1.3 決策
??當一個階段的狀態確定后,可以作出各種選擇從而演變到下一階段的某個狀態,這種選擇手段稱為決策(decision),在最優控制問題中也稱為控制(control)。描述決策的變量稱決策變量(decision variable),變量允許取值的范圍稱允許決策集合(set of admissible decisions)。用uk (xk )表示第k 階段處于狀態 xk 時的決策變量,它是 xk 的函數,用Uk (xk ) 表示 xk 的允許決策集合。在例 1 中u2 (B1 ) 可取C1,C2 或C3 ,可記作u2 (1) = 1,2,3,而U2 (1) = {1,2,3}。決策變量簡稱決策。
2.1.4 策略
??決策組成的序列稱為策略(policy)。由初始狀態 x1 開始的全過程的策略記作p1n (x1 ) ,即
??p1n (x1 ) = {u1 (x1 ),u2 (x2 ),L,un (xn )}. 由第k 階段的狀態 xk 開始到終止狀態的后部子過程的策略記作 pkn (xk ) ,即pkn (xk ) = {uk (xk ),L,un (xn )},k = 1,2,L, n ?1.
??類似地,由第k 到第 j 階段的子過程的策略記作pkj(xk ) = {uk (xk ),L,u j(x j)}. 可供選擇的策略有一定的范圍,稱為允許策略集合(set of admissible policies),用P1n (x1 ),Pkn (xk ),Pkj(xk ) 表示。
2.1.5. 狀態轉移方程
??在確定性過程中,一旦某階段的狀態和決策為已知,下階段的狀態便完全確定。用狀態轉移方程(equation of state transition)表示這種演變規律,寫作
xk +1 = Tk (xk ,uk ),k = 1,2,L,n. (1)
在例 1 中狀態轉移方程為 xk +1 = uk (xk ) 。
例 3 用 lingo 求解例 1 最短路線問題。
model: Title Dynamic Programming; sets: vertex/A,B1,B2,C1,C2,C3,C4,D1,D2,D3,E1,E2,E3,F1,F2,G/:L; road(vertex,vertex)/A B1,A B2,B1 C1,B1 C2,B1 c3,B2 C2,B2 C3,B2 C4, C1 D1,C1 D2,C2 D1,C2 D2,C3 D2,C3 D3,C4 D2,C4 D3, D1 E1,D1 E2,D2 E2,D2 E3,D3 E2,D3 E3, E1 F1,E1 F2,E2 F1,E2 F2,E3 F1,E3 F2,F1 G,F2 G/:D; endsets data: D=5 3 1 3 6 8 7 6 6 8 3 5 3 3 8 4 2 2 1 2 3 3 3 5 5 2 6 6 4 3; L=0,,,,,,,,,,,,,,,; enddata @for(vertex(i)|i#GT#1:L(i)=@min(road(j,i):L(j)+D(j,i))); end縱上所述,如果一個問題能用動態規劃方法求解,那么,我們可以按下列步驟,首先建立起動態規劃的數學模型:
(i)將過程劃分成恰當的階段。
(ii)正確選擇狀態變量 xk ,使它既能描述過程的狀態,又滿足無后效性,同時確
定允許狀態集合 Xk 。
(iii)選擇決策變量uk ,確定允許決策集合Uk (xk ) 。
(iv)寫出狀態轉移方程。
(v)確定階段指標vk (xk ,uk ) 及指標函數Vkn 的形式(階段指標之和,階段指標之
積,階段指標之極大或極小等)。
(vi)寫出基本方程即最優值函數滿足的遞歸方程,以及端點條件。
3 若干典型問題的動態規劃模型
3.1 最短路線問題
?? 對于例 1 一類最短路線問題(shortest Path Problem),階段按過程的演變劃分,狀態由各段的初始位置確定,決策為從各個狀態出發的走向,即有 xk +1 = uk (xk ) ,階段指標為相鄰兩段狀態間的距離dk (xk ,uk (xk )) ,指標函數為階段指標之和,最優值函數f k (xk ) 是由 xk 出發到終點的最短距離(或最小費用),基本方程為
??利用這個模型可以算出例 l 的最短路線為 AB1C2D1E2F2G ,相應的最短距離為 18。
3.2 生產計劃問題
??對于例 2 一類生產計劃問題(Production planning problem),階段按計劃時間自然劃分,狀態定義為每階段開始時的儲存量 xk ,決策為每個階段的產量uk ,記每個階段的需求量(已知量)為dk ,則狀態轉移方程為
xk +1 = xk + uk ? dk , xk ≥ 0,k = 1,2,L,n. (5)
設每階段開工的固定成本費為a ,生產單位數量產品的成本費為b ,每階段單位數量產品的儲存費為c ,階段指標為階段的生產成本和儲存費之和,即
??指標函數Vkn 為vk 之和。最優值函數 f k (xk ) 為從第k 段的狀態 xk 出發到過程終結的最小費用,滿足
??其中允許決策集合Uk 由每階段的最大生產能力決定。若設過程終結時允許存儲量為xn0+1,則終端條件是
f n+1 (xn0+1 ) = 0. (7)
(5)~(7)構成該問題的動態規劃模型。
3.3 資源分配問題
??一種或幾種資源(包括資金)分配給若干用戶,或投資于幾家企業,以獲得最大的效益。資源分配問題(resource allocating Problem)可以是多階段決策過程,也可以是靜態規劃問題,都能構造動態規劃模型求解。下面舉例說明。
例 5 機器可以在高、低兩種負荷下生產。u 臺機器在高負荷下的年產量是 g(u) ,在低負荷下的年產量是 h(u) ,高、低負荷下機器的年損耗率分別是 a1 和 b1 (0 < b1 < a1 < 1)。現有 m 臺機器,要安排一個 n 年的負荷分配計劃,即每年初決定多少臺機器投入高、低負荷運行,使n 年的總產量最大。如果進一步假設 g(u) = αu , h(u) = βu (α > β > 0),即高、低負荷下每臺機器的年產量分別為α 和 β ,結果將有什么特點。
解 年度為階段變量k = 1,2,L, n 。狀態 xk 為第k 年初完好的機器數,決策uk 為 第k 年投入高負荷運行的臺數。當 xk 或uk 不是整數時,將小數部分理解為一年中正常工作時間或投入高負荷運行時間的比例。
機器在高、低負荷下的年完好率分別記為 a 和 b ,則 a = 1? a1 , b = 1? b1 ,有a < b 。因為第k 年投入低負荷運行的機器臺數為 xk ? uk ,所以狀態轉移方程是
xk+1 = auk + b(xk ? uk ) (8)
階段指標vk 是第k 年的產量,有
vk (xk ,uk ) = g(uk ) + h(xk ? uk ) (9)
指標函數是階段指標之和,最優值函數 f k (xk ) 滿足
及自由終端條件
f n+1 (xn+1 ) = 0, 0 ≤ xn+1 ≤ m. (11)
當vk 中的 g, h 用較簡單的函數表達式給出時,對于每個 k 可以用解析方法求解極值問題。特別,若 g(u) = αu ,h(u) = βu ,(10)中的[vk (xk ,uk ) + f k+1 (xk )] 將是uk的線性函數,最大值點必在區間 0 ≤ uk ≤ xk 的左端點uk = 0 或右端點uk = xk 取得,即每年初將完好的機器全部投入低負荷或高負荷運行。
4 具體的應用實例
例 6 設某工廠有 1000 臺機器,生產兩種產品 A、B ,若投入 x 臺機器生產 A 產品,則純收入為5x ,若投入 y 臺機器生產 B 種產品,則純收入為4y ,又知:生產 A 種產品機器的年折損率為 20%,生產 B 產品機器的年折損率為 10%,問在 5 年內如何安排各年度的生產計劃,才能使總收入最高?
解 年度為階段變量 k = 1,2,3,4,5。
令 xk 表示第 k 年初完好機器數,uk 表示第 k 年安排生產 A 種產品的機器數,則xk ? uk 為第k 年安排生產 B 種產品的機器數,且0 ≤ uk ≤ xk 。
則第 k +1年初完好的機器數
xk+1 = (1? 0.2)uk + (1? 0.1)(xk ? uk ) = 0.9xk ? 0.1uk (12)
令vk (xk ,uk ) 表示第 k 年的純收入, f k (xk ) 表示第 k 年初往后各年的最大利潤之和。
顯然f 6 (x6 ) = 0 (13)
則
注: x5 = 518.4臺中的 0.4 臺應理解為有一臺機器只能使用 0.4 年將報廢。
例 7 求解下面問題
解: 按問題的變量個數劃分階段,把它看作為一個三階段決策問題。設狀態變量為 x1 , x2 , x3 , x4 ,并記 x1 = c ;取問題中的變量u1 ,u2 ,u3 為決策變量;各階段指標函數按乘積方式結合。令最優值函數fk(xk)表示第k 階段的初始狀態為 xk ,從k 階段到 3階段所得到的最大值。
由于 x1已知,因而按計算的順序反推算,可得各階段的最優決策和最優值。即
總結
以上是生活随笔為你收集整理的【数学建模】数学建模学习4---动态规划(例题+matlab代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 左右滑动实现activity之间的跳转
- 下一篇: matlab复变函数应用,matlab在