И если операторы в NetLogo

Я пытаюсь создать симуляцию пчел, распространяющих пыльцу, я надеялся сделать так, чтобы когда пчела посещала цветок, он менял цвет на синий, а черепаховая «пчела» получала значение пыльцы +1, а затем, когда она значение пыльцы +3 и посещает цветок, цвет которого меняется на зеленый.

Я пробовал несколько методов, чтобы сделать это, если бы был оператор и если бы это было полезно, например.

to pollenate 
ask turtles [
if pollen > 3
and if pcolor = yellow or blue [ 
set pcolor white
set pollen pollen - 3
]
]
end 

Я не уверен, существуют ли утверждения и .

поэтому я пробовал, когда количество пыльцы у черепах превышает 3, они меняют цвет, а затем пробовал код ниже, но продолжал получать сообщение об ошибке.

to pollenate
ask turtles with [ color = white ] [
if pcolor = blue
[set pcolor = green
set pollen pollen -3
]
]
end

Я продолжаю получать сообщение об ошибке «Установить ожидаемые 2 входа»

буду очень признательна за любую помощь в любом подходе, или, если я все делаю неправильно, пожалуйста, дайте мне знать, ха-ха.


person Josh Finkill    schedule 27.11.2019    source источник
comment
изменение его на set pollen pollen - 3 с пробелом после знака минус исправит это? если вы напишете -3 NetLogo подумает, что вы имеете в виду отрицательное число 3, а не вычесть 3   -  person Seth Tisue    schedule 28.11.2019
comment
что касается части if, попробуйте if pollen > 3 and (pcolor = yellow or pcolor = blue). or ожидает полного, автономного репортера с обеих сторон.   -  person Seth Tisue    schedule 28.11.2019


Ответы (1)


Вот ответы на два ваших вопроса.

(1) «и если» можно выполнить с помощью логического И в тесте. Я ДОЛЖЕН использовать круглые скобки вокруг цветовых тестов, которые были связаны ИЛИ, а затем И с тестом пыльцы> 3. Как и в математике, сначала оцениваются внутренние скобки. Я предпочитаю заключать в скобки все логические тесты Like ( пыльца > 3) -- это не обязательно, но мне так легче читать.

to pollenate 
ask turtles [
    if (pollen > 3) and ((pcolor  = yellow) or (pcolor = blue))
            [ 
               set pcolor white
               set pollen pollen - 3
           ]
]
end 

вы также можете использовать тест на наличие pcolor в списке цветов, например:

to pollenate 
ask turtles [
    if (pollen > 3) and (member? pcolor [yellow blue] )
            [ 
               set pcolor white
               set pollen pollen - 3
           ]
]
end 

Что касается вашего второго вопроса, рабочая версия будет

o pollenate
ask turtles with [ color = white ] [
if pcolor = blue
[set pcolor = green
set pollen pollen - 3
]
]
end

Разницы не увидел? Ставлю пробел с обеих сторон от минуса, иначе Netlogo видит три параметра: пыльца, пыльца и -3 вместо двух нужных вам, а именно пыльца и (пыльца - 3).

person Wade Schuette    schedule 28.11.2019