三角模糊LEC云模型:综合管廊施工风险评估与Matlab实现

📅 发布时间:2026/10/10 20:34:39
三角模糊LEC云模型:综合管廊施工风险评估与Matlab实现
传统LEC法在综合管廊施工风险评估里用了很多年但实际用起来总有一种打分像吵架、结论靠拍板的感觉。三五个专家坐在一起对同一处基坑开挖的事故可能性L能打出0.5也能打出6最后算出来的D值忽高忽低很难说服所有人。我后来把三角模糊数和云模型套进LEC框架里做了个三角模糊LEC云模型的评估方案把每个专家的分歧变成模糊区间再通过云模型把评估结果的离散程度可视化。这篇文章就把这套框架的来龙去脉、完整算例和配套Matlab代码逻辑一次讲清楚适合正在做施工安全风险评估、论文课题或安全咨询方案的朋友内容偏实操可以直接复现。1. 传统LEC法评估综合管廊施工最大的问题出在哪1.1 管廊施工的风险画像综合管廊施工和普通房建项目不太一样它的作业面基本集中在狭长的地下通道内大部分工序是深基坑开挖、支护结构施工、管线迁改、有限空间作业、起重吊装和交叉作业。这些工序的风险特征有几个共通点一是空间封闭性强中毒窒息、火灾爆炸这类事故一旦发生救援通道往往会被同时切断二是基坑深度和周边管线复杂开挖面稍微控制不住就可能酿成坍塌连带破坏燃气、供水、电缆等市政设施三是多工序交叉作业吊装、土方运输、模板支护几乎在同一时间段内叠加进行互相干扰因素多。用LEC法对这类工况做评估思路是对的用L事故发生的可能性、E人员暴露在危险环境的频繁程度、C发生事故产生的后果三个指标相乘得到D值再根据D值划分风险等级。1.2 LEC法的三大硬伤我在实际项目里用过一段时间的传统LEC法问题集中表现在三个地方。第一打分是单点值。L、E、C三个指标各给一个确定数比如L取3、E取6、C取15但现场情况远没有这么确定。同一个风险单元不同角色的专家看到的信息完全不一样安全员觉得每周都可能出现违规暴露施工班长觉得半年都碰不上一次最后只能取一个所谓的平均值这个平均值把讨论过程里的所有分歧信息都丢掉了。第二等级边界是硬切。LEC法把D值分成20、20~70、70~160、160~320、≥320几档70和71只差一分却一个是显著危险、一个是高度危险决策者看到结论会以为两者有本质差别。但实际上专家打分本身就有很大的不确定性边界附近的风险等级本质上应该是模糊过渡的。第三多人打分的离散程度被掩盖。平均之后只留一个D值如果6个专家打分分别是150、155、160、165、170、300平均值是183落在高度危险但决策者完全看不出有一位专家认为是极其危险这个重要信号。1.3 为什么是三角模糊云模型而不是别的先处理三角模糊的问题三角模糊数用左值、中值、右值三个参数描述一个不确定量对应到打分场景里就是保守估计、最可能值、乐观估计。专家不需要被迫选择一个确定数只需要给一个区间这样就把人的判断不确定性显性化了。再处理云模型的问题云模型是李德毅院士提出的不确定性转换理论用期望Ex、熵En、超熵He三个数字特征描述一个定性概念。期望表示概念的核心位置熵表示概念外延的模糊跨度超熵表示熵本身的随机波动。简单理解云模型不仅能告诉你风险值大概在哪个位置还能通过云滴分布告诉你这个位置有多确定、边界有多弥散。对于安全评估这种天然充满随机性和模糊性的场景云模型正好补上了传统LEC法只有点值、没有分布的短板。我当时的做法是先用三角模糊数对L/E/C三个维度做模糊打分通过模糊运算得到综合D值的模糊区间再把模糊区间转换为云参数用正向云发生器生成风险云图最后看综合风险云和标准等级云的相对位置来判断等级。后面几章逐步拆解。2. 三角模糊LEC云模型的评估框架搭建2.1 指标与等级设计先让风险有共同刻度搭建框架前需要先把评价指标和等级标准统一好。本项目直接沿用LEC法的三个核心指标不额外增加指标因为这三个指标本身已经覆盖了发生的概率、暴露的程度、后果的严重性再加指标反而会把评估焦点带偏。风险单元的划分是另一个关键步骤。以综合管廊施工为例一般按施工段和工序拆分为深基坑开挖与支护、基坑降水与排水、地下管线迁改、模板支撑体系搭设与拆除、有限空间作业、盾构或顶管区间掘进、起重吊装、交叉作业与交通安全等。每个风险单元独立评估互不混淆。LEC的标准分值表仍然作为打分基准指标低档参考值中档参考值高档参考值L可能性0.1完全不可能0.5极不可能1不可能但理论上存在3可能但不经常6可能且经常10完全可预料E暴露频率0.5非常罕见1每年几次2每月一次3每周一次6每天暴露10连续暴露C后果严重度1引人注意3重大7严重重伤15死亡1人40数人死亡100多人死亡的大灾难等级云参数参照传统LEC法的D值分档区间映射得到。这里需要说明I级区间的左边界取0V级的右边界没有理论极限实际计算时我习惯取400作为截断上限只用于生成云图对比不参与最终等级判定。风险等级D值区间期望Ex熵En超熵HeI级 稍有危险0~20103.330.5II级 一般危险20~70458.330.5III级 显著危险70~16011515.000.5IV级 高度危险160~32024026.670.5V级 极其危险320~40036013.330.5熵En按区间宽度的1/6计算原理是正态分布的3σ覆盖原则区间约99.7%的云滴会落在[Ex−3En, Ex3En]之内这样标准等级云的边界和LEC法的分档边界基本对齐。2.2 三角模糊数的打分与聚合方式实际打分时每位专家对每个风险单元的L、E、C分别给出一个三角模糊数记为(a, b, c)。a代表保守估计b代表最可能值c代表乐观估计。打分规则有两条硬约束三条值必须在同一档或相邻档比如L不能同时给0.5和6C的分档跨度不得超过一档比如不能左边给7、右边给40。这两条约束是为了控制模糊区间的膨胀程度后面会详细解释原因。假设有n位专家第i位专家的权重为w_iL/E/C的综合模糊数用加权平均计算例如L̃ ( Σwᵢ·a_Lᵢ / Σwᵢ Σwᵢ·b_Lᵢ / Σwᵢ Σwᵢ·c_Lᵢ / Σwᵢ )Ẽ和C̃同理。然后计算综合风险D̃ L̃ ⊗ Ẽ ⊗ C̃。三角模糊数乘法在严格数学意义下结果不是标准三角模糊数但工程应用里普遍采用分量近似D̃ ≈ ( a_L·a_E·a_C b_L·b_E·b_C c_L·c_E·c_C )这个近似在LEC法这种本身属于半定量评估的场景下是可接受的但如果三个指标数值跨度很大分量乘法的区间放大会很明显我在第5章会给出应对方式。2.3 从模糊数到云参数熵和超熵怎么来得到综合D̃之后下一步是将其转化为综合风险云的三个参数。我的转换公式如下Ex b_DEn ( c_D − a_D ) / 6He max( 0.05·En , 0.618·σ_m / 3 )公式的含义期望取三角模糊数的最可能值这是共识度最高的位置熵由模糊区间的左右宽度换算而来宽度越大说明专家们对风险值的认识越模糊云的跨度越大超熵则用所有专家个人最可能值的标准差σ_m来修正再乘一个经验系数0.618反映专家之间的分歧程度。为什么超熵要反映专家分歧因为综合模糊数已经包含了区间宽度但两个不同的专家团队可能给出完全相同的综合模糊数一个团队内部高度一致另一个团队内部吵成一团这两种情况的风险可信度完全不同。加入标准差项后云滴的离散程度能把这种差异显现出来。0.618这个系数来自黄金分割比例是我在多次试算后觉得视觉上比较平衡的取值不是严格推导出来的读者可以按项目实际情况调整。3. 综合管廊施工风险评估的完整算例3.1 示例工况与专家小组构成用一个实际评估场景来演示。某综合管廊工程K2850~K3020段基坑深度8.5米采用SMW工法桩加内支撑支护基坑边线距离既有DN300中压燃气管线约4米作业内容包括土方开挖、钢支撑架设和底板结构施工。选取深基坑开挖与支护坍塌作为风险单元进行评估。专家小组由6人组成业主安全主管、项目总工、监理工程师、施工班组长、设计代表、安全咨询工程师。权重分别取0.20、0.15、0.20、0.10、0.20、0.15权重代表对现场信息的掌握程度和评估角色的重要性。3.2 打分数据汇总与模糊运算6位专家对L、E、C三个指标的打分数据如下数据格式为a, b, c专家LEC业主安全主管(2, 3, 4)(3, 4, 6)(10, 15, 25)项目总工(2, 3, 5)(3, 4, 5)(7, 15, 20)监理工程师(3, 4, 6)(3, 5, 6)(10, 15, 25)施工班组长(2, 3, 4)(3, 4, 6)(7, 15, 25)设计代表(3, 4, 5)(4, 5, 6)(7, 15, 20)安全咨询工程师(2, 3, 5)(3, 4, 6)(10, 15, 20)先分别计算L、E、C的加权三角模糊数。以L为例L左值 (0.2×2 0.15×2 0.2×3 0.1×2 0.2×3 0.15×2) / 1.0 2.40L中值 (0.2×3 0.15×3 0.2×4 0.1×3 0.2×4 0.15×3) / 1.0 3.40L右值 (0.2×4 0.15×5 0.2×6 0.1×4 0.2×5 0.15×5) / 1.0 4.90同理可得Ẽ约等于(3.15, 4.35, 5.65)C̃约等于(8.65, 15.00, 22.60)。然后计算综合风险模糊数D̃ ≈ (2.40×3.15×8.65, 3.40×4.35×15.00, 4.90×5.65×22.60) ≈ (65.4, 221.9, 625.7)D值最可能为221.9落在LEC法的高度危险区间最保守估计65.4落在一般危险最乐观估计625.7已经进入极其危险。这个跨度非常大正好说明只用单一D值做决策会丢失大量边界信息。3.3 云模型输出与等级判定将D̃的模糊区间转换为云参数Ex 221.9En (625.7 − 65.4) / 6 ≈ 93.4超熵He还需要用专家个人D值的中心值计算标准差。每位专家的个人D中心值为L中×E中×C中计算结果依次为180、225、300、180、300、180平均约为227.5标准差σ_m约为54.5代入公式He max(0.05×93.4, 0.618×54.5/3) max(4.67, 11.23) ≈ 11.23用这组参数生成2000个云滴统计云滴落入各等级区间的比例。我这里实测的一组典型结果是落入III级显著危险约8.5%落入IV级高度危险约81.3%落入V级极其危险约9.7%I级和II级接近0。因此判定该风险单元的最终等级为IV级高度危险。这个结论和传统的点值法结果一致但云模型多给出了一个非常关键的信息该风险单元有约10%的概率滑向极其危险决策者应当把注意力放在控制这个尾部风险上而不是只看到一个IV级的结论就结束。4. Matlab代码实现正向云发生器、模糊聚合与可视化4.1 整体代码结构与数据组织Matlab代码按主脚本函数文件的方式组织建议文件结构如下main_risk_assessment.m主脚本定义数据、调用函数、输出结果和绘图forward_cloud.m正向云发生器生成云滴坐标和隶属度fuzzy_to_cloud.m三角模糊数转云参数cloud_frequency.m统计云滴在各等级区间的频率占比代码只用到randn、mean、std、histcounts等基础函数和绘图函数不依赖任何工具箱Matlab R2016b及以上版本都能直接运行。数据部分用矩阵存储每行一位专家每三列为一组指标的左、中、右值。4.2 关键函数实现正向云发生器的实现是整套代码的核心。算法逻辑是先由期望Ex和熵En生成一个服从正态分布的随机数作为熵的采样值再由这个采样熵和期望Ex生成一个云滴坐标最后计算该云滴的隶属度。循环n次得到n个云滴。function [x, u] forward_cloud(Ex, En, He, n) % 正向云发生器 % 输入Ex期望En熵He超熵n云滴数量 % 输出x一维位置坐标u隶属度 x zeros(1, n); u zeros(1, n); for i 1:n % 熵的随机扰动生成一个均值为En、标准差为He的正态随机数 Enn abs(normrnd(En, He)); % 云滴坐标生成一个均值为Ex、标准差为Enn的正态随机数 x(i) normrnd(Ex, Enn); % 云滴隶属度 u(i) exp(-(x(i) - Ex)^2 / (2 * Enn^2)); end end注意Enn加abs()是为了防止熵的采样值出现负值这在超熵较大时是必须的。我最初写代码时漏了这行Enn一旦变负后面的exp计算直接产生NaN整张云图就断了。三角模糊数转云参数的函数如下function [Ex, En, He] fuzzy_to_cloud(fl, fm, fr, expert_mid, coef) % 三角模糊数转云参数 % 输入fl模糊左值fm模糊中值fr模糊右值expert_mid各专家中值向量 % coef超熵比例系数建议0.05~0.15 Ex fm; En (fr - fl) / 6; sigma_m std(expert_mid); He max(coef * En, 0.618 * sigma_m / 3); end这个函数把第2.3节的转换公式直接落到代码里。其中expert_mid是计算每位专家个人D值中值后得到的向量主脚本里需要提前算好传进来。主脚本中聚合专家打分并生成综合云的流程如下clear; clc; rng(2026); % 固定随机种子保证结果可复现 % 专家打分矩阵每行[L左 L中 L右 E左 E中 E右 C左 C中 C右] S [2 3 4 3 4 6 10 15 25; 2 3 5 3 4 5 7 15 20; 3 4 6 3 5 6 10 15 25; 2 3 4 3 4 6 7 15 25; 3 4 5 4 5 6 7 15 20; 2 3 5 3 4 6 10 15 20]; % 专家权重 w [0.20 0.15 0.20 0.10 0.20 0.15]; W sum(w); % 加权聚合L/E/C三角模糊数 for k 1:3 L(k) sum(S(:, k) .* w) / W; E(k) sum(S(:, k 3) .* w) / W; C(k) sum(S(:, k 6) .* w) / W; end % 综合风险三角模糊数分量近似乘法 D [L(1)*E(1)*C(1), L(2)*E(2)*C(2), L(3)*E(3)*C(3)]; % 计算每位专家个人D值中值用于超熵修正 expert_mid zeros(6, 1); for i 1:6 expert_mid(i) S(i,2) * S(i,5) * S(i,8); end % 三角模糊数转云参数 [Ex, En, He] fuzzy_to_cloud(D(1), D(2), D(3), expert_mid, 0.06); disp([综合云参数Ex, num2str(Ex), , En, num2str(En), , He, num2str(He)]); % 生成综合云滴 n 2000; [x, u] forward_cloud(Ex, En, He, n); % 统计云滴落在各等级区间的频率 edges [0 20 70 160 320 400]; cnt histcounts(x, edges); prob cnt / sum(cnt); disp([I级占比, num2str(prob(1)*100), %]); disp([II级占比, num2str(prob(2)*100), %]); disp([III级占比, num2str(prob(3)*100), %]); disp([IV级占比, num2str(prob(4)*100), %]); disp([V级占比, num2str(prob(5)*100), %]);histcounts的边界处理要注意边界默认是左闭右开因此D值恰好等于320时会计入V级而不是IV级。实际工程中D值等于320的概率极低对结果影响可以忽略。绘图部分我习惯把标准等级云和综合风险云画在同一张图里figure; hold on; % 标准等级云五档分别生成1000个云滴 lv [0 20; 20 70; 70 160; 160 320; 320 400]; colors [0.2 0.2 0.2; 0.4 0.4 0.8; 0.3 0.7 0.3; 0.9 0.6 0.1; 0.8 0.2 0.2]; for i 1:5 Ex0 mean(lv(i,:)); En0 diff(lv(i,:)) / 6; He0 0.5; [x0, u0] forward_cloud(Ex0, En0, He0, 1000); plot(x0, u0, o, MarkerSize, 1.5, Color, colors(i,:)); end % 综合风险云 plot(x, u, o, MarkerSize, 2, Color, [0 0 0]); % 画分档线 xline([20 70 160 320], --, {I/II, II/III, III/IV, IV/V}); xlabel(D值); ylabel(隶属度); legend(I级, II级, III级, IV级, V级, 综合风险云, Location, best); title(综合管廊施工风险云图);云滴散点图的标准画法是x坐标为D值、y坐标为隶属度每个云滴是一个点。当云滴密度很高时图形会呈现出云的轮廓期望位置云滴最密集向两侧逐渐稀薄。4.3 运行结果与图纸审美按照上面的代码跑出来的综合云参数大约是Ex221.9、En93.4、He11.2。从图上能直观看到综合风险云的主体集中在III级到V级之间云滴中心明显偏向D值220附近和IV级标准云的分布区域重合度最高。画图时有几个提升可读性的细节值得注意。标准等级云和综合风险云的点型要区分开我习惯把标准云用浅色小点、综合云用黑色稍大的点否则整张图会变成一坨难以分辨的散点。云滴数量控制在1000~2000个比较合适太少看不出云形太多图形会糊成实心色块。随机种子用rng固定同一组数据每次运行结果一致这在写评估报告时特别重要。4.4 手里没有专家数据时怎么自测如果你只是想把代码跑通又暂时没有真实的专家打分数据可以用一组自测试数据比如L(2,3,4)、E(3,4,5)、C(7,15,25)复制6行让所有专家打分一致。这时综合云参数大约是Ex180、En≈50、He≈2.5云图会呈现非常集中的形态这正好能验证代码逻辑当专家意见完全一致时超熵应该很小云滴几乎贴着一条正态曲线分布。如果希望测试专家分歧对结果的影响可以把其中一位专家的L中值改为6、另一位改为1其余不变重新运行后会发现He明显增大云图发散、跨级云滴变多这就是专家分歧在云模型中的直接体现。这种敏感性测试在方案定稿前非常有用可以判断评估结论是否稳健。5. 实测中的坑参数取值、结果解释与常见翻车现场5.1 超熵He不是你想取多少就取多少我第一次调代码时为了省事把He固定成0.5结果综合云的形态和标准等级云完全区分不开云滴过度发散频率统计结果也变得毫无意义。后来才意识到He必须和En保持合理的相对关系。经验取值规则如果He大于0.2×En云图基本就糊成一团了如果He小于0.02×En云滴分布接近普通正态分布云模型的优势又体现不出来。我通常把He设为目标值En的5%~10%同时再用专家意见标准差做下限修正。前面的示例里En93.4、He11.2比值约12%已经处于合理范围的边缘不能再大了。5.2 分量相乘的近似误差三角模糊数相乘严格来说会得到一个非线性模糊数但LEC的D值为L、E、C三者乘积用分量近似的误差来源是C的量级通常远大于L和E导致D的右值被过分放大。比如示例中的D右值625.7看起来非常吓人但真正生成云滴后D值超过500的云滴占比极低因为云滴的分布中心是Ex221.9并不会真的围绕625.7旋转。这个近似在工程上是可接受的LEC法本身就是半定量方法没必要追求严格的模糊数学计算。但如果你发现云滴频率统计结果和D值点判结果出现明显矛盾比如Ex明明落在III级频率统计却显示IV级占比最高那就要检查是不是某个专家的C值打分跨档过大。解决方法是收严打分约束C值不允许从7跨到40只允许左右相差不超过一档这是我在2.2节反复强调的规则。5.3 云图交叉与落入等级区间判定的边界情况标准等级云之间本身存在交叉重叠的区域尤其III级和IV级的分界线160附近III级云的右端和IV级云的左端都会在这个区域产生云滴。综合风险云恰好落在边界附近时频率统计结果可能出现III级和IV级占比接近的情况比如51%对45%。这时不宜机械地把高占比那一档作为最终结论而应该回到云图上做人工判断。我常用的辅助做法是把综合云的Ex和标准等级云的Ex做距离对比再看综合云的3σ区间覆盖了哪些等级区间。3σ区间覆盖IV级主体且尾端触及V级时结论写IV级注意V级尾部风险比单纯写一个等级更贴近现场决策需要。5.4 负值云滴和超范围云滴怎么处理I级标准云的左边界是0正向云发生器在生成Ex接近10、En为3.33的标准云滴时依然有小概率产生负值。综合风险云如果紧贴II级边界也可能出现类似问题。我的处理方式是只统计落在[0,400]区间内的云滴出界的云滴从频率统计样本中剔除但保留在图上绘图。这样既不影响图形完整性又不会让统计分析被负值干扰。6. 方法还能往哪扩展6.1 从单次评估到动态风险监控这篇文章的算例是一次性评估实际施工中风险状态是随时间变化的。同样的框架可以做成滚动评估每天收集现场巡查记录、监测数据和隐患排查台账把当天的风险单元状态映射为L/E/C三角模糊数连续绘制风险云的动态变化图。云的中心位置发生漂移时能从Ex的变化看到趋势云的形状突然发散时说明现场不确定性变大通常意味着管理失控的前兆。这种用法尤其适合基坑监测数据和有限空间气体监测数据的实时接入。6.2 与BIM模型和智能预警结合综合管廊工程普遍有BIM模型可以把风险单元挂接在BIM构件上每个构件存储当前风险云的三个参数。后台每收到一批新的监测数据或巡检记录就更新对应的Ex、En、He并在模型上渲染云图。当综合云的中心穿过某个等级边界或者云滴的尾部进入更高级别区间的频率超过预设阈值时系统推送预警信息。这个方案把云模型从评估工具升级成了预警引擎对现场安全管理决策的支撑价值更大。同样的思路还能迁移到地铁车站深基坑、盾构下穿既有管线、隧道瓦斯段施工等场景只要风险可以用LEC类指标描述三角模糊LEC云模型都能套用只需要重新设定L/E/C的参考值表和等级区间。6.3 代码按脚本和函数分开管理的习惯最后说一个我在交付这套代码时常踩的坑把全部代码塞进一个main.m里虽然也能跑通但后续换数据、换风险单元时要反复改大段代码还容易出现变量覆盖错误。我更建议把正向云发生器、模糊数转云参数、频率统计三个功能写成独立函数主脚本只负责定义数据和调用。这样更换算例时只改主脚本的数据矩阵核心算法文件完全不用动。加足够的注释尤其是Enn为什么要加absHe为什么这样取三个月后再打开代码的人会感谢你。