2016-06-23 4 views
1

Я хотел бы предисловие к тому, что я никогда не научился правильно кодировать Netlogo, все, что я делал, проходило через пробную версию и ошибки и задавал вопросы здесь, когда я застрял. Так что, если это глупый вопрос, я извиняюсь!Использование Ticks в Netlogo

В настоящее время я работаю над моделью, в которой каждый тик равен одному дню. У меня есть конкретное действие, которое я хочу выполнить при определенных тиках (когда тики = 60, 425, 790, 1155, 1520, 1855 и т. Д.).

Я попытался это:

if ticks = [60 425 790 1155 1520 1885] 


[ 
    create-hatchlings Hatchling-Release 
    [ set color 57 
    set size 1.5 
    move-to one-of patches with [ pcolor = cyan ] 
    set birth-tick -60] 

create-m-hatchlings Hatchling-Release 
    [ set color 107 
    set size 1.5 
    move-to one-of patches with [ pcolor = cyan ] 
    set m-birth-tick -60] 
    ] 

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

if ticks = 60 
    [ 
    create-hatchlings Hatchling-Release 
    [ set color 57 
    set size 1.5 
    move-to one-of patches with [ pcolor = cyan ] 
    set birth-tick -60] 

create-m-hatchlings Hatchling-Release 
    [ set color 107 
    set size 1.5 
    move-to one-of patches with [ pcolor = cyan ] 
    set m-birth-tick -60] 
    ] 

if ticks = 425 
    [ 
    create-hatchlings Hatchling-Release 
    [ set color 57 
    set size 1.5 
    move-to one-of patches with [ pcolor = cyan ] 
    set birth-tick -60] 

create-m-hatchlings Hatchling-Release 
    [ set color 107 
    set size 1.5 
    move-to one-of patches with [ pcolor = cyan ] 
    set m-birth-tick -60] 
    ] 

, но я бы в конце концов, придется сделать это в сотни раз. Есть ли лучший способ написать это?

ответ

3

Используйте member?, чтобы проверить, если значение клещ появляется в списке:

if member? ticks [60 425 790 1155 1520 1885] 
[ 
    ; do something 
] 

С другой стороны - если вы хотите сделать что-то на 60-й день каждый год, использовать по модулю (mod):

if ticks mod 365 = 60 
[ 
    ; do something 
] 

Значит, вам не нужен этот список.

Смежные вопросы