效果一览
基本介绍
基于云模型的施工安全风险评价Matlab代码和数据,运行环境matlab2020b及以上。两个MATLAB主程序代码文件主要实现了基于云模型的风险评估分析,结合专家打分数据,通过多级指标综合计算,最终生成风险等级的可视化云图。
主要功能
标准云模型构建
定义5个风险等级(稍有风险、一般风险、中度风险、较高风险、高度风险),通过期望(Ex)、熵(En)、超熵(He)生成标准云模型,并绘制云图,用于后续对比。
专家数据处理与二级指标建模
读取专家打分数据(20个二级指标,每个指标10个评分),利用cloud_SBCT_1thM函数为每个指标生成云模型参数(Ex, En, He),并保存结果。
多级指标综合
一级指标综合:将二级指标按权重(如人员风险、材料风险等类别)通过zonghe函数综合生成一级指标的云参数。
整体综合云:将一级指标按全局权重进一步综合,得到整体风险的综合云参数(EX, EN, HE)。
可视化对比
将各风险类别(人员、材料等)及整体综合云的云图与标准云模型叠加,直观展示风险隶属度分布。
算法原理
云模型
基于期望(Ex)、熵(En)、超熵(He)三个参数描述定性概念:
Ex:云滴分布的中心值,表示概念的核心。
En:反映概念的模糊范围,值越大覆盖范围越广。
He:控制云滴的离散程度,值越大云层越厚。
生成云滴时,通过正态分布随机生成(如En’ = normrnd(En, He),再根据X = normrnd(Ex, En’)生成数据)。
权重综合方法
一级指标综合:使用加权平均法对二级指标的云参数进行聚合。
整体综合:通过权重向量对一级指标参数进行线性组合(期望加权求和,熵和超熵通过误差传递公式计算)。
流程
标准云模型生成
定义5个等级的参数(Ex, En, He)。
调用cloud函数生成各等级的云滴数据,绘制标准云图。
专家数据处理
读取专家打分矩阵,逐行调用cloud_SBCT_1thM生成二级指标的云参数。
保存参数至Excel文件。
多级指标综合
按风险类别划分二级指标权重,综合生成一级指标参数(如人员风险R1)。
使用全局权重对一级指标参数进一步综合,得到整体风险的综合云参数。
可视化对比
分别绘制各风险类别及综合云的云图,叠加到标准云图上,标注风险等级。
关键函数
cloud(Ex, En, He, N):生成N个云滴(X,Y),用于绘制云图。
cloud_SBCT_1thM(data, N):根据专家数据生成云模型参数。
zonghe(data, w):按权重w综合多个云模型的参数。
应用场景
适用于施工安全、项目管理等领域中的风险评估,通过量化专家经验与不确定性分析,直观展示风险等级分布,辅助决策者制定风险应对策略。
计算公式
数据集
部分源码
%% 标准云参数 云模型
clc
clear
close all
%% 等级1-稍有风险
Ex1=(0+20)/2;% 期望
En1=(20-0)/6;% 熵
He1=0.03; % 超熵,控制标准隶属云的离散程度
%% 等级2-一般风险
Ex2=(20+40)/2;% 期望
En2=(40-20)/6;% 熵
He2=0.03; % 超熵,控制标准隶属云的离散程度
%% 等级3-中度风险
Ex3=(40+60)/2;% 期望
En3=(60-40)/6;% 熵
He3=0.03; % 超熵,控制标准隶属云的离散程度
%% 等级4-较高风险
Ex4=(60+80)/2;% 期望
En4=(80-60)/6;% 熵
He4=0.03; % 超熵,控制标准隶属云的离散程度
%% 等级5-高度风险
Ex5=(80+100)/2;% 期望
En5=(100-80)/6;% 熵
He5=0.03; % 超熵,控制标准隶属云的离散程度
% 等级1 云模型
N=4500;%% 云滴数
[X1,Y1]=cloud(Ex1,En1,He1,N);
% 等级2 云模型
[X2,Y2]=cloud(Ex2,En2,He2,N);
% 等级3 云模型
[X3,Y3]=cloud(Ex3,En3,He3,N);
% 等级4 云模型
[X4,Y4]=cloud(Ex4,En4,He4,N);
% 等级5 云模型
[X5,Y5]=cloud(Ex5,En5,He5,N);
rtcContent { padding: 30px; } .lineNode {font-size: 10pt; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-style: normal; font-weight: normal; }
function [X,Y]=cloud(Ex,En,He,N)
% %cloud正向云发生器
% 输入参数:Ex 期望;En 熵;He超熵;N 生成云滴的个数
% 输出:X,Y为云滴对应的坐标值
% 首先生成以En为数学期望,He2为方差的正态随机数
X=zeros(1,N);
Y=zeros(1,N);
X=normrnd(En,He,1,N);
%生成以Ex为期望,X(i)为方差的正态随机数
for k=1:N
E1=X(k);
X(k)=normrnd(Ex,E1,1);
Y(k)=exp(-(X(k)-Ex)^2/(2*(E1^2)));
end
参考资料
https://hmlhml.blog.csdn.net/article/details/145554366
https://hmlhml.blog.csdn.net/article/details/144132533
https://hmlhml.blog.csdn.net/article/details/142660665