Моделирование Монте-Карло с использованием QGIS и pgRouting для оптимального строительства тротуара


17

Я новичок в пространственном анализе и был бы признателен за общее руководство по проекту, который я пытаюсь описать ниже (я начинаю с нуля).

ЦЕЛЬ: Найти наилучшие места для установки 2000 футов тротуаров в моем родном городе, чтобы соединить большинство домашних хозяйств с Центральным деловым районом (CBD), где «подключенный» означает, что он находится в 1,2 милях от центрального делового района. У меня есть шейп-файлы, показывающие существующие конструкции (домохозяйства), дороги и тротуары (уже установлены).

Вот мое предлагаемое решение / мыслительный процесс:

  1. Преобразуйте местную тротуарную сеть в базу данных узлов, которые связаны весами (то есть расстояниями). Есть ли способ сделать это непосредственно в QGIS (или другой программе), нажав на все пересечения?
  2. Подсчитайте количество домохозяйств, которые находятся в пределах 1,2 миль от центрального делового района (например, точка-широта или многоугольник), используя возможности маршрутизации pgRouting или что-то еще. Это будет базовое значение «доступа к домашнему хозяйству».
  3. Используя дорожный слой в качестве ориентира, случайным образом поместите дополнительные 2000 футов (скажем, в 10-футовых сегментах) тротуаров на слой тротуара. Это эквивалентно построению группы новых тротуаров произвольно.
  4. Пересчитайте узлы и веса, используя новую пешеходную сеть, как в (1), а затем пересчитайте количество домохозяйств, которые теперь находятся в пределах 1,2 миль от КБР, как в (2). Это должно увеличиться с дополнительными тротуарами. Сохраните местоположения дополнительных тротуаров и соответствующее значение «доступа к домашнему хозяйству» в файл (например, электронную таблицу).
  5. Повторите шаги (3) и (4) 10000 раз, аналогично моделированию по методу Монте-Карло. Используя 10000 наборов точек данных, выберите места расположения тротуаров, которые максимизируют количество домохозяйств в пределах 1,2 миль от КБР.

Этот мыслительный процесс звучит реалистично? У кого-нибудь есть предложения?

- Я хотел бы достичь этого, используя некоторую комбинацию QGIS и R, однако я открыт для изучения PostGIS и / или Python (или чего-либо еще) для достижения цели.


1
Вы могли бы хотеть рассмотреть генетический алгоритм вместо этого. Это почти процесс, который вы описали. Я уверен, что есть библиотеки Python, которые поддерживают генетические алгоритмы.
Крис

1
Похоже, R также имеет библиотеки генетических алгоритмов.
Крис

6
Это большая проблема. Тем не менее, большинство случайных мест размещения 200 10 'сегментов тротуара ничего не связывают; вы не приблизитесь к оптимуму таким неуправляемым способом. Могу ли я предложить сосредоточить ваши первоначальные мысли на том, как абстрактно сформулировать проблему (независимо от каких-либо структур данных или среды программирования), чтобы вы могли (а) идентифицировать такие проблемы заранее и (б) оставаться открытыми для самого полного диапазона доступных методов решения? Представляется преждевременным предлагать один конкретный метод решения.
whuber

2
Преждевременное? Я не согласен. Действительно, мыслительный процесс, изложенный выше, является одним из подходов; Я надеюсь, что это поможет сосредоточиться на мозговом штурме и даст полезную обратную связь. Тем не менее, я открыт для самого полного спектра доступных методов решения. Ограничение сегментов таким образом, чтобы тротуары были расположены таким образом, чтобы они всегда соединяли вещи, было бы легко реализовать и помогло найти решение. Спасибо за предложение.
Баха-Кев

6
Что ж, если вы сделаете небольшую резервную копию и забудете про рандомизацию, возникнут следующие вопросы: * Что это за проблема оптимизации? Какими свойствами он обладает? (Например, линейность, выпуклость, квазивыпуклость и т. Д.). * Есть ли у него эквивалентные формулировки, такие как двойные? * Существуют ли альтернативные способы его представления, например, в терминах свойств графов или штрафных функций? Например, одна двойная формулировка будет сводить к минимуму общую длину тротуаров, которые обслуживают данную группу населения. Это может предложить решение для динамического программирования.
whuber

Ответы:


1

Вы можете использовать расширение Solver в Excel, я использовал его несколько раз в линейном программировании.

вот ссылка на ускоренный курс по LP с использованием Solver:

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


2
Это хорошая идея и может быть полезна для игры с небольшими игрушечными проблемами. К сожалению, Excel не справляется с этой задачей. Помимо того, что это слишком большая проблема для его решения, было бы непомерно сложно кодировать ограничения подключения в Excel: вы должны убедиться, что тротуары действительно соединяют людей с CBD!
whuber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.