Skip to content

De trede-voorrang van plancapaciteit vervalt nooit, en de rest van de ladder staat op het basisjaar stil #739

Description

@jipclaassens

De vervaldatum PlancapaciteitGeldigTotEnMet werkt sinds #682 op de hele zeef. De trede valt daarbuiten, en daar weegt plancapaciteit zwaarder dan in de zeef.

Waar het zit

De trede-assen worden in cfg/main/Templates/VariantData_T/Trede.dms:63-113 opgebouwd, in VariantData en dus zichtjaaronafhankelijk. De ladders staan in cfg/main/VariantParameters/Tredes/Wonen.dms:27 en :94 en in cfg/main/VariantParameters/Tredes/Werken.dms:31, :89 en :124. Ze worden verzilverd in cfg/main/Templates/Allocatie/IterSubsector_T.dms:80-83 en cfg/main/Templates/Allocatie/IterSubsector_T_Wonen.dms:86. Daarnaast staat er een tweede, losse plancapaciteitsvoorrang in IterSubsector_T.dms:68-73, in de keuze tussen werksubsectoren die dezelfde cel boven hun zaaglijn hebben.

Hoe zwaar de as weegt

Drie dingen bepalen dat samen, en ik heb ze alle drie nagelopen.

Ten eerste de volgorde binnen de ladder. Trede_T.dms:82 kiest met ArgMin de laagst genummerde klasse die waar is, dus de rijvolgorde van de combine-unit is de voorrangsvolgorde.

Ten tweede welke as het zwaarst weegt. In combine(A, B) varieert het eerste argument het langzaamst. Gemeten met een losse dms op GeoDms20.17.0.m, drie bij twee:

rij 0: a0_b0   rij 2: a1_b0   rij 4: a2_b0
rij 1: a0_b1   rij 3: a1_b1   rij 5: a2_b1

Het eerste argument is dus het zwaarste cijfer. PlancapaciteitPlusStimuli staat bij wonen vooraan, en bij nijverheid en logistiek ook.

Ten derde hoe hard de trede de geschiktheid overstemt. IterSubsector_T.dms:83 maakt er een strikt lexicografische ordening van, met TredeScore * Geschiktheid_Ordered_range + Geschiktheid_Ordered en Geschiktheid_Ordered_range = max(Geschiktheid_Ordered) + 100. Een cel in een hogere trede gaat dus altijd voor op elke cel in een lagere trede, ongeacht de geschiktheid.

Per subsector:

subsector ladder positie plancapaciteit
wonen, alle vier de varianten Tredes/Wonen.dms:27 en :94 eerste as
nijverheid en logistiek Tredes/Werken.dms:124 eerste as, en de ladder heeft er maar twee
de drie verzorgende subsectoren Tredes/Werken.dms:31 tweede as, onder WoongebiedK
zakelijke dienstverlening Tredes/Werken.dms:89 tweede as, onder BestaandKantoorK

De as zelf is een union_unit van vier klassen op volgorde: binnen hard plan, binnen zacht plan, binnen stimuli, daarbuiten (Tredes.dms:100). Voor wonen telt de ladder 144 treden, en 216 in NbSGenuanceerd omdat BBGK daar vervangen is door BBGPlusKansrijkWoningbouw. Harde plannen bezetten daarmee de bovenste 36 respectievelijk 54 treden.

Waarom dit niet klopt

Een hard plan is een onherroepelijk bestemmingsplan of een verleende vergunning. Dat is een uitspraak met een looptijd van jaren, niet van een eeuw. Het model kiest in 2120 nog steeds bij voorrang een locatie omdat een gemeente daar in 2023 een plan had liggen, en dat is een patroon dat geen enkele provincie of gemeente terugkent. Sinds #682 vervalt de restrictievrijstelling wel vanaf Y2060, dus de twee mechanismen die op dezelfde plankaart leunen spreken elkaar nu tegen.

De bovenste trede eet zichzelf ook niet leeg. Afgelezen op de bestaande BAU-uitdraai van Y2050 uit de productiereeks, niet vanavond opnieuw gedraaid: van de 24.369 ha harde wonen-plancapaciteit was aan het eind van Y2050 ongeveer 9.658 ha gealloceerd en ruim 14.700 ha nog niet. Een vervaljaar zet de rangorde daar dus echt om.

Het grotere punt eronder

De hele ladder staat op het basisjaar stil, niet alleen de plancapaciteit-as. Trede.dms:141 leest BBG uit BaseData, :158-173 de OV-bereikbaarheid, :133-139 het eigendom en :180 het bouwterrein. Geen van die assen wordt bijgewerkt met wat het model zelf bouwt. Een wijk die het model in 2040 neerzet is in 2050 nog steeds geen bestaand bebouwd gebied en telt daar dus nog steeds als uitbreiding.

Alleen de plancapaciteit-as laten vervallen repareert een van de vijf assen. Dat is wel de as met de grootste sprong, want hij staat vooraan, maar het betekent dat de ladder vanaf 2060 volledig op de wereld van 2023 blijft rusten.

Wat ik ga doen

De basisjaarzeef kreeg bij #682 een tweede uitkomst naast de eerste, en de zichtjaarzeef kiest er per zichtjaar een van. Voor de trede kan hetzelfde: een tweede trede-container waarin de plancapaciteitsvlaggen in Trede/src op FALSE staan, en IterSubsector_T die er per zichtjaar een van kiest via het meta-item TredeK op :37. Ik heb het idioom container src_zonder := src { <overschrijvende items> } los getoetst en dat werkt: het overschreven item volgt de nieuwe definitie, de rest wordt geerfd.

De cellen zakken dan binnen dezelfde BBG-, OV-, eigendoms- en grondgebruikcombinatie naar de stimuli-trede of de restcategorie. Bij wonen is dat een sprong van trede 0 tot 35 naar 72 tot 143. Bij nijverheid en logistiek blijft er van de ladder vrijwel niets over, want daar is plancapaciteit de enige inhoudelijke as; de plek van nieuwe bedrijventerreinen wordt dan volledig door de empirische geschiktheid bepaald. Dat laatste is een grotere ingreep dan bij wonen en zet ik daarom achter dezelfde vervaldatum maar met een aparte schakelaar.

Openstaande punten

  • moet de trede-voorrang met dezelfde vervaldatum uitfaseren als de restrictievrijstelling, of met een eigen jaartal?
  • geldt dat ook voor nijverheid en logistiek, waar de ladder daarmee tot twee treden terugvalt?
  • moet de tweede voorrang in IterSubsector_T.dms:68-73, de keuze tussen werksubsectoren, dezelfde vervaldatum krijgen?
  • moeten de vier andere trede-assen dynamisch worden gemaakt, te beginnen bij BBG? Dat is een eigen verbouwing en niet in dit issue meegenomen.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions