diff --git a/Base/Base.alp b/Base/Base.alp
index d3906959..edb2536b 100644
--- a/Base/Base.alp
+++ b/Base/Base.alp
@@ -14,7 +14,7 @@
1658478100573
-
+
1659118262286
-
+
+
1659118272924
-
+
+
+
+
+
1659118426374
@@ -179,6 +199,26 @@
1660202624229
+
+
+
+
+
1659525715752
@@ -287,21 +327,37 @@
1659701795639
+
+
+
+
1659711659517
+
+
+
+
1659950471000
@@ -393,7 +465,15 @@
+
+
@@ -444,6 +524,102 @@
+
+ 1664007652263
+
+
+
+
+
+
+
+
+ 1665486884039
+
+
+
+
+
+
+
+
+
+
+
+ 1665487983362
+
+
+
+
+
+
+
+
+
+
@@ -459,16 +635,16 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.TextNode;
import com.fasterxml.jackson.databind.node.NumericNode;
import java.io.FileOutputStream;
-import java.util.stream.Stream;
+import java.util.stream.Stream;
+import java.util.Dictionary.*;
+import java.util.Hashtable.*;
import java.io.File;
import java.io.IOException;]]>
-
false
@@ -588,7 +766,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661516161016
- 60630
+ -920680
false
true
@@ -605,7 +783,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661529224106
- 60650
+ -920700
false
true
@@ -622,7 +800,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663238746791
- 60670
+ -920720
false
true
@@ -639,7 +817,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663255244236
- 60690
+ -920740
false
true
@@ -660,8 +838,9 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1659356181110
-
- 720390
+
+
+ 50040
false
true
@@ -673,7 +852,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1659356201846
- 720430
+ 500115
false
true
@@ -685,7 +864,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1659356216131
- 720470
+ 500140
false
true
@@ -697,7 +876,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1659364131698
- 720510
+ 500165
false
true
@@ -709,7 +888,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663238634515
- 830120
+ 81090
false
true
@@ -724,7 +903,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663243393136
- 830140
+ 810110
false
true
@@ -736,7 +915,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663246198254
- 830160
+ 810130
false
true
@@ -748,6 +927,79 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
+
+ 1664530118871
+
+
+ 50065
+
+ false
+ true
+ true
+
+
+
+
+
+ 1664533236896
+
+ 50090
+
+ false
+ true
+ true
+
+
+
+
+
+ 1665499321012
+
+ 500190
+
+ false
+ true
+ true
+
+
+
+
+
+ 1665499340739
+
+ 500210
+
+ false
+ true
+ true
+
+
+
+
+
+ 1665499362356
+
+ 500230
+
+ false
+ true
+ true
+
+
+
+
+
+ 1665499375110
+
+ 500250
+
+ false
+ true
+ true
+
+
+
+
1658496701675
@@ -755,7 +1007,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 490120
+ -660350
false
true
@@ -783,7 +1035,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 83080
+ 81050
false
true
@@ -811,7 +1063,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 490140
+ -660370
false
true
@@ -832,7 +1084,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661500135010
- 26040
+ -21040
false
true
@@ -842,7 +1094,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
false
-
+
1661500135008
@@ -856,17 +1108,17 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661509540475
- 26060
+ -21060
false
- true
+ false
true
false
-
+
1661509540473
@@ -880,7 +1132,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661510358303
- 26080
+ -21080
false
true
@@ -890,7 +1142,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
false
-
+
1661510358301
@@ -904,7 +1156,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661510407466
- 260100
+ -210100
false
true
@@ -928,7 +1180,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663239405341
- 440580
+ -920620
false
true
@@ -949,7 +1201,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663242364390
- 540580
+ -920640
false
true
@@ -974,7 +1226,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 440-80
+ -659419
false
true
@@ -1002,7 +1254,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 440-50
+ -660440
false
true
@@ -1030,7 +1282,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 490160
+ -660390
false
true
@@ -1051,10 +1303,58 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
+
+ 1665505197939
+
+ -210120
+
+ false
+ true
+ true
+
+
+
+ false
+
+
+
+
+ 1665505197937
+ TEXT_BOX
+
+
+ NO_DELIMETER
+
+
+
+
+ 1666548389216
+
+ -930380
+
+ false
+ true
+ true
+
+
+
+ false
+
+
+
+
+ 1666548389214
+ TEXT_BOX
+
+
+ NO_DELIMETER
+
+
+
1661504944109
- 260120
+ -210150
false
true
@@ -1069,7 +1369,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661510454747
- 260140
+ -210170
false
true
@@ -1084,7 +1384,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661510457715
- 260160
+ -210190
false
true
@@ -1099,7 +1399,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1661510460035
- 260180
+ -210210
false
true
@@ -1114,7 +1414,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663238323139
- 260290
+ -210340
false
true
@@ -1129,7 +1429,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663251681035
- 260230
+ -210280
false
true
@@ -1144,7 +1444,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663252052482
- 260250
+ -210300
false
true
@@ -1159,7 +1459,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663312177330
- 260310
+ -210360
false
true
@@ -1174,7 +1474,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
1663336485480
- 260270
+ -210320
false
true
@@ -1186,6 +1486,66 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
+
+ 1664539599603
+
+ -210260
+
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+ 1664953351408
+
+ -210380
+
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+ 1665492426842
+
+ -210400
+
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+ 1665505167864
+
+ -210230
+
+ false
+ true
+ true
+
+
+
+
+
+
+
@@ -1195,7 +1555,7 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- 60420
+ 60397
false
true
@@ -1221,78 +1581,23 @@ traceln("*** main duration *** "+ v_modelStartUpDuration_s+" s");]]>
- {
- c.f_updateIncentives();
- });*/
- // Calculate energy flows from bottom nodes up
- c_gridConnections.parallelStream().forEach(g -> {
- g.f_calculateEnergyBalance();
- });
+// Update productie van alle productieassets binnen
+f_calculateProductionAssetOutput();
-} else {
- /*for (ConnectionOwner c : pop_connectionOwners) {
- c.f_updateIncentives();
- }*/
- // Calculate energy flows from bottom nodes up
- for(GridConnection b : c_gridConnections) {
- b.f_calculateEnergyBalance();
- }
-}
-
-for(GridNode n : c_gridNodesHeat) {
-n.f_calculateEnergyBalance();
-}
-for(GridNode n : c_gridNodesMSLS) {
- n.f_calculateEnergyBalance();
-}
-for(GridNode n : c_gridNodesHSMS) {
- n.f_calculateEnergyBalance();
-}
-
+// Operate consumption assets and update flows
+f_calculateConsumptionAssets();
+// Calculate grid node flows
+f_calculateGridnodeFlows();
// Financial accounting of energy flows
-// Propagate energy transaction volumes and corresponding values bottom-up
-/*if (p_parallelize) {
- c_connectionOwners.parallelStream().forEach(c -> {
- c.f_updateFinances();
- });
-} else {*/
- for (ConnectionOwner c : pop_connectionOwners) {
- c.f_updateFinances();
- }
-//}
+f_calculateFinancialFlows();
-for (EnergyHolon h : pop_energyHolons) {
- h.f_updateFinances();
-}
-for (EnergySupplier e : pop_energySuppliers) {
- e.f_updateFinances();
-}
+// Update elektriciteitsprijzen
+f_determinePricesForNextTimestep();
v_timeStepsElapsed ++;]]>
@@ -1309,7 +1614,7 @@ v_timeStepsElapsed ++;]]>
@return: none
@since: Sprint 6
@author: Jorrit]]>
- 6070
+ -660100
false
true
@@ -1326,7 +1631,7 @@ for(HashMap data : parsedJSONActors)
type = data.get( "type" ).toString();
actortype = OL_ActorType.valueOf((String)data.get( "agenttype" ));
//traceln(actortype.toString());
- parentActorID = data.get( "parent_actor" ).toString();
+ parentActorID = String.valueOf(data.get( "parent_actor" ));
if (actortype.equals(OL_ActorType.CONNECTIONOWNER) ) {
ConnectionOwner Actor = add_pop_connectionOwners( actorID, type, parentActorID, null);
@@ -1355,22 +1660,26 @@ for (EnergyHolon a : pop_energyHolons) {
// values by calling the corresponding keys
String nodeID;
-OL_NetNodeType nodetype;
+OL_GridNodeType nodetype;
OL_EnergyCarrierType energytype;
String nodeparent;
int nodecapacity;
+String nodeoperator;
for(HashMap data : parsedJSONGridNodes)
{
nodeID = data.get("id").toString();
- nodetype = OL_NetNodeType.valueOf((String)data.get("type2"));
+ nodetype = OL_GridNodeType.valueOf((String)data.get("type2"));
energytype = OL_EnergyCarrierType.valueOf((String)data.get("type"));
nodeparent = (String) data.get("parent");
nodecapacity = (Integer)data.get("capacity_kw");
-// traceln("data "+"id= "+nodeID +", nodetype = "+nodetype +", energytype = "+ energytype+", nodeparent = "+ nodeparent+", capacity = "+ nodecapacity);
+ nodeoperator = String.valueOf(data.get("owner"));
+ //traceln("data "+"id= "+nodeID +", nodetype = "+nodetype +", energytype = "+ energytype+", nodeparent = "+ nodeparent+", capacity = "+ nodecapacity+ ", ownerOperator = "+ nodeoperator);
+ //traceln(data.toString());
- GridNode GridNode = add_pop_gridNodes( nodeID, nodeparent, nodetype, energytype, nodecapacity, null );
-// traceln("agent "+nodeID+" added by JSON!");
+ GridNode GridNode = add_pop_gridNodes( nodeID, nodeparent, nodetype, energytype, nodecapacity, null, null, nodeoperator );
+ //traceln("agent "+nodeID+" added by JSON!");
+ c_gridNodes.add(GridNode);
switch( GridNode.p_nodeType ) {
case HSMS:
c_gridNodesHSMS.add(GridNode);
@@ -1397,55 +1706,59 @@ for( GridNode g : pop_gridNodes ) {
// 2. add agents to population from database: NetConnections
-String netConnectionID;
-OL_NetConnectionCategory netConnectionCategory;
-OL_NetConnectionType netConnectionType;
-String netConnectionParentElectric;
-String netConnectionParentHeat="";
-Double netConnectionCapacity;
+String gridConnectionID;
+OL_GridConnectionCategory gridConnectionCategory;
+OL_GridConnectionType gridConnectionType;
+OL_GridConnectionHeatingType gridConnectionHeatingType;
+OL_GridConnectionIsolationLabel gridConnectionIsolationLabel;
+String gridConnectionParentElectric;
+String gridConnectionParentHeat="";
+Double gridConnectionCapacity;
String ownerActorID;
for(HashMap data : parsedJSONGridConnections) {
// traceln("data = "+data);
- netConnectionCategory = OL_NetConnectionCategory.valueOf((String)data.get( "type" ));
- netConnectionType = OL_NetConnectionType.valueOf((String)data.get( "type2" ));
- netConnectionParentElectric = data.get( "parent_electric" ).toString();
- netConnectionParentHeat = (String)data.get( "parent_heat" );
- netConnectionCapacity = roundToDecimal((Integer)data.get( "capacity_kw" )+0.0,2);
- netConnectionID = data.get( "id" ).toString();
+ gridConnectionCategory = OL_GridConnectionCategory.valueOf((String)data.get( "type" ));
+ gridConnectionType = OL_GridConnectionType.valueOf((String)data.get( "type2" ));
+ gridConnectionParentElectric = data.get( "parent_electric" ).toString();
+ gridConnectionParentHeat = (String)data.get( "parent_heat" );
+ gridConnectionCapacity = roundToDecimal((Integer)data.get( "capacity_kw" )+0.0,2);
+ gridConnectionID = data.get( "id" ).toString();
ownerActorID = data.get ( "owner_actor" ).toString();
-
-// traceln("data: " + "id = " + netConnectionID + ", category = " + netConnectionCategory + ", connectionType = " + netConnectionType + ", parentElectric" + netConnectionParentElectric + ", parentHeat = " + netConnectionParentHeat + ", capacity = " + netConnectionCapacity + "owner_actor = "+ ownerActorID);
- switch(netConnectionCategory) {
- case HOUSE:
- traceln("instantiating GCHouse now, this is new!");
- GCHouse GCHouse = add_gCHouses(netConnectionCategory, netConnectionType, netConnectionCapacity, netConnectionParentElectric, netConnectionID, netConnectionParentHeat, null, null, null, ownerActorID, null, null, null);
- c_gridConnections.add(GCHouse);
- break;
- case BUILDING:
- traceln("instantiating GCBuilding now, this is new!");
- GCBuilding GCBuilding = add_gCBuildings(netConnectionCategory, netConnectionType, netConnectionCapacity, netConnectionParentElectric, netConnectionID, netConnectionParentHeat, null, null, null, ownerActorID, null, null);
- c_gridConnections.add(GCBuilding);
- break;
- case DISTRICTHEATING:
- traceln("instantiating GCDistrictHeating now, this is new!");
- GCDistrictHeating GCDistrictHeating = add_gCDistrictHeatings(netConnectionCategory, netConnectionType, netConnectionCapacity, netConnectionParentElectric, netConnectionID, netConnectionParentHeat, null, null, null, ownerActorID, null, null);
- c_gridConnections.add(GCDistrictHeating);
- break;
- case WINDFARM:
- traceln("instantiating GCWindfarm now, this is new!");
- GCWindfarm GCWindfarm = add_gCWindfarms(netConnectionCategory, netConnectionType, netConnectionCapacity, netConnectionParentElectric, netConnectionID, netConnectionParentHeat, null, null, null, ownerActorID, null, null);
- c_gridConnections.add(GCWindfarm);
- break;
- case SOLARFARM:
- traceln("instantiating GCDSolarfarm now, this is new!");
- GCSolarfarm GCSolarfarm = add_gCSolarfarms(netConnectionCategory, netConnectionType, netConnectionCapacity, netConnectionParentElectric, netConnectionID, netConnectionParentHeat, null, null, null, ownerActorID, null, null);
- c_gridConnections.add(GCSolarfarm);
- break;
- default:
- traceln("No subagent defined for this gridConnection type!");
- break;
- }
+ gridConnectionIsolationLabel = OL_GridConnectionIsolationLabel.valueOf((String)data.get( "isolation_label" ));
+ gridConnectionHeatingType = OL_GridConnectionHeatingType.valueOf((String)data.get( "heating_type" ));
+
+ //traceln("data: " + "id = " + gridConnectionID + ", category = " + gridConnectionCategory + ", connectionType = " + gridConnectionType + ", parentElectric" + gridConnectionParentElectric + ", parentHeat = " + gridConnectionParentHeat + ", capacity = " + gridConnectionCapacity + "owner_actor = "+ ownerActorID);
+ switch(gridConnectionCategory) {
+ case HOUSE:
+ GCHouse GCHouse = add_gCHouses(gridConnectionCategory, gridConnectionType, gridConnectionCapacity, gridConnectionParentElectric, gridConnectionID, gridConnectionParentHeat, null, null, null, ownerActorID, null, null, null, gridConnectionHeatingType, null, uniform(0.1, 0.3), 7, gridConnectionIsolationLabel, null);
+ //add_gCHouses()
+ c_gridConnections.add(GCHouse);
+ break;
+ case BUILDING:
+ GCBuilding GCBuilding = add_gCBuildings(gridConnectionCategory, gridConnectionType, gridConnectionCapacity, gridConnectionParentElectric, gridConnectionID, gridConnectionParentHeat, null, null, null, ownerActorID, null, null, null, gridConnectionHeatingType);
+ c_gridConnections.add(GCBuilding);
+ break;
+ case DISTRICTHEATING:
+ GCDistrictHeating GCDistrictHeating = add_gCDistrictHeatings(gridConnectionCategory, gridConnectionType, gridConnectionCapacity, gridConnectionParentElectric, gridConnectionID, gridConnectionParentHeat, null, null, null, ownerActorID, null, null, null, gridConnectionHeatingType);
+ c_gridConnections.add(GCDistrictHeating);
+ break;
+ case WINDFARM:
+ GCWindfarm GCWindfarm = add_gCWindfarms(gridConnectionCategory, gridConnectionType, gridConnectionCapacity, gridConnectionParentElectric, gridConnectionID, gridConnectionParentHeat, null, null, null, ownerActorID, null, null, null, null);
+ c_gridConnections.add(GCWindfarm);
+ break;
+ case SOLARFARM:
+ GCSolarfarm GCSolarfarm = add_gCSolarfarms(gridConnectionCategory, gridConnectionType, gridConnectionCapacity, gridConnectionParentElectric, gridConnectionID, gridConnectionParentHeat, null, null, null, ownerActorID, null, null, null, null);
+ c_gridConnections.add(GCSolarfarm);
+ break;
+ case INDUSTRY:
+ GCIndustry GCIndustry = add_gCIndustries(gridConnectionCategory, gridConnectionType, gridConnectionCapacity, gridConnectionParentElectric, gridConnectionID, gridConnectionParentHeat, null, null, null, ownerActorID, null, null, null, gridConnectionHeatingType);
+ c_gridConnections.add(GCIndustry);
+ break;
+ default:
+ traceln("No subagent defined for this gridConnection type!" + gridConnectionCategory);
+ break;
+ }
// else if {
// GridConnection GridConnection = add_pop_gridConnections(netConnectionCategory, netConnectionType, netConnectionCapacity, netConnectionParentElectric, netConnectionID, netConnectionParentHeat, null, null, null, null, ownerActorID, null, null);
// c_gridConnections.add(GridConnection);
@@ -1458,7 +1771,7 @@ for (GridConnection g : c_gridConnections) {
for (GridConnection g: c_gridConnections) {
if(g.p_parentNodeHeat instanceof GridNode && g.p_ownerActor instanceof ConnectionOwner) {
ConnectionOwner o = (ConnectionOwner)g.p_ownerActor;
- List heatSuppliers = filter( g.p_parentNodeHeat.subConnections.getConnections(), p -> p.p_netConnectionCategory.equals(DISTRICTHEATING));
+ List heatSuppliers = filter( g.p_parentNodeHeat.subConnections.getConnections(), p -> p.p_gridConnectionCategory.equals(DISTRICTHEATING));
// traceln("connection id: "+g.p_agentID+", heatEnergySupplier: "+heatSuppliers+ ", owneractor: "+heatSuppliers.get(0).p_ownerActor);
o.v_energySupplierDistrictHeat = heatSuppliers.get(0).p_ownerActor;
@@ -1479,21 +1792,22 @@ for(HashMap data : parsedJSONEnergyAssets) {
capacityElectric_kW = roundToDecimal((Integer)data.get( "capacity_electric_kw" ),2);
capacityHeat_kW = roundToDecimal((Integer)data.get( "capacity_heat_kw" ),2);
- EnergyAsset EnergyAsset = add_pop_energyAssets(null, assetParentID, assetType); // let op: andere volgorde van argumenten. Nog fixen?
+ EnergyAsset ea = add_pop_energyAssets(null, assetParentID, assetType); // let op: andere volgorde van argumenten. Nog fixen?
//EnergyAsset.f_connectToParentNode(null);
switch(assetCategory) {
case PRODUCTION:
- EnergyAsset.f_instantiateProducerAsset(assetType, capacityElectric_kW, capacityHeat_kW);
- EnergyAsset.f_connectToParentNode(null);
-
+ ea.f_instantiateProducerAsset(assetType, capacityElectric_kW, capacityHeat_kW);
+ ea.f_connectToParentNode(null);
+ c_productionAssets.add(ea);
break;
default:
// traceln("f_configureBackbone: no energy asset of this instantiated yet!");
break;
}
-}]]>