Построение элементов списка по времени (галочки) - PullRequest
2 голосов
/ 05 февраля 2020

Мне нужно изучить распределение по времени предметов, выбранных из списка, на основе породы источника агента (женщины и мужчины).

На каждом тике порода женщина или мужчина создает новый объект, который добавлен в другие списки черепах. Эти / эти объекты могут быть выбраны на каждом этапе (тиках) другими черепахами (женщинами и / или мужчинами), распространяющимися внутри сети.

На графике по оси Y должно быть указано количество повторений (частота) каждого объекта в посещаемых черепахах (т.е. черепахах, которые выбрали этот элемент из своих списков).

  • Пример:

    object 3 создан мужчиной, object 5 создан женщиной.

man 2: count 1 object 3 (object 3 created) at tick 1
woman 4: count 1 object 5 (object 5 created) at tick 3
...
man 2: count 1 object 3 (object 3 picked) at tick 12
man 2: count 1 object 3 (object 3 picked) at tick 12
man 2: count 1 object 3 (object 3 picked) at tick 13 
...
woman 31: count 1 object 5 (object 5 picked) at tick 21
  • Сюжеты:

    для объекта 3, я хотел бы иметь (точки синего цвета, как он был создан мужчиной)

 x y
    1 1
    2 0
    3 0
    ...
    12 2
    13 1
    ...

и для объекта 5 (точки красного цвета, как было создано женщиной):

   x y
    1 1
    2 0
    3 0
    ...
    12 0
    13 0
    ...
    21 1
    ...

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

enter image description here

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

То, что вы могли бы сделать, это использовать фильтр длины, чтобы получить количество объектов, созданных мужчинами или женщинами (если я правильно понял, это item 2 в вашем примере списка):

let selected (list item 0 list_1 item 1 list_1 item 2 list_1) 
ifelse item 2 list_1 = women [
       set list_1_w fput selected list_1_w
       print (word "List objects created by women: " list_1_w)
       let list_count_w (length (filter [a -> item 2 a = women] list_1_w)) /* added */
       ]
       [ set list_1_m fput selected list_1_m 
         print (word "List objects created by men: " list_1_m) 
         let list_count_m (length (filter [a -> item 2 a = men] list_1_m)) /* added */
       ]

Две let переменные выше возвращают количество объектов, созданных женщинами или мужчинами. Этот подсчет учитывает только породы женщин и мужчин, не различая объекты, созданные женщиной x, и объекты, созданные мужчиной x. Что касается их построения, то, вероятно, следует подсчитать их все на каждом тике, чтобы иметь хронологию числа событий (объектов), выбранных во времени агентами. Для отслеживания каждого объекта идея состоит в том, чтобы создать временную ручку для графика, которая может отслеживать все объекты:

ask turtles [ /* here you should distinguish between objects created by women and objects created by men */
  create-temporary-plot-pen (word who)
  set-plot-pen-color color
  plotxy ticks ___ /* you should add here variable that you want to consider */
]

Приведенный выше код может создать мультиплот для отслеживания всех объектов (но вам нужно будет пометить их и отслеживать, когда они выбраны). Это просто идея. Вы (или кто-то еще в сообществе) должны соответствующим образом изменить приведенный выше код, чтобы рассмотреть различные породы и способы отслеживания этих объектов во времени.

Надеюсь, это поможет!

0 голосов
/ 09 февраля 2020

Так как я не могу заставить вас понять мои вопросы, у меня есть другое предложение. Прекратите пытаться сделать заговор. Вместо этого, сделайте на экране монитор, который вычисляет (на каждом тике) все, что вы пытаетесь построить. Вы можете иметь один монитор для каждой породы. Как только у вас будет работать монитор, просто используйте тот же код, что и перо на графике.

...