【報童模型】隨機優化問題二次規劃

面對需求的不確定性,報童模型是做庫存優化的常見模型。而標準報童模型假設價格是固定的,此時求解一個線性規劃問題,可以得到最優訂貨量,這種模型存在局限性。因為現實世界中價格與需求存在一定的關系,本文假設需求q是價格p的線性函數,基于歷史需求數據學習回歸直線的參數并計算擬合殘差,帶入到報童模型中,此時的報童模型變成一個二次規劃問題,其目標函數是關于價格p是二次的。

方法

為提高報童模型的準確性,使用SAA算法解決隨機優化問題,并與其他方法做對比。

對標準報童模型做的三個擴展

擴展1:允許rush order

當售賣當天需求量過高時,允許報童緊急訂報,只是價格g比一般訂購價格c稍高,即g>c
如果定貨太多,那么每份報紙會產生持貨成本t,特別地,如果允許以一定價格回退給廠商,那么t<0 。但在這個文章中,僅考慮t>0的情況。
符號說明:
單份報紙的售價為p;
訂貨量是q;
目標函數是
在這里插入圖片描述

擴展2:需求與價格呈線性相關

假設需求與價格的線性回歸模型如下
D = β 0 + β 1 p + ? i D=\beta_0+\beta_1p+\epsilon_i D=β0?+β1?p+?i?
根據給定的數據集(含價格和需求量,即 { ( p i , D i ) ∣ i = 1 , 2 , . . . , n } \{(p_i,D_i)|i=1,2,...,n\} {(pi?,Di?)i=1,2,...,n}),找出最佳擬合線性回歸函數的參數。假設干擾項 ? i \epsilon_i ?i?具有隨機性,根據歷史數據 { ( p i , D i ) ∣ i = 1 , 2 , . . . , n } \{(p_i,D_i)|i=1,2,...,n\} {(pi?,Di?)i=1,2,...,n}學習到參數 β 0 , β 1 \beta_0,\beta_1 β0?,β1?,計算殘差值 { ? i ∣ i = 1 , 2 , . . . , n } \{\epsilon_i|i=1,2,...,n\} {?i?i=1,2,...,n}

  • 對于價格固定的標準報童模型,求最優訂貨量
    如果新價格p出現,將計算好的殘差值 { ? i ∣ i = 1 , 2 , . . . , n } \{\epsilon_i|i=1,2,...,n\} {?i?i=1,2,...,n}和新價格p帶入模型 D = β 0 + β 1 p + ? i D=\beta_0+\beta_1p+\epsilon_i D=β0?+β1?p+?i?,可以得到新價格p所對應的需求量估計值 { D i ^ ∣ i = 1 , 2 , . . . , n } \{\hat{D_i}|i=1,2,...,n\} {Di?^?i=1,2,...,n},這些估計值會帶入到標準報童模型中,求解該線性規劃問題,從而得到最優訂貨量。
    關于計算需求量估計值的進一步解釋,比如:估計參數 β 0 = 1000 , β 1 = ? 2 \beta_0=1000,\beta_1=-2 β0?=1000,β1?=?2,現有兩個樣本的擬合殘差是15和-9,對于新價格2來說,需求量估計值有
    1000 ? 2 ? 2 + 15 = 1011 1000-2*2+15=1011 1000?2?2+15=1011,
    1000 ? 2 ? 2 ? 9 = 987 1000-2*2-9=987 1000?2?2?9=987
  • 對于價格不固定的擴展報童模型,求最優訂貨量和最優價格
    此時,目標函數
    在這里插入圖片描述
    p ? D i p*D_i p?Di?就會變成 p ? ( β 0 + β 1 p + ? i ) p*(\beta_0+\beta_1p+\epsilon_i) p?(β0?+β1?p+?i?),這是價格p的二次函數。
    注意:上面目標函數中的 D i D_i Di?指的是新價格p所對應的第i個需求估計值,而不是原數據集中第i個樣本的需求值。
    我覺得沒有疑問了,這本身就是一個關于價格p的二次優化問題。

注:
為了求解這個問題,引入啞變量 h i h_i hi?,表示第i天成本的負值。如此一來,目標函數——利潤函數可以表示為收益+成本負值的平均,其中收益指 p ? D i p*D_i p?Di?,成本負值指 h i h_i hi?
在這里插入圖片描述

在這里插入圖片描述

擴展3:分析數據集對最優訂貨量和最優價格的影響(最優訂購量、最優價格的敏感性分析)

對原數據集做重采樣,計算最優訂貨量、最優價格、對應的期望利潤值。

