Simulazione Monte Carlo utilizzando QGIS e pgRouting su una costruzione del marciapiede ottimale


17

Sono nuovo nell'analisi spaziale e apprezzerei alcune indicazioni generali su un progetto che sto tentando, delineato di seguito (sto partendo da zero).

OBIETTIVO: Trovare le migliori posizioni per installare 2000 piedi di marciapiedi nella mia città natale al fine di collegare la maggior parte delle famiglie al Central Business District (CBD), dove "connesso" significa entro 2 miglia a piedi dal CBD. Ho shapefile che mostrano strutture esistenti (abitazioni), strade e marciapiedi (già installati).

Ecco la mia soluzione / processo di pensiero proposti:

  1. Convertire la rete di marciapiedi sul posto in un database di nodi collegati da pesi (ad es. Distanze). C'è un modo per farlo direttamente in QGIS (o altro programma) facendo clic su tutte le intersezioni?
  2. Calcola il numero di famiglie che si trovano a meno di 2 km a piedi dal Central Business District (ad esempio un punto lat-long o un poligono) utilizzando le funzionalità di routing di pgRouting o qualcos'altro. Questo sarà il valore di base "accesso alle famiglie".
  3. Utilizzando lo strato stradale come guida, posiziona casualmente altri 2000 piedi (diciamo, in segmenti di 10 piedi) di marciapiedi sullo strato del marciapiede. Questo equivale a costruire arbitrariamente un gruppo di nuovi marciapiedi.
  4. Ricalcola i nodi e i pesi utilizzando la nuova rete pedonale come in (1), quindi ricalcola il numero di famiglie che si trovano ora a 2 km dal CBD come in (2). Dovrebbe aumentare con i marciapiedi aggiuntivi. Salvare le posizioni dei marciapiedi aggiuntivi e il valore "accesso alla famiglia" associato in un file (ad es. Foglio di calcolo).
  5. Ripetere i passaggi (3) e (4) 10000 volte, in modo simile a una simulazione Monte Carlo. Utilizzando le 10000 serie di punti dati, scegliere le posizioni di posizionamento del marciapiede che massimizzano il numero di famiglie entro 2 miglia dal CBD.

Questo processo di pensiero sembra realistico? Qualcuno ha qualche suggerimento?

- Vorrei farlo utilizzando una combinazione di QGIS e R, tuttavia sono aperto all'apprendimento di PostGIS e / o Python (o qualsiasi altra cosa) per raggiungere l'obiettivo.


1
Potresti invece considerare un algoritmo genetico. Questo è quasi il processo che hai descritto. Sono abbastanza sicuro che ci siano librerie Python che supportano algoritmi genetici.
Chris,

1
Sembra che R abbia anche librerie di algoritmi genetici.
Chris,

6
È un grande problema. Tuttavia, la maggior parte dei posizionamenti casuali di 200 segmenti da 10 'marciapiede non collegherà nulla a nient'altro; non vi avvicinerete mai ad alcuno ottimale in modo così non guidato. Posso suggerire di focalizzare le vostre idee iniziali su come formulare il problema in modo astratto (indipendentemente da qualsiasi struttura di dati o ambiente di programmazione) in modo da poter (a) identificare preventivamente tali problemi e (b) rimanere aperti alla gamma più ampia di metodi di soluzione disponibili? Sembra prematuro proporre un metodo di soluzione particolare.
whuber

2
Precoce? Non sono d'accordo. In effetti, il processo di pensiero descritto sopra è un approccio; Spero che focalizzerà qualsiasi brainstorming e si tradurrà in feedback utili. Detto questo, sono aperto alla gamma più completa di metodi di soluzione disponibili. Vincolare i segmenti in modo che i marciapiedi siano posizionati in modo tale da connettere sempre le cose sarebbe semplice da implementare e aiutare a trovare una soluzione. Grazie per il suggerimento
baha-kev,

6
Bene, se fai un po 'di backup e dimentichi la roba di randomizzazione, i tipi di domande che vengono in mente includono: * Che tipo di problema di ottimizzazione è questo? Che proprietà ha? (Ad esempio, linearità, convessità, quasiconvessità, ecc.). * Ha formulazioni equivalenti, come una doppia? * Esistono modi alternativi per rappresentarlo, ad esempio in termini di proprietà dei grafici o con funzioni di penalità? Ad esempio, una doppia formulazione sarebbe quella di ridurre al minimo la lunghezza totale dei marciapiedi che servono una determinata popolazione. Questo potrebbe suggerire una soluzione di programmazione dinamica.
whuber

Risposte:


1

potresti voler utilizzare l'estensione del Risolutore in Excel, l'ho usato alcune volte nella programmazione del liner.

ecco un link su un corso intensivo su LP, usando il Risolutore:

http://www.economicsnetwork.ac.uk/cheer/ch9_3/ch9_3p07.htm


2
È una bella idea e potrebbe essere utile per giocare con piccoli problemi con i giocattoli. Sfortunatamente, Excel non è all'altezza di questa attività. Oltre ad essere un problema troppo grande per essere gestito, sarebbe proibitivo codificare i vincoli di connettività in Excel: devi assicurarti che i marciapiedi colleghino effettivamente le persone al CBD!
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.