Как кодировать команду IF с 2 условиями в NetLogo? - PullRequest
0 голосов
/ 16 апреля 2019

Мои черепахи - фирмы, и у них есть собственные черепахи, прибыль которых варьируется от фирмы к фирме, а также от оффшора? и восстановлено? что либо верно, либо ложно.

Что-то не так с кодом. Я борюсь за объединение команд IF и AND. ЕСЛИ параметр метки оффшорный? reports = true И прибыль любой из этих фирм ниже, чем прибыль фирм, которые сообщают офшоры? = ложь, чем они должны двигаться. Подвижная часть кода работает нормально. Пожалуйста, найдите код (сообщения об ошибках), который у меня есть ниже:

breed [ firms firm ]


firms-own [   
   profit
   offshored?   ;; reports either true or false
   reshored?   ;; reports either true or false
]

to setup
  ask firms [
    if offshored? true AND profit < [ profit ] of firms with [ offshored? = false ] [   ;; if the profit of an offshored firm is smaller than the lowest profit of firms at home, the decision to reshore is yes!
      ask one-of turtles [ move-to one-of patches with [ pcolor = 58 and not any? turtles-here ] ]  ;; the firm reshores
      AND set reshored? true ] ]   ;; the firm is now labelled as reshored
end

1 Ответ

2 голосов
/ 17 апреля 2019

Приведенная выше настройка ничего не даст. Основная проблема может заключаться в том, что вы сравниваете переменную прибыли фирмы со списком ([profit] of firms with [ offshored? = false ]).Вы не можете сравнивать одно значение со списком значений непосредственно таким образом, поэтому вам придется пойти по-другому.Например, вы можете использовать min, чтобы получить минимальную величину прибыли для других компаний, представляющих интерес:

breed [ firms firm ]

firms-own [ profit offshored? reshored? ]

to setup
  ca
  ask patches with [ pxcor < -10 ] [
    set pcolor red
  ]

  create-firms 100 [
    set color white
    set profit random 101
    set offshored? one-of [ true false ]
    set reshored? false
    while [ any? other turtles-here ] [
      move-to one-of neighbors with [ pcolor = black ]
    ]
  ]

  ask firms [
    if offshored? and profit < min [ profit ] of firms with [ not offshored? ] [
      move-to one-of patches with [ pcolor = red and not any? turtles-here ]
      set reshored? true
      set color yellow
      set size 2
    ]
  ]
  reset-ticks
end 

Кроме того, у вас есть ask one-of turtles в вашем ask firms утверждении - я думаю, что вы хотитеопустите это, как это сделано в этом примере, чтобы фирма, выполняющая оценку, была агентом, который перемещается - ask one-of turtles просто выберет случайную черепаху любой породы.

...