Необходимо провести расчеты по подсчету черепах 4-х пород в Netlogo - PullRequest
1 голос
/ 21 июня 2020

Я настраиваю моделирование равновесия для химической реакции A + B <---> C + D и хочу вычислить C D / A B (количество черепахи) после каждого тика и добавьте это значение к переменной и разделите его на количество выполненных тиков, чтобы получить среднее значение, а затем нанесите это скользящее среднее. Я могу выполнить расчет с помощью кнопки «Монитор» на экране интерфейса, но хотел бы построить график и среднее значение по сравнению со значением stati c. Как выполнить расчет в Netlo go и сохранить значение?

1 Ответ

2 голосов
/ 21 июня 2020

Как только вам понадобится память (то есть доступ к предыдущим значениям чего-либо), самый простой способ - использовать переменную для хранения значений. Вы можете сохранить всю серию в виде списка. Назовем переменную «равновесие».

В верхней части кода вам нужно:

globals [equilibrium]

, чтобы сообщить NetLo go о существовании переменной. Где-то в вашей настройке вы должны сообщить NetLo go, что это будет список, используя:

set equilibrium []

Затем, когда вы вычисляете, вы можете сохранить текущее значение в начале списка с чем-то вроде это (или lput, если хотите, чтобы оно было в конце):

let calc count C * count D / (count A * count B)
set equilibrium fput  calc equilibrium

Среднее значение можно найти с помощью mean, как и для любого списка. Преимущество наличия его в начале списка состоит в том, что он всегда равен item 0 для графика.

В этом конкретном случае, поскольку вам просто нужно среднее значение, вам не нужен весь список. Вы можете просто создать переменную для общей суммы (скажем, cum-cal c) и добавлять текущее значение для каждого тика:

set cum-calc cum-calc + calc
...