Спросите у черепах много кто что делает в Netlogo

теперь у меня следующая проблема. Предположим, у меня есть список с разными номерами, например:

 let mylist [3 7 12 24 32 54 21 19]

И я хочу использовать этот список чисел, как кто из черепах. Точнее, я хочу, чтобы только те черепахи, которые равны любому из чисел списка, выполняли процедуру. Я пытался применить непосредственно команду «с» следующим образом: спросите черепах с [кто = mylist], но не работает, и я думаю, что проблема в том, что я работаю со списком, а не с конкретным значением. Какие-либо предложения?


person Paul    schedule 02.09.2015    source источник
comment
В общем, гораздо лучше использовать наборы агентов, а не списки номеров. (1) Наборы агентов гораздо более гибки в создании/изменении своего членства. (2) Вы можете напрямую попросить всех членов набора агентов сделать что-то с ask myagentset [ ... ]. Есть ли особая причина, по которой вы используете число? Можем ли мы увидеть код, в котором вы создали список, и, возможно, мы могли бы дать вам идеи о том, как это сделать с наборами агентов.   -  person JenB    schedule 03.09.2015
comment
Я согласен с @JenB. Если вам действительно нужно конвертировать, вы можете использовать ask turtles with [member? who mylist] [ ... ]   -  person bergant    schedule 03.09.2015
comment
Согласитесь, использование числовых значений почти всегда является признаком того, что вы делаете свою жизнь сложнее, чем нужно.   -  person Seth Tisue    schedule 03.09.2015
comment
да, основная причина в том, что мне нужно, чтобы только определенное количество черепах выполняло одну процедуру, а другие выполняли другие процедуры, но я не хочу, чтобы одна и та же черепаха выполняла все процедуры одновременно, поэтому мне нужна переменная, которая контролирует, какие именно черепахи что делать, а какая черепаха делать что-то другое, поэтому я использовал who для определения этого   -  person Paul    schedule 04.09.2015
comment
Похоже, с наборами агентов было бы намного проще.   -  person Seth Tisue    schedule 04.09.2015


Ответы (1)


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

let mylist [1 2 3]
foreach mylist [ ask turtle ?1 [to do some stuff] ]
person David Merinos    schedule 03.09.2015
comment
ваш код работает отлично, я действительно не очень хорошо понимаю, как это использовать? вещь. Большое спасибо - person Paul; 04.09.2015
comment
Это похоже на какой-то ссылочный параметр или что-то в этом роде, я тоже не привык к этому, но мне нравится думать об этом как об абсолютных/относительных ссылках из Excel. Ха-ха! В основном вы можете использовать foreach для любого количества списков. Например, foreach mylist1 myotherlist [ask something ?1 something ?2], где ?1 и говорит программе взять элемент из первого списка, а ?2 говорит программе взять элемент из второго списка. - person David Merinos; 04.09.2015
comment
К вашему сведению: это не будет работать для Netlogo 6. ? была задачей, и задачи были заменены анонимными процедурами. См. ccl.northwestern.edu/netlogo/docs. / - person Gabriel Fair; 04.10.2018