Netlogo: Как я могу попросить одного из черепах в нескольких патчах? - PullRequest
0 голосов
/ 13 октября 2019

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

ask turtles-on patch (1, 0) or (2, 0) or (3, 0)
move-to patch max-pxcor 1

или

ask turtles with [(50 0) < max-pxcor]
move-to patch max-pxcor 1

1 Ответ

3 голосов
/ 13 октября 2019

Ваша первая проблема - способ определения патчей. Например, правильная форма «patch (0, 1)»: patch 0 1 - без скобок и без запятой. Вы правильно использовали этот синтаксис в бите move-to вашего кода.

Чтобы первая версия работала, вам нужно создать набор патчей и затем выбрать из них:

ask turtles-on (patch-set patch 1 0 patch 2 0 patch 3 0)
[ move-to patch max-pxcor 1
]

Я не совсем уверен, что ваша логика предназначена для второй версии, так как вы сравниваете (вроде) число с другим числом. Даже если бы у вас был правильный синтаксис, он был бы верным для всех черепах или ложным для всех черепах. Основываясь на вашем первом примере, я подозреваю, что вы хотите, чтобы черепахи посмотрели на собственный патч, и, если pxcor <50, а pycor 0, вы хотите, чтобы они двигались. Это будет: </p>

ask turtles with [pxcor < 50 and pycor = 0]
    [ move-to patch max-pxcor 1
    ]

Если вы хотите, чтобы черепахи были со всеми патчами в ряду (не только до 50), то вы можете сделать:

ask turtles with [pycor = 0]
    [ move-to patch max-pxcor 1
    ]

Примечаниечто во втором и третьем примерах используется тот факт, что черепаха имеет автоматический доступ к переменным, принадлежащим патчу, в котором она находится.

Обратите внимание, что если вам нужен только один из черепах (как вы говорите в своем текстено не в коде примера) тогда вам нужно ask one-of turtles вместо ask turtles.

...