liujie
2026-05-21 0e5d431f85612bf3abc0515fb6e46e500b5cdfe1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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];
 
}