Extended Avg for power to 40 ticks instead of 10, used better storage method as well.
This commit is contained in:
Vendored
+46
-23
@@ -35,8 +35,17 @@ public class EnergyGridCache implements IEnergyGrid
|
|||||||
* idle draw.
|
* idle draw.
|
||||||
*/
|
*/
|
||||||
double drainPerTick = 0;
|
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
|
* power status
|
||||||
@@ -154,6 +163,9 @@ public class EnergyGridCache implements IEnergyGrid
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
tickInjectionPerTick += i;
|
||||||
|
// totalInjectionPastTicks[0] += i;
|
||||||
|
|
||||||
while (i > 0 && !requesters.isEmpty())
|
while (i > 0 && !requesters.isEmpty())
|
||||||
{
|
{
|
||||||
IAEPowerStorage node = getFirstRequestor();
|
IAEPowerStorage node = getFirstRequestor();
|
||||||
@@ -167,7 +179,6 @@ public class EnergyGridCache implements IEnergyGrid
|
|||||||
}
|
}
|
||||||
|
|
||||||
extra = i;
|
extra = i;
|
||||||
totalInjectionPastTicks[0] += i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
@@ -248,14 +259,23 @@ public class EnergyGridCache implements IEnergyGrid
|
|||||||
@Override
|
@Override
|
||||||
public void onUpdateTick(IGrid grid)
|
public void onUpdateTick(IGrid grid)
|
||||||
{
|
{
|
||||||
// next tick is here...
|
avgDrainPerTick *= (AvgLength - 1) / AvgLength;
|
||||||
for (int x = 0; x < totalDrainPastTicks.length - 1; x++)
|
avgInjectionPerTick *= (AvgLength - 1) / AvgLength;
|
||||||
totalDrainPastTicks[x + 1] = totalDrainPastTicks[x];
|
|
||||||
totalDrainPastTicks[0] = 0.0;
|
|
||||||
|
|
||||||
for (int x = 0; x < totalInjectionPastTicks.length - 1; x++)
|
avgDrainPerTick += tickDrainPerTick / AvgLength;
|
||||||
totalInjectionPastTicks[x + 1] = totalInjectionPastTicks[x];
|
avgInjectionPerTick += tickInjectionPerTick / AvgLength;
|
||||||
totalInjectionPastTicks[0] = 0.0;
|
|
||||||
|
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.
|
// power information.
|
||||||
double drained = extractAEPower( getIdlePowerUsage(), Actionable.MODULATE, PowerMultiplier.CONFIG );
|
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;
|
return extractedPower;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,23 +422,25 @@ public class EnergyGridCache implements IEnergyGrid
|
|||||||
@Override
|
@Override
|
||||||
public double getAvgPowerUsage()
|
public double getAvgPowerUsage()
|
||||||
{
|
{
|
||||||
double out = 0;
|
return avgDrainPerTick;/*
|
||||||
|
* double out = 0;
|
||||||
for (double x : totalDrainPastTicks)
|
*
|
||||||
out += x;
|
* for (double x : totalDrainPastTicks) out += x;
|
||||||
|
*
|
||||||
return out / totalDrainPastTicks.length;
|
* return out / totalDrainPastTicks.length;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getAvgPowerInjection()
|
public double getAvgPowerInjection()
|
||||||
{
|
{
|
||||||
double out = 0;
|
return avgInjectionPerTick;/*
|
||||||
|
* double out = 0;
|
||||||
for (double x : totalInjectionPastTicks)
|
*
|
||||||
out += x;
|
* for (double x : totalInjectionPastTicks) out += x;
|
||||||
|
*
|
||||||
return out / totalInjectionPastTicks.length;
|
* return out / totalInjectionPastTicks.length;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user