Netlogo: тот же кластер патчей, та же команда, но разные результаты - PullRequest
0 голосов
/ 05 июня 2018

Я делаю городскую симуляцию, в которой цвет патча представляет собой использование земли.Я начинаю с состояния, показанного на этом рисунке:

enter image description here

, затем запускаю следующую команду:

to eliminate-isolated-patches
ask patches with [pcolor = 74] [if (count neighbors with [pcolor = 74] <= 2)
[set pcolor black
 ask neighbors with [pcolor = 74] [set pcolor black]]]
end

Хотя модельначинается с одинакового распределения патчей и применяется одна и та же команда, она выдает разные результаты.Иногда это результат: enter image description here

, а иногда это результат: enter image description here

Как видно,это вариации.Поэтому у меня есть два вопроса:

1) Почему это происходит, если начальное состояние и команда одинаковы?

2) Что можно сделать, чтобы всегда иметь один и тот же результат?

(ПРИМЕЧАНИЕ: синие и розовые линии - это слои ГИС)

Спасибо

1 Ответ

0 голосов
/ 05 июня 2018

Исходное состояние мира такое же, но как только один патч станет черным внутри вашего ask блока, это состояние изменится.А поскольку ask работает в случайном порядке, первый патч, который становится черным, не всегда одинаков.

Ваша проблема заключается в том, что вы проверяете количество соседей одного цвета внутри ваш ask блок, где это состояние нестабильно.Решение, вероятно, состоит в том, чтобы сделать эту проверку, прежде чем начать возиться с состоянием патча.Вы можете сделать это, переместив проверку внутри блока with:

to eliminate-isolated-patches
  ask patches with [ pcolor = 74 and (count neighbors with [ pcolor = 74 ] <= 2) ] [
    set pcolor black
    ask neighbors with [ pcolor = 74 ] [ set pcolor black ]
  ]
end

Обратите внимание, что эта версия (так же, как и ваша предыдущая версия) может по-прежнему оставлять некоторые «изолированные» патчи, потому что они становятся изолированными только послеих соседи почернеют.Если это проблема, вы можете поместить все это в цикл while, который работает до тех пор, пока count patches with [ pcolor = 74 ] не станет стабильным.Если вы хотите сделать это и столкнуться с проблемами, я бы предложил задать отдельный вопрос.

...