任務

  1. 根據給定數據集,估計出需求與價格之間的線性回歸方程;
  2. 給定參數c=0.5,g=0.75,t=0.15,利用殘差數據 { ? i ∣ i = 1 , 2 , . . . , n } \{\epsilon_i|i=1,2,...,n\} {?i?i=1,2,...,n},求價格p=1時的需求量估計值 { D i ^ ∣ i = 1 , 2 , . . . , n } \{\hat{D_i}|i=1,2,...,n\} {Di?^?i=1,2,...,n}
  3. 求價格p=1時的最優訂貨量(這是一個線性規劃問題);
  4. 假設價格不是固定的,將需求量與價格的線性回歸方程帶入到報童模型中,解QP(二次規劃問題,目標函數含價格的平方項),得最優訂貨量、最優價格;
  5. 分析最優價格、最優訂貨量是否對數據集敏感。對原數據集做重采樣,重新估計需求與價格之間的線性回歸函數參數 ,求最優價格和最優訂貨量;
  6. 重復上述重采樣、擬合操作,得到多組最優訂貨量和最優價格;為得到的最優訂貨量、最優價格、期望利潤繪制直方圖,觀察統計規律。

建模

價格固定時

下面是思路,我用黃色熒光筆標了步驟,即
如果新價格p出現,將計算好的殘差值 { ? i ∣ i = 1 , 2 , . . . , n } \{\epsilon_i|i=1,2,...,n\} {?i?i=1,2,...,n}和新價格p帶入模型 D = β 0 + β 1 p + ? i D=\beta_0+\beta_1p+\epsilon_i D=β0?+β1?p+?i?,可以得到新價格p所對應的需求量估計值 { D i ^ ∣ i = 1 , 2 , . . . , n } \{\hat{D_i}|i=1,2,...,n\} {Di?^?i=1,2,...,n},這些估計值會帶入到標準報童模型中,求解該線性規劃問題,從而得到最優訂貨量。
在這里插入圖片描述
在這里插入圖片描述
上述模型的含義:目標函數是最大化利潤,引入啞變量 h i h_i hi?表示第’i天的成本負值。
上面畫黃線的約束表示:不管需求量大于還是小于訂貨量,利潤都大于 h i h_i hi?。換言之,限制利潤(不管需求量大于還是小于訂貨量)大于等于一個變量,這個變量大于等于負無窮。
??為什么成本負值數組h的約束不是 0 > h > ? inf ? 0>h>-\inf 0>h>?inf 做實驗的時候,加上試試。會影響結果
將上述約束化簡成Gurobi建模所需要的形式(如下圖的藍筆)
注:“Gurobi建模所需要的形式”是指“明確哪些是決策變量,哪些是決策變量的系數,哪些是右端項”,這里的決策變量有 q , h 1 , . . . h N q,h_1,...h_N q,h1?,...hN?
化簡步驟見圖中黑筆
在這里插入圖片描述

價格不固定時

我用藍筆標注了步驟:
首先,獲取需求-價格數據集,估計線性回歸參數并計算殘差數據;
接著,把 D = β 0 + β 1 p + ? i D=\beta_0+\beta_1p+\epsilon_i D=β0?+β1?p+?i?帶入到標準報童模型中,會得到一個二次規劃問題。
在這里插入圖片描述

將之前的擬合結果——殘差數據、擬合函數參數等,帶入到上述模型中,得到需求量估計值 D i D_i Di?,得到如下模型:

記錄一個我沒看懂的地方。我覺得作者的轉換并沒有把二次約束轉成線性約束啊,難道是我對“二次規劃”的定義理解出錯了?我以為的二次規劃是,目標函數是二次的,約束是一次的 數學優化問題。
在這里插入圖片描述
關于上圖的問題,我在紙上列了一下,作者的Gurobi模型應該是把上面兩個約束的二次項 p 2 p^2 p2拿掉了(用報告里面的話說:拿到目標函數中了)。
??為什么可以直接拿掉呢
關于上面的約束如何化簡成jupyter文件中Gurobi模型,我在草稿紙上簡單列了一下,藍色熒光筆標注的是Gurobi建模時所用的約束。
約束1:
在這里插入圖片描述
約束2:
在這里插入圖片描述

上圖還有一個問題是,目標函數中決策變量 h i h_i hi?的系數應該是1。這一點可以從兩個地方看出來:第一,老師給的作業說明(見上面“擴展2”中, h i h_i hi?的含義說明——成本負值);第二,作者的Gurobi建模obj數組中目標函數系數的指定。

