动态规划 - Floyd算法求最短路径 - (Matlab建模)

    Floyd算法又称为弗洛伊德算法、插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。

课题名称:设备更新,使总的支付费用最少

    工厂的某台机器可连续工作四年,决策者每年年初都要决定机器是否需要更新。若更新,就要支付购置费用;若不更新,则要支付维修与运行费用,且随着机器使用年限的增加维修与运行费用逐年增多。计划期(4年)中每年年初的购置价格及各个年限内维修与运行费用由表1给出,

(1)试制订今后4年的机器更新计划,使总的支付费用最少。

表1

第 i 年初

第1年初

第2年初

第3年初

第4年初

购置费(万元)

2.5

2.6

2.8

3.1

使用年限

1

2

3

4

使用年限下对应的每年的维修与运行费(万元)

1

1.5

2

4

可将此问题看成一个最短路问题。设 v1 和 v5 分别表示计划期的始点和终点(v5 可理解为第4年年末)。下图中各边的值(vi,vj)表示在第 i 年初购进的机器使用到第 j 年初(即第 j-1 年底),(vi,vj)的值可由表1的数据计算得到。因此,把求最优设备更新问题转化为求从 i 到 j 的最短路问题。

(vi,vj)的值计算示例:

(v1,v2) = 2.5(第1年初的购置费)+1(使用第一年的维修费) = 3.5;

(v3,v5) = 2.8(第3年初的购置费)+1(使用第一年的维修费)+1.5(使用第二年的维修费) = 5.3;

             

Matlab求解

Matlab程序:

a=[0 3.5 5 7 11;inf 0 3.6 5.1 7.1;inf inf 0 3.8 5.3;inf inf inf 0 4.1;inf inf inf inf 0];
n=size(a,1);
D=a;
path=zeros(n,n);
for i=1:nfor j=1:nif D(i,j)~=infpath(i,j)=j;endend
end
for k=1:nfor i=1:nfor j=1:nif D(i,k)+D(k,j)<D(i,j)D(i,j)=D(i,k)+D(k,j);path(i,j)=path(i,k);endendend
end
D;path;

Matlab运行结果:

D =0    3.5000    5.0000    7.0000   10.3000Inf         0    3.6000    5.1000    7.1000Inf       Inf         0    3.8000    5.3000Inf       Inf       Inf         0    4.1000Inf       Inf       Inf       Inf         0
>> path
path =1     2     3     4     30     2     3     4     50     0     3     4     50     0     0     4     50     0     0     0     5

解得方案:最短路(v1,v3,v5),即计划期内机器更新最优计划为第1年、第3年初各购进一台新机器,4年总的支付费用为10.3万元。

新问题来了!

按照上述方案,第3年初购置新机器,那么旧机器是否可以低价处理掉呢?这样也更加符合实际。如果已知不同役龄机器年末的处理价格如表2所示,那么在这计划期内机器的最优更新计划又会怎样?

表2

年度

第一年末

    第二年末

第三年末

第四年末

机器处理价(万元)

2.0

1.6

1.3

1.1

类似上面的处理方式,可转化为求下图中从 v1 到 v5 的最短路问题。

       

Matlab求解

Matlab程序:

a=[0 1.5 3.4 5.7 9.5;inf 0 1.6 3.5 5.8;inf inf 0 1.8 3.7;inf inf inf 0 3.1;inf inf inf inf 0];
n=size(a,1);
D=a;
path=zeros(n,n);
for i=1:nfor j=1:nif D(i,j)~=infpath(i,j)=j;endend
end
for k=1:nfor i=1:nfor j=1:nif D(i,k)+D(k,j)<D(i,j)D(i,j)=D(i,k)+D(k,j);path(i,j)=path(i,k);endendend
end
D;path;

Matlab运行结果:

D =0    1.5000    3.1000    4.9000    6.8000Inf         0    1.6000    3.4000    5.3000Inf       Inf         0    1.8000    3.7000Inf       Inf       Inf         0    3.1000Inf       Inf       Inf       Inf         0
>> path
path =1     2     2     2     20     2     3     3     30     0     3     4     50     0     0     4     50     0     0     0     5

