|
@@ -1,12 +1,17 @@
|
|
|
package classes;
|
|
|
+import ui.model.Model;
|
|
|
+import ui.controller.*;
|
|
|
|
|
|
public class HolonBattery extends AbstractCpsObject{
|
|
|
|
|
|
private float inRatio;
|
|
|
private float outRatio;
|
|
|
private float capacity;
|
|
|
+ private float initialStateOfCharge;
|
|
|
private float stateOfCharge;
|
|
|
private float newStateOfCharge;
|
|
|
+ private float[] stateOfChargeLevels;
|
|
|
+ private float iterations = 0;
|
|
|
public enum State{STANDBY, COLLECT, EMIT};
|
|
|
private State state;
|
|
|
|
|
@@ -20,6 +25,7 @@ public class HolonBattery extends AbstractCpsObject{
|
|
|
capacity = 0;
|
|
|
stateOfCharge = 0;
|
|
|
newStateOfCharge = 0;
|
|
|
+ initialStateOfCharge = 0;
|
|
|
setState(State.STANDBY);
|
|
|
}
|
|
|
|
|
@@ -34,21 +40,14 @@ public class HolonBattery extends AbstractCpsObject{
|
|
|
setCapacity(((HolonBattery) obj).getCapacity());
|
|
|
setStateOfCharge(((HolonBattery) obj).getStateOfCharge());
|
|
|
setNewStateOfCharge(((HolonBattery) obj).getStateOfCharge());
|
|
|
+ setInitialStateOfCharge(((HolonBattery) obj).getStateOfCharge());
|
|
|
setState(State.STANDBY);
|
|
|
}
|
|
|
public float getStateOfCharge() {
|
|
|
return stateOfCharge;
|
|
|
}
|
|
|
public void setStateOfCharge(float stateOfCharge) {
|
|
|
- if(stateOfCharge > capacity)
|
|
|
- {
|
|
|
- stateOfCharge = capacity;
|
|
|
- }
|
|
|
- else if(stateOfCharge < 0)
|
|
|
- {
|
|
|
- stateOfCharge = 0;
|
|
|
- }
|
|
|
- this.stateOfCharge = stateOfCharge;
|
|
|
+ this.stateOfCharge = validStateOfCharge(stateOfCharge);
|
|
|
}
|
|
|
public float getCapacity() {
|
|
|
|
|
@@ -75,17 +74,17 @@ public class HolonBattery extends AbstractCpsObject{
|
|
|
return inRatio;
|
|
|
}
|
|
|
|
|
|
- public float getIN()
|
|
|
+ public float getInAtTimeStep(int x)
|
|
|
{
|
|
|
- if(getCapacity() - getStateOfCharge() < inRatio)
|
|
|
- return getCapacity() - getStateOfCharge();
|
|
|
+ if(getCapacity() - getStateOfChargeAtTimeStep(x) < inRatio)
|
|
|
+ return getCapacity() - getStateOfChargeAtTimeStep(x);
|
|
|
else
|
|
|
return inRatio;
|
|
|
}
|
|
|
- public float getOUT()
|
|
|
+ public float getOutAtTimeStep(int x)
|
|
|
{
|
|
|
- if(getStateOfCharge() < outRatio)
|
|
|
- return getStateOfCharge();
|
|
|
+ if(getStateOfChargeAtTimeStep(x) < outRatio)
|
|
|
+ return getStateOfChargeAtTimeStep(x);
|
|
|
else
|
|
|
return outRatio;
|
|
|
}
|
|
@@ -148,4 +147,55 @@ public class HolonBattery extends AbstractCpsObject{
|
|
|
public void setNewStateOfCharge(float newStateOfCharge) {
|
|
|
this.newStateOfCharge = newStateOfCharge;
|
|
|
}
|
|
|
+ public void setStateOfChargeAtTimeStep(float newStateOfCharge, int x) {
|
|
|
+ if(iterations != SingletonControl.getInstance().getControl().getModel().getIterations())
|
|
|
+ {
|
|
|
+ stateOfChargeLevels = new float[SingletonControl.getInstance().getControl().getModel().getIterations()];
|
|
|
+ iterations = SingletonControl.getInstance().getControl().getModel().getIterations();
|
|
|
+ }
|
|
|
+ System.out.println( "Iterations:" + x);
|
|
|
+
|
|
|
+ stateOfChargeLevels[x] = validStateOfCharge(newStateOfCharge);
|
|
|
+
|
|
|
+ for(int i = 0; i < stateOfChargeLevels.length; i++)
|
|
|
+ {
|
|
|
+ System.out.println( i+":"+stateOfChargeLevels[i]+ ",");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public float getStateOfChargeAtTimeStep(int x) {
|
|
|
+ if(iterations != SingletonControl.getInstance().getControl().getModel().getIterations())
|
|
|
+ {
|
|
|
+ stateOfChargeLevels = new float[SingletonControl.getInstance().getControl().getModel().getIterations()];
|
|
|
+ iterations = SingletonControl.getInstance().getControl().getModel().getIterations();
|
|
|
+ }
|
|
|
+ if(x < 0)
|
|
|
+ {
|
|
|
+ return initialStateOfCharge;
|
|
|
+ }
|
|
|
+ return stateOfChargeLevels[x];
|
|
|
+ }
|
|
|
+ public float getInitialStateOfCharge() {
|
|
|
+ return initialStateOfCharge;
|
|
|
+ }
|
|
|
+ public void setInitialStateOfCharge(float initialStateOfCharge) {
|
|
|
+ this.initialStateOfCharge = validStateOfCharge(initialStateOfCharge);
|
|
|
+ }
|
|
|
+
|
|
|
+ * @return a valid State of charge
|
|
|
+ */
|
|
|
+ public float validStateOfCharge(float stateOfChargeToValid)
|
|
|
+ {
|
|
|
+ if(stateOfChargeToValid > capacity)
|
|
|
+ {
|
|
|
+ return capacity;
|
|
|
+ }
|
|
|
+ else if(stateOfChargeToValid < 0)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return stateOfChargeToValid;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|