【管理運籌學】背誦手冊(五)| 動態規劃

五、動態規劃

基本概念

階段(Stage):將所給問題的過程,按時間或空間特征分解成若干相互聯系的階段,以便按次序去求解每階段的解,常用字母 k k k 表示。

狀態(State):各階段開始時的客觀條件叫做狀態。描述各階段狀態的變量稱為狀態變量,常用 s k s_k sk? 表示第 k k k 階段的狀態變量,狀態變量 s k s_k sk? 的取值集合稱為狀態集合,用 S k S_k Sk? 表示。狀態變量應具有無后效性:某階段狀態給定后,這個階段以后過程的發展不受這段以前各狀態的影響。

決策和策略(Decision and Policy):各階段狀態確定后,就可以作不同的決定,從而確定下一階段的狀態,這種決定稱為決策。表示決策的變量稱為決策變量,常用 u k ( s k ) u_k(s_k) uk?(sk?) 表示,允許的決策集合常用 D k ( s k ) D_k(s_k) Dk?(sk?) 表示。各階段決策確定后,整個問題的決策序列就構成一個策略。

狀態轉移方程:如果給定了第 k k k 階段的狀態 s k s_k sk? ,本階段決策為 u k ( s k ) u_k(s_k) uk?(sk?) ,則第 k + 1 k+1 k+1 階段的狀態 s k + 1 s_{k+1} sk+1? 也就完全確定,它們的關系就稱為狀態轉移方程。

指標函數:用于衡量所選定策略優劣的數量指標稱為指標函數。直接指標函數表示某階段的決策產生的效益,常用 d k ( u k ) d_k(u_k) dk?(uk?) 表示。最優指標函數表示從第 k k k 階段狀態為 s k s_k sk? 采用最優策略時,后部過程的最優收益值,常用 f k ( s k ) f_k(s_k) fk?(sk?) 表示。

五要素