即最后解得:最短路 (v1,v2,v3,v5),即计划期内机器更新最优计划为第1年初购进一台新机器并在第2年初处理掉,第2年初购进一台新机器并在第3年初处理掉,第3年初购进一台新机器,4年总的支付费用为6.8万元。

内容很多,消化一下吧,希望可以为你所用!

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

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

相关文章

神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)

目录 神经网络模型简述 实例&#xff1a;交通运输能力预测设计 MATLAB程序及仿真结果 由于货物运输、地方经济及企业发展的紧密联系&#xff0c;因此作为反映货物运输需求的一项重要指标, 货运量预测研究和分析具有较强的实际意义。 常用的货运量预测方法包括时间序列方法、…

LeetCode 135. 分发糖果(DP)

1. 题目 老师想给孩子们分发糖果&#xff0c;有 N 个孩子站成了一条直线&#xff0c;老师会根据每个孩子的表现&#xff0c;预先给他们评分。 你需要按照以下要求&#xff0c;帮助老师给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻的孩子中&#xff0c…

网络数据的背后-网络日志的分析指标【转】

通常网站分析的技术包括页面标签分析技术&#xff08;JS技术&#xff09;和日志文件分析技术两种&#xff0c;两种网站分析技术各有优缺点&#xff0c;譬如下文中介绍的基于回话的统计和点击流分析日志文件分析法就要优于页面标签分析法&#xff0c;通常&#xff0c;两种技术具…

词云图 - WorldCloud - Python代码实现

目录 第一步&#xff1a;安装必要的包WorldCloud&#xff08;安装好并且没有出错的可跳过这一步&#xff09; 第二步&#xff1a;准备文件&#xff0c;词云图的图片和文章&#xff0c;按照自己喜好准备吧 第三步&#xff1a;Python实现-源码 第一步&#xff1a;安装必要的包…

[Hands On ML] 2. 一个完整的机器学习项目(加州房价预测)

文章目录1. 项目介绍2. 性能指标3. 确定任务类型4. 查看数据5. 创建测试集6. 数据可视化7. 查找数据关联8. 特征组合9. 为算法准备数据9.1 数据清洗9.2 处理文本特征10. 自定义转换器11. 特征缩放12. 转换流水线Pipeline13. 训练模型14. 交叉验证15. 微调模型15.1 网格搜索15.2…

线性回归 - 机器学习多元线性回归 - 一步一步详解 - Python代码实现

目录 数据导入 单变量线性回归 绘制散点图 相关系数R 拆分训练集和测试集 多变量线性回归 数据检验&#xff08;判断是否可以做线性回归&#xff09; 训练线性回归模型 先甩几个典型的线性回归的模型&#xff0c;帮助大家捡起那些年被忘记的数学。 ● 单变量线性回归&…

聚类分析 - K-means - Python代码实现

算法简介 K-means算法是很典型的基于距离的聚类算法&#xff0c;采用距离作为相似性的评价指标&#xff0c;即认为两个对象的距离越近&#xff0c;其相似度就越大。该算法认为簇是由距离靠近的对象组成的&#xff0c;因此把得到紧凑且独立的簇作为最终目标。 算法过程如下&…

数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码

目录 归一化 数据归一化的背景介绍 MinMaxScaler&#xff1a;归一到 [ 0&#xff0c;1 ] MaxAbsScaler&#xff1a;归一到 [ -1&#xff0c;1 ] 标准化 去均值&#xff0c;方差规模化 归一化 数据归一化的背景介绍 在之前做聚类分析的时候我们发现&#xff0c;聚类的…

loadrunner 配置远程监控windows服务器系统资源

今天决定监控远程windows xp上的系统资源&#xff0c;本来以为应该很好连接&#xff0c;在同一个局域网内&#xff0c;结果出了一堆问题&#xff0c;可能是第一次就让我遇到了一个棘手的操作系统&#xff0c;郁闷&#xff01; &#xff08;1&#xff09;保证装有loadrunner的测…

Python数据清洗 - 洗什么?怎么洗?看完就明白了

目录 缺失值处理 删除缺失值 插补缺失值 不处理缺失值 重复值处理 异常值处理 遍历查找异常值&#xff0c;并根据规则调整大小 删除异常值 视为缺失值后进行插补 数据挖掘过程中&#xff0c;采集的原始数据里存在着各种不利于分析与建模工作的因素&#xff0c;比如数…

