Skip to content

What (One-liner)

Herbert Simon's satisficing rule: sort candidates by score descending, return the first one that clears the threshold (not the global optimum). Models bounded rationality.

How to use

Drag b0_simon_v1 onto the Canvas, fill aspiration (threshold) + candidates ([{id, score}, ...]). Output is the first satisficing candidate.

Core formulas

python
scored = sorted(candidates, key=lambda c: -c.score)
for c in scored:
    if c.score >= aspiration:
        return {id: c.id, score: c.score}
return None

Typical usage: aspiration=70, candidates are BLCV scores → after ranking, take the first >= 70.

Assumptions & applicability

Assumptions: comparable single-dimension scores; a 'good enough' decision posture; static candidates.

Fits: equity shortlists / strategy selection / teaching demos / fast decisions.

Does not fit: global optima (use max()); multi-objective (use MCDA); dynamic candidate sets.

Input / Output contract

{aspiration: float, candidates: list}{aspiration, candidates_evaluated, chosen | None, satisficing: bool, _model}. Details in the frontmatter.

Known limitations

  1. Single score only (no multi-dimensional trade-offs)
  2. No 'closest miss' when nothing qualifies (returns None)
  3. Empty list → None (no error)
  4. Ties resolved by input order

References

Simon (1956) original + Gigerenzer (2008) extension. Full citations in the frontmatter.

Golden Test

tests/golden/fixtures/tier1/b0_simon/, 1e-12 tolerance, 4 tests (matches_reference / no_satisficer / picks_highest / empty_candidates). Passing as of 2026-04-20.

Changelog

  • 1.0.0 (2026-04-20) — Initial Active release

Verifiable intelligence for the decisions that demand scrutiny.