Я моделирую распространение журчалок на зараженном тлей посевном поле с цветочными краями. У меня есть несколько списков, которые настроены как переменные патча следующим образом:
set nl n-values 20 [0];; number of larvae per age (in days)
set il n-values 20 [0.0001];; individual larvae growth per age (in days)
set il_growth n-values 20 [0];; growth of larvae per age (in days)
Я дал значение 0,0001 вместо 0, потому что раньше я получал ошибки относительно 0.
Каждый раз происходит следующее:
to time
set nl fput item 3 peggs nl ;every day the amount of 4 days old eggs are added to the number of larvae
set il fput ((item dtl peggs) * weight_hatch) il ;the weight of the larvae that just hatched are calculated by multiplying nl by the weight they have when they hatch
set il_growth (il * e ^ (g * (aphids)*(1 - (il / weight_max))));;growth individual predator larvae in every age class
set larvae nl * il_growth; the total biomass of al larvae in a patch
end
for il_growth взято из литературы, и я знаю, что параметры / переменные, такие как e, g, aphids и weight_max, не являются проблемой, потому что эта формула работала нормально до того, как я представил il.
Я еще не уверен, является ли подход для биомассы лучшим способом (из-за ошибки il, которую я опишу ниже), но я решил, что умножение возможно, поскольку nl и il оба являются списками такой же длины.
Когда я проверяю синтаксис кода, он не выдает ошибок. Но когда я запускаю его, он говорит следующее: * ожидалось, что ввод будет числом, но получил список [0 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E -4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4] вместо этого. Значок *, на который он указывает, является первым в формуле il_growth.
Я подумал, что это может быть вызвано тем, что в коде il должно быть число, а не список. Затем я обнаружил в Google, что это можно исправить с помощью функций foreach или map.
С foreach я пробовал это:
set il_growth foreach il (il * e ^ (g * (aphids)*(1 - (il / weight_max))))
Это дало ошибку «установить ожидаемые 2 входа». Я также пробовал много других конфигураций с foreach
, но ни одна из них не сработала.
С картой я пробовал это:
set il_growth map report_il il
to-report report_il
report (il * e ^ (g * (aphids)*(1 - (il / weight_max))))
end
Это дало мне ту же ошибку, что и раньше: * ожидаемый ввод номер, но вместо этого получил список [0 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4 1.0E-4]
.