最優解的穩定性分析

目標:探究使用不同的數據集是否會影響到最優解——最優價格和最優訂貨量
做法:對原數據集做1000次重采樣,每次采樣隨機抽取99組樣本形成新數據集。然后,針對新數據集,計算并收集最優訂貨量和最優價格,以及對應的最優利潤expect_profit。繪制最優訂貨量、最優價格、最優價格的分布直方圖,發現大致服從正態分布,且最優價格與之前LP中的預定價格1相差不大,expect_profit的均值也與之前LP的expect_profit相差不大。

注:新數據集與原數據集樣本順序是不同的。(我覺得這里有些不妥……應該設計新數據集是原數據集的子集,然后觀察最優解的統計規律)

我給這個報告添加了一個conclusion,如下圖
在這里插入圖片描述

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

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

相關文章

LNMP環境介紹和搭建

一.LNMP簡介 1.含義 2.工作原理 二.部署LNMP環境 1.Nginx環境 &#xff08;1&#xff09;上傳nginx包&#xff0c;下載編譯安裝工具并解包到指定目錄&#xff08;tar 參數 tar包 - C 目錄路徑&#xff09; &#xff08;2&#xff09; 開始編譯安裝&#xff0c;每次編譯后…

nbcio-boot升級到3.1后出現online表單新增報錯

nbcio-boot升級springboot、mybatis-plus和JSQLParser后出現新增online表單的時候報錯&#xff0c;如下&#xff1a; 2023-08-13 21:18:01.292 [http-nio-8080-exec-12] [1;31mERROR[0;39m [36mo.jeecg.common.exception.JeecgBootExceptionHandler:69[0;39m - Handler dispat…

【JVM】JVM垃圾收集器

文章目錄 什么是JVM垃圾收集器四種垃圾收集器&#xff08;按類型分&#xff09;1.串行垃圾收集器(效率低&#xff09;2.并行垃圾收集器(JDK8默認使用此垃圾回收器&#xff09;3.CMS&#xff08;并發&#xff09;垃圾收集器(只針對老年代垃圾回收的&#xff09;4.G1垃圾回收器(在…

設計模式之七:適配器模式與外觀模式

面向對象適配器將一個接口轉換成另一個接口&#xff0c;以符合客戶的期望。 // 用火雞來冒充一下鴨子class Duck { public:virtual void quack() 0;virtual void fly() 0; };class Turkey { public:virtual void gobble() 0;virtual void fly() 0; };class TurkeyAdapter :…

利用爬蟲爬取圖片并保存

1 問題 在工作中&#xff0c;有時會遇到需要相當多的圖片資源&#xff0c;可是如何才能在短時間內獲得大量的圖片資源呢&#xff1f; 2 方法 我們知道&#xff0c;網頁中每一張圖片都是一個連接&#xff0c;所以我們提出利用爬蟲爬取網頁圖片并下載保存下來。 首先通過網絡搜索…

Linux 1.2.13 -- IP分片重組源碼分析

Linux 1.2.13 -- IP分片重組源碼分析 引言為什么需要分片傳輸層是否存在分段操作IP分片重組源碼分析ip_createip_findip_frag_createip_doneip_glueip_freeip_expireip_defragip_rcv 總結 本文源碼解析參考: 深入理解TCP/IP協議的實現之ip分片重組 – 基于linux1.2.13 計網理論…

樹莓派RP2040 用Arduino IDE安裝和編譯

目錄 1 Arduino IDE 1.1 IDE下載 1.2 安裝 arduino mbed os rp2040 boards 2 編程-燒錄固件 2.1 打開點燈示例程序 2.2 選擇Raspberry Pi Pico開發板 2.3 編譯程序 2.4 燒錄程序 2.4.1 Raspberry Pi Pico開發板首次燒錄提示失敗 2.4.2 解決首次下載失敗問題 2.4.2.1…

curl 快速入門使用教程

你好&#xff0c;我是悅創。 curl 是一個強大的命令行工具&#xff0c;用于獲取或發送數據&#xff0c;包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP 或 FILE 協議等。在本教程中&#xff0c;我們將主要介紹如何使用 curl 進行 HTTP/HTTPS 請求。 1. 安…

Java基礎五之for循環小練習

加油,新時代大工人&#xff01; 一、Java基礎之算術運算符 二、Java基礎之類型轉換 三、Java基礎之【字符串操作以及自增自減操作】 四、Java基礎之賦值運算符和關系運算符 package base;import java.io.InputStream; import java.util.Scanner;/*** author wh* date 2023年08…

