当前位置: 首页 > news >正文

数学建模--蒙特卡洛算法之电子管更换刀片寿命问题

目录

1.电子管问题重述

2.电子管问题分析

3.电子管问题求解

4.刀片问题重述

5.刀片问题分析

6.刀片问题求解


1.电子管问题重述

某设备上安装有4只型号规格完全相同的电子管,已知电子管寿命服从100~200h之间的均匀分布.

只要有一个电子管损坏,设备就不能工作。

电子管损坏时有两种维修方案:

一、是每次更换损坏的那只;

二、是当其中1只损坏时4只同时更换.

已知更换时间为换1只时需1h,4只同时更换为2h.

更换时机器因停止运转每小时的损失为20元,又每只电子管价格10元,试用模拟方法确定哪一个方案经济合理?

这个里面是出现了两个方案,方案一就是每一次只用去更换掉损坏的那一个;

第二个方案就是当一个损坏的时候,全部更换掉;

这个里面无论是方案一还是方案二,都会产生一个停止运转(更换时间以内)的损失问题,我们要综合考虑这个更换成本和更换损失,计算出这个最经济的方案(就是两个的和最小,即损失加成本的和最小);

2.电子管问题分析

我们在分析问题的时候就去建立这个对应的数学模型,对于这个出现在模型里面的变量代表的含义,我们一定要搞清楚,这个对于我们的后续代码的编写很重要;

我们的这个思路就是去使用成本加上这个换电子管的损失费用之和相比较,费用低的就是经济的选择,c表示的就是一个电子管的更换成本,f表示每次更换的时候的损失成本,肯呢个有些同学会好奇这个里面的n代表的实际意义是什么,实际上这个n表示的是一个次数,下面我们细讲一下;

我们标题就说了,这个里面的两个问题就是蒙特卡洛算法的问题,而我们的蒙特卡洛算法的实质就是多次模拟,实际上这个关系是这样的:仿真模拟问题里面有很多的案例,这个蒙特卡洛算法就是这个里面的一种仿真模拟的方法,两个的实质很相似,都是多次模拟;

而我们写的这个四个人相互追逐的问题也属于方仿真问题,只不过这个属于过程仿真,需要我们在坐标系里面去解决,他们两个的关系就是下面的图里面的展示结果;

理清了关系,我们介绍思路,这个电子管问题涉及到了时间,我们却要进行多次仿真模拟,这个时候,我们就可以设置一个较长的时间,在这个实际上里面会进行多次的仿真模拟,但是也是会有一些不在这个范围里面,比如一个小写的数据,就1000小时,我们在这个时间里面进行模拟多次,可能有些电子管在这个时间的最后没有完全完成更换,就是这个时间可能不会完全使用完毕,我们只需要计算这个时间里面的完整电子管的相关费用即可,具体到matlab代码里面就是使用length函数求解一个向量的长度,这个长度就是我们这个图片里面的n的数值;

3.电子管问题求解

clc
clear
c=10;  %单个电子管的价格
f=20;  %单位时间的更换损失
ct1=1; %方案1的更换时间
ct2=2; %方案2的更换时间T=10000;%仿真观测时间tic %开始计时for i=1:1000  %仿真次数R=100+100*rand(4,100); %模拟产生4乘100只电子管的寿命t=cumsum(R,2);          %转换为时间轴的时刻%按照方案1计算成本tt1=sort(reshape(t,1,[])); %将所有的故障时刻转换到同一时间轴 并排序t1=tt1(find(tt1<=T));      %筛选出截止时间T以内的数据C1(i)=length(t1)*(c+f*ct1);  %方案1的总成本%%按照方案2计算成本tt2=cumsum(min(R));     %每次找到寿命最短的电子管更换t2=tt2(find(tt2<=T));  %筛选出截止时间T以内的数据C2(i)=length(t2)*(4*c+f*ct2); %方案2的成本
endMC1=mean(C1)
MC2=mean(C2)
toc  %结束计时

这个代码里面有很清楚的注释,下面简单的说明几点:

***length(t1)这些就是我们的分析里面说到的,选出来这个有效时间里面的数据的个数,作为我们的n的具体的数值;

***这个里面实际上是绘制的这个模拟过程的时间轴,就是把每一个灯管做成一个时间轴,每一次进行模拟的时候都会进行累积的,我们最后的mean函数再去求解这个平均值;

***rand函数就是生成的随机数,只不过这个里面是有4灯管,每一个模拟次数是100次,总共的模拟时间就是10000小时;

***R是电子管的寿命的具体的数值,这个我们如何去进行时间轴的转换呢,就是使用的cumsum函数,这个函数的第一个参数R就是寿命的时间长短,2表示行方向上进行求和;

