package com.estate.expert.admin.component.fuzzy;
|
|
import lombok.AllArgsConstructor;
|
import lombok.Builder;
|
import lombok.Data;
|
import lombok.NoArgsConstructor;
|
|
/**
|
* 模糊层次分析法(FAHP)评估请求参数
|
*
|
* <p>该类封装了向模糊评估API发送请求所需的所有参数,用于进行模糊层次分析法评估。
|
* 模糊层次分析法是一种结合模糊数学和层次分析法的决策方法,适用于处理不确定性和主观判断。</p>
|
*
|
* <p>主要用途:</p>
|
* <ul>
|
* <li>建筑工程安全风险评估</li>
|
* <li>多因素决策分析</li>
|
* <li>专家判断的量化处理</li>
|
* </ul>
|
*
|
* @ClassName FuzzyApiRequest
|
* @Description 模糊层次分析法评估请求参数
|
* @Author daisy
|
* @Date 2023/10/29
|
**/
|
@Data
|
@Builder
|
@NoArgsConstructor
|
@AllArgsConstructor
|
public class FuzzyApiRequest {
|
|
/**
|
* 影响目标的所有因素的集合中元素的个数
|
*
|
* <p>表示参与评估的因素数量,必须与index数组长度、membership_data矩阵行数、
|
* compare_matrix_data矩阵维度保持一致。</p>
|
*
|
* <p>示例:如果评估"文明施工"、"高处作业"、"施工用电"、"作业脚手架"、"物料提升机与施工升降机"
|
* 这5个因素,则n=5。</p>
|
*/
|
@Builder.Default
|
int n = 5;
|
|
/**
|
* 每个因素的名字数组
|
*
|
* <p>包含所有参与评估的因素名称,数组长度必须等于n。
|
* 这些因素名称将用于标识评估结果中各个因素的权重和风险等级。</p>
|
*
|
* <p>格式示例:["文明施工", "高处作业", "施工用电", "作业脚手架", "物料提升机与施工升降机"]</p>
|
*
|
* <p>常见因素类型:</p>
|
* <ul>
|
* <li>安全管理:文明施工、施工用电、有限空间作业等</li>
|
* <li>设备管理:塔式起重机、施工升降机、物料提升机等</li>
|
* <li>作业管理:高处作业、脚手架作业、模板支架等</li>
|
* </ul>
|
*/
|
String[] index;
|
|
/**
|
* 隶属度矩阵,维度为 n×5
|
*
|
* <p>表示每个因素在各个风险等级上的隶属度,用于模糊数学计算。
|
* 矩阵的每一行对应一个因素,每一列对应一个风险等级。</p>
|
*
|
* <p>风险等级说明(5个等级):</p>
|
* <ul>
|
* <li>第1列:可忽略风险 (Very Low)</li>
|
* <li>第2列:低风险 (Low)</li>
|
* <li>第3列:中等风险 (Medium)</li>
|
* <li>第4列:高风险 (High)</li>
|
* <li>第5列:不可接受风险 (Very High)</li>
|
* </ul>
|
*
|
* <p>示例:{{0.6917f, 0.2917f, 0.0166f, 0.0f, 0.0f}}
|
* 表示该因素在可忽略风险上的隶属度为0.6917,在低风险上的隶属度为0.2917,
|
* 在中等风险上的隶属度为0.0166,在高风险和不可接受风险上的隶属度为0。</p>
|
*
|
* <p>约束条件:每行所有元素之和应等于1.0(隶属度归一化)</p>
|
*/
|
float[][] membership_data;
|
|
/**
|
* 两两比较矩阵,维度为 n×n
|
*
|
* <p>表示因素之间的相对重要性比较,用于层次分析法计算权重。
|
* 矩阵中元素a[i][j]表示第i个因素相对于第j个因素的重要性比值。</p>
|
*
|
* <p>比较标度说明:</p>
|
* <ul>
|
* <li>1.0:两个因素同等重要</li>
|
* <li>3.0:第i个因素比第j个因素稍微重要</li>
|
* <li>5.0:第i个因素比第j个因素明显重要</li>
|
* <li>7.0:第i个因素比第j个因素强烈重要</li>
|
* <li>9.0:第i个因素比第j个因素极端重要</li>
|
* <li>倒数:如果a[i][j] = x,则a[j][i] = 1/x</li>
|
* </ul>
|
*
|
* <p>矩阵特性:</p>
|
* <ul>
|
* <li>对角线元素均为1.0(自己与自己比较)</li>
|
* <li>矩阵为对称矩阵的倒数(a[i][j] = 1/a[j][i])</li>
|
* <li>所有元素均为正数</li>
|
* </ul>
|
*
|
*/
|
float[][] compare_matrix_data;
|
|
/**
|
* 专家数量
|
*
|
* <p>参与评估的专家人数,用于多专家决策的权重计算。
|
* 当num_experts > 1时,系统会对多个专家的判断进行综合处理。</p>
|
*
|
* <p>使用场景:</p>
|
* <ul>
|
* <li>单专家评估:num_experts = 1(默认值)</li>
|
* <li>多专家评估:num_experts > 1,需要提供多个专家的判断矩阵</li>
|
* </ul>
|
*
|
*/
|
@Builder.Default
|
int num_experts = 1;
|
|
@Builder.Default
|
float [] sub_riskpoint = new float[0];
|
|
}
|