無涯教程-Perl - recv函數

描述 This function receives a message on SOCKET attempting to read LENGTH bytes, placing the data read into variable SCALAR.The FLAGS argument takes the same values as the recvfrom( ) system function, on which the function is based. When communicating wit…

論文淺嘗 | 面向多步推理任務專業化較小語言模型

筆記整理&#xff1a;張沈昱&#xff0c;東南大學碩士&#xff0c;研究方向為自然語言處理 鏈接&#xff1a;https://github.com/FranxYao/FlanT5-CoT-Specialization 動機 本文的動機是探索如何在多步推理任務中通過大型語言模型提升較小的語言模型的性能。作者認為&#xff0…

云開發超多功能工具箱組合微信小程序源碼/附帶流量主

介紹&#xff1a; 這是一款云開發超多功能工具箱組合微信小程序源碼附帶流量主功能&#xff0c;小程序內包含了40余個功能&#xff0c;堪稱全能工具箱了&#xff0c;大致功能如下&#xff1a; 證件照制作 | 垃圾分類查詢 | 個性簽名制作 二維碼生成丨文字九宮格 | 手持彈幕丨…

總結synchronized

一.synchronized的特性 synchronized 是 Java 語言中內置的關鍵字&#xff0c;用于實現線程同步&#xff0c;以確保多線程環境下共享資源的安全訪問。 互斥性&#xff1a;synchronized保證了同一時刻只有一個線程可以執行被synchronized修飾的代碼塊或方法。當一個線程進入sync…

使用GraphQL在Postman中進行API測試

GraphQL 是一種用于API的開源數據查詢和操作語言&#xff0c;用于API的查詢語言和運行時。它使客戶端能夠精確地指定其數據需求&#xff0c;并獲得預測性地結果。GraphQL旨在提高API的效率、靈活性和可靠性。 Postman 是一款用于API開發的強大工具&#xff0c;它支持REST和Gra…

LVS簡介及LVS-DR搭建

目錄 一. LVS簡介&#xff1a; 1.簡介 2. LVS工作模式&#xff1a; 3. LVS調度算法&#xff1a; 4. LVS-DR集群介紹&#xff1a; 二.LVS-DR搭建 1.RS配置 1&#xff09;兩臺RS&#xff0c;需要下載好httpd軟件并準備好配置文件 2&#xff09;添加虛擬IP&#xff08;vip&…

Python爬蟲——requests_cookie登陸古詩文網

尋找登陸需要的參數 __VIEWSTATE:aiMG0UXAfCzak10C7436ZC/RXoZbM2lDlX1iU/4wjjdUNsW8QUs6W2/3M6XIKagQZrC7ooD8Upj8uCnpQMXjDAp6fS/NM2nGhnKO0KOSXfT3jGHhJAOBouMI3QnlpJCQKPXfVDJPYwh169MGLFC6trY __VIEWSTATEGENERATOR: C93BE1AE from: http://so.gushiwen.cn/user/collect.…

linux 命令--查看網絡端口命令

使用 netstat 檢查端口 netstat 是一個命令行工具&#xff0c;可以提供有關網絡連接的信息。 netstat - atulnp會顯示所有端口和所有對應的程序&#xff0c;用grep管道可以過濾出想要的字段 -a &#xff1a;all&#xff0c;表示列出所有的連接&#xff0c;服務監聽&#xff…

Android JNI開發從0到1,java調C,C調Java,保姆級教程詳解

前些天發現了一個蠻有意思的人工智能學習網站,8個字形容一下"通俗易懂&#xff0c;風趣幽默"&#xff0c;感覺非常有意思,忍不住分享一下給大家。 &#x1f449;點擊跳轉到教程 第一步首先配置Android studio的NDK開發環境&#xff0c;首先在Android studio中下載NDK…

如何防止CSRF攻擊

背景 隨著互聯網的高速發展&#xff0c;信息安全問題已經成為企業最為關注的焦點之一&#xff0c;而前端又是引發企業安全問題的高危據點。在移動互聯網時代&#xff0c;前端人員除了傳統的 XSS、CSRF 等安全問題之外&#xff0c;又時常遭遇網絡劫持、非法調用 Hybrid API 等新…

Java超級瑪麗小游戲制作過程講解 第六天 創建背景類

package com.sxt;import java.awt.image.BufferedImage;public class BackGround {//當前場景要顯示的圖像 private BufferedImage bgImagenull;//記錄當前是第幾個場景 private int sort;//判斷是否是最后一個場景 private boolean flag;public BackGround(){}public BackGrou…