Skip to content

Allocatie procedure in formules

Jip Claassens edited this page Jun 22, 2026 · 71 revisions

Modeloverzicht

Het model van landallocatie en -ontwikkeling schematiseert hoe eigenaren van land units (bijvoorbeeld rastercellen) een subsector kiezen, en hoe ontwikkelaars van subsectoren besluiten of zij een land unit willen ontwikkelen. De keuzes worden verondersteld gestuurd te worden door ontwikkelwinsten en regionale claims per subsector-regio. N.B. Het model schat géén marktevenwicht of prijsaanpassing.

Sets

  • $I$: set van land units (e.g. rastercellen), index $i$.
  • $J$: set van subsectoren (e.g. eengezins vrije sector woningen), index $j$.
  • $R$: set van regio’s (e.g. NVM, COROP, Provincie), index $r$.

Parameters

  • $p_{ij}$: potentiele verkoopprijs van een woonobject op land unit $i$ in subsector $j$ (met kenmerken van het onderliggende ontwikkelpakket)
  • $c^b_{ij}$: bouwkosten op land unit $i$ per object van subsector $j$ (met kenmerken van het onderliggende ontwikkelpakket)
  • $c^s_{ij}$: sloopkosten op land unit $i$ per object van subsector $j$
  • $D_{ij}$: aantal objecten van subsector $j$ dat in land unit $i$ kan worden gerealiseerd bij potentiële dichtheid
  • $E_{ij}$: bestaand aantal objecten van subsector $j$ in land unit $i$
  • $K^v_{ij}$: verwervingskosten van de huidige objecten op land unit $i$ per object van subsector $j$
  • $K^w_i$: kosten voor woon-/bouwrijp maken van land unit $i$
  • $K^p_i$: plan- en proceskosten voor land unit $i$
  • $K^g_i$: bovengrondse kosten voor land unit $i$
  • $R_{ir}\in \{0,1\}$: regio assignment matrix, de mate waarin land unit $i$ in regio $r$ ligt, i.e. $$\forall i: \sum_{r} R_{ir} = 1$$
  • $C_{jr}$: claim (regionale vraag) van subsector $j$ in regio $r$

De ontwikkelkosten $c^{ow}_i$ van land unit $i$ voor subsector $j$ worden berekend als:

$$c^{ow}_i := K^w_i + K^p_i + K^g_i + \sum_j [ (K^v_{ij} + c^s_{ij}) \cdot E_{ij} ] $$

De ontwikkelwinst $S_{ij}$ van land unit $i$ voor subsector $j$ wordt berekend als:

$$S_{ij} = (p_{ij} - c^b_{ij}) \cdot D_{ij} - c^{ow}_i$$

Beslissingsvariabelen

  • $x_{ij}\in\{0,1\}$: 1 als land unit $i$ herontwikkeld wordt naar subsector $j$; anders 0.
  • $x_{i0}\in \{0,1\}$: 1 als land unit $i$ ongewijzigd blijft (status quo); anders 0. Buitenoptie $j=0$ heeft by definition $S_{i0}=0,\ D_{i0}=0$.
  • $Z_{jr}$: minimale ontwikkel-winst die ontwikkelaar $j$ in regio $r$ kan verlangen.

Formulering van het model

Doel/heuristiek

We wijzen ontwikkelopties $ij$ toe in aflopende volgende van $S_{ij}$ voor zover subsector $j$ nog niet $C_{jr}$ kan realiseren met eerdere toewijzingen. De consequentie hiervan is dat er voor iedere $j$ indien gesatureerd is, een laatste toewijzing is met waarde $S_{ij}$, dit noemen we $Z_{jr}$. Met andere woorden, iedere ontwikkelaar $j$ ontwikkelt verkregen land units binnen regio $r$ tot aan $Z_{jr}$:

$$\max Z_{jr} \qquad \forall j, \forall r \qquad \text{(1)}$$

Gegeven voorwaarde (2):

$$ Z_{jr} \cdot R_{ir} \cdot x_{ij} \le S_{ij} \cdot x_{ij} \qquad \forall i, \forall j, \forall r \qquad \text{(2)}$$

Er geldt dat voor iedere $i$ met $S_{ij} > Z_{jr}$ dat die gealloceerd is aan $j$ of een betere optie en voor iedere $S_{ij} <= Z_{jr}$ dat die $i$ tenminste niet aan die $j$ is toegewezen.

Iedere eigenaar van land unit $i$ wordt veronderstelt de land units beschikbaar te stellen aan de ontwikkelaar van subsector $j$ voor zover subsector $j$ deze unit nog wil ontwikkelen.

$$\max_{x}\sum_{i} S_{ij} \cdot x_{ij} \qquad \forall i \qquad \text{(3)}$$

Exclusiviteit per land unit $i$ (exact één keuze: herontwikkel of niets doen):

$$\sum_{j} x_{ij} + x_{i0} = 1 \qquad \forall i \qquad \text{(4)}$$

Regionale claims op eindvoorraden:

$$\sum_{i} R_{ir} \cdot \left( E_{ij} \cdot x_{i0} + D_{ij} \cdot x_{ij} \right) \ge C_{jr} \qquad \forall j, \forall r \qquad \text{(5)}$$

Oftewel, bij herontwikkeling $(x_{ij}=1)$ vervangt $D_{ij}$ de bestaande $E_{ij}$ in die land unit; bij niets doen $(x_{i0}=1)$ blijft $E_{ij}$ staan.

Aannames:

  • elke land unit heeft een aparte ontwikkelaar (eigenaar) die een onafhankelijke keuze maakt.
  • uitkopen huidig opstal obv huidige prijzen

Binnen algeheel allocatie proces

Het allocatieproces wordt op meerdere niveaus herhaald. De hiërarchie is als volgt:

  1. Zichtjaren – per zichtjaar wordt het model opnieuw uitgevoerd.
  2. Sequenties – binnen een zichtjaar vinden meerdere sequenties plaats.
  3. Sector-alloc-regio’s – binnen elke sequentie wordt per sector-alloc-regio gealloceerd (bijvoorbeeld Wonen – NVM).
  4. Iteraties – binnen een sector-alloc-regio wordt het allocatiemodel iteratief toegepast totdat claims zijn verwerkt.

De volgorde van sector-alloc-regio’s wordt bepaald in de variantparameters. Uiteindelijk wordt dus hetzelfde model meerdere keren uitgevoerd, afhankelijk van zichtjaar, sequentie, regio en iteratie.

Sequenties en verdringing

Sequenties zijn nodig om verdrongen objecten (zoals woningen of banen) opnieuw te kunnen alloceren.
Wanneer in een eerdere sequentie objecten worden verdrongen, levert dit restclaims op. Deze restclaims worden in de volgende sequentie opnieuw ingebracht, zodat ze alsnog elders gealloceerd kunnen worden.

Overflow-mechanisme

Het alloceren start altijd op het laagste ruimtelijke niveau (bijvoorbeeld regio A).

  • Eerst wordt geprobeerd alle claims binnen regio A te plaatsen.
  • Indien dit niet lukt (te weinig geschikte locaties), wordt de restclaim bepaald:
    $$\text{restclaim} = \text{claim} - \text{gerealiseerd in A}$$
  • Deze restclaim wordt vervolgens doorgeschoven naar een hoger ruimtelijk niveau (regio B, dat A bevat).
  • Het allocatieproces verloopt in regio B identiek, maar nu met de resterende claims. Zo kunnen claims die lokaal niet passen alsnog regionaal worden opgevangen.
image

Dichtheden

Bij allocatie is niet alleen de keuze welke subsector in welke land unit wordt ontwikkeld van belang, maar ook met welke dichtheid dit gebeurt.

  • Elke subsector heeft een potentiële dichtheid ($D_{ij}$), die de maximale intensiteit van gebruik in een land unit aangeeft (bijv. aantal woningen per hectare).
  • De ontwikkel-winst ($S_{ij}$) is berekend gegeven deze potentiële dichtheid, inclusief bouwkosten, sloopkosten en bijkomende plan- en inrichtingskosten.
  • Bij toewijzing van een claim wordt dus impliciet een keuze voor een bepaalde dichtheid gemaakt: hogere dichtheden vergen meer investeringen maar kunnen per saldo meer objecten opleveren.

Iteraties

Binnen elke sector-alloc-regio loopt het allocatieproces iteratief.
Bij elke iteratie worden opties met de hoogste ontwikkelwinst ($S_{ij}$) geselecteerd, totdat de regionale claims ($C_{jr}$) zijn ingevuld of geen geschikte opties meer beschikbaar zijn.


Allocatiedomein: van AllocDomain naar AdminDomain

In eerdere modelversies werd de allocatie zelf uitgevoerd op een grover AllocDomain (doorgaans 100 m), terwijl geschiktheid en beschikbaarheid op het fijnere AdminDomain (25 m) werden bepaald. Versnippering werd toen tegengegaan met een minimale-beschikbaarheidsdrempel per AllocDomain-cel (MinimalLandAvailability): een 100 m-cel die te weinig vrij oppervlak overhield werd restrictief verklaard.

Voor de stedelijke sectoren is dit AllocDomain inmiddels grotendeels uitgefaseerd. De allocatie vindt nu rechtstreeks plaats op het 25 m-niveau, op het zogeheten CompactedAdminDomain. Dat is de verzameling AdminDomain-cellen die binnen het studiegebied vallen (select_with_attr_by_org_rel(AdminDomain, AdminDomain/IsCompactedDomain)). Het "compacten" houdt het domein klein en daarmee de allocatie snel. Welke 25 m-cellen meedoen wordt nog steeds op AllocDomain-niveau bepaald, zodat er geen losse 25 m-celletjes buiten de selectie vallen. Het AdminDomain- en AllocDomain-grid zijn instelbaar via ModelParameters/Advanced/AdminDomain_ref en AllocDomain_ref.

