瀏覽代碼

charge/discharge model preparation

David Heck 4 年之前
父節點
當前提交
470155ab6a

+ 8 - 1
src/blackstart/StorageProductionController.java

@@ -7,7 +7,14 @@ import java.util.ArrayList;
 public class StorageProductionController {
 	private ArrayList<StorageElement> storages;
 
-	public StorageProductionController(ArrayList<StorageElement> storages) {
+	public StorageProductionController(){}
+
+//	public StorageProductionController(ArrayList<StorageElement> storages) {
+//		this.storages = storages;
+//	}
+
+
+	public void setStorages(ArrayList<StorageElement> storages) {
 		this.storages = storages;
 	}
 

+ 8 - 26
src/blackstart/controlAlgorithm.java

@@ -242,9 +242,10 @@ public class controlAlgorithm implements AddOn {
 	 */
 	private void initAlgo() {
 		try {
-
 			// init
-			SPC = new StorageProductionController(getStorageElements());// DANGER DONT GIVE NULL
+//			SPC = new StorageProductionController(getStorageElements());// DANGER DONT GIVE NULL
+			control.getModel().setStorageProductionController();
+			SPC = control.getModel().getStorageProductionController();
 			renewableProducers = getRenewableProducers();
 			consumers = getConsumers();
 			powerPlant = getPowerPlant();// DANGER DONT GIVE NULL
@@ -284,7 +285,7 @@ public class controlAlgorithm implements AddOn {
 			blackstartStartTime = Integer.parseInt(blackstartStartTimeTextfield.getText());
 			control.getModel().setIterations(Integer.parseInt(simulationDurationTextfield.getText()));
 			for (StorageElement se :
-					getStorageElements()) {
+					control.getModel().getStorageElements()) {
 				se.setStateOfCharge(Integer.parseInt(storageStartCharge.getText()));
 			}
 
@@ -349,7 +350,9 @@ public class controlAlgorithm implements AddOn {
 	/**
 	 * TODO:HOLEG UNTERVERSORGUNG CHECKEN
 	 * TODO: storage laden
-	 * TODO: run houses / elements from storage
+	 * TODO: run houses / elements from storage storage entladen
+	 * TODO: storage im GUI hinzufuegen
+	 * TODO: prios fuer elemente anschalten
 	 *
 	 * @param curIteration
 	 * @return true or false depending on whether the blackstart was successful for
@@ -382,7 +385,7 @@ public class controlAlgorithm implements AddOn {
 	}
 
 	private HolonObject getPowerPlant() {
-		for (AbstractCpsObject cps : control.getModel().getObjectsOnCanvas()) {
+		for (AbstractCpsObject cps : control.getModel().getAllHolonObjectsOnCanvas()) {
 			// geht nur wenn nur ein power plant vorhanden ist
 			if (cps instanceof HolonObject) {
 				if (cps.getObjName().equals("Power Plant")) {
@@ -393,27 +396,6 @@ public class controlAlgorithm implements AddOn {
 		return null;
 	}
 
-	private ArrayList<StorageElement> getStorageElements() {
-		ArrayList<StorageElement> storageElements = new ArrayList<StorageElement>();
-		for (HolonObject holonObject : control.getModel().getAllHolonObjectsOnCanvas()) {
-//			if(holonObject.getName().contentEquals("House")) {
-//				holonObject.addElement(new StorageElement("Storage", 1, 0, control.getModel()));
-//			}
-			for (HolonElement ele : holonObject.getElements()) {
-				if(ele instanceof StorageElement){
-					storageElements.add((StorageElement) ele);
-				}
-//				if (ele.getEleName().equals("Storage")) {
-//					println(ele.getEleName() + "is : " + ele.getClass());
-//					if (ele instanceof StorageElement) {
-//						println("boomboomboomboom");
-//					}
-//				}
-			}
-		}
-		return storageElements;
-	}
-
 	private void setDistanceToCalcResistance() {
 
 		if (powerPlant != null) {

+ 18 - 9
src/ui/controller/SimulationManager.java

@@ -1,19 +1,12 @@
 package ui.controller;
 
+import blackstart.StorageProductionController;
 import classes.StorageElement;
 import classes.*;
-import ui.model.IntermediateCableWithState;
-import ui.model.DecoratedCable;
+import ui.model.*;
 import ui.model.DecoratedCable.CableState;
 import ui.model.DecoratedSwitch.SwitchState;
-import ui.model.DecoratedNetwork;
-import ui.model.DecoratedState;
-import ui.model.DecoratedSwitch;
-import ui.model.MinimumModel;
-import ui.model.MinimumNetwork;
-import ui.model.Model;
 import ui.model.Model.FairnessModel;
-import ui.model.VisualRepresentationalState;
 import ui.view.FlexiblePane;
 
 import java.util.ArrayList;
@@ -108,6 +101,22 @@ public class SimulationManager {
 //					turnOnStorage(energy needed())
 //				}
 
+                StorageProductionController SPC = model.getStorageProductionController();
+                SPC.disableStorageProduction(-1);
+                float consumption = 0;
+				float production = 0;
+
+
+
+				float difference = production - consumption;
+                System.out.println("Consumption " + consumption);
+                System.out.println("production " + production);
+				System.out.println("Difference " + difference);
+
+					//enable/load storage
+
+
+
 				float energyOnCables = net.getHolonObjectList()
 						.stream()
 						.filter(object -> object.getEnergyAtTimeStepWithFlex(timestep, newFlexManager) > 0.0f)

+ 30 - 0
src/ui/model/Model.java

@@ -4,6 +4,7 @@ import TypeAdapter.AbstractCpsObjectAdapter;
 import TypeAdapter.ColorAdapter;
 import TypeAdapter.PairAdapter;
 import TypeAdapter.PositionAdapter;
+import blackstart.StorageProductionController;
 import classes.*;
 
 import com.google.gson.Gson;
@@ -157,6 +158,12 @@ public class Model {
 
     private StatisticPanel statPanel;
 
+
+    /*
+    Blackstart needs
+     */
+    private StorageProductionController storageProductionController;
+
     /**
      * Constructor for the model. It initializes the categories and
      * objectsOnCanvas by default values. Listeners are also initialized by
@@ -178,6 +185,7 @@ public class Model {
         setPropertyTable(new DefaulTable(1000, colNames.length));
         getPropertyTable().setColumnIdentifiers(colNames);
         setTableHolonElement(new JTable());
+        storageProductionController = new StorageProductionController();
         initGson();
     }
 
@@ -1096,4 +1104,26 @@ public class Model {
 			else if(aCps instanceof HolonSwitch)switchsOnCanvas.add((HolonSwitch) aCps);
 		}
 	}
+
+    public StorageProductionController getStorageProductionController() {
+        return storageProductionController;
+    }
+
+    public void setStorageProductionController() {
+        this.storageProductionController.setStorages(getStorageElements());
+    }
+
+
+    //TODO: DAS GEHOERT NICHT IN MODEL
+    public ArrayList<StorageElement> getStorageElements() {
+        ArrayList<StorageElement> storageElements = new ArrayList<StorageElement>();
+        for (HolonObject holonObject : getAllHolonObjectsOnCanvas()) {
+            for (HolonElement ele : holonObject.getElements()) {
+                if(ele instanceof StorageElement){
+                    storageElements.add((StorageElement) ele);
+                }
+            }
+        }
+        return storageElements;
+    }
 }