Настройка патчей в Netlo go, которые уменьшают значение друг от друга - PullRequest
2 голосов
/ 27 февраля 2020

Я пытаюсь установить патчи в Netlo go, где я случайным образом назначаю несколько (4 на данный момент в моем коде) заданному значению высокого качества, равному 9 (качество - это собственная переменная патчей, которую я создал) , Я правильно закодировал эту часть.

Далее я хочу создать код, чтобы всем другим патчам присваивалось значение качества, которое уменьшается с расстоянием от патчей высокого качества, которые я уже назначил (которым я присвоил значение 9 в настоящее время). По сути, я пытаюсь создать горы (патчи высокого качества) и долины (патчи самого низкого качества) качества патчей в моем мире netlo go. Так что качество патча меняется в градиентном масштабе. Я не могу понять эту часть, хотя. Это вообще возможно? Может ли кто-нибудь предоставить какой-нибудь полезный код для этой работы?

Я добавил в зеленой шкале цвет, связанный с качеством патча, чтобы я мог визуально видеть градиент качества патча. Я думал, что использование кода «ifelse» было бы хорошим способом go об этом всем, но я не могу закончить sh код, необходимый, если значение качества патча не является одним из 4 патчей, уже назначенных для 9:

to setup-patches
    resize-world (number-of-patches * -1)number-of-patches (number-of-patches * -1)number-of-patches
    ask n-of 4 patches
       [ set quality 9
         set pcolor scale-color green quality 1 10
ask patches
      [ ifelse quality = 9
          [ set quality 9
            set pcolor scale-color green quality 1 10 ]
          [ set quality 9 - distance ;;This is the part I have no idea what to code to achieve my goal. I want it to code distance from the patches that are set at a quality of 9, but I don't know how to do that
            set pcolor scale-color green quality 1 10]] 

1 Ответ

2 голосов
/ 28 февраля 2020

Ваша идея расстояний сработает, вам просто нужно min-one-of, чтобы найти ближайший патч с качеством 9. Попробуйте это:

to setup-patches
  ask n-of 4 patches [ set quality 9 ]
  ask patches with [quality != 9]
  [ let closest min-one-of patches with [quality = 9] [distance myself]
    set quality 9 - distance closest
    if quality < 1 [ set quality 1]
  ]
  ask patches [set pcolor scale-color green quality 12 0]
end

Еще один способ сделать это с diffuse примитивно, повторяется несколько раз.

...