Если все, что вам нужно, это чтобы черепаха хранила 24 значения полезности (1 за каждый час), тогда утилита может быть списком, а не одним числом. Вы можете получить доступ к значению соответствующего часа с помощью item
, поэтому у вас может быть что-то:
let hours ticks mod 24
let new-value 1 + item hours utility
replace-item hours utility new-value
Обратите внимание, что вам нужно будет иметь значения в вашем списке, прежде чем вы сможете получить к ним доступ. Например, обращение к item 9
, когда в вашем списке только 5 значений, приведет к ошибке. Кроме того, NetLogo имеет индекс 0. Это означает, что доступ к первому значению в списке осуществляется с помощью item 0
, а не item 1
.
. Пара замечаний, как вы упомянули, что вы новичок в NetLogo. Маловероятно, что вам понадобится время для этой модели. Если вы в основном используете постоянный шаг времени в один час, просто используйте tick
обычным способом. Даже если вам в конечном итоге потребуется использовать расширение времени, когда вы строите более сложную модель, которая каким-то образом относится к реальному времени, вы можете добавить ее тогда. Вы также упомянули foreach
- этот примитив используется для циклического перемещения по списку, что вам не нужно делать. Похоже, что вы просматриваете список значений утилит, чтобы представить изменение во времени - если это так, не делайте этого. Посмотрите на некоторые примеры моделей в библиотеке NetLogo и постарайтесь понять, как работает время. Вы также должны понимать разделение между процедурой настройки и процедурой go в этих моделях, процедура go содержит все, что должно произойти во время шага по времени. Вам понадобятся ticks
(текущий шаг по времени) и tick
(переход к следующему временному шагу). Я не могу особо подчеркнуть, насколько важно понимать это в любой симуляции.