TOPSIS用c语言编程
时间: 2024-03-26 22:35:14 浏览: 43
TOPSIS(技术优劣排序法)是一种多准则决策分析方法,可以用C语言实现。以下是一个简单的TOPSIS算法的C语言实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 5 //样本数
#define M 4 //准则数
double x[N][M] = {{5, 6, 3, 4}, {8, 9, 2, 3}, {6, 5, 4, 3}, {9, 8, 3, 2}, {7, 6, 2, 5}}; //样本矩阵
double w[M] = {0.3, 0.2, 0.4, 0.1}; //准则权重
int c[M] = {1, 1, -1, -1}; //准则方向
double d[N]; //正负理想解距离
int rank[N]; //排名
double max(double a, double b) {
return a > b ? a : b;
}
double min(double a, double b) {
return a < b ? a : b;
}
int main()
{
//计算正理想解和负理想解
double ideal[M], anti_ideal[M];
for (int i = 0; i < M; i++) {
ideal[i] = c[i] * x[0][i];
anti_ideal[i] = c[i] * x[0][i];
for (int j = 1; j < N; j++) {
ideal[i] = max(ideal[i], c[i] * x[j][i]);
anti_ideal[i] = min(anti_ideal[i], c[i] * x[j][i]);
}
}
//计算各样本到正理想解和负理想解的距离
double s_plus[N], s_minus[N];
for (int i = 0; i < N; i++) {
s_plus[i] = 0;
s_minus[i] = 0;
for (int j = 0; j < M; j++) {
s_plus[i] += pow(c[j] * x[i][j] - ideal[j], 2);
s_minus[i] += pow(c[j] * x[i][j] - anti_ideal[j], 2);
}
s_plus[i] = sqrt(s_plus[i]);
s_minus[i] = sqrt(s_minus[i]);
}
//计算正负理想解距离
for (int i = 0; i < N; i++) {
d[i] = s_minus[i] / (s_plus[i] + s_minus[i]);
}
//排序,输出排名
for (int i = 0; i < N; i++) {
int r = 1;
for (int j = 0; j < N; j++) {
if (d[j] > d[i]) {
r++;
}
}
rank[i] = r;
}
//输出排名
printf("各样本排名为:\n");
for (int i = 0; i < N; i++) {
printf("样本%d的排名为:%d\n", i+1, rank[i]);
}
return 0;
}
```
在这个示例代码中,我们首先定义了样本数和准则数,以及样本矩阵和准则权重和方向。然后,我们计算了正理想解和负理想解,以及各样本到正理想解和负理想解的距离,并计算了正负理想解距离和排名。这个示例代码只是一个简单的TOPSIS算法的实现,实际应用中可能需要更复杂的算法和数据处理。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)