【管理运筹学】第 8 章 | 动态规划(5,设备更新问题)

news2025/1/12 0:58:42

系列文章

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

文章目录

  • 系列文章
  • 引言
  • 五、设备更新问题
    • 5.1 问题分析
    • 5.2 算例
  • 写在最后


引言

在工业和交通运输企业中,经常碰到设备陈旧或部分损坏需要更新的问题。从经济上来分析,一种设备应该用多少年后进行更新较为恰当,即更新的最佳策略如何,从而使在某一时间内的总收入达到最大(或总费用达到最小)。


五、设备更新问题

现以一台机器为例,随着使用年限的增加,机器的使用效率降低,收入减少,维修费用增加。而且机器使用年限越长,它本身的价值就越小,因而更新时所需的净支出费用就愈多。

I j ( t ) I_j(t) Ij(t) —— 在第 j j j 年机器役龄为 t t t 年的一台机器运行所得收入; O j ( t ) O_j(t) Oj(t) —— 在第 j j j 年机器役龄为 t t t 年的一台机器运行所需费用; C j ( t ) C_j(t) Cj(t) —— 在第 j j j 年机器役龄为 t t t 年的一台机器更新时所需净费用;

α \alpha α —— 折扣因子( 0 ≤ α ≤ 1 0\leq \alpha \leq 1 0α1),表示 1 年以后的单位收入价值视为现年的 α \alpha α 单位; T T T —— 在第 1 年开始时,正在使用的机器的役龄; n n n —— 计划的年限总数;

g j ( t ) g_j(t) gj(t) —— 在第 j j j 年开始使用一个机器役龄为 t t t 年的机器时,从第 j j j 年至第 n n n 年内的最佳收入; x j ( t ) x_j(t) xj(t) —— 决策变量,表示在第 j j j 年开始时的决策。

5.1 问题分析

可以从两个方面对问题进行分析。若在第 j j j 年开始时购买了新机器,则从第 j j j 年至第 n n n 年得到的总收入应等于:在第 j j j 年中新机器获得的收入 — 在第 j j j 年的运行费用 — 在第 j j j 年开始时役龄为 t t t 年的机器的更新费用 + 第 j + 1 j+1 j+1 年开始使用役龄为 1 年的机器从第 j + 1 j+1 j+1 年至第 n n n 年的最佳收入。

若在第 j j j 年开始时继续使用役龄为 t t t 年的机器,则从第 j j j 年至第 n n n 年得到的总收入应等于:在第 j j j 年由役龄为 t t t 年的机器得到的收入 — 在第 j j j 年役龄为 t t t 年的机器的运行费用 + 在第 j + 1 j+1 j+1 年开始使用役龄为 t + 1 t+1 t+1 年的机器从第 j + 1 j+1 j+1 年至第 n n n 年的最佳收入。

通过比较两者大小来进行决策,则递推关系的数学表达如下: g j ( t ) = max ⁡ { R : I j ( 0 ) − O j ( 0 ) − C j ( t ) + α g j + 1 ( 1 ) K : I j ( t ) − O j ( t ) + α g j + 1 ( t + 1 ) } g_j(t)=\max \begin{Bmatrix} R:&I_j(0)-O_j(0)-C_j(t)+\alpha g_{j+1}(1) \\ K:& I_j(t)-O_j(t)+\alpha g_{j+1}(t+1)\end{Bmatrix} gj(t)=max{R:K:Ij(0)Oj(0)Cj(t)+αgj+1(1)Ij(t)Oj(t)+αgj+1(t+1)} 其中, j = 1 , 2 , ⋯   , n ; t = 1 , 2 , ⋯   , j − 1 , j + T − 1 j=1,2,\cdots,n;t=1,2,\cdots,j-1,j+T-1 j=1,2,,n;t=1,2,,j1,j+T1 ;字母 K K K 表示 keep ,保留;字母 R R R 表示 replacement ,更新机器。更新机器需要支付更新费用。

研究今后 n n n 年的计划,故添加边界条件 g n + 1 ( t ) = 0 g_{n+1}(t)=0 gn+1(t)=0 ;对于 g 1 ( t ) g_1(t) g1(t) 来说,允许的 t t t 值只能为 T T T ,因此此时未购入新机器,只有已经使用了 T T T 年的旧机器。

上述设备更新问题,是以机龄为状态变量,决策时保留或更新两种。如还考虑对机器进行大修作为一种决策,那时所需的费用和收入,不仅取决于机龄和购置的年限,也取决于上次大修后的时间。因此,必须使用两个状态变量对系统进行描述。

5.2 算例

】假设 n = 5 , α = 1 , T = 1 n=5,\alpha=1,T=1 n=5,α=1,T=1 ,有关数据如下表所示。试制定 5 年内中的设备更新策略,使得 5 年内的总收入达到最大。

