用TOPSIS法计算例题Matlab
时间: 2023-10-03 21:04:16 浏览: 135
TOPSIS法是一种多属性决策分析方法,可以用于评估多个决策方案的表现,并确定最佳方案。下面是一个用Matlab进行TOPSIS法计算的例子。
假设有以下4个决策方案:
|方案|目标1|目标2|目标3|目标4|
|---|---|---|---|---|
|A|60|80|70|90|
|B|70|70|80|80|
|C|80|60|90|70|
|D|90|50|60|60|
现在我们使用TOPSIS法来确定最佳方案。以下是步骤:
1. 标准化决策矩阵
将每个指标的数值标准化到0到1之间,可以使用以下公式:
$$x_{ij}^{'}=\frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}x_{ij}^2}}$$
其中,$x_{ij}$是第$i$个决策方案的第$j$个指标值,$x_{ij}^{'}$是标准化后的值。
在Matlab中,可以使用以下代码标准化决策矩阵:
```matlab
X = [60 80 70 90;
70 70 80 80;
80 60 90 70;
90 50 60 60];
[n,m] = size(X);
X_norm = zeros(n,m);
for j = 1:m
X_norm(:,j) = X(:,j) ./ norm(X(:,j));
end
```
2. 确定权重
确定每个指标的权重,可以使用主成分分析(PCA)或层次分析法(AHP)等方法。这里我们假设已经确定权重为:
$$w=[0.25,0.3,0.25,0.2]$$
在Matlab中,可以使用以下代码指定权重:
```matlab
w = [0.25, 0.3, 0.25, 0.2];
```
3. 计算正负理想解
计算每个指标的正负理想解,可以使用以下公式:
$$\begin{aligned}
x_{j}^{+}&=\max_{i=1}^{n}x_{ij}^{'}\\
x_{j}^{-}&=\min_{i=1}^{n}x_{ij}^{'}
\end{aligned}$$
在Matlab中,可以使用以下代码计算正负理想解:
```matlab
X_plus = max(X_norm);
X_minus = min(X_norm);
```
4. 计算距离
计算每个决策方案到正负理想解的距离,可以使用以下公式:
$$\begin{aligned}
d_{i}^{+}&=\sqrt{\sum_{j=1}^{m}w_j(x_{ij}^{'}-x_{j}^{+})^2}\\
d_{i}^{-}&=\sqrt{\sum_{j=1}^{m}w_j(x_{ij}^{'}-x_{j}^{-})^2}
\end{aligned}$$
其中,$d_{i}^{+}$和$d_{i}^{-}$分别表示第$i$个决策方案到正负理想解的距离。
在Matlab中,可以使用以下代码计算距离:
```matlab
D_plus = sqrt(sum(w .* (X_norm - repmat(X_plus,n,1)).^2, 2));
D_minus = sqrt(sum(w .* (X_norm - repmat(X_minus,n,1)).^2, 2));
```
5. 计算综合得分
计算每个决策方案的综合得分,可以使用以下公式:
$$s_i=\frac{d_{i}^{-}}{d_{i}^{+}+d_{i}^{-}}$$
其中,$s_i$表示第$i$个决策方案的综合得分。
在Matlab中,可以使用以下代码计算综合得分:
```matlab
S = D_minus ./ (D_plus + D_minus);
```
6. 确定最佳方案
根据综合得分确定最佳方案。得分越高的方案越好。
在Matlab中,可以使用以下代码确定最佳方案:
```matlab
[~,best] = max(S);
```
最终结果显示,最佳方案为C。
阅读全文