LeetCode 743. 网络延迟时间(最短路径)

文章目录1. 题目2. 解题2.1 弗洛伊德1. 题目 有 N 个网络节点&#xff0c;标记为 1 到 N。 给定一个列表 times&#xff0c;表示信号经过有向边的传递时间。 times[i] (u, v, w)&#xff0c;其中 u 是源节点&#xff0c;v 是目标节点&#xff0c; w 是一个信号从源节点传递到…

逻辑回归 - sklearn (LR、LRCV、MLP、RLR)- Python代码实现

目录 LR&#xff08;LogisticRegression&#xff09; - 线性回归 LRCV&#xff08;LogisticRegressionCV &#xff09;- 逻辑回归 MLP&#xff08;MLPRegressor&#xff09; - 人工神经网络 RLR&#xff08;RandomizedLogisticRegression&#xff09;-随机逻辑回归 logisti…

轻松看懂机器学习十大常用算法 - 基础知识

通过本篇文章可以对机器学习ML的常用算法有个常识性的认识&#xff0c;没有代码&#xff0c;没有复杂的理论推导&#xff0c;就是图解一下&#xff0c;知道这些算法是什么&#xff0c;它们是怎么应用的&#xff0c;例子主要是分类问题。 算法如下&#xff1a; 决策树随机森林算…

数据离散化 - 等宽等频聚类离散 - Python代码

目录 等宽离散 等频离散 聚类离散 附录&#xff1a; rolling_mean函数解释 cut函数解释 其他数据预处理方法 一些数据挖掘算法中&#xff0c;特别是某些分类算法&#xff08;eg:ID3算法、Aprioroi算法等&#xff09;&#xff0c;要求数据是分类属性形式。因此常常需要将…

LeetCode 1444. 切披萨的方案数(DP)

1. 题目 给你一个 rows x cols 大小的矩形披萨和一个整数 k &#xff0c;矩形包含两种字符&#xff1a; ‘A’ &#xff08;表示苹果&#xff09;和 ‘.’ &#xff08;表示空白格子&#xff09;。 你需要切披萨 k-1 次&#xff0c;得到 k 块披萨并送给别人。 切披萨的每一刀…

获取数据 - 将Excel文件读入矩阵matrix中 - Python代码

机器学习中&#xff0c;很多算法的计算逻辑是基于数学的&#xff0c;免不了求特征值和特征向量这种事情&#xff0c;因此&#xff0c;在数据预处理的时候&#xff0c;将数据源中的数据转储成矩阵格式是很有必要的。 原数据&#xff1a; 代码&#xff1a; import numpy as np…

Visual Studio 2010 调试 C 语言程序

转&#xff1a;http://woyouxian.net/c/using_visual_studio_write_pure_ansi_c_program.html 本篇文章讲述如何用微软的 Visual Studio 编写纯C语言程序&#xff0c;这里的纯C语言&#xff0c;指的是 ANSI C 语言。 要在 Visual Studio 里创建一个 ANSI C语言程序&#xff0c;…

Silverlight 4之旅(三)数据绑定(中)

在上篇文章中我们已经看过了绑定的基础知识&#xff0c;以及绑定数据源的选择问题。在本篇文章中我们看下绑定时Target的现实的问题。 自定义显示 很多时候我们的DataSource存储的数据并不可以直接用来显示&#xff0c;比如说我们对于Bool类型&#xff0c;需要显示为“是”或则…

LeetCode 第 28 场双周赛(505/2144,前23.6%)

文章目录1. 比赛结果2. 题目1. LeetCode 5420. 商品折扣后的最终价格 easy2. LeetCode 5422. 子矩形查询 medium3. LeetCode 5423. 找两个和为目标值且不重叠的子数组 medium4. LeetCode 5421. 安排邮筒 hard1. 比赛结果 两题选手&#x1f602;&#xff0c;前两题很水&#xf…

决策树模型 - (ID3算法、C4.5算法) - Python代码实现

目录 算法简介 信息熵(Entropy) 信息增益(Information gain) - ID3算法 信息增益率(gain ratio) - C4.5算法 源数据 代码实现 - ID3算法 代码实现 - C4.5算法 画决策树代码-treePlotter 算法简介 决策数(Decision Tree)在机器学习中也是比较常见的一种算法&#xff0c…