NetLo go rnd из локальной переменной - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь написать код, в котором вероятность того, что сотрудничество будет успешным, увеличивается, чем больше сходны агенты. при каждом запуске локальная переменная вычисляет разницу между агентами и создает связь между агентами, если эта разница не превышает пороговое значение. впоследствии агенты хранятся в 2 отдельных списках в зависимости от того, была ли создана ссылка или нет. Теперь я хотел бы создать еще один список, который содержит значение «успешное против неудачного» для каждого агента, с которым была создана ссылка. вероятность того, что это значение будет «успешным», увеличивается, чем больше сходных агентов (чем больше их разностное значение приближается к 0). самое близкое, что я пришел к реализации, это расширение rnd. однако, мне кажется, что 'rnd: weighted-one-of' принимает только наборы агентов или списки в качестве входных данных, и у меня нет предопределенного списка для сходства агентов. это весь диапазон 0 (полное сходство) и 1 (различие), с которым я бы хотел сравнить локальную переменную. Возможно ли это так, как я сейчас думаю об этом? Я надеюсь, что объяснил это достаточно ясно.

let difference 0
let initiator one-of turtles
ask initiator [
  let potential one-of other turtles
  if random-float 1.0 <= [my-activation] of self [                ;; different probability 
   set difference [my-profile] of self - [my-profile] of potential]    ;; of initiating 
                                                                       ;; collab                                                                                            
ifelse difference <= threshold [                                   ;; if threshold is met
  create-link-with potential                                       ;; link is initiated
  set collaborators fput potential collaborators][        ;; the initiator adds the 
  set failures fput potential failures]                   ;; potential to their list of                                  
                                                          ;; either collaborators 

1 Ответ

1 голос
/ 19 марта 2020

Я рекомендую рассматривать функции logisti c как способ связать сходство с вероятностью. Функция logisti c представляет собой функцию в форме s, которая варьируется от 0 до 1, так как некоторое значение X (например, сходство) изменяется в широких пределах. Вы можете определить функцию logisti c, предположив, например, какие значения подобия дают вероятности 10% и 90%.

В NetLo полностью обсуждается использование и программирование функций logisti c. go моделей в главе 16: Railsback и Grimm 2019, «Агентное и индивидуальное моделирование».

...