Черепахи в подвыборках, которые совершают разные действия - PullRequest
1 голос
/ 01 августа 2020

Мне нужно позволить моим агентам / черепахам совершить некоторые действия. В частности, я хотел бы выбрать, скажем, 40 черепах и позволить произвольно выполнять некоторые действия, например:

  • 25 черепах action1;
  • 15 черепах action2.

25, 15 следует выбирать случайным образом. Я написал следующее:

ask up-to-n-of num_of_turtles_per_tick turtles with [breed = M] [
         ifelse random-float 1 < prob
           [
           action1]
           [action2]
      ]

prob установлено на 0.5. Я думаю, что мой код позволяет 40 черепахам выполнять действие 1 или действие 2, без возможности различать guish между двумя подвыборками черепах (25,15 в примере или 20,20, или 12 и 18 ...). Мне, вероятно, следует добавить новый параметр для определения этих случайных чисел и позволить им выполнять отдельные действия.

Не могли бы вы дать мне несколько советов, как это сделать? Спасибо

1 Ответ

2 голосов
/ 01 августа 2020

Вы хотите, чтобы подмножества были взаимоисключающими, поэтому вам нужна некоторая конструкция с логикой типа if-else c. Но вы можете делать это как в группе, так и индивидуально.

Индивидуально легче понять, поэтому давайте начнем с этого (не тестировалось, поэтому могут быть синтаксические ошибки). Обычно вы рисуете случайное число и выполняете одно действие, если оно мало, а другое - если оно высокое. определить всех остальных в группу, которая выполняет второе действие. Репортер member? проверяет, принадлежит ли черепаха к указанной черепахе.

to testme
  clear-all
  create-turtles 40 [setxy random-xcor random-ycor]
  let type1 n-of 15 turtles        ; assigns some to a temporary agentset
  ask type1 [ set color blue ]
  ask turtles with not member? self type1 [ set color red ]   ; gets the others
end
...