Overflow
Overflow is het mechanisme waarmee het model omgaat met regionale claims die niet volledig kunnen worden gerealiseerd op het schaalniveau waarop ze oorspronkelijk zijn gespecificeerd. Wanneer de beschikbare en geschikte ruimte in een regio ontoereikend is om de volledige claim te herbergen, worden de resterende claims overgeheveld naar een hoger regionaal schaalniveau.

De figuur vat de drie gevallen samen die hieronder worden uitgewerkt. Een regio met genoeg ruimte vult zijn restclaim precies; een regio met te weinig ruimte schuift de rest door naar het volgende schaalniveau; en een regio die de claim al gehaald had krijgt een negatieve restclaim die op nul wordt geknipt. Omdat alleen het tekort doorschuift en het overschot blijft staan, komt de landelijke stand boven de som van de claims uit.
Wanneer treedt overflow op?
Overflow treedt op wanneer na alle iteraties binnen een sector-allocatieregio-combinatie nog restclaims overblijven. Dit kan verschillende oorzaken hebben:
- De regio heeft onvoldoende beschikbare locaties (te veel restricties)
- De beschikbare locaties zijn onvoldoende geschikt (alle geschiktheden onder de drempel)
- De dichtheden zijn te laag om de claims binnen de beschikbare ruimte te realiseren
- Eerdere sectoren hebben de beschikbare ruimte al ingenomen
Hoe werkt overflow?
De allocatie per sector wordt uitgevoerd op meerdere regionale schaalniveaus, van fijn naar grof. De volgorde is gedefinieerd in ModelParameters/SectorAllocRegio (zie Tijdsdynamiek). Voor wonen en werken in de NL2120-toepassing:
- Eerst op NVM-regioniveau
- Daarna op COROP-niveau
- Daarna op provincieniveau
Elk schaalniveau rekent zelfstandig opnieuw. Op COROP-niveau wordt de claim van de COROP genomen en daarvan de stand aan het begin van die stap afgetrokken, en hetzelfde gebeurt daarna op provincieniveau. Er wordt dus geen restclaim per NVM-regio doorgegeven en opgeteld naar het grovere niveau.
Dat onderscheid bepaalt wat een tekortregio kan verwachten. Een NVM-regio die zijn claim niet haalt krijgt op COROP-niveau alleen ruimte als die COROP als geheel nog een restclaim heeft. Komt een buurregio binnen dezelfde COROP boven zijn claim uit, dan streept dat overschot het tekort weg voordat de grovere stap begint, en krijgt de krappe regio geen tweede kans.
Deze pagina beschreef tot september 2026 het andere beeld, waarin restclaims per NVM-regio omhoog worden geaggregeerd. Dat is in #689 tegen de code gelegd en klopte niet. Het gedrag is daar beoordeeld als bedoeld, en deze pagina is erop bijgewerkt.

