Tredes

De trede is de ontwerpcomponent van de geschiktheid: de volgorde waarin locatietypen aan bod komen, naar analogie met de Ladder voor Duurzame Verstedelijking. Waar de empirische component zegt hoe aantrekkelijk een plek is, zegt de ladder welke soort plek eerst aan de beurt is. Deze pagina beschrijft hoe een ladder is opgebouwd, welke assen er zijn, wat de allocatie ermee doet en waar je op moet letten als je er een aanpast.

De empirische kant staat op Geschiktheid, de allocatie zelf op Allocatie procedure in formules.


Wat een trede doet in de allocatie

Tredes en empirische geschiktheid

De ladder deelt de cellen in genummerde klassen in, van hoge naar lage voorrang. In de allocatie wordt de empirische geschiktheid per subsector eerst omgezet in een rangnummer, en dat rangnummer wordt opgeteld bij een offset die per trede verschilt:

Geschiktheid_totaal = Trede_offset x bereik + rangnummer(Empirische_geschiktheid)

De offset is zo gekozen dat hij het rangnummer altijd overstemt. De ordening is daarmee strikt lexicografisch: een cel in een hogere trede gaat altijd voor op elke cel in een lagere trede, hoe hoog de empirische score daar ook is. Pas binnen een trede geeft de empirie de doorslag, en dan alleen als rangorde en niet als hoogte.

Dat maakt de ladder het zwaarste sturingsmiddel in het model. Bij wonen bezetten de harde plannen de bovenste 36 van de 144 treden van de BAU-ladder, en bij nijverheid en logistiek bestaat de ladder van acht treden uit niet meer dan plancapaciteit met stimuli en bouwterrein.

Twee dingen doet de ladder niet. Hij weegt niet: er is geen gewicht waarmee een hoge empirische score een trede kan compenseren. En hij is niet vergelijkbaar tussen subsectoren: het aantal treden verschilt per subsector, dus een tredescore van de ene subsector zegt niets over die van de andere. Waar subsectoren om dezelfde cel strijden wordt daarom op iets anders beslist, bij wonen op de hoogte van het exploitatiesaldo en bij werken op een uniforme prioriteit van bestaande dominante cel, plancapaciteit en stimuli die aan de kans voorafgaat. Zie Geschiktheid.

Hoe een ladder is opgebouwd

Een ladder is een cartesisch product van assen. Elke as is een klassenlijst, en elke klasse draagt een expressie (RefSrc) die per cel zegt of de klasse van toepassing is. De ladders staan per sector en subsector in VariantParameters/Tredes, de gedeelde assen in VariantParameters/Tredes/impl en een sectoreigen as bij de sector zelf, en de vlaggen waarnaar de expressies verwijzen in Templates/VariantData_T/Trede.dms onder src.

Per cel wordt op elke as de eerste klasse gekozen waarvan de vlag waar is, en die asindices worden samengevoegd tot een klassenummer. De volgorde van de assen in de combine is de prioriteitsvolgorde: het eerste argument telt het zwaarst.

Voor wonen in de BAU-ladder zijn de assen:

  1. Plancapaciteit en stimuli (4 klassen): binnen hard plan, binnen zacht plan, binnen stimuli, daarbuiten
  2. Bestaand bebouwd gebied (2): binnen, buiten
  3. OV-bereikbaarheid (3): zeer nabij, nabij, rest
  4. Eigendom (3): maatschappelijke ontwikkelende partij binnen bebouwd gebied, commerciele ontwikkelende partij, rest
  5. Grondgebruik (2): bouwterrein, rest

Samen 144 klassen. Let op dat de eerste as geen kruisproduct van plan en stimuli is maar een aaneenschakeling van vier klassen op volgorde: een cel valt in de eerste klasse die op haar van toepassing is, dus een cel binnen een hard plan komt in klasse 0 ongeacht de stimuli.

Elke as dekt elke cel, met een klasse Totaal als sluitstuk of met een laatste klasse die het complement van de eerdere is; elke cel valt zo op elke as in precies een klasse. Dat is geen nettigheid maar een eis: valt een cel op een as in geen enkele klasse, dan heeft ze geen trede en kan ze niet worden gealloceerd. Op de tredescore in de allocatie staat een IntegrityCheck die bewaakt dat het klassenummer onder de cardinaliteit van de ladder blijft.

