层次分析方法vc源代码
时间: 2023-08-02 17:03:23 浏览: 153
层次分析法源代码
4星 · 用户满意度95%
层次分析方法是一种常用的多准则决策分析方法,常用于比较不同因素或方案的重要性或优劣程度。以下是一段关于层次分析方法的VC源代码:
```c++
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
int n;
cout << "请输入层次数n:" ;
cin >> n;
double** matrix = new double*[n];
for(int i=0; i<n; i++)
matrix[i] = new double[n];
cout << "请输入层次矩阵:" << endl;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cin >> matrix[i][j];
}
double* weight = new double[n];
double* eigenvalue = new double[n];
double sum = 0;
for(int j=0; j<n; j++)
{
double row_sum = 0;
for(int i=0; i<n; i++)
row_sum += matrix[i][j];
for(int i=0; i<n; i++)
matrix[i][j] /= row_sum;
sum += row_sum;
}
for(int i=0; i<n; i++)
{
weight[i] = 0;
for(int j=0; j<n; j++)
weight[i] += matrix[i][j];
weight[i] /= sum;
}
for(int i=0; i<n; i++)
{
eigenvalue[i] = 0;
for(int j=0; j<n; j++)
eigenvalue[i] += matrix[i][j]*weight[j];
}
double lambda_max = 0;
for(int i=0; i<n; i++)
lambda_max += eigenvalue[i]*weight[i];
double CI = (lambda_max - n)/(n-1);
double RI = 1.98; // 根据判断矩阵阶数对应的随机一致性指标表得到的RI值
double CR = CI/RI;
cout << "一致性比例CR:" << CR << endl;
if(CR < 0.1)
{
cout << "一致性通过,权重计算结果:" << endl;
for(int i=0; i<n; i++)
cout << weight[i] << " ";
cout << endl;
}
else
cout << "一致性不通过,请检查输入的层次矩阵是否正确!" << endl;
delete[] weight;
delete[] eigenvalue;
for(int i=0; i<n; i++)
delete[] matrix[i];
delete[] matrix;
return 0;
}
```
以上源代码是用C++编写的层次分析方法的程序。该程序首先输入层次数n,并创建一个大小为n的二维数组作为层次矩阵。然后输入层次矩阵的元素,并对其进行归一化处理。接下来计算每个因素的权重和特征向量,在计算一致性比例后输出最终的权重计算结果。
需要注意的是,层次分析方法的源代码可以根据实际情况进行修改,如输入方式、矩阵处理方法等。同时,该程序中的一致性判断标准RI值是根据判断矩阵阶数对应的随机一致性指标表获取的,也可以根据实际情况进行调整。
阅读全文