层次分析法java_层次分析法java实现
时间: 2023-06-29 12:19:49 浏览: 73
层次分析法是一种常用的多准则决策分析方法,它可以将复杂的决策问题转化为层次结构,通过层次结构的分解和比较,得出最终的决策结果。下面是一个简单的层次结构示例:
```
目标
├── 准则 1
│ ├── 子准则 1.1
│ └── 子准则 1.2
├── 准则 2
│ ├── 子准则 2.1
│ └── 子准则 2.2
└── 准则 3
├── 子准则 3.1
└── 子准则 3.2
```
在Java中,我们可以使用层次分析法来解决决策问题。下面是一个简单的Java实现示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class AHP {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入准则和子准则
System.out.print("请输入准则数量:");
int n = scanner.nextInt();
System.out.print("请输入子准则数量:");
int m = scanner.nextInt();
List<String> criteria = new ArrayList<>();
for (int i = 0; i < n; i++) {
System.out.print("请输入准则" + (i + 1) + "的名称:");
criteria.add(scanner.next());
}
List<List<String>> subcriteria = new ArrayList<>();
for (int i = 0; i < n; i++) {
List<String> row = new ArrayList<>();
for (int j = 0; j < m; j++) {
System.out.print("请输入准则" + (i + 1) + "的子准则" + (j + 1) + "的名称:");
row.add(scanner.next());
}
subcriteria.add(row);
}
// 输入判断矩阵
double[][][] matrix = new double[n][m][m];
for (int i = 0; i < n; i++) {
System.out.println("请输入准则" + (i + 1) + "的判断矩阵:");
for (int j = 0; j < m; j++) {
for (int k = 0; k < m; k++) {
System.out.print(subcriteria.get(i).get(j) + "相对于" + subcriteria.get(i).get(k) + "的比重是:");
matrix[i][j][k] = scanner.nextDouble();
}
}
}
// 计算权重
double[] weights = new double[n];
for (int i = 0; i < n; i++) {
double sum = 0;
for (int j = 0; j < m; j++) {
double product = 1;
for (int k = 0; k < m; k++) {
product *= matrix[i][j][k];
}
sum += product;
}
weights[i] = sum / m;
}
// 输出结果
System.out.println("准则权重如下:");
for (int i = 0; i < n; i++) {
System.out.println(criteria.get(i) + ":" + weights[i]);
}
}
}
```
这个程序可以让用户输入准则和子准则的名称,以及每个准则相对于其他子准则的比重。然后,它可以计算出每个准则的权重,并将结果输出到控制台。