🌉 Bridge Truss Optimizer

Design the lightest 10-member steel truss that survives a 20 kN midspan load without any member yielding or buckling. The truss has one redundant brace — so member forces depend on member areas (it's statically indeterminate), which couples all ten decisions together. Each member also has its own Euler-buckling constraint, scaled by length squared.

🧠 Human Raphson

Pick each member's cross-section (mm²). Watch members go red if they yield or buckle.

Algorithm

Each design is FEA-solved instantly; the animation just walks the load on at ~2× final-replay speed.

Score0
Detail
Designs tried0
Best so far
Max stress
Worst member

Leaderboard (this session)

Each row is the lightest feasible truss a given algorithm found (lower weight = better). Infeasible best-attempts appear in red and are sorted to the bottom. A smoke-test of 2 000 random designs gives a feasibility rate of ~10 % with best random ≈ 70 kg; PSO at budget 200 typically lands near 50 kg.

AlgorithmScoreWeight (kg)EvalsAreas (cm²)
— no runs yet —

What's happening

A symmetric 10-member steel truss spanning 6 m, height 1.5 m. Pin support on the left, roller on the right. A single 20 kN downward load is applied at the centre of the bottom chord. The optimiser picks each member's cross-sectional area independently — sliders range 50 mm² (very thin rod) to 3 000 mm² (chunky bar).

Forces are solved by the direct stiffness method (FEA) on every evaluation. The truss is statically indeterminate by one (it has an X-brace in the centre panel), so changing one member's area redistributes force through every other member — each parameter is truly coupled.

Two constraints per member: yielding (|σ| ≤ 250 MPa) and, for any member in compression, Euler buckling (|F| ≤ π²EI/L² with I = 0.3·A², a moderately efficient tubular/I-section). Score = 100 at 40 kg (an asymptotic lower bound — never quite reached in practice), dropping linearly to 0 by 240 kg. Infeasible designs score 0.


FEA solver: direct stiffness method in ~60 lines of vanilla JS (Gaussian elimination on the reduced system). No external dependencies.

🌱 Save the Planet

If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:

Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md
and create a project skill from it.
View SKILL.md →