Абдулла,
Я не могу запустить ваш код, как вы его предоставили, но я подозреваю, что проблема заключается в вашей go
процедуре. BehaviorSpace рассматривает процедуру go
как вечную кнопку, то есть она продолжает работать до тех пор, пока число тиков не превысит Time limit
или пока она не будет остановлена каким-либо другим пользовательским условием. Более того, BS запускает репортеров, перечисленных в Measure runs using these reporters
, только в конце каждой итерации go
. Предполагается, что каждая итерация занимает галочку. Однако ваша go
процедура выполняется только один раз. while
l oop выполняется time
раз, но это все в пределах первой (и единственной) итерации go
, после которой моделирование останавливается командой stop
. Я не уверен, почему вы используете simulation-timer
вместо ticks
, чтобы следить за временем, но позвольте мне предложить go
процедуру, которая будет делать то, что я подозреваю, что вы хотите.
to go
move-students
tick
if ticks > time [ stop ]
end
В этом случае go
будет продолжать работать, и BS будет сообщать расчет энергии в конце каждой итерации go
, пока количество итераций (тиков) не превысит time
. Если вы установите Time limit
в BS на time
, оператор if
будет избыточным, но не в том случае, если вы также используете модель за пределами BS. (Если вы работаете со вкладки интерфейса, кнопка go
должна быть кнопкой «навсегда».)
У вас также есть избыточный stop
в конце вашей процедуры appliance-on
.
Возможно, я упустил что-то важное в том, что вы пытаетесь сделать, но, возможно, это поможет вам начать решать вашу проблему.
Чарльз