Expand description
Multi-Criteria Decision Analysis (MCDA).
A small, dependency-light, deterministic toolkit for the recurring trade-study question that sits on top of every Kshana simulation: given several candidate architectures scored on several incommensurate criteria, which do we pick, and how stable is that choice? The simulator already produces the per-criterion numbers (coverage, PDOP, holdover, cost, mass, …); this module turns a table of them into a defensible, reproducible decision — and, crucially, quantifies how fragile that decision is to the weighting and value-judgement choices that no amount of simulation can settle.
The toolkit spans the four canonical MCDA families — value aggregation, distance to ideal, compromise programming and outranking — plus the priority-derivation and robustness machinery that surrounds them:
wsm— Weighted Sum Model (value): awsm::DecisionMatrixof alternatives × criteria, per-criterion value-function normalisation (benefit/cost, min–max, target peak, logistic), hard knock-out constraints, and a weighted additive aggregate score + ranking.wpm— Weighted Product Model (value): the multiplicative sibling,Πⱼ nᵢⱼ^wⱼover sum-normalised values — scale-invariant, no additive unit-mixing, with hard-zero annihilation.waspas— WASPAS (value): the convex blendλ·WSM + (1−λ)·WPMover linear-normalised values, the stability-hardened middle ground between the two.moora— MOORA (ratio): vector-normalised weighted benefit total minus weighted cost total — a signed ratio-system score.copras— COPRAS (proportional): benefit significance plus a cost significance inversely proportional to the alternative’s own weighted cost, and the utility degreeQ / max Q.topsis— TOPSIS (distance): relative closeness to the weighted positive / negative ideal solutions under min–max normalisation.vikor— VIKOR (compromise): group-utilityS, individual-regretRand the compromise indexQat strategy weightv.promethee— PROMETHEE II (outranking): pairwise preference with the six standard generalised-criterion shapes, positive/negative flows and a complete net-flow ranking.electre— ELECTRE I (outranking): concordance / discordance, the concordance-and-non-veto dominance relation, and the choice kernel.ahp— Analytic Hierarchy Process: a reciprocal pairwise-comparison matrix → principal-eigenvector priority weights (power iteration), Consistency Index and Consistency Ratio against Saaty’s Random Index table, with the CR < 0.10 acceptance gate.pareto— general non-dominated (Pareto) set over N objectives, each independently minimised or maximised, plus a knee-point estimate (max-distance-to-chord, after Branke et al.).sensitivity— decision-stability analysis: a tornado over criterion weights, a Monte-Carlo / SMAA rank-1 acceptability index under weight uncertainty, and the minimum weight change that flips the winner.utility— Multi-Attribute Utility Theory value functions with an explicit risk attitude (averse / neutral / seeking, exponential utility) and additive aggregation.
Honesty scope (load-bearing). This is decision bookkeeping over the
simulator’s outputs, not a new physical measurement: every method here is a
textbook closed-form procedure, so the strongest claim any of them can carry is
“reproduces an independent reference implementation / published worked example to
a stated tolerance.” Nine aggregators clear that bar against an external oracle to
< 1e-9: WSM, WPM, WASPAS, MOORA, TOPSIS, VIKOR, PROMETHEE II against the
third-party pymcdm library, and ELECTRE I (concordance/discordance/dominance/
kernel, element for element) plus COPRAS against the third-party pyDecision
library (see the tests/mcda_*_reference.rs cross-checks). COPRAS uses pyDecision
deliberately: pymcdm 1.4.0’s COPRAS collapses to the trivial S⁺+S⁻ and is
not a faithful reference, whereas pyDecision implements the canonical
relative-significance formula. The AHP priority vector + Consistency Ratio
reproduce Saaty’s
canonical Random Index table exactly and the SciPy/LAPACK principal eigensolver to
< 1e-9. The Pareto, sensitivity, and utility pieces are property- and
known-answer-checked closed form — honestly Modelled, not externally validated.
None of this is a claim about the correctness of the inputs: garbage criteria in,
garbage decision out. The module’s real product is the sensitivity caution —
a single-number ranking is only as trustworthy as its robustness to the weights,
and this module measures that robustness instead of hiding it. Running several
families and checking they agree (the pro overlay’s multi-method concordance) is
the honest way to earn confidence a single method cannot give.
Modules§
- ahp
- Analytic Hierarchy Process (AHP).
- copras
- COPRAS — COmplex PRoportional ASsessment (Zavadskas & Kaklauskas 1996).
- electre
- ELECTRE I — ELimination Et Choix Traduisant la REalité (Roy 1968): outranking by concordance / discordance with a choice kernel.
- moora
- MOORA — Multi-Objective Optimisation by Ratio Analysis, ratio system (Brauers & Zavadskas 2006).
- pareto
- General Pareto (non-dominated) analysis over N objectives.
- promethee
- PROMETHEE II — Preference Ranking Organization METHod for Enrichment Evaluations, complete ranking (Brans & Vincke 1985).
- sensitivity
- Decision-stability / sensitivity analysis for a weighted-sum ranking.
- topsis
- TOPSIS — Technique for Order of Preference by Similarity to Ideal Solution (Hwang & Yoon 1981).
- utility
- Multi-Attribute Utility Theory (MAUT).
- vikor
- VIKOR — VlseKriterijumska Optimizacija I Kompromisno Resenje (Opricovic & Tzeng 2004): multi-criteria compromise ranking.
- waspas
- WASPAS — Weighted Aggregated Sum Product ASSessment (Zavadskas et al. 2012).
- wpm
- WPM — Weighted Product Model (Bridgman 1922; Miller & Starr 1969).
- wsm
- Weighted Sum Model (WSM).
Enums§
- Objective
- Whether a criterion / objective is to be maximised or minimised. Used by
pareto(dominance direction) and, viawsm::Direction, by the WSM scorer.