Extended Avg for power to 40 ticks instead of 10, used better storage method as well.

This commit is contained in:
AlgorithmX2 2014-01-24 10:33:31 -06:00
parent cf8c931cb5
commit c2f27378d0

View file

@ -35,8 +35,17 @@ public class EnergyGridCache implements IEnergyGrid
* idle draw.
*/
double drainPerTick = 0;
Double[] totalDrainPastTicks = new Double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
Double[] totalInjectionPastTicks = new Double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
final double AvgLength = 40.0;
double avgDrainPerTick = 0;
double avgInjectionPerTick = 0;
double tickDrainPerTick = 0;
double tickInjectionPerTick = 0;
// Double[] totalDrainPastTicks = new Double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
// Double[] totalInjectionPastTicks = new Double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
/**
* power status
@ -154,6 +163,9 @@ public class EnergyGridCache implements IEnergyGrid
}
else
{
tickInjectionPerTick += i;
// totalInjectionPastTicks[0] += i;
while (i > 0 && !requesters.isEmpty())
{
IAEPowerStorage node = getFirstRequestor();
@ -167,7 +179,6 @@ public class EnergyGridCache implements IEnergyGrid
}
extra = i;
totalInjectionPastTicks[0] += i;
}
return i;
@ -248,14 +259,23 @@ public class EnergyGridCache implements IEnergyGrid
@Override
public void onUpdateTick(IGrid grid)
{
// next tick is here...
for (int x = 0; x < totalDrainPastTicks.length - 1; x++)
totalDrainPastTicks[x + 1] = totalDrainPastTicks[x];
totalDrainPastTicks[0] = 0.0;
avgDrainPerTick *= (AvgLength - 1) / AvgLength;
avgInjectionPerTick *= (AvgLength - 1) / AvgLength;
for (int x = 0; x < totalInjectionPastTicks.length - 1; x++)
totalInjectionPastTicks[x + 1] = totalInjectionPastTicks[x];
totalInjectionPastTicks[0] = 0.0;
avgDrainPerTick += tickDrainPerTick / AvgLength;
avgInjectionPerTick += tickInjectionPerTick / AvgLength;
tickDrainPerTick = 0;
tickInjectionPerTick = 0;
// next tick is here...
// for (int x = 0; x < totalDrainPastTicks.length - 1; x++)
// totalDrainPastTicks[x + 1] = totalDrainPastTicks[x];
// totalDrainPastTicks[0] = 0.0;
// for (int x = 0; x < totalInjectionPastTicks.length - 1; x++)
// totalInjectionPastTicks[x + 1] = totalInjectionPastTicks[x];
// totalInjectionPastTicks[0] = 0.0;
// power information.
double drained = extractAEPower( getIdlePowerUsage(), Actionable.MODULATE, PowerMultiplier.CONFIG );
@ -366,7 +386,8 @@ public class EnergyGridCache implements IEnergyGrid
}
}
totalDrainPastTicks[0] += extractedPower;
tickDrainPerTick += extractedPower;
// totalDrainPastTicks[0] += extractedPower;
return extractedPower;
}
@ -401,23 +422,25 @@ public class EnergyGridCache implements IEnergyGrid
@Override
public double getAvgPowerUsage()
{
double out = 0;
for (double x : totalDrainPastTicks)
out += x;
return out / totalDrainPastTicks.length;
return avgDrainPerTick;/*
* double out = 0;
*
* for (double x : totalDrainPastTicks) out += x;
*
* return out / totalDrainPastTicks.length;
*/
}
@Override
public double getAvgPowerInjection()
{
double out = 0;
for (double x : totalInjectionPastTicks)
out += x;
return out / totalInjectionPastTicks.length;
return avgInjectionPerTick;/*
* double out = 0;
*
* for (double x : totalInjectionPastTicks) out += x;
*
* return out / totalInjectionPastTicks.length;
*/
}
@Override