***就是每一个电子管在模拟时间里面多次进行更换,我们cumsum参数2就是行方向求和(默认的话就是列方向求和),这样的话每一个电子管的使用寿命时长就会累加,产生一个类似于时间轴的效果;

4.刀片问题重述

5.刀片问题分析

上面这个刀片问题,很多人无法理解(最开始的时候我自己想了很长时间都想不明白),为了帮助大家理解这个问题,下面通过一个简单的图形帮助大家去理解问题:

就是我们有很多的刀片,我们可能在一个时间去更换他,但是这个刀片的寿命是不一样的,有的长,有的短,我们如果过早地更换,可能这个刀片产生的利润就不是很多,但是时间过长的话,我们的利润多,可能会使得一些刀片损坏而产生损失的费用,比如,我们把这个更换周期设置为T1,这个时候只有刀片11会产生损失,其他的都是产生的利润,更换周期变长之后,这个利润会变多,例如T2,但是损坏的刀片的数量也会变多,这个损失费用也会变大,这个也有优化问题的成分,让我们去求解利润最大的时候的更换时间,相当于是一个最优解;

6.刀片问题求解

我们在这个过程里面有很多的中间变量,为了帮助大家理解,我把这个相关的中间结果也展示在了实时脚本里面;

下面是代码:

clc
clear
N=10000;  %%刀具数目为N
RC=10:10:1000; %%设定状态变化量离散点 刀具使用时间for j=1:100     %%设定仿真次数for i=1:length(RC)  %%不同的更换周期R=normrnd(500,100,1,N);  %%产生正态分布随机数RR=R;                 %%用于记录R的原始值Rc=RC(i);             %%读取第i个刀具更换周期r=find(R>Rc);         %%查询寿命大于设定更换周期的刀具序号RR(r)=Rc;      %%替换为每把刀具的实际加工时间,RR代表了所有刀具的实际加工时间n1=length(r);  %%寿命大于设定时间的刀具n2=N-n1;       %%寿命小于设定时间的刀具get=sum(RR)*10;   %%计算毛收益lost=n2*3000;     %%计算危害损失get2(i,j)=get-lost;  %%计算净收益end
endfigure
plot(RC,mean(get2'))
xlabel('刀具更换周期/h')
ylabel('净收益')
g=mean(get2');
k=find(g==max(g))
RC(k)

***这个里面的normrnd函数,第一个参数是均值,第二个是方差,1,N表示的就是1行N列的矩阵

***find函数查找的就是寿命长,没有损坏的刀片,把这个更换的时间作为其实际工作时间去更新数据矩阵;

***mean函数求解平均值,默认的话就是对于列求解平均值,其他的注释都很清楚,这里不再赘述,有问题欢迎评论区或者私信留言~~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 国产芯上运行TinyMaxi轻量级的神经网络推理库-米尔基于芯驰D9国产商显板
  • 【Qt】多种控件实现“hello world“
  • 从今天开始深入学习 SQL 优化
  • 搭建 Web 群集Haproxy
  • 安装pointnet踩坑记录(情绪篇)
  • 学习c语言第24天(练习)
  • 进程状态(二)----- linux 中具体的进程状态(上)
  • 设置临时环境变量
  • utf-8‘ codec can‘t decode byte 0xd3 in position
  • Django ASGI服务
  • 易境通海运系统,让财务对账不再是老大难
  • 使用 1panel面板 部署 springboot 和 vue
  • Python酷库之旅-第三方库Pandas(073)
  • Preferences首选项存储工具类(Harmony OS)
  • 【实现100个unity特效之12】Unity中的冲击波 ——如何使用ShaderGraph制作一个冲击波着色器
  • 【EOS】Cleos基础
  • 2017-08-04 前端日报
  • django开发-定时任务的使用
  • es6要点
  • Java 最常见的 200+ 面试题:面试必备
  • JavaWeb(学习笔记二)
  • Java比较器对数组,集合排序
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • python_bomb----数据类型总结
  • vue 配置sass、scss全局变量
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 分布式事物理论与实践
  • 前端性能优化--懒加载和预加载
  • 如何优雅地使用 Sublime Text
  • 怎么将电脑中的声音录制成WAV格式
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云移动端播放器高级功能介绍
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​如何防止网络攻击?
  • ‌移动管家手机智能控制汽车系统
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $(function(){})与(function($){....})(jQuery)的区别
  • (vue)页面文件上传获取:action地址
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)用.Net的File控件上传文件的解决方案
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net Signalr 使用笔记
  • .NET6 命令行启动及发布单个Exe文件
  • .NET大文件上传知识整理
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ACM] hdu 1201 18岁生日
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [CLR via C#]11. 事件