Как закодировать команду IF с 2 условиями в NetLogo?

#if-statement #conditional-statements #netlogo #agent-based-modeling #economics

#оператор if #условные операторы #netlogo #моделирование на основе агентов #экономика

Вопрос:

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

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

 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:

Приведенная выше настройка ничего не даст, основная проблема может заключаться в том, что вы сравниваете переменную прибыли фирмы со списком ( [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 просто выберет случайную черепаху любой породы.