Wonen is de eerste sector in de allocatievolgorde, in lijn met de praktijk waarin woningbouw de sterkste aanspraak op ruimte maakt. Deze pagina beschrijft hoe de sector is uitgewerkt: de subsectoren, de opgave, de ontwikkelpakketten, waar een pakket mag landen, welk pakket wint, en wat er van een gekozen pakket op de kaart terechtkomt.
De onderdelen die wonen deelt met de andere sectoren staan op eigen pagina’s: de zeef en de restricties op Beschikbaarheid, het exploitatiesaldo op Geschiktheid en in detail op Exploitatiesaldo wonen, de prijsfunctie eronder op Hedonisch woningprijsmodel, de dichtheidszeef op Dichtheid, de stand in het basisjaar op Startstaat en de iteratie zelf op Allocatie procedure in formules.
De sector wonen kent vier subsectoren, het kruisproduct van woningtype en huursector (Classifications/Vastgoed/WP2xVSSH):
| subsector | woningtype | huursector |
|---|---|---|
eengezins_VrijeSector |
eengezins | vrije sector |
eengezins_SocialeHuur |
eengezins | sociale huur |
meergezins_VrijeSector |
meergezins | vrije sector |
meergezins_SocialeHuur |
meergezins | sociale huur |
De standvariabele is de woning. Een cel draagt daarnaast de pandvoetafdruk van wonen, het gekozen ontwikkelpakket (OP_rel) en de gekozen subsector (SubSector_rel). Die laatste twee schrijft het model als positie weg, met een legenda ernaast; zie Ontkoppelde bestanden.
De vier subsectoren concurreren onderling om dezelfde cel. De allocatieregio is de NVM-woningmarktregio (76 regio’s, herbouwd uit de NVM-indeling van 2011 op de gemeentegrenzen van de gekozen CBS-jaargang). Blijft er in een regio een restclaim over, dan komt die op COROP-niveau (40 regio’s) opnieuw aan bod en daarna op provincieniveau (12). Zie Overflow voor die trap. De volgorde staat in ModelParameters/SectorAllocRegio; alleen de fijnste regel per sector doet mee in vervolgsequenties, zodat verdringing zo lokaal mogelijk wordt opgelost.
Het model kiest de cel op 25 meter (CompactedAdminDomain). Sinds #759 en #770 beslissen ook de trede en de zeef op diezelfde cellen, in plaats van op 100 meter met het antwoord uitgesmeerd over de zestien cellen eronder. Wat als blokgrootheid op 100 meter blijft staan is de maximale woningdichtheid, en dat is opzet: die is een eigenschap van de omgeving en niet van de cel. Zie Allocatie procedure in formules en Tredes.
De regionale opgave komt uit het verkeers- en ruimtemodel Tigris XL, per LMS-subzone en per zichtjaar, en wordt naar de allocatieregio opgeteld. De levering onderscheidt vier woningtypen (koop en huur maal een- en meergezins), maar RSopen leest daarvan alleen de twee totalen eengezins en meergezins. De verdeling over vrije sector en sociale huur komt uit het basisjaar: per allocatieregio wordt de waargenomen verhouding uit de eigendomsdataset als proxy gebruikt (BaseData/Verdeling_VSSH, weggeschreven als WP2xVSSH_Proxy). Een pand van een woningcorporatie telt als sociale huur, al het andere als vrije sector. De regionale mix van huur en koop is daarmee variantonafhankelijk en beweegt niet mee met het scenario.
De claim is een voorraaddoel en geen toevoeging: de restclaim in een iteratie is de claim voor de regio min de stand op dat moment. Daardoor komt gesloopte voorraad vanzelf als restclaim terug en wordt ze elders in de regio herbouwd.
De claimreeks houdt op bij het laatste jaar dat de levering geeft. In ModelParameters/Advanced/FromWhichDoWeKeepTIGRISconstant staat vanaf welk jaar de claim constant blijft; latere zichtjaren lezen die laatste jaargang. Er wordt dus niet geëxtrapoleerd. In de toepassing Toepassing NL2120 ligt die grens op 2060 terwijl het model tot 2120 doorrekent: vanaf 2070 verandert de opgave niet meer en verplaatst het model alleen nog wat er door sloop of oplegging vrijvalt.
Kenmerkend voor wonen is dat de opgave wordt toegewezen in vooraf gedefinieerde pakketten. Een ontwikkelpakket is een gestileerd woonmilieu ter grootte van een hectare, gebaseerd op kentallen en expertoordelen over plausibele stedenbouwkundige samenstellingen: woningdichtheid, vloeroppervlak per woning, bouwlagen, pandvoetafdruk en de verdeling van het terrein over uitgeefbaar en openbaar, verhard, groen en water.
De denkbeeldige ontwikkelaar kiest per cel uit de pakketten die bij zijn subsector horen; binnen een pakket is het woningtype homogeen. Het keuzepalet is op elke locatie hetzelfde, maar niet elk pakket mag overal landen en niet elk pakket levert overal hetzelfde saldo op.
De pakketten staan in VariantParameters/Ontwikkelpakketten/NettoBuurt. De brontabel is een blok tekstregels van 31 velden per pakket; OPTabel_T parseert dat blok en leidt er alle afgeleide kolommen, controles en deelverzamelingen uit af.
De 31 kolommen, gegroepeerd naar wat ze regelen. Dit is de invoerkant: alles hieronder is een ontwerpkeuze die per pakket wordt ingetikt.
| kolom | betekenis |
|---|---|
name |
naam van het pakket, tevens de sleutel voor de kaartkleur |
WP2_name_short |
eengezins (EG) of meergezins (MG) |
VSSH_name_short |
vrije sector (VS) of sociale huur (SH) |
Woonoppervlakte_woning |
gebruiksoppervlak per woning in m2 |
Aant_kamers, Aant_badkamers |
gemiddeld aantal kamers en badkamers per woning |
HeeftPriveParkeren |
parkeren op eigen terrein |
Weging_NatNiv |
weging van de nationale ligging in de prijs, proxy voor Randstad en daarbuiten |
Weging_NatOV |
weging van de nationale OV-bereikbaarheid, proxy voor de grotere steden |
Weging_Amenities |
weging van de nabijheid van voorzieningen |
FloorSpaceIndex |
bruto vloeroppervlak van alle gebouwen gedeeld door de terreinoppervlakte |
GroundSpaceIndex |
pandvoetafdruk gedeeld door de terreinoppervlakte |
WP4_name |
woningtype: rijtjeswoning, twee onder een kap, vrijstaand of appartement |
InUitgeefbaarExPandFootprint: verhard, groen, water |
inrichting van het uitgeefbare deel buiten de gebouwvoetafdruk |
InOpenbaar: verhard, groen, water |
inrichting van het openbare deel |
| boom, gras, struik (uitgeefbaar en openbaar) | verdeling van het groen over de drie vegetatietypen |
FractieUitgeefbaar0 |
welk deel van het terrein uitgeefbaar wordt gemaakt |
TuinDoel0 |
beoogde private buitenruimte per woning in m2; null betekent dat de kolom hierboven geldt |
IsNbSMaxOP, IsNbSGenuanceerdOP |
tot welke variantset het pakket behoort |
NbSOPToepassingsgebied_ref |
voor welk gebied het pakket bedoeld is: Overal, Laag_NL of Hoog_NL |
BouwwijzeToegestaan |
welke bouwwijzen het pakket mag aannemen, als lijst van namen |
Deze pagina had hier tot september 2026 een tabel waarin de helft van de uitleg ontbrak en die bovendien kolommen noemde die niet meer bestaan. Twee kolommen zijn sindsdien van karakter veranderd. De private buitenruimte wordt sinds #618 als doeltuin ingevoerd in plaats van als afgeleide fractie, zodat de ontwerpkeuze in de tabel staat en niet de rekenuitkomst. En de bouwwijze is sinds #723 een lijst in plaats van een vaste waarde, zodat het pakket zegt wat het toelaat en de plek bepaalt wat het wordt.
| afgeleide | hoe |
|---|---|
Bouwlagen |
FSI gedeeld door GSI |
Vormfactor |
gebruiksoppervlak per m2 bruto vloeroppervlak: 0,76 voor eengezins, 0,78 voor meergezins, 0,65 zodra het pakket hoogbouw is |
BVOPerWoning |
woonoppervlakte gedeeld door de vormfactor |
IsHoogbouw |
bouwlagen maal bouwlaaghoogte (2,6 m) boven de hoogbouwgrens (15 m) |
Dichtheid |
FSI maal 10.000 gedeeld door het bvo per woning, in woningen per hectare |
FractieUitgeefbaar |
waar een doeltuin is opgegeven: GSI plus FSI maal doeltuin gedeeld door bvo per woning |
Tuin |
bvo per woning maal (fractie uitgeefbaar min GSI) gedeeld door FSI |
Bouwwijze/Toegestaan |
de lijst uitgepakt naar een vlag per bouwwijze |
Op die afleiding staan controles, en dat is geen luxe. Het woningtype faalt hard bij een typefout, want zonder die controle zou het pakket stil een lege bouwkostenkaart krijgen en zonder foutmelding uit de keuze vallen. De fracties verhard, groen, water en bruin moeten samen de buitenruimte vullen. En bij een eengezinspakket moet de uitgeefbare fractie strikt groter zijn dan de GSI: is de tuin exact nul, dan valt de perceelsterm uit de nieuwbouwprijs weg en is dat een prijsartefact (#618, #628).
Sinds #721 is de pakkettentabel gesplitst in een default-set en variant-specifieke aanvullingen. Default_src.dms draagt de reguliere pakketten, PerVariant_src.dms de aanvullende rijen, en VariantK/OP_Aanvulling noemt per variant welk blok achter de default wordt gevoegd. Een variant zonder aanvulling gebruikt exact de default. Variantvreemde pakketten zitten daarmee eenvoudigweg niet in de set, waar ze daarvoor per cel werden weggezeefd.
Dat heeft een praktisch gevolg: de standbestanden dragen het gekozen pakket als positie, dus de rijnummers verschuiven bij een andere set. Daarom schrijft de allocatie een legenda naast de tif en weigert het inlezen een stand waarvan de legenda niet bij de lopende set past.
In de toepassing NL2120 gaat het om 27 reguliere pakketten, aangevuld met 14 rijen in de variant met maximale natuurlijke maatregelen en 12 in de genuanceerde variant. Die aantallen en die variantnamen horen bij het project en niet bij de methode.
Ter illustratie de 27 reguliere pakketten, met de ingevoerde FSI en GSI en de daaruit afgeleide bouwlagen en dichtheid. Dit is de set van Toepassing NL2120 en geen eigenschap van het model; een andere toepassing tikt een andere tabel in.
| pakket | type | huursector | m2 per woning | FSI | GSI | bouwlagen | woningen per ha |
|---|---|---|---|---|---|---|---|
| SuperStedelijkMGVS | MG | vrije sector | 75 | 2,80 | 0,40 | 7,0 | 242,7 |
| HoogStedelijkMGVS | MG | vrije sector | 85 | 1,50 | 0,30 | 5,0 | 137,6 |
| StedelijkerMGVS | MG | vrije sector | 90 | 0,90 | 0,30 | 3,0 | 78,0 |
| StedelijkMGVS | MG | vrije sector | 95 | 0,75 | 0,25 | 3,0 | 61,6 |
| LaagStedelijkMGVS | MG | vrije sector | 100 | 0,60 | 0,30 | 2,0 | 46,8 |
| LagerStedelijkMGVS | MG | vrije sector | 105 | 0,50 | 0,25 | 2,0 | 37,1 |
| DorpsMGVS | MG | vrije sector | 105 | 0,40 | 0,20 | 2,0 | 29,7 |
| StedelijkerEGVS | EG | vrije sector | 115 | 1,00 | 0,40 | 2,5 | 66,1 |
| StedelijkEGVS | EG | vrije sector | 125 | 0,88 | 0,35 | 2,5 | 53,5 |
| LaagStedelijkEGVS | EG | vrije sector | 140 | 0,63 | 0,25 | 2,5 | 34,2 |
| LagerStedelijkEGVS | EG | vrije sector | 150 | 0,50 | 0,20 | 2,5 | 25,3 |
| DorpsLandelijkEGVS | EG | vrije sector | 160 | 0,38 | 0,15 | 2,5 | 18,1 |
| DorpsLandLaagEGVS | EG | vrije sector | 160 | 0,16 | 0,08 | 2,0 | 7,6 |
| TinyHousesEGVS | EG | vrije sector | 25 | 0,05 | 0,05 | 1,0 | 15,2 |
| TinyHousesLaagEGVS | EG | vrije sector | 25 | 0,03 | 0,03 | 1,0 | 9,1 |
| SuperStedelijkMGSH | MG | sociale huur | 65 | 2,80 | 0,40 | 7,0 | 280,0 |
| HoogStedelijkMGSH | MG | sociale huur | 75 | 1,50 | 0,30 | 5,0 | 156,0 |
| StedelijkerMGSH | MG | sociale huur | 80 | 0,90 | 0,30 | 3,0 | 87,8 |
| StedelijkMGSH | MG | sociale huur | 85 | 0,75 | 0,25 | 3,0 | 68,8 |
| LaagStedelijkMGSH | MG | sociale huur | 90 | 0,60 | 0,30 | 2,0 | 52,0 |
| LagerStedelijkMGSH | MG | sociale huur | 95 | 0,50 | 0,25 | 2,0 | 41,1 |
| DorpsMGSH | MG | sociale huur | 95 | 0,40 | 0,20 | 2,0 | 32,8 |
| StedelijkerEGSH | EG | sociale huur | 100 | 1,00 | 0,40 | 2,5 | 76,0 |
| StedelijkEGSH | EG | sociale huur | 105 | 0,88 | 0,35 | 2,5 | 63,7 |
| LaagStedelijkEGSH | EG | sociale huur | 115 | 0,63 | 0,25 | 2,5 | 41,6 |
| LagerStedelijkEGSH | EG | sociale huur | 120 | 0,50 | 0,20 | 2,5 | 31,7 |
| DorpsLandelijkEGSH | EG | sociale huur | 130 | 0,38 | 0,15 | 2,5 | 22,2 |
Alleen de superstedelijke pakketten halen de hoogbouwgrens; de rest blijft eronder, ook de vijflaagse. Per subsector zijn er vijf tot acht pakketten beschikbaar: acht voor eengezins vrije sector, zeven voor beide meergezinssubsectoren en vijf voor eengezins sociale huur. In deze toepassing staan de twee tinyhouse-pakketten in alle vier de varianten uit, dus die landen nergens; dat is een variantinstelling en geen eigenschap van de pakketten.
De aanvullende pakketten van de twee varianten met natuurlijke maatregelen zijn ruimer opgezet en dragen veel groen of water: bij gelijke woninggrootte een lagere FSI en een grotere onverharde fractie, met een doeltuin van 20 m2 bij de grondgebonden pakketten. Ze dragen een toepassingsgebied, hoog of laag Nederland, omdat de keuze tussen groen en blauw een bodem- en grondwatervraag is; zie de paragraaf over hoge en lage gronden op Beschikbaarheid.
Een pakket is niet alleen een dichtheid. Wat erin staat bepaalt mede:
Dat is de reden dat de pakketten zo gedetailleerd zijn uitgewerkt: de gesimuleerde nieuwbouw moet een breed palet aan effectberekeningen kunnen dragen.
De beschikbaarheid wordt in twee lagen bepaald. De zeef per subsector doet wat voor alle sectoren geldt: restrictiekaarten, evident benut terrein, plancapaciteit, sloopbescherming en de cellen waar het model een ander landgebruik oplegt. Die staat op Beschikbaarheid.
Daarbovenop kent wonen als enige sector een tweede zeef, per ontwikkelpakket (Templates/Beschikbaarheden/Zeef_Wonen_perOP_T). Een pakket valt op een cel af zodra een van deze toetsen aanslaat:
| toets | wat hij doet |
|---|---|
| hoogbouw in mooi en zeer mooi landschap | een hoogbouwpakket valt af waar de belevingskaart hoog of zeer hoog scoort, tenzij de variant het toestaat |
| tiny houses en superstedelijk | twee pakketfamilies die per variant in hun geheel aan of uit kunnen |
| maximale woningdichtheid | de dichtheid van het pakket moet onder de lokale maximumdichtheid blijven, zie Dichtheid |
| dichtheid in mooi en zeer mooi landschap | een lagere maximumdichtheid waar de belevingskaart hoog of zeer hoog scoort |
| minimale dichtheidstoename | op een cel die al woningen draagt moet het pakket de dichtheid met meer dan de drempel verhogen; op onbebouwde grond geldt de toets niet. Sinds #770 per cel van 25 meter en niet meer per hectare |
| minimaal exploitatiesaldo | een pakket met een saldo onder MinimumExploitatieSaldo valt af |
| toepassingsgebied | een pakket voor hoog of laag Nederland valt buiten zijn gebied af |
| variantset | in een variant met natuurlijke maatregelen mogen de reguliere pakketten alleen binnen plancapaciteit voor wonen landen |
| bouwwijze | geen van de bouwwijzen die het pakket toelaat voldoet aan wat de plek eist, zie Beschikbaarheid |
De dichtheidstoetsen zijn samen de scherpste. Ze bepalen in de praktijk welke dichtheid waar terechtkomt, meer dan het exploitatiesaldo dat doet; die redenering staat uitgeschreven onder Wat het kental niet kan op Exploitatiesaldo wonen.
Per cel en per subsector berekent het model het exploitatiesaldo van elk pakket dat daar mag landen, en kiest het pakket met het hoogste saldo. Dat saldo is de opbrengst van de nieuwbouw min de bouwkosten, de bijkomende kosten, de winst en risico, de grondproductiekosten, de bodemdalingkosten, de piekbuibergingkosten, de verwervingskosten van het bestaande vastgoed en de sloopkosten daarvan. De opbouw van die posten staat op Exploitatiesaldo wonen.
Twee dingen zijn daarbij eigen aan wonen.
De opbrengsten worden per zichtjaar gecorrigeerd voor de natuur en het water die er aan het begin van dat zichtjaar liggen (#637). De groentermen zitten multiplicatief in de hedonische prijs, dus de correctie gaat alleen over de opbrengsten en niet over het saldo als geheel. In het eerste zichtjaar is de opslag nul.
Cellen zonder saldo blijven ongedefinieerd en doen niet mee. De uitzondering is de zone van nieuw land in het IJmeer, waar brondata per definitie ontbreekt: die cellen krijgen het mediane saldo van de bebouwde buurzone als proxy, met een deterministische tie-break die de gelijkstand tussen die cellen breekt (#598).
De vier subsectoren strijden vervolgens om dezelfde cel op de hoogte van hun geschiktheid, nadat de trede de grofmazige volgorde al heeft bepaald; zie Tredes. Voor wonen is dat de kale geschiktheid, zonder de plancapaciteitsprioriteit die werken sinds augustus 2026 kent.
Wint een subsector de cel, dan legt het gekozen pakket vast wat erop komt te staan:
De allocatie is celexclusief: een cel draagt een hoofdfunctie. Wint wonen een cel waar werkgelegenheid stond, dan verdwijnt die, met een uitzondering. De verzorgende werksubsectoren blijven staan wanneer wonen de cel overneemt, want een supermarkt of school in een woonwijk hoort daar juist (#710). Een woonontwikkelpakket brengt bovendien zelf een beetje verzorgende werkgelegenheid mee, ter hoogte van de woningdichtheid maal de waargenomen verhouding banen per woning. Beide mechanismen staan beschreven op Uitwerking werken.
Woningen verdwijnen op drie manieren, en het model houdt ze uit elkaar (#658):
Omdat de claim een voorraaddoel per regio is, komt gesloopte voorraad als restclaim terug en wordt ze binnen dezelfde regio herbouwd, of via de overflow in een grovere regio. De kosten staan in Uitkoop en sloopkosten, de aantallen in Sloop en nieuwbouw van woningen.
Per zichtjaar en per casus schrijft het model onder meer weg: de woningstand per subsector, de pandvoetafdruk van wonen, het gekozen ontwikkelpakket per cel met zijn legenda, en de gekozen subsector. Die kaarten voeden de Landgebruikskaart en het merendeel van de indicatoren; zie Effectmodules en indicatoren. De kosten van wat er gebouwd wordt staan in Kosten woningbouw, de waarde ervan in Woningwaarde nieuwbouw.
De belangrijkste keuzes die bij een uitkomst van deze sector horen te worden genoemd.
Het keuzepalet is landsdekkend gelijk. Elke ontwikkelaar kiest overal uit dezelfde pakketten; wat verschilt is welk pakket daar is toegestaan en welk saldo het oplevert. Er zit geen regionale bouwcultuur in.
De pakketten zijn expertoordeel. De stedenbouwkundige samenstelling komt uit kentallen en expertoordelen, niet uit een steekproef van gerealiseerde plannen. Ze zijn intern consistent gemaakt, niet gekalibreerd op waargenomen nieuwbouw.
De verhouding tussen huur en koop is statisch. De verdeling van de opgave over vrije sector en sociale huur volgt de waargenomen verhouding in het basisjaar per regio. Beleid dat die verhouding wil verschuiven zit niet in het model, tenzij het als aparte claim wordt aangeleverd.
De keuze tussen pakketten hangt zwakker aan het saldo dan de opzet suggereert. Opbrengsten en bouwkosten zijn allebei recht evenredig met de FSI, terwijl de marge per vierkante meter maar beperkt varieert; binnen een subsector is bovendien elk meergezinspakket een appartement. Wat de gerealiseerde dichtheid feitelijk stuurt is de dichtheidszeef. Zie Geschiktheid en Dichtheid.
De sociale huur wordt met een koopprijs beprijsd. De hedonische functie is geschat op koopwoningtransacties; voor sociale huur is dat een proxy. Zie Hedonisch woningprijsmodel.