agentsclimarketplace

Mcda suitability analysis

Skill muend/geoai-skills/skills/mcda-suitability-analysis

Always invoke for spatial suitability, site selection, AHP, criteria weights, or weighted-overlay work, including audits of inconsistent pairwise judgments and requests for only a final map. Covers consistency, standardization, constraints, ranked surfaces, shortlists, and sensitivity. Route travel-time placement and location-allocation to network-accessibility-analysis.From its SKILL.md

Install
npx -y skills add muend/geoai-skills --skill mcda-suitability-analysis

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

5.8 KB, as published. Nobody here has run it

MCDA & Suitability Analysis

Purpose: produce suitability maps whose weights, scales, and assumptions are explicit, consistent, and stress-tested. A suitability map without a sensitivity analysis is an opinion with a legend.

Workflow

  1. Structure: goal → criteria (factors) → constraints. Constraints are binary masks (legal exclusions, water bodies, slope > threshold) applied at the END by multiplication; factors are continuous and weighted. Keep them apart — encoding a constraint as a heavily-weighted factor is a classic error that lets forbidden areas score "acceptable".
  2. Criteria layers: each factor as a raster on a COMMON grid (same CRS, extent, cell size, snap). Resample categorical layers with nearest, continuous with bilinear; document each.
  3. Standardization to a common suitability scale (0-1 or 0-255):
    • Linear min-max for monotonic "more is better/worse".
    • Fuzzy membership (sigmoid/linear with control points) when suitability saturates — justify control points from domain knowledge.
    • Categorical layers: explicit reclass table, shown to the user. Direction check: confirm for EVERY layer whether high raw value means high or low suitability (slope: low=good; distance-to-road: usually low=good). Direction bugs survive to the final map invisibly.
  4. Weights (AHP below, or direct/ranked methods with rationale).
  5. Aggregation: weighted linear combination (WLC) default; OWA when the decision-maker's risk attitude (AND-like vs OR-like) matters.
  6. Constraint mask multiply; classify the result (equal interval or quantiles — say which and why); sensitivity analysis; validate against known good/bad sites if any exist.

AHP with consistency enforcement

Pairwise comparisons on Saaty's 1-9 scale; weights from the principal eigenvector; consistency ratio (CR) must be < 0.10 or the matrix goes back for revision. Run scripts/ahp_weights.py to compute weights + CR from a reciprocal comparison matrix (it validates reciprocity and reports λ_max).

Practices: elicit comparisons pair by pair with verbal anchors ("moderately more important" = 3); with multiple experts, aggregate judgments by geometric mean BEFORE computing weights; report the full matrix, weights, λ_max and CR in the deliverable. If CR ≥ 0.10, identify the most inconsistent triad and ask the expert to revisit it — do not silently massage numbers.

Aggregation

suit = np.zeros_like(factors[0], dtype="float32")
for w_i, f in zip(weights, factors):   # factors already standardized 0-1
    suit += w_i * f
suit *= constraint_mask                 # binary 0/1, applied last

OWA variant: sort factor values per cell and apply order weights — full AND (min) to full OR (max) continuum; use when stakeholders disagree on risk tolerance and show 2-3 scenarios.

Sensitivity analysis — mandatory

A result that flips with a small weight change is not a result:

  • One-at-a-time: perturb each weight ±20% (renormalize), recompute, report % of area changing suitability class and a stability map (cells that never change class across perturbations).
  • Scenario: 2-3 alternative weight sets from different stakeholder priorities; present side-by-side.
  • If a Monte Carlo budget exists: sample weights from Dirichlet around the AHP vector; per-cell probability of "highly suitable" is a far stronger product than a single map.

Deliverable standard

Suitability map (classified + continuous), constraint mask map, weights table with CR, standardization functions per criterion (with direction), sensitivity/stability summary, and limitations paragraph (data currency, resolution, criteria omitted). Route cartography to cartography-geoviz; network-access criteria come from network-accessibility-analysis.

Pitfalls checklist

  • Direction inversion on a criterion (the silent killer — double-check distance-based factors).
  • Mixing resolutions without declaring the resampling rule.
  • CR ignored or unreported.
  • Constraints blended as weights → forbidden zones scored medium.
  • Classifying with quantiles then reading them as absolute suitability.
  • No sensitivity analysis; single map presented as truth.

Execution contract

  • Workflow: define decision and stakeholders; separate constraints from factors; standardize criteria; elicit and validate weights; aggregate; test sensitivity; communicate uncertainty.
  • Decision rules: use MCDA for transparent criteria-ranked surfaces, network analysis for route-constrained access, and optimization when discrete placement or capacity decisions dominate.
  • Verification protocol: check criterion direction and alignment, AHP consistency, constraint enforcement, weight and threshold perturbations, and stable-versus-fragile areas.
  • Failure modes: reject the model when criteria double-count the same construct, weights lack provenance, constraints leak into compensation, or rankings collapse under plausible perturbations.
  • Deliverables: continuous and classified suitability maps, constraints, criteria transformations, weights and consistency ratio, sensitivity results, and limitations.
  • Source freshness: consult the authoritative source registry before applying methods or implementation APIs and record the checked date.

What ships with it: 3 files

3.8 KB alongside SKILL.md, 1 of them executable

agents/

references/

scripts/

Gives 0 of the 12 instructions most research analysis skills give

Counted across 1,213 of the 2,113 authors here whose files we hold, read 2026-09-06

  • Cite sources for every important claimin 47 of 1213, across 38 files
  • Separate facts from inferences and recommendationsin 21 of 1213, across 12 files
  • Write findings to a markdown filein 19 of 1213
  • Label every insight with a confidence levelin 18 of 1213, across 8 files
  • Read product marketing context before asking questionsin 18 of 1213, across 8 files
  • Rank themes by frequency and intensityin 16 of 1213, across 6 files
  • Establish research mode before proceedingin 16 of 1213, across 6 files
  • Segment survey responses by customer tier or tenurein 16 of 1213, across 6 files
  • Categorize support tickets before analyzingin 16 of 1213, across 6 files
  • Weight research sources from the last twelve monthsin 16 of 1213, across 6 files
  • Use at least five data points per segmentin 15 of 1213, across 5 files
  • Extract verbatim quotes for all research findingsin 15 of 1213, across 5 files

Said here and by no other author read

  • separate constraints from factors
  • align all layers to a common grid
  • standardize criteria to a common scale
  • verify direction for every layer
  • enforce consistency ratio below 0.10
  • apply constraint masks after aggregation

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 626,045. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.