Het wegvallen van de grove AllocDomain-drempel betekende dat versnippering (losse cellen, smalle linten) op een andere manier moest worden voorkomen. Daarvoor is geclusterd alloceren geïntroduceerd.

N.B. De AllocDomain-drempel is niet overal verdwenen. Voor landbouw geldt nog steeds een minimale-beschikbaarheidsdrempel (MinimalLandAvailability_Landbouw, standaard 0,60 ha per 100 m-cel), omdat landbouw via discrete allocatie op een ander spoor loopt.

Geclusterd alloceren

Geclusterd alloceren vervangt de oude minimale-beschikbaarheid-per-AllocDomain-cel door een eis op de aaneengeslotenheid en omvang van het allocatieresultaat zelf. Het doel is "geen confetti": geen versnipperde, losliggende of lintvormige toewijzingen, maar samenhangende clusters van voldoende omvang (bijvoorbeeld woonmilieus, bedrijventerreinen of waterbergingsgebieden).

De stappen binnen één iteratie (zie Templates/Allocatie/Iter_T/Iter_Allocatie.dms) zijn:

  1. Afkapgrens en arg_max (zie hierboven). Per subsector wordt met de weighted nth element de afkapgrens bepaald en met arg_max per cel de winnende subsector gekozen. Dit levert een ruw allocatieresultaat op 25 m op.

  2. Morfologische opschoning (lintfilter). Smalle linten, bijvoorbeeld het volbouwen van een weg dwars door de stad, worden eruit gefilterd via een erosie-dilatie (opening):

    • Erosie: een cel overleeft alleen als minimaal een instelbaar aantal van zijn acht buren ook is gealloceerd (MorfologischeCleaning_Aantal_BuurCellenAllocOmTeOverleven, standaard 6).
    • Dilatie: een cel hoort weer bij het resultaat als minstens één buurcel de erosie overleefde.
    • Het opgeschoonde resultaat is de oorspronkelijke allocatie binnen het gedilateerde gebied. Cellen die hierdoor afvallen krijgen IsAfgewezen_dmv_Morfologie.
  3. Clusteren met district_8. De opgeschoonde cellen worden met district_8 gegroepeerd tot aaneengesloten districten (8-connectiviteit). Per district wordt het oppervlak bepaald (pcount maal ha per cel). Aaneengeslotenheid mag ontstaan door cellen van verschillende subsectoren binnen dezelfde sector; cellen van andere sectoren tellen niet mee.

  4. Toets op minimale clustergrootte. Een cluster wordt alleen behouden als het oppervlak boven de minimumdrempel ligt. De drempel verschilt binnenstedelijk versus buitenstedelijk, bepaald uit de BRT-woonkernkaart (SourceData/Grondgebruik/BRT/IsWoonkern):

    Sector Binnenstedelijk (woonkern) Buitenstedelijk
    Wonen 0,4 ha 2 ha
    Werken 0,4 ha 2 ha
    Verblijfsrecreatie 0,4 ha 2 ha
    Waterberging 2 ha (uniform) 2 ha (uniform)

    De drempels staan in ModelParameters als minimum_alloc_group_size_Binnenstedelijk_<sector> en minimum_alloc_group_size_Buitenstedelijk_<sector>. Het grootste cluster in een regio (IsNonGroup) wordt altijd behouden, mits het minstens een halve hectare beslaat, zodat een claim nooit volledig op de clustertoets sneuvelt.

  5. Afgewezen cellen vallen terug in de volgende iteratie. Cellen in te kleine clusters (of weggefilterd door de morfologie) worden IsAfgewezen. Deze afwijzing wordt cumulatief over iteraties bijgehouden (IsAfgewezen_Cumulatief). Vanaf een instelbare iteratie (ModelParameters/IterVanafWaarWeAfgewezenCellenUitsluitenInAlloc) worden afgewezen cellen uit de beschikbaarheid gehaald, zodat de weighted nth element in een volgende iteratie opnieuw zoekt en de overgebleven clusters kan laten aangroeien tot ze wel groot genoeg zijn. Zo convergeert het proces naar samenhangende clusters die de claim realiseren.

Een minimale beukmaat (minimale breedte van een cluster) is als eis benoemd; in de huidige implementatie wordt de samenhang via de morfologische opening en de minimale clusteromvang afgedwongen.

Geclusterd alloceren is generiek over de sectoren wonen, werken en verblijfsrecreatie, en wordt ook gebruikt door de nieuwe sector waterberging (met een eigen, uniforme drempel). Zie issue ObjectVision/RSopen #508.

Clone this wiki locally