在这里插入图片描述

解释一下表中数据的意思。第 j j j 年机龄为 t t t 年的机器,那么它的年序应该为 j − t j-t jt 。因为第 j j j 年的时候,这台机器就已经使用了 t t t 年,说明它是第 j − t j-t jt 年首次开始工作的。那么 I 5 ( 0 ) I_5(0) I5(0) 表示第 5 年的新机器运行的收入,查表,年序为 5-0=5 ,是 32 。 I 3 ( 2 ) I_3(2) I3(2) 表示第 3 年机龄为 2 年的机器运行所得收入,那么查表,3-2=1,第一年中机龄为 2 年的收入 20 。同理,有 C 5 ( 2 ) = 33 , C 3 ( 1 ) = 31 C_5(2)=33,C_3(1)=31 C5(2)=33,C3(1)=31 ,其余以此类推。

j = 5 j=5 j=5 ,即第 5 年时,由于 T = 1 T=1 T=1 ,说明第一年时的机器机龄就有 1 年了,那么第 5 年状态变量机龄 t t t 可取 { 1 , 2 , 3 , 4 , 5 } \{1,2,3,4,5\} {1,2,3,4,5} 。根据递推关系有 g 5 ( t ) = max ⁡ { R : I 5 ( 0 ) − O 5 ( 0 ) − C 5 ( t ) + g 6 ( 1 ) K : I 5 ( t ) − O 5 ( t ) + g 6 ( t + 1 ) } g_5(t)=\max \begin{Bmatrix} R:&I_5(0)-O_5(0)-C_5(t)+g_{6}(1) \\ K:& I_5(t)-O_5(t)+g_{6}(t+1)\end{Bmatrix} g5(t)=max{R:K:I5(0)O5(0)C5(t)+g6(1)I5(t)O5(t)+g6(t+1)} 可得到 g 5 ( 1 ) = max ⁡ { R : 32 − 4 − 33 + 0 = − 5 K : 28 − 5 + 0 = 23 } = 23 , x 5 ( 1 ) = K g_5(1)=\max \begin{Bmatrix} R:&32-4-33+0=-5 \\ K:& 28-5+0=23\end{Bmatrix}=23,x_5(1)=K g5(1)=max{R:K:32433+0=5285+0=23}=23,x5(1)=K g 5 ( 2 ) = max ⁡ { R : 32 − 4 − 33 + 0 = − 5 K : 24 − 6 + 0 = 18 } = 18 , x 5 ( 2 ) = K g_5(2)=\max \begin{Bmatrix} R:&32-4-33+0=-5 \\ K:& 24-6+0=18\end{Bmatrix}=18,x_5(2)=K g5(2)=max{R:K:32433+0=5246+0=18}=18,x5(2)=K g 5 ( 3 ) = max ⁡ { R : 32 − 4 − 36 + 0 = − 8 K : 22 − 9 + 0 = 13 } = 13 , x 5 ( 3 ) = K g_5(3)=\max \begin{Bmatrix} R:&32-4-36+0=-8 \\ K:& 22-9+0=13\end{Bmatrix}=13,x_5(3)=K g5(3)=max{R:K:32436+0=8229+0=13}=13,x5(3)=K g 5 ( 4 ) = max ⁡ { R : 32 − 4 − 37 + 0 = − 9 K : 16 − 10 + 0 = 6 } = 6 , x 5 ( 4 ) = K g_5(4)=\max \begin{Bmatrix} R:&32-4-37+0=-9 \\ K:& 16-10+0=6\end{Bmatrix}=6,x_5(4)=K g5(4)=max{R:K:32437+0=91610+0=6}=6,x5(4)=K g 5 ( 5 ) = max ⁡ { R : 32 − 4 − 38 + 0 = − 10 K : 14 − 10 + 0 = 4 } = 4 , x 5 ( 5 ) = K g_5(5)=\max \begin{Bmatrix} R:&32-4-38+0=-10 \\ K:& 14-10+0=4\end{Bmatrix}=4,x_5(5)=K g5(5)=max{R:K:32438+0=101410+0=4}=4,x5(5)=K j = 4 j=4 j=4 ,第 4 年时,状态变量可取 { 1 , 2 , 3 , 4 } \{1,2,3,4\} {1,2,3,4} ,有 g 4 ( 1 ) = max ⁡ { R : 30 − 4 − 32 + 23 = 17 K : 26 − 5 + 18 = 39 } = 39 , x 5 ( 1 ) = K g_4(1)=\max \begin{Bmatrix} R:&30-4-32+23=17 \\ K:& 26-5+18=39\end{Bmatrix}=39,x_5(1)=K g4(1)=max{R:K:30432+23=17265+18=39}=39,x5(1)=K 同理,有 g 4 ( 2 ) = 29 , x 4 ( 2 ) = K ; g 4 ( 3 ) = 16 , x 4 ( 3 ) = K ; g 4 ( 4 ) = 13 , x 4 ( 4 ) = R . g_4(2)=29,x_4(2)=K;g_4(3)=16,x_4(3)=K;g_4(4)=13,x_4(4)=R. g4(2)=29,x4(2)=K;g4(3)=16,x4(3)=K;g4(4)=13,x4(4)=R.

