Большое спасибо, я думал, что это как-то связано с неизменными списками netlogo, но я попробую! эта вещь, безусловно, хороший совет.

у код в Netlogo, который в основном должен делать следующее:

Среди направленных ссылок взаимодействуйте и ищите их совместное поведение (coop_b).Сохраните coop_b в переменной списка вместе со временем взаимодействия (reputation_now)При каждом взаимодействии добавляйте репутацию_ теперь в большой список reputation_h (история репутации).Теперь добавьте время репутации к репутации, чтобы недавние взаимодействия весили больше в общей репутации. Я делаю это, деля время встречи взаимодействия на текущее время, затем умножая его на coop_b, чтобы получить взвешенную репутацию для каждого взаимодействия. Это хранится в списке reputation_h_w (взвешенные исторические репутации). Дело в том, что этот список должен обновляться каждый раз, когда члены взаимодействуют, чтобы более ранние добавления в список теперь обновлялись до нового времени. Я догадываюсь, что это то место, где мой код находится в тумане (проблемы, изображенные ниже раздела кода).

Мой код:

to horizontal_interact
  ask members [
    ;set random example variable for coop_b
    set coop_b random-float 5 ; coop-b stands for cooperation behavior
    if ticks > 0 [
    ask my-out-links [ ;there are directed links between all members
      set reputation_now (list [coop_b] of end2 ticks) ;list of coop_b and encounter time
      set reputation_h lput reputation_now reputation_h ; history of reputations, a list of all reputation_now recorded
      foreach reputation_h [ x ->

        let cooperative_behavior item 0 x
        let encounter_time item 1 x

        let reputation_now_w (list cooperative_behavior encounter_time (encounter_time / ticks ))


       ]
    ]
   ]
  ]

end

Если я протестирую содержимое reputation_h и reputation_h_w с двумя участниками, я получу:

reputation_h - переменная coop_b члена и галочка встречи

links> show reputation_h
(link 1 0): 
[[4.0900840358972825 1] 
[0.8885953841506328 2] 
[0.47017368072392984 3]]

(link 0 1): [[3.6805257472366164 1] 
[3.6805257472366164 2] 
[3.4201458793705326 3]]

reputation_h_w (содержит переменную coop_b члена, время встречи и время встречи, разделенные на тики):

links> show reputation_h_w

(link 0 1): [[3.6805257472366164 1 1] 
[3.6805257472366164 1 0.5] 
[3.6805257472366164 2 1] 
[3.6805257472366164 1 0.3333333333333333] 
[3.6805257472366164 2 0.6666666666666666] 
[3.4201458793705326 3 1]]

(link 1 0): [[4.0900840358972825 1 1] 
[4.0900840358972825 1 0.5] 
[0.8885953841506328 2 1] 
[4.0900840358972825 1 0.3333333333333333] 
[0.8885953841506328 2 0.6666666666666666] 
[0.47017368072392984 3 1]]

Проблема в том, что reputation_h_w не имеет смысла для меня - во-первых, есть шесть входов вместо трех, а во-вторых, время встречи (пункт 1) и время / такты встречи (пункт 2) отключены.

Что я здесь не так делаю?

Ответы на вопрос(1)

Ваш ответ на вопрос