NetLogo: назначать черепахи случайно, но одинаково для разных групп - PullRequest
0 голосов
/ 26 мая 2018

Я использовал приведенный ниже код, чтобы создать 50 черепах и случайным образом назначить их одной из четырех различных стратегий (например, a, b, c и d):

Проблема заключается в том, что при уменьшении количества созданныхчерепах или когда я увеличиваю количество стратегий, я сталкиваюсь с ситуацией, когда ни одна из стратегий не используется какой-либо черепахой.

turtles-own [ my_strategy ]

to setup
  ;; create 50 turtles and assign them randomly
  ;; to one of four different strategies
  create-turtles 50 [
    set my_strategy one-of [ "a" "b" "c" "d" ]
  ]
end

Мне нужна ваша помощь здесь, чтобы: 1. Удостовериться, что яне сталкивайтесь с ситуацией, когда ни одна черепаха не использует одну или несколько стратегий.2. Убедитесь, что количество черепах, назначенных для каждой стратегии, примерно равно.

Я попытался решить проблему с помощью приведенного ниже кода, но это не сработало:

turtles-own [ my_strategy ]

to setup
  let strategies [ "a" "b" "c" "d" ]
  let turtles-num 51
  let i 0

  create-turtles turtles-num 

  while [ not any? turtles with [  my_strategy = 0 ] ] [
    ifelse i < length strategies - 1 [ set i i + 1 ] [ set i 0 ]
    ask n-of ceiling  ( turtles-num / length strategies ) turtles with [ my_strategy = 0 ] [
      set my_strategy item i strategies
    ]
  ]

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 26 мая 2018

В общем, вы никогда не должны использовать who числа для чего-либо в NetLogo.Тем не менее, это один из немногих случаев, когда это уместно.

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

turtles-own [ my_strategy ]

to setup
  ;; create 50 turtles and assign them equally
  ;; to one of four different strategies
  create-turtles 50 [
    set my_strategy item (who mod 4) [ "a" "b" "c" "d" ]
  ]
end
...