Исходное состояние мира такое же, но как только один патч станет черным внутри вашего 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 ]
не станет стабильным.Если вы хотите сделать это и столкнуться с проблемами, я бы предложил задать отдельный вопрос.