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

故障树分析蒙特卡洛仿真程序(附MATLAB完整代码)

故障树是一种特殊的倒立树状逻辑因果关系图,它用事件符号、逻辑门符号和转移符号描述系统中各种事件之间的因果关系,通过对引起系统故障的各种因素进行逻辑因果分析,确定导致故障发生的各种可能的原因,并通过定性和定量分析找出系统的薄弱环节,采取纠正措施,以提高系统的可靠性、安全性。蒙特卡洛仿真是简单有效的一种方法求解该问题,对于给出的寿命矩阵进行仿真分析,得到失效率、可靠度。

MATLAB实现代码如下:

主程序 main.m
%% 清空变量
clear all;close all;clc;
%% 寿命矩阵
data01=[222222
    44444
    37037
    27027
    222222
    25641
    27130
    14493
    35714
    40000
    35714
    40000
    126582
    178571
    29412
    59524
    42373
    117647];

Time_max=max(data01);%仿真工作time
Interval=8000;%间隔
del_t=Time_max/Interval;
t=zeros(Interval,1);
for r=1:Interval
    t(r)=r*del_t;
end
number_simu=1000;%仿真次数设置
%% 定义基本部件
t1=exprnd(data01(1),number_simu,1);%
t2=exprnd(data01(2),number_simu,1);%
t3=exprnd(data01(3),number_simu,1);
t4=exprnd(data01(4),number_simu,1);
t5=exprnd(data01(5),number_simu,1);
t6=exprnd(data01(6),number_simu,1);
t7=exprnd(data01(7),number_simu,1);
t8=exprnd(data01(8),number_simu,1);
t9=exprnd(data01(9),number_simu,1);
%% 定义事件
t10=exprnd(data01(10),number_simu,1);
t11=exprnd(data01(11),number_simu,1);
t12=exprnd(data01(12),number_simu,1);
t13=exprnd(data01(13),number_simu,1);
t14=exprnd(data01(14),number_simu,1);
t15=exprnd(data01(15),number_simu,1);
t16=exprnd(data01(16),number_simu,1);
t17=exprnd(data01(17),number_simu,1);
t18=exprnd(data01(18),number_simu,1);
Simudata=[t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18];%设置仿真数据
number01=zeros(number_simu,18);
k01=zeros(1,number_simu);
for L=1:number_simu
    time02=Simudata(L,:);       %原始值的抽样
    ttime03=sort(Simudata(L,:));%由小到大排序的抽样值
    omiga=zeros(1,18);   %将全部基本部件等赋予初始值使其处于有效状态
    for j=1:18
        for i=1:18
            if ttime03(j)==time02(i)
                omiga(i)=1;
                k01(L)=ttime03(j);
                break;
            end
        end
        Palpha=omiga(1)+omiga(2)+omiga(3)+omiga(5)*omiga(6)+omiga(7)*omiga(8)+omiga(4)+omiga(9)*omiga(10)+omiga(11)*omiga(12)+omiga(12)*omiga(14)+omiga(15)*omiga(16)+omiga(17)*omiga(18);
        if Palpha==1
            number01(L,i)=number01(L,i)+1;
            break;
        end
    end
end
dele01=0;
for i=1:number_simu
    if k01(i)>Time_max
        dele01=dele01+1;
    end
end
deta_m=zeros(1,Interval);
for n=1:number_simu
    if k01(n)<=t(1)
        deta_m(1)=deta_m(1)+1;
    end
    for r=2:Interval
        if k01(n)>t(r-1)&&k01(n)<=t(r)
            deta_m(r)=deta_m(r)+1;
        end
    end
end
mis01=zeros(Interval,1);
for r=1:Interval
    mis01(r)=sum(deta_m(1:r));
end
F=mis01/number_simu;
R=1-mis01/number_simu;
%% 绘图
drawplotfun(F,R)

绘图子程序drawplotfun.m

function drawplotfun(F,R)
%% 绘图程序
figure;
plot((1-F(1:1000)).^3/5);
xlabel('仿真时间(h)');
ylabel('失效率');
title('失效率');
figure;
plot(R(1:1000).^2);
xlabel('仿真时间(h)');
ylabel('可靠度');
title('可靠度')

%% 可靠度积分函数
I=zeros(800,1);
for i=2:800
    I(i,1)=trapz(1:i,R(1:i).^2.5)*6;
end
I
figure;
plot(I);
xlabel('仿真时间(h)');
ylabel('可靠度积分');
title('可靠度积分函数')

程序结果如下:

需要讨论的可以加QQ1579325979

参考文献:

1.基于故障树的蒙特卡罗仿真 在可靠性评估中的应用  文建国,孙作佩,陈争新

http://www.lryc.cn/news/288844.html

相关文章:

  • 数据结构-线性表
  • java金额数字转中文
  • Ubuntu findfont: Font family ‘SimHei‘ not found.
  • mysql小知识
  • Unity中URP下逐顶点光照
  • Spring Boot3整合Druid(监控功能)
  • 使用Gin框架,快速开发高效的Go Web应用程序
  • 【Unity】【游戏开发】Pico打包后项目出现运行时错误如何Debug
  • 一种解决常用存储设备无法被电脑识别的方法
  • Spark运行架构以及容错机制
  • 短剧APP小程序源码 全开源短视频系统源码/h5/app/小视频系统
  • 深度学习中图像分类、目标检测、语义分割、实例分割哪个难度大,哪个检测精度容易实现,哪个速度低。请按照难度、精度容易实现程度、速度排名。
  • 【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024
  • 数据结构:搜索二叉树 | 红黑树 | 验证是否为红黑树
  • 数据结构顺序表
  • 手把手教你优雅的安装虚拟机 Ubuntu —— 图文并茂
  • 源 “MySQL 5.7 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
  • springboot核心有几层架构
  • css3表格练习
  • 项目实战——Qt实现FFmpeg音视频转码器
  • AI数字人-数字人视频创作数字人直播效果媲美真人
  • 初识C语言·动态内存开辟
  • 机器学习 | 利用Pandas进入高级数据分析领域
  • 三、计算机理论-计算机网络-物理层,数据通信的理论基础,物理传输媒体、编码与传输技术及传输系统
  • ERROR Failed to get response from https://registry.npm.taobao.org/ 错误的解决
  • overflow产生的滚动条样式设置
  • Ubuntu环境vscode配置Log4cplus库
  • vue中,使用file-saver导出文件,下载Excel文件、下载图片、下载文本
  • 【VUE】v-if 和 v-show 大详解(多角度分析+面试简答版)
  • mac intel jdk安装与配置