Скопируйте переменную turtle в зависимости от оператора if - PullRequest
1 голос
/ 09 апреля 2020

Я строю модель для системы добычи хищника, и я включаю небольшую базовую внутреннюю модель машинного обучения c в хищника.

У хищников есть 4 стратегии (переменная strat), в начале дня они выбирают strat, а в конце каждого дня проверяют, успешно ли они охотились с этим strat.

У меня есть другая переменная, которой владеют хищники, под названием best-strat, которую я хочу скопировать с последней успешной страты

мой код следующий

to recall-hunts
  if ticks = 98 [ifelse hunt-today = 1 [set last-hunt "success"] [set last-hunt "failure"]]
end

to evaluate-hunt
  if ticks = 99 [if last-hunt = "success" [set best-strat best-strat = strat]
  if last-hunt != "success" [set strat one-of strategies]
    stop]
end

to strategy
  if ticks = 1 [ifelse best-strat = "NA" [set strat one-of strategies] [set strat strat = best-strat]] 
  stop
end

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

strat - это переменная, которая выбирает из списка стратегий ("strat1" "strat2" "strat3" "strat4")

все работает, кроме моего кода, для копирования текущего страта в лучший -Страт в конце дня, если охота была успешной. На данный момент он устанавливается на «ложь», поэтому что-то ломается, я думаю.

Пожалуйста, предложите любые рекомендации, которые помогут решить эту проблему.

1 Ответ

2 голосов
/ 09 апреля 2020

Проблема здесь:

[set best-strat best-strat = strat]

Строка должна быть

[set best-strat strat]

Чтобы объяснить ошибку, которую вы получаете, best-strat = strat является логическим выражением, которое дает true или false. Таким образом, set best-strat (best-strat = strat) (в скобках добавлено) установит для best-strat значение true или false, в зависимости от того, равно или нет best-strat равно strat.

Надеюсь, это поможет, Чарльз

...