Multi-Criteria Decision Support Systems (MCDM)
A ranking without a stability analysis is an opinion with decimal places.
- Python
- NumPy
- SciPy
Problem
Multi-criteria methods take a table and return an order. The order is always sharp: supplier C beats D by 0.0031.
That 0.0031 is not a finding. It is one decimal place of a number built on weights someone estimated in a meeting. The method never says so; an order is all a method can say.
Solution
Four methods (SAW, WASPAS, TOPSIS, VIKOR) are implemented properly, with weights elicited from qualitative judgements through MACBETH, and then what the methods cannot say about themselves is measured.
Two things are measured. First rank reversal: removing a losing alternative should not change the winner. Second robustness: how much error in the weights the recommendation survives.
Outcome
19,200 decision problems across 48 conditions. Over 153,600 removals per method, rank reversal runs at WASPAS 0.70% · SAW 1.19% · TOPSIS 2.75% · VIKOR 3.76%.
In the worked case (seven suppliers, six criteria) MACBETH finds the buyer's twelve judgements inconsistent and narrows the fault to a single one. Four of the six weights cannot change the answer at any value in (0, 1); the recommendation holds up to ±30% measurement error.
The hypothesis written before the run was refuted and reported as such: disagreement was expected to track criterion correlation. It does not. What drives it is the weight distribution and the size of the problem. 139 tests.
In the worked case SAW, WASPAS and TOPSIS name one supplier and VIKOR names another. That is not an error: the winning candidate is best on defect rate, delivery and audit, and worst on cost. VIKOR minimises the largest single regret rather than the sum.
The disagreement is not about the data but about what "best" means. What gets delivered is therefore a condition rather than a name: unless you believe cost should carry more than 0.71 of the decision, and unless you reject trade-offs between criteria, take the first candidate; if you do reject them, take the second, and that is the question to settle first.
Source code
Comments are shown in the page language. Files in the repository carry both English and Turkish.
Project structure
README.md
94 lines · 9 KB
Loading…