j = 3 j=3 j=3 时,状态变量可取 { 1 , 2 , 3 } \{1,2,3\} {1,2,3} ,有 g 3 ( 1 ) = 48 , x 3 ( 1 ) = K ; g 3 ( 2 ) = 31 , x 3 ( 2 ) = R ; g 3 ( 3 ) = 27 , x 3 ( 3 ) = R ; g_3(1)=48,x_3(1)=K;g_3(2)=31,x_3(2)=R;g_3(3)=27,x_3(3)=R; g3(1)=48,x3(1)=K;g3(2)=31,x3(2)=R;g3(3)=27,x3(3)=R;

j = 2 j=2 j=2 时,状态变量可取 { 1 , 2 } \{1,2\} {1,2} ,有 g 2 ( 1 ) = 46 , x 2 ( 1 ) = K ; g 2 ( 2 ) = 36 , x 2 ( 2 ) = R . g_2(1)=46,x_2(1)=K;g_2(2)=36,x_2(2)=R. g2(1)=46,x2(1)=K;g2(2)=36,x2(2)=R.

j = 1 j=1 j=1 时,状态变量可取 { 1 } \{1\} {1} ,有 g 1 ( 1 ) = max ⁡ { R : 22 − 6 − 32 + 46 = 30 K : 18 − 8 + 36 = 46 } = 46 , x 1 ( 1 ) = K . g_1(1)=\max \begin{Bmatrix} R:&22-6-32+46=30 \\ K:& 18-8+36=46\end{Bmatrix}=46,x_1(1)=K. g1(1)=max{R:K:22632+46=30188+36=46}=46,x1(1)=K. 最后,根据上面的计算结果回溯。第一年,机龄为 1 年,最佳策略为保留;第二年,机龄为 2 年,最佳策略为更新;第三年,机龄变为 1 年,最佳策略为保留;第四年,机龄为 2 年,最佳策略为保留;第五年,机龄为 3 年,最佳策略为保留。


写在最后

设备更新问题确实不简单,很有实际意义,不过,只要正确建好了模型,剩下的就是代数字进去算。回忆一下之前的生产与储存问题和资源分配问题,顿时感觉小巫见大巫了。

那到此,大纲要求的三个问题,到此就完结了,后面我们就来看看剩下的两章节内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1058494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vscode 如何创建java项目,并添加包

创建java项目 添加包 先打开这个资源管理器中的javaProject,然后打开这个javaProject,点击里面的Reference Libraries,然后点击加号 选择要添加的包然后进行确认即可

C/C++学习 -- 分组密算法(3DES算法)

1. 3DES算法概述 3DES(Triple Data Encryption Standard),又称为TDEA(Triple Data Encryption Algorithm),是一种对称加密算法,是DES(Data Encryption Standard)的加强版…

k8s全栈-笔记6-Prometheus+Alertmanager构建监控系统

k8s全栈-笔记6-PrometheusAlertmanager构建监控系统 实验环境: Pormetheusgrafanaalertmanager安装在k8s集群,k8s环境如下 K8S集群角色IP主机名安装的组件控制节点(master)172.20.252.181k8s-master01apiserver,controller-manager,schedule,kubelet,etcd,kube-proxy,容器运…

vcruntime140.dll如何修复,快速修复vcruntime140.dll丢失的三种方法

vcruntime140.dll是Visual C 2015运行库的一个组件,它包含了许多运行时函数,用于支持各种程序的正常运行。当vcruntime140.dll文件丢失时,可能会导致一些程序无法正常运行。本文将详细介绍vcruntime140.dll的作用、丢失原因以及三种修复方法。…

STM32Cubemx新建F429基础工程