Op provincieniveau zijn meer locaties beschikbaar, want de provincie omvat meerdere NVM-regio’s. Een tekort in een krappe NVM-regio kan daar dus alsnog landen, mits de provincie als geheel nog een restclaim overhoudt. Het model houdt hierbij de sectorvolgorde in stand: er wordt niet teruggegaan naar een eerder gealloceerde sector.
Wat dit voor de uitkomsten betekent is zichtbaar in de spreiding tussen regio’s. Gemeten in de toetsronde van #753, variant NbSGenuanceerd zichtjaar 2060: 22 van de 76 NVM-regio’s halen de woningclaim niet en 30 zitten erboven, terwijl de landelijke realisatie op 0,998 uitkomt. Die getallen horen bij dat project en niet bij het mechanisme, maar de vorm is algemeen: een landelijke realisatie die klopt zegt niets over de verdeling eronder, juist omdat tekorten en overschotten bij het aggregeren tegen elkaar wegvallen.
De restclaim wordt op nul geknipt
De restclaim van een regio is de claim min de stand aan het begin van de allocatie:
RestClaim = Claim_in_regio - Stand_voor_allocatie
allocatiedoel = max(RestClaim, 0)
Die max is klein maar bepalend. Een regio waar de stand al boven de claim ligt, krijgt geen negatief doel maar een doel van nul: het model bouwt daar niets bij, maar sloopt er ook niets en verrekent het overschot nergens anders. Zie IterSubsector_T_Wonen.dms, IterSubsector_T.dms en IterSubsector_T_Wind.dms, waar dit max_elem(RestClaim, 0f) als allocatiedoel staat.
Het gevolg is asymmetrisch. Tekorten schuiven door naar een hoger schaalniveau en kunnen daar alsnog worden ingevuld, overschotten blijven staan waar ze staan. De landelijke stand is daarmee de som van de claims plus de som van de regionale overschotten min wat er landelijk niet is ingevuld:
stand_NL = som(claims) + som(overschotten) - onvervulde claims
Een landelijke realisatiegraad boven 1 hoeft dus niet te betekenen dat het model te veel bouwt.
Waarom regio’s al boven hun claim liggen
Een regio kan om twee redenen al boven de claim liggen voordat de allocatie begint.
De eerste is de vintage van de claims. De TIGRIS-claims voor wonen en werken zijn opgesteld op een peildatum die achterloopt op de BAG en op LISA. De waargenomen voorraad en de pijplijn hebben de regionale verdeling van die claims in een deel van de regio’s ingehaald. Zie Claimrealisatie voor de cijfers per subsector en voor de toets die deze regio’s apart zet.
De tweede is dat de stand aan het begin van een zichtjaar meer bevat dan het basisjaar: de exogeen opgelegde BAG-nieuwbouw uit StartState_metBAGnieuwbouw (gerealiseerd tot de BAG-datum plus vergund en in aanbouw) zit er al in. In het eerste zichtjaar is dat het grootste deel van wat er tussen basisjaar en zichtjaar bijkomt.
In zichtjaar 2030 van de NL2120-casus WLO_hoog_NbSGenuanceerd hadden bij wonen 20 van de 76 NVM-regio’s hun claim al gehaald voordat er ook maar iets gealloceerd was. Het saldo over alle regio’s kwam daardoor 9.785 woningen boven de claim uit, op een restclaim van 599.692. Bij werken is het effect groter: daar loopt de landelijke realisatiegraad per subsector vrijwel een op een mee met het aantal regio’s dat de claim al gehaald had. Op Claimrealisatie staat een kaart die laat zien welke regio’s dat zijn.
Diagnose
Per zichtjaar staat de opbouw klaar in Zichtjaar_T/RestClaims, voor wonen per WP2xVSSH en voor werken per Jobs6-subsector, telkens per NVM-regio:
| Item | Betekenis |
|---|---|
Claim | De claim voor deze regio en subsector |
Stand | De stand aan het begin van dit zichtjaar, dus voor de allocatie |
RestClaim | Het verschil, negatief waar de claim al gehaald was |
Totaal_RestClaim | Idem, over alle subsectoren samen |
NrRegiosAlGehaald | Het aantal regio’s met een negatieve restclaim |
Loopt NrRegiosAlGehaald op, dan zegt de claimrealisatie van dat zichtjaar minder over de allocatie en meer over de claims.
Implicaties
Ruimtelijke verschuiving: claims die op lokaal niveau niet passen worden regionaal herverdeeld. Dit betekent dat de resultaten op NVM-niveau kunnen afwijken van de oorspronkelijke claims uit Tigris XL, terwijl op provincieniveau de totalen beter overeenkomen.
Padafhankelijkheid: wanneer het model per zichtjaar doorrekent (AlleenEindjaar = FALSE), kan overflow in een vroeg zichtjaar ertoe leiden dat locaties worden benut die in een later zichtjaar niet meer beschikbaar zijn. De volgorde waarin zichtjaren worden doorlopen beïnvloedt daarmee het eindresultaat.
Signaalfunctie: substantiële overflow is een signaal dat de regionale claims, de restrictieconfiguratie of de dichtheidsinstellingen bijstelling behoeven. De Claimrealisatie-indicatoren maken het mogelijk om per regio en per subsector te monitoren in welke mate claims zijn gerealiseerd.
Relatie met sequences
Overflow verschilt van het sequence-mechanisme. Bij overflow gaat het om restclaims die op een fijner schaalniveau niet konden worden gerealiseerd en worden overgeheveld naar een grover niveau. Bij sequences gaat het om verdringing: actoren die door een latere sector van hun locatie zijn verdrongen en in een volgende doorloop opnieuw moeten worden gealloceerd. Beide mechanismen kunnen in dezelfde modelrun voorkomen.
Configuratie
De gebruiker bepaalt:
- Op welke schaalniveaus de allocatie per sector plaatsvindt (via
SectorAllocRegio) - Of en welke schaalniveaus als overflow-niveaus dienen (door meerdere regels per sector in de Text-tabel op te nemen)
- Of een sector in latere sequences opnieuw wordt doorlopen bij verdringing (
UseInLaterSequences)
Claims die na het grofste schaalniveau nog niet zijn gerealiseerd, blijven als onvervulde claims staan en worden gerapporteerd in de claimrealisatie-indicatoren.