De ladder beslist op cellen van 25 meter, dezelfde cellen waarop de allocatie kiest; de toeleverende lagen in BaseData staan op dezelfde resolutie.

De assen

As Klassen Wat hij leest
plancapaciteit, in veertien varianten 1 tot 3 de harde en zachte plankaarten per sector, voor werken per subsector KanOp-gefilterd
stimuli 2 de stimulikaart per sector
plancapaciteit plus stimuli 4 de twee hierboven achter elkaar, als een reeks en niet als kruisproduct
bestaand bebouwd gebied 2 de begrenzing bebouwd gebied
bebouwd gebied plus kansrijke woningbouw 3 idem, met de zoekgebieden woningbouw uit het landschapstype rivieren ertussen (#620)
OV-bereikbaarheid 3 reistijd naar een railhalte, rond een kern van 20.000 inwoners of meer
eigendom, in vier varianten 2 of 3 de eigendomskaart, gecombineerd met bebouwd gebied
grondgebruik 2 bouwterrein volgens het grondgebruik van het basisjaar
grondgebruik voor energie 2 de primaire waterkeringen; de rijkswegen staan wel in de naam van de vlag, maar worden niet gelezen
bouwregime 4 de overstromingsgevaarzonering, en uitdrukkelijk niet de landschapstypen
belevingswaarde landschap 2 tot 4 de belevingskaart van het Nederlandse landschap
slappe bodem 2 de kaart met te slappe bodems uit Op Waterbasis
hoog of laag Nederland 2 de pleistocene tegen de holocene helft
woongebied of kom 2 of 3 bebouwd gebied of de schijf rond bestaand woongebied (#710); voor overheid en kwartaire diensten met de bestaande instelling als klasse ervoor (#668)
bestaand kantoorgebied 2 cellen waar kantoor de werkstand domineert (#668)
wel of geen wind in het basisjaar 2 de turbinestand
zonneladder 5 de treden van de zonneladder die daadwerkelijk alloceren, plus een restklasse
Totaal 1 de catch-all die alles vangt

De bouwregime-as leest bewust alleen de overstromingskant en niet de landschapstypen: de trede zou anders van betekenis veranderen op cellen die de zeef toch al heeft weggehaald. De as komt alleen voor in de ladders Intensiveren en Transformeren en in enkele andere; BAU en NbSGenuanceerd gebruiken hem niet.

De ladders die er zijn

Per sector en subsector staat er een unit per trede-variant. Welke een toepassing kiest bepaalt Trede_Variant in VariantK.dms, per variant. De namen in de tabel hieronder zijn variantnamen uit de toepassingen waarin die ladders zijn gebouwd, dus voorbeelden en geen modeleigenschap: BAU, Intensiveren en Transformeren komen uit de Ruimtelijke Verkenningen 2023, NbSGenuanceerd uit een latere toepassing met natuurlijke maatregelen. Wat wel een modeleigenschap is, is dat de ladders per sector en subsector worden gedefinieerd en dat een sector alleen kan draaien als er voor de gekozen variantnaam een unit bestaat.

Sector en subsector Beschikbare trede-varianten Klassen in de BAU-ladder
wonen, vier subsectoren BAU, Intensiveren, Transformeren, NbSGenuanceerd, plus twee andere 144, en 216 in NbSGenuanceerd
werken, nijverheid en logistiek BAU, Intensiveren, Transformeren, NbSGenuanceerd, plus drie andere 8
werken, zakelijke dienstverlening BAU, NbSGenuanceerd 288
werken, detailhandel en overige consumentendiensten BAU, NbSGenuanceerd 288, en 432 in NbSGenuanceerd
werken, overheid en kwartaire diensten BAU, NbSGenuanceerd 432, en 648 in NbSGenuanceerd
verblijfsrecreatie BAU, Intensiveren, Transformeren, en twee andere 4
zon BAU en vier aliassen daarvan onder andere namen 40
wind BAU en vier aliassen daarvan onder andere namen 64
waterberging BAU en NbSGenuanceerd, beide leeg 1
landbouw alleen de lege ladder 1

Waar een variant hetzelfde wil als BAU staat er een alias, bijvoorbeeld NbSGenuanceerd := BAU. Waterberging en landbouw hebben geen ladder: bij waterberging valt alles in een enkele klasse en beslist de empirische geschiktheid alleen, en de landbouwallocatie leest de trede niet.

Let op de asymmetrie in die tabel. De ladders voor wonen en werken kennen de variantnamen van meerdere toepassingen; die voor verblijfsrecreatie, zon en wind alleen de namen van de toepassingen waarvoor ze zijn gemaakt. Wie zo’n sector aanzet onder een variantnaam waarvoor geen unit bestaat, moet die eerst toevoegen, desnoods als alias van een bestaande.

Welke assen met de tijd meebewegen

De meeste assen zijn op het basisjaar geankerd: ze lezen kaarten van het basisjaar en worden niet bijgewerkt met wat het model zelf bouwt. Drie assen bewegen wel mee, elk op een eigen manier. Bij wonen zijn dat drie van de vijf assen; de werken-ladders dragen dezelfde drie assen en bewegen op dezelfde manier mee, want de dynamiek zit in de bron van de vlaggen en niet in de ladder.

De plancapaciteit-as vervalt na PlancapaciteitGeldigTotEnMet in ModelParameters/Advanced, dezelfde datum als de vrijstelling in de zeef: een cel binnen een plan zakt daarna naar de stimuli-trede of de restcategorie. Vervallen in de zeef alleen zou daarvoor niet genoeg zijn. De zeef bepaalt alleen of een cel beschikbaar is, terwijl de plancapaciteit-as vooraan in de ladder staat en daardoor zwaarder weegt; een cel in een verlopen plan zou anders bovenaan blijven staan. Bij werken leest ook de prioriteit in de subsectorkeuze na die datum de bron waarin geen cel meer in een plan ligt, zodat die terugvalt op de stimuli en op de bestaande kantoorcel of instelling.

De eigendom-as vervalt op een eigen jaartal, EigendomGeldigTotEnMet, omdat grondeigendom in het basisjaar weinig zegt over een zichtjaar decennia later. Het jaartal staat los van dat van de plancapaciteit, omdat een vastgesteld plan en een eigendomsverhouding niet in hetzelfde tempo verouderen. Elke cel valt daarna in de restklasse van die as. Dat kan zonder de ladder te verbouwen omdat de as een catch-all heeft. Er is geen bron voor de ontwikkeling van het eigendom, dus de as wordt uitgezet en niet vervangen.

De as bestaand bebouwd gebied wordt per zichtjaar opnieuw opgebouwd, als het bebouwd gebied van het basisjaar verenigd met een schijf van 100 meter rond de cellen die het model in eerdere zichtjaren voor wonen of werken heeft gealloceerd. De ingreep moet om de omgeving van gebouwde cellen gaan en niet om die cellen zelf: een cel die het model eenmaal alloceert komt de rest van de reeks niet meer in de allocatie, dus haar aan het bebouwd gebied toevoegen verandert niets. De schijf is 100 meter, vier cellen van het allocatiegrid, dus direct aangrenzend; ruimer werkt niet, want een schijf van 500 meter zou bijna tweemaal het bebouwde gebied zelf toevoegen, en dan betekent binnenstedelijk niets meer. Deze opbouw staat in het zichtjaar zelf, in Templates/Allocatie/Zichtjaar_T/TredeDynamischeUrbanContour, want alleen daar is de stand van het vorige zichtjaar beschikbaar; in het eerste zichtjaar is er nog niets gebouwd. Alleen wonen en werken laten het bebouwd gebied aangroeien, want de andere sectoren bouwen geen kom. De eigendomsklasse die naar bebouwd gebied verwijst leest het bebouwd gebied van het basisjaar en groeit niet mee.

De OV-bereikbaarheid en het bouwterrein bewegen niet mee. Voor de eerste is er geen bron die zegt hoe die zich ontwikkelt, en dat is een aanname die bij de resultaten hoort te worden benoemd. Voor de tweede hoeft het niet, om dezelfde reden als hierboven.

De buffers rond kernen naar inwonertal, waarop de OV-as leest, staan op de begrenzing bebouwd gebied met het inwonertal uit de CBS-vierkanten. Die bron reikt verder dan de trede alleen: dezelfde buffers voeden de OV-klassen en de dichtheidsfactoren per kerngrootte.

Om de twee vervaldatums onafhankelijk van elkaar te kunnen toepassen worden de ladders in vier smaken opgebouwd: met beide assen, zonder plancapaciteit, zonder eigendom en zonder allebei. De ladder zelf is in alle vier dezelfde; wat verschilt is de bron, waarin de betreffende vlaggen zijn platgelegd. Per zichtjaar kiest de allocatie welke van de vier ze leest, net zoals de zichtjaarzeef kiest tussen de twee uitkomsten van de basisjaarzeef.

Hoe de ladder wordt gerekend

Het sjabloon Templates/VariantData/Trede_T leest de assen uit de combine-unit zelf, bouwt per as een kaart van een byte met de eerste ware klasse, en telt die asindices met een mixed-radix som samen in combine-volgorde. Dat is rekenkundig hetzelfde als per klasse een kaart maken met het klassenummer waar alle asvlaggen waar zijn en daarover de laagste nemen, want de klassenconjuncties zijn per constructie het cartesisch product van de asvlaggen. Het scheelt wel veel: een kaart per klasse zou op 25 meter tot 648 kaarten van ruim 145 miljoen cellen per ladder betekenen, per zichtjaar opnieuw, terwijl de opbouw per as een handvol kaarten van een byte per cel kost. Een kaart per klasse bestaat alleen voor de visualisatie.

Twee details van die constructie zijn het onthouden waard. Een alias als NbSGenuanceerd := BAU heeft de subitems van de combine niet zelf; het sjabloon volgt de alias tot twee niveaus diep om alsnog bij de assen te komen. En een unit zonder first_rel is geen combine en is dan zelf de enige as, wat de ladders met een enkele as opvangt.

Valkuilen bij het aanpassen

Elke as moet elke cel dekken. Zonder sluitstuk valt een cel buiten de ladder en doet ze niet mee.

De volgorde van de assen is de prioriteitsvolgorde. Een as verplaatsen is geen cosmetische ingreep maar een andere ladder.

Een as toevoegen vermenigvuldigt de cardinaliteit. Van 144 naar 216 klassen kost niets bijzonders, maar de ladder is wel de plek waar dat zich opstapelt.

Een nieuwe variantnaam vraagt een unit per sector en subsector die de allocatie draait. Ontbreekt hij, dan faalt de configuratie op een niet bestaand item.

En een as mag geen alias van een classificatie-unit zijn. De verwijzing die het sjabloon volgt loopt dan door tot de classificatie zelf, en daar staat geen RefSrc. Om die reden dragen de assen bestaand bebouwd gebied en bouwregime hun eigen klassenlijst met dezelfde namen als de classificatie.

Verantwoording

De keuzes hierboven zijn gemaakt in de volgende issues; daar staat de afweging en de meting die eraan ten grondslag ligt.

  • #508: de allocatie kiest op cellen van 25 meter.
  • #620: de as bebouwd gebied plus kansrijke woningbouw, met de zoekgebieden uit het landschapstype rivieren tussen inbreiding en de rest.
  • #668: bestaand kantoorgebied en de bestaande instelling als hoogste as voor zakelijke dienstverlening en voor overheid en kwartaire diensten.
  • #682: de zichtjaarzeef kiest per zichtjaar tussen twee uitkomsten van de basisjaarzeef; de vier opbouwen van de ladder volgen dezelfde opzet.
  • #710: woongebied of kom als hoogste as voor de verzorgende werksubsectoren.
  • #739: de plancapaciteit-as vervalt op dezelfde datum als de vrijstelling in de zeef.
  • #749: de eigendom-as vervalt op een eigen datum, het bebouwd gebied groeit per zichtjaar mee met de modelnieuwbouw, en de buffers rond kernen staan op de begrenzing bebouwd gebied met het inwonertal uit de CBS-vierkanten.
  • #759: de ladder beslist op cellen van 25 meter, met de toeleverende lagen op dezelfde resolutie.
  • #775: de ladder wordt per as opgebouwd in plaats van met een kaart per klasse, en de assen bestaand bebouwd gebied en bouwregime dragen een eigen klassenlijst.
  • #801: de schakelaars achter de meebewegende assen zijn vast ingebouwd; alleen de twee vervaldatums blijven instelbaar.