【报童模型】随机优化问题&&二次规划

这篇具有很好参考价值的文章主要介绍了【报童模型】随机优化问题&&二次规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文献:https://github.com/parthiv-borgohain/Newsvendor-Model—Stochastic-Programming

面对需求的不确定性,报童模型是做库存优化的常见模型。而标准报童模型假设价格是固定的,此时求解一个线性规划问题,可以得到最优订货量,这种模型存在局限性。因为现实世界中价格与需求存在一定的关系,本文假设需求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+β1p+ϵ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\} {ϵii=1,2,...,n}

  • 对于价格固定的标准报童模型,求最优订货量
    如果新价格p出现,将计算好的残差值 { ϵ i ∣ i = 1 , 2 , . . . , n } \{\epsilon_i|i=1,2,...,n\} {ϵii=1,2,...,n}和新价格p带入模型 D = β 0 + β 1 p + ϵ i D=\beta_0+\beta_1p+\epsilon_i D=β0+β1p+ϵ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 100022+15=1011,
    1000 − 2 ∗ 2 − 9 = 987 1000-2*2-9=987 1000229=987
  • 对于价格不固定的扩展报童模型,求最优订货量和最优价格
    此时,目标函数
    【报童模型】随机优化问题&&二次规划,运筹优化,算法
    p ∗ D i p*D_i pDi就会变成 p ∗ ( β 0 + β 1 p + ϵ i ) p*(\beta_0+\beta_1p+\epsilon_i) p(β0+β1p+ϵi),这是价格p的二次函数。
    注意:上面目标函数中的 D i D_i Di指的是新价格p所对应的第i个需求估计值,而不是原数据集中第i个样本的需求值。
    我觉得没有疑问了,这本身就是一个关于价格p的二次优化问题。

注:
为了求解这个问题,引入哑变量 h i h_i hi,表示第i天成本的负值。如此一来,目标函数——利润函数可以表示为收益+成本负值的平均,其中收益指 p ∗ D i p*D_i pDi,成本负值指 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\} {ϵii=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\} {ϵii=1,2,...,n}和新价格p带入模型 D = β 0 + β 1 p + ϵ i D=\beta_0+\beta_1p+\epsilon_i D=β0+β1p+ϵ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+β1p+ϵ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,如下图
【报童模型】随机优化问题&&二次规划,运筹优化,算法文章来源地址https://www.toymoban.com/news/detail-645733.html

到了这里,关于【报童模型】随机优化问题&&二次规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【运筹优化】子集和问题(Subset Sum Problems , SSP)介绍 + 动态规划求解 + Java代码实现

    子集和问题(Subset Sum Problems , SSP),它是复杂性理论中最重要的问题之一。 SSP会给定一组整数 a 1 , a 2 , . . . . , a n a_1,a_2,....,a_n a 1 ​ , a 2 ​ , .... , a n ​ ,最多 n n n 个整数,我们需要判断是否存在一个非空子集,使得子集的总和为 M M M 整数?如果存在则需要输出该子集。

    2024年01月17日
    浏览(46)
  • 【运筹优化】ALNS自适应大领域搜索算法求解TSP问题 + Java代码实现

    旅行推销员问题(TSP)提出以下问题:“给定 n n n 个城市的列表,其中有一个起始城市,以及每对城市之间的距离,访问每个城市一次并返回起始城市的最短可能路线是什么?”。 这又是一个重要的NP-hard组合优化,特别是在运筹学和理论计算机科学领域。这个问题最早是在1

    2024年02月13日
    浏览(47)
  • 【运筹优化】网络最大流问题及三种求解算法详解 + Python代码实现

    标题中时间复杂度用到的 符号说明 :f 代表最大流的大小,m代表边的数量,n 代表节点的数量 本博客学习自:B站-ShusenWang 最大流问题,是网络流理论研究的一个基本问题,求网络中一个可行流 f ∗ f* f ∗ ,使其流量 v ( f ) v(f) v ( f ) 达到最大, 这种流 f f f 称为最大流,这个

    2024年02月02日
    浏览(54)
  • Python实现PSO粒子群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。 PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆虫、

    2024年02月13日
    浏览(38)
  • 运筹说 第67期 | 动态规划模型的建立与求解

    通过前一期的学习,我们已经学会了动态规划的基本概念和基本原理。本期小编带大家学习动态规划模型的建立与求解。 动态规划模型的建立 一   概述 建立动态规划的模型,就是分析问题并建立问题的动态规划基本方程。 成功地应用动态规划方法的关键,在于识别问题的

    2024年01月16日
    浏览(34)
  • 运筹系列82:使用动态规划求解TSP问题

    定义 c ( s , k ) c(s,k) c ( s , k ) 为当前在 k k k ,待访问点的集合 s s s ,最后返回城市0的最短路径,那么Bellman方程为: c ( s , k ) = min ⁡ i ∈ s { c ( s − { i } , i ) + d i , k } c(s,k)=min_{i in s}{c(s-{i},i)+d_{i,k}} c ( s , k ) = min i ∈ s ​ { c ( s − { i } , i ) + d i , k ​ } 为了使用方便,这里

    2024年02月06日
    浏览(38)
  • 优化|求解非凸和无梯度lipschitz连续性的一阶算法在二次规划反问题中的应用(代码分享)

    原文信息(包括题目、发表期刊、原文链接等):First Order Methods Beyond Convexity and Lipschitz Gradient Continuity with Applications to Quadratic Inverse Problems 原文作者:Jérôme Bolte, Shoham Sabach, Marc Teboulle, and Yakov Vaisbourd 代码分享者:李朋 考虑下面的二次规划反问题 min ⁡ { Ψ ( x ) : = g ( x ) +

    2024年02月05日
    浏览(43)
  • 【管理运筹学】第 8 章 | 动态规划(5,设备更新问题)

    【管理运筹学】第 8 章 | 动态规划(1,多阶段决策过程与动态规划基本概念) 【管理运筹学】第 8 章 | 动态规划(2,动态规划的基本思想与模型求解) 【管理运筹学】第 8 章 | 动态规划(3,资源分配问题) 【管理运筹学】第 8 章 | 动态规划(4,生产与储存问题) 【管理

    2024年02月07日
    浏览(37)
  • Python实现贝叶斯优化器(Bayes_opt)优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。 贝叶斯优化器(BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。 贝叶斯优化器是基于高斯过程的贝叶斯优化,算法的参数空间中有大

    2024年02月11日
    浏览(45)
  • 【管理运筹学】第 8 章 | 动态规划(4,生产与储存问题)

    【管理运筹学】第 8 章 | 动态规划(1,多阶段决策过程与动态规划基本概念) 【管理运筹学】第 8 章 | 动态规划(2,动态规划的基本思想与模型求解) 【管理运筹学】第 8 章 | 动态规划(3,资源分配问题) 【管理运筹学】第 8 章 | 动态规划(4,生产与储存问题) 【管理

    2024年02月03日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包