Логика выпуска в нетлого - PullRequest
0 голосов
/ 25 апреля 2019

Я пишу это условие:

if [estado] of (transmilenios with [xcor = 0.5]) = "vacio" []

И я смотрю на результат в netlogo, и я спрашиваю наблюдателя:

[estado] of (transmilenios with [xcor = 0.5]) 

ответ: ["vacio"]

тогда я спрашиваю:

[estado] of (transmilenios with [xcor = 0.5]) = "vacio"

И ответ ложный.

У меня болит голова от этого лол.может кто-нибудь мне помочь?

Я пытался использовать переменную estado как 0/1.тот же ответ

Estado = "vacio"/"lleno"

Я также пытался

 if [estado] of (transmilenios with [xcor = 0.5]) != "lleno"

, но это происходит так же, когда estado = "lleno"

1 Ответ

1 голос
/ 26 апреля 2019

Короче говоря, [vacio] не равно "vacio", потому что [vacio] - это список.Эта проблема заключается в том, что вы сравниваете список с одним значением.Когда вы используете of с набором агентов, как вы делали с [estado] of (transmilenios with [xcor = 0.5]), NetLogo возвращает список всех значений.Даже если у вас есть только один агент в наборе агентов, он вернет список.Как это исправить, может зависеть от того, что вы моделируете.Самым простым решением может быть использование one-of в качестве обходного пути:

[estado] of (one-of transmilenios with [xcor = 0.5]) = "vacio"

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

В качестве рабочего примера рассмотрите следующую настройку:

turtles-own [ estado ]

to setup
  ca
  crt 5 [ set estado one-of [ "vacio" "lleno" ] ]
  reset-ticks
end

Если я print [estado] of turtles, я получаю вывод как: [lleno vacio lleno lleno vacio].Итак, если я сравниваю [lleno vacio lleno lleno vacio] с vacio, тогда ответ явно ложный.

Если вместо этого print [estado] of one-of turtles я получу либо lleno, либо vacio в качестве выхода, то при оценке print [estado] of one-of turtles = "vacio" вернётся либо true, либо false.

Надеюсь, это поможет!

...