配置STM32CubeMX 配置KEY 配置USART1 配置RCC Project Manager Toolchain 选择 MDK-ARM Code Generator 配置如下 GENERATE CODE 即可 配置Keil5 魔术棒配置 – Target – 勾选 Use MicroLIB – Debug – Flash Download – 勾选Reset and Run 基础代码 /* Private incl…

linux——信号

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——进程等待 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;生活中处处有信号&#xff0c;linux中也有很多信号&#xff0c;OS使…

算法强训:第三十四天

文章目录 收件人列表养兔子一、收件人列表OJ链接 本题思路:先接收到一个数字,代表接下来是多少组数据 ,逐个接收每个名字,如果名字中没有,或者 则直接输出,否则在改名字前后拼接"\""再输出,除最后一个名字外,每个名字之后都有一个", " ,该组用例…

(三)激光线扫描-中心线提取

光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素。 1. 光条的高斯分布 激光线条和打手电筒一样,中间最亮,越像周围延申,光强越弱,这个规则符合高斯分布,如下图。 2. 传统光条纹中心提取算法 传统的光条纹中心提取算法有 灰度重心法、…

pycharm中个人编程时常用到的快捷键

pycharm中个人编程时常用到的快捷键&#xff1a; 仅个人经验总结&#xff0c;不为其他&#xff01; 1.CTRLShiftAlt鼠标选择多个位置 可以同时在多个位置进行编辑同样的内容 2. Ctrel Alt L快速将代码格式标准化 3. Ctrl F 在当前py文件中查找 4. Ctrl R快速替换当前…

哈哈,我保研985了,之后会出一期保研经验分享

哈哈&#xff0c;我保研了&#xff0c;之后会出一期保研经验分享 个人背景 学校&#xff1a;河南某四非&#xff0c;计算机科学与技术专业英语成绩&#xff1a;四级439&#xff0c;六级438&#xff08;夏令营无六级&#xff09;科研经历&#xff1a;一个软著、国家级大创&…

如何在idea中隐藏文件或文件夹

例如我想要隐藏如下文件 只需要点击file->settings editor->file types->ignores Files and Folders-> 然后按照图片点击顺序操作即可 添加完毕点击apply->ok 隐藏成功后效果如下&#xff1a;

基于蚁狮优化的BP神经网络(分类应用) - 附代码

基于蚁狮优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于蚁狮优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蚁狮优化BP神经网络3.1 BP神经网络参数设置3.2 蚁狮算法应用 4.测试结果&#xff1a;5.M…

EasyX图形库note4,动画及键盘交互

大家好&#xff0c;这里是Dark Flame Master&#xff0c;专栏从这篇开始就会变得很有意思&#xff0c;我们可以利用今天所学的只是实现很多功能&#xff0c;同样为之后的更加好玩的内容打下基础&#xff0c;从这届开始将会利用所学的知识制作一些小游戏&#xff0c;废话不多说&…

计算机毕业设计 基于SSM的在线预约导游系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

UCOS的任务创建和删除

一、任务创建和删除的API函数 1、任务创建和删除本质就是调用uC/OS的函数 API函数 描述 OSTaskCreate() 创建任务 OSTaskDel() 删除任务 注意&#xff1a; 1&#xff0c;使用OSTaskCreate() 创建任务&#xff0c;任务的任务控制块以及任务栈空间所需的内存&#xff0c…

基于SpringBoot的流浪动物管理系

基于SpringBoot的流浪动物管理系的设计与实现&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 首页 后台登陆界面 管理员界面 摘要 基于Spring Boot的…

常见的几种排序方式

常见的几种排序方式 1. 排序的概念2. 常见排序算法的实现2.1 插入排序2.1.1基本思想2.1.2 直接插入排序2.1.3 希尔排序( 缩小增量排序 ) 2.2 选择排序2.2.1基本思想2.2.2 直接选择排序:2.2.3 堆排序 2.3 交换排序2.3.1冒泡排序2.3.2 快速排序 2.4 归并排序2.4.1 基本思想2.4.2 …

力扣-383.赎金信

Idea 使用一个hashmap 或者一个int数组存储第二次字符串中每一个字符及其出现的次数 遍历第一个字符串&#xff0c;讲出现的重复字符减1&#xff0c;若该字符次数已经为0&#xff0c;则返回false AC Code class Solution { public:bool canConstruct(string ransomNote, strin…

最短路径专题3 最短距离-多边权

题目&#xff1a; 样例&#xff1a; 输入 4 5 0 2 0 1 2 1 0 2 5 1 0 3 1 2 1 2 1 6 3 2 2 3 输出 3 5 思路&#xff1a; 根据题目意思&#xff0c;其实还是Dijkstra 的题目&#xff0c;不同的是&#xff0c;多了一个最少花费边权的这个点&#xff0c;多添加一个spend数组&am…

【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!

文章目录 前言Maven简介Maven是什么Maven的作用 Maven的下载与安装Maven基础概念仓库坐标仓库配置全局setting与用户setting区别 第一个Maven程序&#xff08;手工制作&#xff09;第一个Maven程序&#xff08;IDEA生成&#xff09;使用模版&#xff08;骨架&#xff09;创建Ma…