Если переменная target = fila 1, как мне задать условие, сообщающее об истинном значении, если target является любым из fila? - PullRequest
0 голосов
/ 20 июня 2019

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

Я пробовал, target = filas, target = any?филас, член?target filas (этот работает, но в моем коде иногда target = nobody и создает сообщение об ошибке netlogo)

set people-ahead min-one-of (other people in-cone (velocidad + espacio-personal + 0.5 ) 106.36 with [puesto? = false and target != any? filas]) [distance myself]

условие, которое сообщает true, если target является любым из filas

1 Ответ

0 голосов
/ 21 июня 2019

breed является атрибутом черепахи точно так же, как и другие встроенные переменные (например, size) или переменные, определенные с помощью оператора turtles-own. Это означает, что вы можете напрямую проверить с помощью [breed] of.

Вот полный пример, который проверяет breed выбранной черепахи с именем target и меняет ее цвет.

breed [type1s type1]
breed [type2s type2]

to setup
  clear-all
  create-type1s 20
  [ setxy random-xcor random-ycor
    set color red
  ]
  create-type2s 20
  [ setxy random-xcor random-ycor
    set color yellow
  ]
  ask one-of turtles
  [ set size 2
    let target min-one-of other turtles [distance myself]
    if [breed] of target = type1s [ask target [set color white]]
    if [breed] of target = type2s [ask target [set color blue]]
  ]
end

Вы также можете просто использовать название породы, чтобы получить набор черепах, содержащий все черепахи этой породы. Я не совсем уверен, что вы пытаетесь сделать, но я думаю, что вы, вероятно, хотите заменить:

set people-ahead min-one-of (other people in-cone (velocidad + espacio-personal + 0.5 )  106.36 with [puesto? = false and  target != any? filas]) [distance myself]

с

let candidates (filas in-cone (velocidad + espacio-personal + 0.5) 106.36 with [not puesto?])
set people-ahead min-one-of candidates [distance myself]
...