SimOptDecisions
A Julia framework for simulation-based decision analysis under uncertainty
WarningWork in Progress
This package is under active development and the API may change.
What is SimOptDecisions?
SimOptDecisions helps you find good decision strategies when the future is uncertain.
You provide a simulation model and a parameterized policy. The framework runs your model across many possible futures, aggregates the results, and searches for policy parameters that perform well.
It’s useful when you can simulate outcomes but can’t solve for optimal decisions analytically.
Key Vocabulary
| Term | What it means |
|---|---|
| Config | Fixed parameters that don’t change across scenarios |
| SOW | “State of the World” — one possible future (your uncertain parameters) |
| Policy | A decision rule with tunable parameters |
| Action | What the policy decides at each timestep |
| State | Your model’s internal state that evolves over time |
| Outcome | Result of one simulation |
| Metric | Summary statistic across many simulations |
How It Works
┌──────────────────────────────────────────────────────────────┐
│ You define │
├──────────────────────────────────────────────────────────────┤
│ Types: Config, SOW, State, Action, Policy │
│ Callbacks: initialize, get_action, run_timestep, │
│ time_axis, finalize │
└──────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Framework handles │
├──────────────────────────────────────────────────────────────┤
│ simulate(config, sow, policy) → run one scenario │
│ evaluate_policy(prob, policy) → run across many SOWs │
│ optimize(prob, backend) → search for best params │
└──────────────────────────────────────────────────────────────┘
│
▼
┌────────────────┐
│ Pareto Front │
└────────────────┘
Installation
Requires Julia 1.10 or later.
using Pkg
Pkg.add(url="https://github.com/dossgollin-lab/SimOptDecisions.jl")Next Steps
→ Tutorial — Learn SimOptDecisions through a complete worked example (house elevation under flood risk)
→ Quick Reference — Checklist of types and callbacks to implement