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 + FastAPIRun 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
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.