Вы написали energy-calculation
как команду, которая устанавливает глобальную переменную t-energy
, а не как сообщение, которое сообщает t-energy
вызывающей стороне. Я подозреваю, что в вашем мониторе вы использовали переменную t-energy
, которая сбрасывается при каждом вызове energy-calculation
. Но в BehaviorSpace репортер, по которому измеряются прогоны, должен быть репортером. Он должен возвращать значение в BehaviorSpace. Это легко сделать, переписав energy-calculation
как
to-report energy-calculation
ask lights [ ifelse ( color = green ) [ set l-energy ( light-
wattage * (time - temp1 )) ] [ set l-energy 0 ] ]
ask fans [ ifelse ( color = green ) [ set f-energy ( fan-wattage
* ( time - temp1 )) ] [ set f-energy 0 ] ]
ask acs [ ifelse ( color = green ) [ set a-energy (ac-wattage *
(time - temp1 ))] [ set a-energy 0 ] ]
let light-e sum [l-energy] of lights
let fan-e sum [f-energy] of fans
let ac-e sum [a-energy] of acs
set t-light ( light-e / 60 )
set t-fan (fan-e / 60 )
set t-ac (ac-e / 60 )
show (word "total-ac-time = " t-ac )
set t-energy ( t-light + t-fan + t-ac )
report t-energy
end
Если вам все еще нужен глобальный t-energy
или вы можете просто заменить его репортером, который сообщает о его значении, будет зависеть от того, как иначе энергия используется в коде.
Но я на самом деле удивлен, что эксперимент BehaviorSpace вообще пытается запустить. BehaviorSpace должен поймать, что energy-calculation
не является репортером, и выдать ошибку.