動態規劃模型五要素:

  1. 將問題按時空特征恰當地劃分為若干個階段。
  2. 正確地規定狀態變量 s k s_k sk? ,使得它既能描述過程的演變,又具有無后效性。
  3. 正確地規定決策變量 u k u_k uk? 以及每階段的允許決策集合 D k ( s k ) D_k(s_k) Dk?(sk?) .
  4. 正確寫出狀態轉移方程 s k + 1 = g k ( s k , u k ) s_{k+1}=g_k(s_k,u_k) sk+1?=gk?(sk?,uk?)
  5. 正確地定義各階段的直接指標函數 d k ( s k , u k ) d_k(s_k,u_k) dk?(sk?,uk?) 和后部子過程的最優指標函數 f k ( s k ) f_k(s_k) fk?(sk?) ,并寫出基本方程(以 max ? \max max 和相加求收益為例): { f k ( s k ) = max ? { d k ( s k , u k ) + f k + 1 ( s k + 1 ) } , k = n , n ? 1 , ? , 1 f n + 1 ( s n + 1 ) = 0 , 邊界條件 \begin{cases} f_k(s_k)=\max\{d_k(s_k,u_k)+f_{k+1}(s_{k+1})\} &,k=n,n-1,\cdots,1 \\ f_{n+1}(s_{n+1})=0&,邊界條件\end{cases} {fk?(sk?)=max{dk?(sk?,uk?)+fk+1?(sk+1?)}fn+1?(sn+1?)=0?,k=n,n?1,?,1,邊界條件?

生產存儲問題

做題時,我們可也按照動態規劃模型五要素進行建模,以生產與儲存問題為例。

在這里插入圖片描述

解: 將問題劃分為 4 4 4 個階段( k = 1 , 2 , 3 , 4 k=1,2,3,4 k=1,2,3,4),每個階段表示一個時期;狀態變量 s k s_k sk? 表示第 k k k 階段開始時的庫存量;決策變量 x k x_k xk? 表示第 k k k 階段的產品生產量, d k d_k dk? 表示第 k k k 階段的產品需求量,則狀態轉移方程為: s k + 1 = s k + x k ? d k s_{k+1}=s_k+x_k-d_k sk+1?=sk?+xk??dk? 直接指標函數 g k ( x k ) g_k(x_k) gk?(xk?) 表示第 k k k 階段決策為 x k x_k xk? 時的成本,包括生產成本 c k ( x k ) c_k(x_k) ck?(xk?) 和存儲成本 m k ( x k ) m_k(x_k) mk?(xk?) 。其中, c k ( x k ) = { 0 , x k = 0 3 + x k , x k = 1 , 2 , ? , 6 ∞ , x k > 6 c_k(x_k)=\begin{cases} 0&,x_k=0\\ 3+x_k&,x_k=1,2,\cdots,6\\ \infty&,x_k>6 \end{cases} ck?(xk?)=? ? ??03+xk??,xk?=0,xk?=1,2,?,6,xk?>6? m k ( x k ) = 0.5 ( s k + x k ? d k ) m_k(x_k)=0.5(s_k+x_k-d_k) mk?(xk?)=0.5(sk?+xk??dk?) 。最優指標函數 f k ( s k ) f_k(s_k) fk?(sk?) 表示第 k k k 階段狀態為 s k s_k sk? 采用最優策略時,后部過程的最小成本,則遞推基本方程為: f k ( s k ) = { min ? { c k ( x k ) + m k ( x k ) + f k + 1 ( s k + 1 ) } , k = 4 , 3 , 2 , 1 f 5 ( s 5 ) = 0 f_k(s_k)=\begin{cases} \min\{c_k(x_k)+m_k(x_k)+f_{k+1}(s_{k+1})\},k=4,3,2,1\\ f_5(s_5)=0\end{cases} fk?(sk?)={min{ck?(xk?)+mk?(xk?)+fk+1?(sk+1?)},k=4,3,2,1f5?(s5?)=0? 隨后便是每個階段的求解了,最關鍵的就是確定 s k s_k sk? x k x_k xk? 的取值范圍,需要瞻前顧后,考慮每階段的生產能力以及最后階段的庫存要求。

設備更新問題

對于設備更新問題,教材上用了別的符號,讓人難以和之前的聯系起來,但其實它也可以用我們常見的符號表達的。用一個實際題目來說明。

在這里插入圖片描述
在這里插入圖片描述
解: 將問題分為 5 個階段( k = 1 , 2 , 3 , 4 , 5 k=1,2,3,4,5 k=1,2,3,4,5),每個階段代表一年。狀態變量 s k s_k sk? 表示第 k k k 階段初機器的役齡,決策變量 x k x_k xk? 表示第 k k k 階段時保留(K)還是更新(R)。則狀態轉移方程為: s k + 1 = { s k + 1 , x k = K 1 , x k = R s_{k+1}=\begin{cases} s_k+1&,x_k=K\\ 1&,x_k=R \end{cases} sk+1?={sk?+11?,xk?=K,xk?=R? 直接指標函數 g k ( x k ) g_k(x_k) gk?(xk?) 表示第 k k k 階段做出決策 x k x_k xk? 的收入, I k ( s k ) I_k(s_k) Ik?(sk?) 表示第 k k k 階段役齡為 s k s_k sk? 的機器帶來的收入, O k ( s k ) O_k(s_k) Ok?(sk?) 表示第 k k k 階段役齡為 s k s_k sk? 的機器的運行費用, C k ( s k ) C_k(s_k) Ck?(sk?) 表示第 k k k 階段役齡為 s k s_k sk? 的機器更新費用,則有 g k ( x k ) = { I k ( s k ) ? O k ( s k ) , x k = K I k ( 0 ) ? O k ( 0 ) ? C k ( s k ) , x k = R g_k(x_k)=\begin{cases} I_k(s_k)-O_k(s_k)&,x_k=K\\ I_k(0)-O_k(0)-C_k(s_k)&,x_k=R \end{cases} gk?(xk?)={Ik?(sk?)?Ok?(sk?)Ik?(0)?Ok?(0)?Ck?(sk?)?,xk?=K,xk?=R? 最優指標函數 f k ( s k ) f_k(s_k) fk?(sk?) 表示第 k k k 階段役齡為 s k s_k sk? 的機器采用最優策略時,后部過程的最大收入,可寫出遞推基本方程為: f k ( s k ) = { max ? { g k ( x k ) + f k + 1 ( s k + 1 ) } , k = 5 , 4 , 3 , 2 , 1 f 6 ( s 6 ) = 0 f_k(s_k)=\begin{cases} \max\{g_k(x_k)+f_{k+1}(s_{k+1})\},k=5,4,3,2,1\\ f_6(s_6)=0\end{cases} fk?(sk?)={max{gk?(xk?)+fk+1?(sk+1?)},k=5,4,3,2,1f6?(s6?)=0? 剩下就是根據表中的數據代入遞推方程了。

靜態規劃問題

動態規劃方法還可以用來求解一些靜態規劃問題,如整數規劃和非線性規劃問題等。一般將約束條件的右端資源量作為狀態變量,決策變量為原規劃問題的決策變量,直接指標函數為目標函數對應的部分。

有時候最后一個階段的直接指標函數較為復雜,可以換一換次序,簡化計算。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165256.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165256.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165256.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java實現連接linux(上傳文件,執行shell命令等)

1 導入pom <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency> 2 編寫配置類 package com.budwk.app.atest;import com.budwk.app.common.config.AppExceptio…

計算機網絡之網絡層

一、概述 主要任務是實現網絡互連&#xff0c;進而實現數據包在各網絡之間的傳輸 1.1網絡引入的目的 從7層結構上看&#xff0c;網絡層下是數據鏈路層 從4層結構上看&#xff0c;網絡層下面是網絡接口層 至少我們看到的網絡層下面是以太網 以太網解決了什么問題&#xff1f; 答…

【Python 千題 —— 基礎篇】刪除列表值

題目描述 題目描述 刪除列表的指定值。有一個列表 [1, 3, 5, 2, 44, 1, 9, 10, 32] &#xff0c;請使用 for 循環刪除該列表中與 [44, 1, 9] 列表相同的值&#xff0c;并輸出該列表。 輸入描述 無輸入。 輸出描述 輸出操作后的列表。 示例 示例 ① 輸出&#xff1a; …

記錄:通過day.js獲取兩個日期相差的時間,并轉化為年月日的格式

day.js這個日期庫真的是很不錯的日期庫&#xff0c;足夠滿足日常的開發需求。 Day.js中文網 (fenxianglu.cn) 需求&#xff1a;獲取兩個日期相差的時間&#xff0c;轉化為年月日的形式&#xff1b;話不多少&#xff0c;直接放代碼 import dayjs from "dayjs"; imp…

計算機網絡之應用層

一、概述 引入目的&#xff1a; 為了方便用戶去使用&#xff1b; 該如何方便用戶使用網絡呢&#xff0c;即怎樣幫助用戶使用網絡&#xff1f; 1.用戶需要知道網絡資源所在的位置 2.網絡上資源一定是在資源子網的主機上 3.資源子網上的主機&#xff0c;在通信子網中用IP地…

qt-C++筆記之終端Ctrl+C關閉界面和ROS節點

qt-C筆記之終端CtrlC關閉界面和ROS節點 code review! 文章目錄 qt-C筆記之終端CtrlC關閉界面和ROS節點1.運行2.main.cpp3.main_window.hpp 1.運行 2.main.cpp 3.main_window.hpp

vue-router 路由權限,路由導航守衛

addRouter() 添加路由 使用場景 列如&#xff1a;菜單權限的分配&#xff08;管理員與用戶不一致&#xff09; 根據后臺返回 參數 定義isAdmin根據isAdmin 分配 let isAdmin true // 添加路由 可以傳參 一級路由名稱 來添加二級路由 if (isAdmin) {router.addRoute({path: /…

SpringCloud 微服務全棧體系(十六)

第十一章 分布式搜索引擎 elasticsearch 六、DSL 查詢文檔 elasticsearch 的查詢依然是基于 JSON 風格的 DSL 來實現的。 1. DSL 查詢分類 Elasticsearch 提供了基于 JSON 的 DSL&#xff08;Domain Specific Language&#xff09;來定義查詢。常見的查詢類型包括&#xff1…

P1030 [NOIP2001 普及組] 求先序排列

1.先找根&#xff08;后序最后一個元素&#xff09; 2.以根分中序為兩個中序即&#xff1a; (相當于分為兩個子樹) A中序 對應->A后序 &#xff08;長度對應&#xff09; B中序 對應->B后序 &#xff08;長度對應&#xff09; 遞歸循壞即可&#xff08;中序長度小…

【數據結構(C語言)】淺談棧和隊列

目錄 文章目錄 前言 一、棧 1.1 棧的概念及結構 1.2 棧的實現 1.2.1. 支持動態增長的棧的結構 1.2.2 初始化棧 1.2.3 入棧 1.2.4 出棧 1.2.5 獲取棧頂元素 1.2.6 獲取棧中有效元素個數 1.2.7 檢查棧是否為空 1.2.8 銷毀棧 二、隊列 2.1 隊列的概念及結構 2.2 隊…

Javaweb之前后臺分離開發介紹的詳細解析

2.1 前后臺分離開發介紹 在之前的課程中&#xff0c;我們介紹過&#xff0c;前端開發有2種方式&#xff1a;前后臺混合開發和前后臺分離開發。 前后臺混合開發&#xff0c;顧名思義就是前臺后臺代碼混在一起開發&#xff0c;如下圖所示&#xff1a; 這種開發模式有如下缺點&a…

守護進程的理解

什么是守護進程 daemon False # 是否以守護進程方式運行&#xff0c;True守護&#xff0c;False 非守護 在這段代碼中&#xff0c;daemon 變量的值決定了進程是否以守護進程方式運行。如果 daemon 的值為 True&#xff0c;則表示進程將以守護進程方式運行&#xff0c;否則為…

使用vcpkg安裝庫失敗的解決方法

1、前言 vcpk是是一款開源的c/c庫管理工具&#xff0c;尤其是在windows平臺&#xff0c;可以幫助我們很好的管理各種依賴包。 在windows環境做c/c開發的人應該都深有體會&#xff0c;有時候編譯需要下載一堆依賴庫&#xff0c;導致搭建編譯環境特別麻煩。但是&#xff0c;通過v…

前端 vue 面試題(二)

文章目錄 如何讓vue頁面重新渲染組件間通信vue為什么要mutation、 action操作插槽、具名插槽、作用域插槽vue編譯使用的是什么庫&#xff1f;vue怎么實現treeshakingwebpack實現treeshaking為什么只有es module 能支持 tree shaking mixin 的作用mixin的底層原理nexTick原理vue…

預處理機制

跟著肯哥&#xff08;不是我&#xff09;學預處理機制 預處理類別 宏定義&#xff1a;#define 將文本替換為表達式或語句 條件編譯&#xff1a;#ifdef、#ifndef和#if、#elif、#endif 根據標識符是否被定義選擇編譯代碼 頭文件包含&#xff1a;#include 將其他文件&#x…

Jmeter怎么實現接口關聯?

用于接口測試時&#xff0c;后一個接口經常需要用到前一次接口返回的結果&#xff0c;應該如何獲取前一次請求的結果值&#xff0c;應用于后一個接口呢&#xff0c;拿一個登錄的例子來說明如何獲取。 1、打開jmeter&#xff0c;新建一個測試計劃&#xff0c;在測試計劃里新建一…

將所有圖片居中對齊

Ctrl h 調出替換框 ^g表示所有圖片 格式里面選擇段落 全部替換

winlogbeat采集windows日志

下載鏈接 https://www.elastic.co/cn/downloads/past-releases/winlogbeat-7-16-2 配置文件 # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.227.160:9200&…

Vue3中如何響應式解構 props

目錄 1&#xff0c;前言2&#xff0c;解決2.1&#xff0c;利用插件&#xff0c;實現編譯時轉換2.2&#xff0c;toRef 和 toRefs 1&#xff0c;前言 Vue3 中為了保持響應性&#xff0c;始終需要以 props.x 的方式訪問這些 prop。這意味著不能夠解構 defineProps 的返回值&#…

Navicat 技術指引 | 適用于 GaussDB 的數據遷移工具

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持對 GaussDB 主備版的管理和開發功能。它不僅具備輕松、便捷的可視化數據查看和編輯功能&#xff0c;還提供強大的高階功能&#xff08;如模型、結構同步、協同合作、數據遷移等&#xff09;&#xff0c;這…