1. The Problem
House elevation under flood risk
Overview
This tutorial teaches SimOptDecisions.jl through a realistic example: deciding how high to elevate a house in a flood-prone area.
You’ll learn:
- Defining your model - Types for config, uncertainty, state, actions, and policies
- Running simulations - The five-callback pattern for time-stepped models
- Evaluating policies - Testing a single policy across many uncertain futures
- Exploratory modeling - Systematically comparing policies across scenarios
- Policy search - Multi-objective optimization to find Pareto-optimal solutions
Each section builds on the previous, using the same house elevation context throughout.
The Decision Problem
You own a house in a flood-prone coastal area. Each year, storm surges threaten your property. You must decide: how high should you elevate your house?
Elevating higher costs more upfront, but reduces future flood damages. The challenge is that you face deep uncertainty about:
- Future storm surge intensity (climate variability)
- The relationship between flood depth and damage (depth-damage curves)
- Future economic conditions (discount rates)
The Trade-off
This is a classic decision under uncertainty:
- Low elevation: Cheap upfront, but expensive flood damages over time
- High elevation: Expensive construction, but minimal future damages
- Optimal elevation: Balances upfront costs against expected long-term damages
But what’s “optimal” depends on assumptions about the uncertain future. Different assumptions lead to different recommendations.
What Makes This Interesting
This problem has features common to many real-world decisions:
- Multi-dimensional uncertainty: Storm intensity, damage relationships, and discount rates are all uncertain
- Irreversible decisions: Once you elevate, you can’t easily undo it
- Long time horizons: Benefits accrue over decades
- Competing objectives: Minimize upfront cost vs. minimize expected damages
SimOptDecisions.jl helps you:
- Structure the problem clearly (types for each concept)
- Simulate outcomes under different scenarios
- Explore how results vary across uncertainties
- Optimize to find the best trade-offs
Next Steps
In the next section, we’ll define the Julia types that represent this problem: configuration, uncertainty, state, actions, and policies.