Skip to content
Artificial Intelligence · Solid.js + FastAPI · FIB-UPC

Desastres IA

Local search on a disaster-relief model: helicopters rescue groups at centers in an optimized order. Full-stack web app with an interactive 2D map solver and experiment dashboard — compare hill climbing vs simulated annealing with 3 heuristics and 6 successor functions.

Local Search
AIMA · Java + Python
📋
State
Ordered queue of groups per helicopter
🔀
SWAP
Exchange two groups across positions
📊
Score
H2 = sum of all helicopter finish times
🔍
Search
HC climbs · SA explores with random jumps
🚁

Full Web App

Solid.js + FastAPI

Run the Docker container to access the full interactive solver with all features below.

🗺️
2D Map Solver
Interactive Canvas map with helicopter routes, group tooltips, and color-coded assignments
📊
Experiment Dashboard
Batch-run across seed ranges with boxplot comparisons of all algorithm configurations
⚙️
Full Configuration
All 3 heuristics, 6 successor functions, 3 initial states, and tunable SA parameters

Problem schematic

Base AH0, H1Base BH2Center 0Center 1Center 2H0H2rescue order →

Helicopters leave bases and serve centers in an optimized order. Groups have sizes and priorities. Capacity: 15 people per trip, 10 min cooldown between sorties.

Heuristic functions

H1
Mix of makespan (max heli time) and total time, weighted to spread load
H2used in demo
Minimize sum of all helicopter completion times
H3
H1 + penalty for priority groups rescued late (urgency-aware)

Successor operators

SWAPGENERALREDUCIDOSWAP + GENERALSWAP + REDUCIDOStochastic

6 successor functions in Java (DesastresSuccessorFunction1–6). Demo uses SWAP. Hover for details.

Run the demo

HC / SA · 7 groups · 3 helicopters · runs in browser

How it works: Random 2D layout (seeded) with 2 bases and 7 groups. Colors = owning helicopter. HC picks the best SWAP neighbor until stuck; SA sometimes accepts worse moves to escape local minima.