//Acc_Tal_variables.cpp #include "stdio.h" #include "iostream.h" #include "math.h" #include "string.h" #include "stdlib.h" #include "assert.h" #include "SetDef.h" #include "rankedSetDef.h" #include "subsetHolder.h" #include "Accumulated_Tallied_Variables.h" #include "Events.h" #include "JobShop.h" //Because reset is called by the constructor //and refers to SimTime, SimTime must be initialized //before entities with accumulated variables are //created. accumulated_variable::accumulated_variable() { Initialize(0.0); } accumulated_variable::~accumulated_variable(){} void accumulated_variable::Initialize(double initValue) { value = initValue; Reset(); } void accumulated_variable::Reset() //Resets totals. Does not reset value { sum = 0.0; sumSq = 0.0; min = value; max = value; startTime = SimTime; lastUpdateTime = SimTime; } void accumulated_variable::Update(double newValue) { assert(lastUpdateTime<=SimTime); sum += (SimTime-lastUpdateTime)*value; sumSq += (SimTime-lastUpdateTime)*value*value; min = (newValuemax)?newValue:max; lastUpdateTime = SimTime; value = newValue; } double accumulated_variable::Increment(double deltaValue) { assert(lastUpdateTime<=SimTime); sum += (SimTime-lastUpdateTime)*value; sumSq += (SimTime-lastUpdateTime)*value*value; value += deltaValue; min = (valuemax)?value:max; lastUpdateTime = SimTime; return value; } double accumulated_variable::Mean() { Increment(0.0);//updates all totals to present without affecting value return sum/(SimTime-startTime); } double accumulated_variable::Variance() { double E = Mean(); //updates totals as well as return mean return sumSq/(SimTime-startTime) - E*E; } tallied_variable::tallied_variable() { Reset(); } tallied_variable::~tallied_variable(){} void tallied_variable::Reset() { sum = 0.0; sumSq = 0.0; min = HUGE_VAL; max = -HUGE_VAL; count = 0; value = 0.0; } double tallied_variable::Update(double newValue) { value = newValue; sum += value; sumSq += value*value; min = (newValuemax)?newValue:max; count++; return value; } double tallied_variable::Increment(double deltaValue) { value += deltaValue; sum += value; sumSq += value*value; min = (valuemax)?value:max; count++; return value; } double tallied_variable::Mean() { return sum/count; } double tallied_variable::Variance() { double E = sum/count; return sumSq/count - E*E; }