Simulação de Monte Carlo usando QGIS e pgRouting na construção ideal de calçada


17

Eu sou novo na análise espacial e gostaria de receber alguma orientação geral em um projeto que estou tentando, descrito abaixo (estou começando do zero).

OBJETIVO: Encontrar os melhores locais para instalar 2.000 pés de calçadas na minha cidade natal, a fim de conectar a maioria das residências ao Distrito Comercial Central (CBD), onde "conectado" significa dentro de 2 km a pé do CBD. Eu tenho shapefiles mostrando estruturas existentes (residências), estradas e calçadas (já instaladas).

Aqui está a minha solução proposta / processo de pensamento:

  1. Converta a rede de calçada no local em um banco de dados de nós conectados por pesos (ou seja, distâncias). Existe uma maneira de fazer isso diretamente no QGIS (ou outro programa) clicando em todas as interseções?
  2. Calcule o número de famílias que estão a menos de 2 km a pé do Distrito Central de Negócios (por exemplo, um ponto ou polígono longo), usando os recursos de roteamento do pgRouting ou qualquer outra coisa. Este será o valor de "acesso doméstico" do caso base.
  3. Usando a camada de estrada como guia, coloque aleatoriamente mais 2000 pés (digamos, em segmentos de 10 pés) de calçadas na camada de calçada. Isso equivale a construir arbitrariamente várias novas calçadas.
  4. Recalcule os nós e pesos usando a nova rede de pedestres, como em (1) e, em seguida, recalcule o número de famílias que estão agora a 2 km do CBD, como em (2). Deve aumentar com as calçadas adicionais. Salve os locais das calçadas adicionais e o valor "acesso doméstico" associado a um arquivo (por exemplo, planilha).
  5. Repita as etapas (3) e (4) 10000 vezes, semelhante a uma simulação de Monte Carlo. Usando os 10.000 conjuntos de pontos de dados, escolha os locais de localização das calçadas que maximizem o número de residências a 2 km do CBD.

Esse processo de pensamento parece realista? Alguém tem alguma sugestão?

- Gostaria de fazer isso usando alguma combinação de QGIS e R, no entanto, estou aberto a aprender PostGIS e / ou Python (ou qualquer outra coisa) para atingir o objetivo.


1
Você pode considerar um algoritmo genético. Esse é quase o processo que você descreveu. Tenho certeza de que existem bibliotecas python que suportam algoritmos genéticos.
Chris

1
Parece que o R também possui bibliotecas de algoritmos genéticos.
Chris

6
É um grande problema. No entanto, a maioria dos canais aleatórios de 200 segmentos de calçada de 10 pés não conectará nada a mais nada; você não chegará nem perto do ideal de maneira tão desorientada. Posso sugerir que você foque em seus pensamentos iniciais sobre como formular o problema de maneira abstrata (independentemente de qualquer estrutura de dados ou ambiente de programação), para que você possa (a) identificar esses problemas antecipadamente e (b) permanecer aberto à mais ampla variedade de métodos de solução disponíveis? Parece prematuro propor um método de solução específico.
whuber

2
Prematuro? Eu não concordo. De fato, o processo de pensamento descrito acima é uma abordagem; Espero que ele se concentre em qualquer debate de ideias e resulte em feedback útil. Dito isto, estou aberto a toda a gama de métodos de solução disponíveis. Restringir os segmentos para que as calçadas sejam colocadas de maneira que sempre conectem as coisas seria fácil de implementar e ajudaria a encontrar uma solução. Obrigado pela sugestão.
precisa saber é

6
Bem, se você recuar um pouco e esquecer as coisas da randomização, os tipos de perguntas que vêm à mente incluem: * Que tipo de problema de otimização é esse? Quais propriedades ele possui? (Por exemplo, linearidade, convexidade, quaseiconvexidade etc.). * Possui formulações equivalentes, como uma dupla? * Existem maneiras alternativas de representá-lo, como em termos de propriedades de gráficos ou com funções de penalidade? Como exemplo, uma formulação dupla seria minimizar o comprimento total das calçadas que atendem a uma determinada população. Isso pode sugerir uma solução de programação dinâmica.
whuber

Respostas:


1

Se você quiser utilizar a extensão Solver no Excel, eu a usei algumas vezes na programação de liner.

Aqui está um link em um curso intensivo em LP, utilizando o Solver:

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


2
É uma boa idéia e pode ser útil para brincar com pequenos problemas de brinquedos. Infelizmente, o Excel não está preparado para esta tarefa. Além de ser um problema grande demais para ser resolvido, seria proibitivamente difícil codificar as restrições de conectividade no Excel: você deve garantir que as calçadas realmente conectem as pessoas ao CBD!
whuber
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.