Populationssimulering — Evolutionär husdesign
Kan du spåra en vinnande design tillbaka genom 50 generationer till mutationen som fick den att fungera?
Scenariot
Trähusfabriken AB, en modulär trähustillverkare utanför Falun, vill optimera sitt standard 120 m^2 familjehus för de svenska klimatzonerna. Målet: minimera uppvärmningskostnaden samtidigt som strukturell materialkostnad hålls under 485 000 SEK och BBR:s energikrav uppfylls för alla tre klimatzoner.
Optimeringen kör 50 generationer med 100 kandidater vardera. Varje kandidat är en konfiguration: väggtjocklek, isoleringstyp, fönster-till-vägg-förhållande, taklutning, orientering, ventilationsvärmeåtervinningsgrad. Varje kandidat utvärderas genom att köra en House Compiler-pipeline — strukturkontroll, energisimulering (SVEBY-metoden), kostnadsuppskattning. Selektion använder turneringsselektion (stokastisk). Crossover och mutation är stokastiska. Varje stokastiskt val är ett registrerat beslut.
Generation 0 Generation 1 Generation 47
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 100 random │ │ 100 bred │ │ 100 refined │
│ candidates │ │ candidates │ ... │ candidates │
│ │ │ │ │ │
│ ┌─┐┌─┐┌─┐ │ │ ┌─┐┌─┐┌─┐ │ │ ┌─┐┌─┐┌─┐ │
│ │A││B││C│ │ │ │D││E││F│ │ │ │W││X││Y│ │
│ └┬┘└┬┘└┬┘ │ │ └┬┘└┬┘└┬┘ │ │ └┬┘└┬┘└┬┘ │
└──┼──┼──┼──┘ └──┼──┼──┼──┘ └──┼──┼──┼──┘
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│House Compiler│ │House Compiler│ │House Compiler│
│per candidate │ │per candidate │ ... │per candidate │
│ struct check │ │ struct check │ │ struct check │
│ energy sim │ │ energy sim │ │ energy sim │
│ cost est. │ │ cost est. │ │ cost est. │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ fitness │ │ fitness │ │ fitness │
│ 14.2 kWh/m² │ │ 11.8 kWh/m² │ │ 9.1 kWh/m² │
│ 438k SEK │ │ 461k SEK │ │ 472k SEK │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
└────── select ───┘─── ... ────── select ──┘
(slumpmässig, (slumpmässig,
recorded) recorded)
5 000 kandidatutvärderingar över 50 generationer. Men fingeravtrycksbaserad återanvändning innebär: om kandidat #37 i generation 12 har samma konfiguration som kandidat #81 i generation 23 (konvergent evolution) beräknas House Compiler-utvärderingen bara en gång. I takt med att populationer konvergerar förväntar vi att ungefär 30 % av sengenerationsutvärderingarna återanvänder ett tidigare resultat — populationen klustrar kring bra konfigurationer, och dubbletter är gratis.
Den vinnande designen (kandidat W, generation 47: 9,1 kWh/m^2, 472 000 SEK, klarar alla tre klimatzoner) har en fullständig härstamning. Spåra bakåt: W avlades från kandidater i generation 46, som härstammade från generation 45, och så vidare — tillbaka till de slumpmässiga initieringarna i generation 0. Crossovern i generation 31 som kombinerade hög isoleringstjocklek från en härstamningslinje med optimerad fönsterplacering från en annan syns som en specifik beslutspost med specifika föräldrakandidater.
Viktiga egenskaper
Beslutsregistrering i hög volym. 50 generationer x 100 kandidater x (selektion + crossover + mutation) producerar tusentals stokastiska beslutsposter. Runtimen måste hantera denna volym utan att granskningsloggens storlek blir en flaskhals.
Återanvändning genom konvergens. Fingeravtrycket för en House Compiler-utvärdering bestäms av dess indata. Konvergent evolution producerar identiska konfigurationer — återanvändning deduplicerar naturligt dyra utvärderingar. Detta är inte en optimering som bultats på i efterhand; det faller direkt ut av fingeravtrycksbaserad artefaktlagring.
Navigerbart fitnesslandskap. De 50 generationerna av utvärderingar, lagrade som artefakter, bildar ett sökbart landskap. Du kan fråga: “visa mig alla kandidater med energi under 10 kWh/m^2 och kostnad under 460k SEK” och se när de först dök upp, vilka mutationer som producerade dem och vilka härstamningslinjer som konvergerade mot dem. Den evolutionära sökningen blir ett dataset, inte bara ett slutsvar.
Komponerbarhet med Beteende-DSL. BBR:s energikrav som utvärderas i varje House Compiler-körning är i sig förseglade, versionerade artefakter (se Beteende-DSL-packet). När BBR uppdateras invalideras varje cachad utvärdering som använde de gamla reglerna. Populationen kan omvärderas mot nya regler utan att köra om evolutionen — bara fitnessutvärderingarna.