diff --git a/_alp/Agents/EnergyCoop/Variables.xml b/_alp/Agents/EnergyCoop/Variables.xml
index 4a128148..d3d2862f 100644
--- a/_alp/Agents/EnergyCoop/Variables.xml
+++ b/_alp/Agents/EnergyCoop/Variables.xml
@@ -2036,7 +2036,7 @@
false
true
true
-
+
ArrayList
Actor
Object
@@ -2054,7 +2054,7 @@
false
true
true
-
+
ArrayList
Actor
Object
@@ -2072,7 +2072,7 @@
false
true
true
-
+
ArrayList
GridConnection
Object
@@ -2090,7 +2090,7 @@
false
true
true
-
+
ArrayList
GridConnection
Object
diff --git a/_alp/Agents/EnergyModel/Code/Functions.java b/_alp/Agents/EnergyModel/Code/Functions.java
index ecfe63a6..ab7c1002 100644
--- a/_alp/Agents/EnergyModel/Code/Functions.java
+++ b/_alp/Agents/EnergyModel/Code/Functions.java
@@ -401,8 +401,6 @@
}
}
-f_setInitialValues();
-
v_isRapidRun = false;
double duration = System.currentTimeMillis() - startTime1;
@@ -410,6 +408,9 @@
traceln("*** headless run duration: "+ duration/1000 + " s ***");
traceln("Live-sim t_h after rapidRun: %s", t_h);
+if (b_isDeserialised) {
+ traceln("Anylogic Model time(HOUR): %s", time(HOUR));
+}
c_profiles.forEach(p -> p.updateValue(t_h));
c_forecasts.forEach(p -> p.initializeForecast(t_h));
@@ -495,11 +496,17 @@
double topLevelElectricGridCapacity_kW = 0;
boolean topLevelGridCapacitiesKnown = true;
-// First make all links between GridNodes
+ // First make all links between GridNodes
for( GridNode GN : pop_gridNodes ) {
GN.f_connectToParentNode();
}
+// First clear lists (needed after deserialisation)
+c_gridNodeExecutionList.clear();
+c_gridNodeExecutionListReverse.clear();
+c_gridNodesTopLevel.clear();
+c_gridNodesNotTopLevel.clear();
+
// Then build execution order list
for( GridNode GN : pop_gridNodes ) {
GridNode parentNode = findFirst(pop_gridNodes, p->p.p_gridNodeID.equals(GN.p_parentNodeID)); // Works as long as p_gridNodeID is not null. p_parentNodeID can be null no problemo.
@@ -524,6 +531,7 @@
c_gridNodeExecutionListReverse = c_gridNodeExecutionList;
Collections.reverse(c_gridNodeExecutionList);
+
//Set cumulative toplevel grid values as energyModel values
v_liveConnectionMetaData.physicalCapacity_kW = topLevelElectricGridCapacity_kW;
v_liveConnectionMetaData.contractedDeliveryCapacity_kW = topLevelElectricGridCapacity_kW;
@@ -563,15 +571,15 @@ ArrayList f_getActiveGridConnections()
//v_hourOfYearStart=hourOfYearPerMonth[getMonth()] + (getDayOfMonth()-1)*24;
t_h = p_runStartTime_h;
+Date startDate = date();
+p_year = startDate.getYear() + 1900;
+
LocalDate localDate = LocalDate.of(p_year, 1, 1);
v_dayOfWeek1jan = DayOfWeek.from(localDate).getValue();
p_startOfWinterWeek_h = roundToInt(24 * (p_winterWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 49 is winterweek.
p_startOfSummerWeek_h = roundToInt(24 * (p_summerWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 18 is summerweek.
-Date startDate = date();
-
-p_year = startDate.getYear() + 1900;
int monthIdx = 0;
while ( t_h > hourOfYearPerMonth[monthIdx] ) {
@@ -586,6 +594,8 @@ ArrayList f_getActiveGridConnections()
traceln("Month of year start: %s", monthIdx);
startDate.setMonth(monthIdx);
startDate.setDate(dayOfMonth);
+startDate.setHours(0);
+startDate.setMinutes(0);
traceln("Startdate: %s", startDate);
//startDate.set
getExperiment().getEngine().setStartDate(startDate);
@@ -639,10 +649,6 @@ ArrayList f_getActiveGridConnections()
b_parallelizeConnectionOwners = true;
}
-// set initial values
-f_setInitialValues();
-
-
b_isInitialized = true;
/*ALCODEEND*/}
@@ -671,14 +677,6 @@ ArrayList f_getGridNodesNotTopLevel()
return this.c_gridNodesNotTopLevel;
/*ALCODEEND*/}
-double f_setInitialValues()
-{/*ALCODESTART::1722853692644*/
-// Starting prices
-//c_gridConnections.forEach(GC -> GC.v_electricityPriceLowPassed_eurpkWh = c_gridNodesTopLevel.get(0).v_currentParentNodalPrice_eurpkWh); // Initialize filtered prices for gridConnections, hoping to prevent or reduce initial settling excursions
-
-
-/*ALCODEEND*/}
-
double f_initializePause()
{/*ALCODESTART::1722590514591*/
for (GridConnection GC : UtilityConnections) {
@@ -1040,7 +1038,7 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
double f_startAfterDeserialisation()
{/*ALCODESTART::1753963201170*/
// Reconstruct the LiveData class
-v_liveData = new J_LiveData(this);
+/*v_liveData = new J_LiveData(this);
v_liveData.activeEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
v_liveData.activeProductionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
v_liveData.activeConsumptionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
@@ -1048,7 +1046,7 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
//v_liveConnectionMetaData = new J_ConnectionMetaData(this);
//v_liveAssetsMetaData = new J_AssetsMetaData(this);
v_liveData.connectionMetaData = v_liveConnectionMetaData;
-v_liveData.assetsMetaData = v_liveAssetsMetaData;
+v_liveData.assetsMetaData = v_liveAssetsMetaData;*/
v_liveData.resetLiveDatasets(p_runStartTime_h, p_runStartTime_h, p_timeStep_h);
@@ -1059,14 +1057,14 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
// Reconstruct the LiveData class in the EnergyCoops
for (EnergyCoop ec : pop_energyCoops) {
- ec.v_liveData = new J_LiveData(ec);
+ /*ec.v_liveData = new J_LiveData(ec);
ec.v_liveData.activeEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
ec.v_liveData.activeProductionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
ec.v_liveData.activeConsumptionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
ec.v_liveData.connectionMetaData = ec.v_liveConnectionMetaData;
ec.v_liveData.assetsMetaData = ec.v_liveAssetsMetaData;
-
+ */
ec.v_liveData.resetLiveDatasets(p_runStartTime_h, p_runStartTime_h, p_timeStep_h);
ec.fm_currentProductionFlows_kW = new J_FlowsMap();
@@ -1079,14 +1077,14 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
List allGridConnections = new ArrayList<>(c_gridConnections);
allGridConnections.addAll(c_pausedGridConnections);
for (GridConnection gc : allGridConnections) {
- gc.v_liveData = new J_LiveData(gc);
+ /*gc.v_liveData = new J_LiveData(gc);
gc.v_liveData.activeEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
gc.v_liveData.activeProductionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
gc.v_liveData.activeConsumptionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY);
gc.v_liveData.connectionMetaData = gc.v_liveConnectionMetaData;
gc.v_liveData.assetsMetaData = gc.v_liveAssetsMetaData;
-
+ */
gc.v_liveData.resetLiveDatasets(p_runStartTime_h, p_runStartTime_h, p_timeStep_h);
gc.fm_currentProductionFlows_kW = new J_FlowsMap();
@@ -1094,20 +1092,47 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
gc.fm_currentBalanceFlows_kW = new J_FlowsMap();
gc.fm_currentAssetFlows_kW = new J_ValueMap(OL_AssetFlowCategories.class);
- for (J_EA j_ea : gc.c_energyAssets) {
+ /*for (J_EA j_ea : gc.c_energyAssets) {
gc.f_addEnergyCarriersAndAssetCategoriesFromEA(j_ea);
- }
+ }*/
}
-//v_liveData.activeEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY, OL_EnergyCarriers.HEAT, OL_EnergyCarriers.METHANE, OL_EnergyCarriers.DIESEL);
-//v_liveData.activeProductionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY, OL_EnergyCarriers.HEAT);
-//v_liveData.activeConsumptionEnergyCarriers = EnumSet.of(OL_EnergyCarriers.ELECTRICITY, OL_EnergyCarriers.HEAT, OL_EnergyCarriers.METHANE, OL_EnergyCarriers.DIESEL);
-//for (J_EA j_ea : c_energyAssets) {
- //v_liveData.activeProductionEnergyCarriers.addAll(j_ea.activeProductionEnergyCarriers);
- //v_liveData.activeConsumptionEnergyCarriers.addAll(j_ea.activeConsumptionEnergyCarriers);
-//}
+// Initialize time and date
+//v_hourOfYearStart=hourOfYearPerMonth[getMonth()] + (getDayOfMonth()-1)*24;
+t_h = p_runStartTime_h;
+
+Date startDate = date();
+p_year = startDate.getYear() + 1900;
+
+LocalDate localDate = LocalDate.of(p_year, 1, 1);
+v_dayOfWeek1jan = DayOfWeek.from(localDate).getValue();
+p_startOfWinterWeek_h = roundToInt(24 * (p_winterWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 49 is winterweek.
+p_startOfSummerWeek_h = roundToInt(24 * (p_summerWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 18 is summerweek.
+
+int monthIdx = 0;
+while ( t_h > hourOfYearPerMonth[monthIdx] ) {
+ monthIdx++;
+ if (monthIdx==hourOfYearPerMonth.length){
+ break;
+ }
+}
+
+int dayOfMonth = 1+(int)((t_h - hourOfYearPerMonth[monthIdx])/24.0);
+traceln("Day of month start: %s", dayOfMonth);
+traceln("Month of year start: %s", monthIdx);
+startDate.setMonth(monthIdx);
+startDate.setDate(dayOfMonth);
+startDate.setHours(0);
+startDate.setMinutes(0);
+traceln("Startdate: %s", startDate);
+//startDate.set
+getExperiment().getEngine().setStartDate(startDate);
+f_initializeForecasts();
+
+f_initializeLiveDataSets();
+b_isDeserialised = true;
/*ALCODEEND*/}
Pair f_getPeakWeekDataSets()
@@ -1235,3 +1260,76 @@ Date f_getDate()
c_pausedGridConnections.forEach(GC -> GC.v_liveData.clearLiveDatasets());
/*ALCODEEND*/}
+double f_initializeEngineAfterLoad()
+{/*ALCODESTART::1758792939882*/
+// Initialize time and date
+//v_hourOfYearStart=hourOfYearPerMonth[getMonth()] + (getDayOfMonth()-1)*24;
+t_h = p_runStartTime_h;
+
+Date startDate = date();
+p_year = startDate.getYear() + 1900;
+
+LocalDate localDate = LocalDate.of(p_year, 1, 1);
+v_dayOfWeek1jan = DayOfWeek.from(localDate).getValue();
+p_startOfWinterWeek_h = roundToInt(24 * (p_winterWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 49 is winterweek.
+p_startOfSummerWeek_h = roundToInt(24 * (p_summerWeekNumber * 7 + (8-v_dayOfWeek1jan)%7)); // Week 18 is summerweek.
+
+int monthIdx = 0;
+while ( t_h > hourOfYearPerMonth[monthIdx] ) {
+ monthIdx++;
+ if (monthIdx==hourOfYearPerMonth.length){
+ break;
+ }
+}
+
+int dayOfMonth = 1+(int)((t_h - hourOfYearPerMonth[monthIdx])/24.0);
+traceln("Day of month start: %s", dayOfMonth);
+traceln("Month of year start: %s", monthIdx);
+startDate.setMonth(monthIdx);
+startDate.setDate(dayOfMonth);
+startDate.setHours(0);
+startDate.setMinutes(0);
+traceln("Startdate: %s", startDate);
+//startDate.set
+getExperiment().getEngine().setStartDate(startDate);
+
+
+
+// Initialize all agents in the correct order, creating all connections. What about setting initial values? And how about repeated simulations?
+
+/*f_buildGridNodeTree();
+c_gridConnections.forEach(GC -> GC.f_initialize());
+
+// Only relevant for deserialisation:
+c_pausedGridConnections.forEach(GC -> GC.f_initialize());
+
+pop_connectionOwners.forEach(CO -> CO.f_initialize());
+pop_energyCoops.forEach(EC -> EC.f_initialize()); // Not yet robust when there is no supplier initialized!
+
+
+
+// Initializing Live Data Class
+v_liveAssetsMetaData.updateActiveAssetData(c_gridConnections);
+for (GridConnection GC : c_gridConnections) {
+ v_liveData.activeEnergyCarriers.addAll(GC.v_liveData.activeEnergyCarriers);
+ v_liveData.activeConsumptionEnergyCarriers.addAll(GC.v_liveData.activeConsumptionEnergyCarriers);
+ v_liveData.activeProductionEnergyCarriers.addAll(GC.v_liveData.activeProductionEnergyCarriers);
+}
+
+// Loop over populations to check v_ispaused
+f_initializePause();
+
+for (GridNode GN : c_gridNodeExecutionList) {
+ GN.f_initializeGridnode();
+}
+
+v_liveData.connectionMetaData.contractedDeliveryCapacityKnown = false;
+v_liveData.connectionMetaData.contractedFeedinCapacityKnown = false;
+v_liveData.connectionMetaData.physicalCapacityKnown = false;
+*/
+f_initializeForecasts();
+
+f_initializeLiveDataSets();
+
+/*ALCODEEND*/}
+
diff --git a/_alp/Agents/EnergyModel/Code/Functions.xml b/_alp/Agents/EnergyModel/Code/Functions.xml
index e3d954d9..5642b636 100644
--- a/_alp/Agents/EnergyModel/Code/Functions.xml
+++ b/_alp/Agents/EnergyModel/Code/Functions.xml
@@ -348,23 +348,6 @@
true
-
- VOID
- double
- 1722853692644
-
-
- 730
- 173
-
- false
- true
- true
-
-
VOID
double
@@ -603,8 +586,8 @@
double
1753963201170
- 1096
- -64
+ 860
+ 50
+
+ VOID
+ double
+ 1758792939882
+
+ true
+ 870
+ -30
+
+ false
+ true
+ true
+
+
diff --git a/_alp/Agents/EnergyModel/Variables.xml b/_alp/Agents/EnergyModel/Variables.xml
index 3ea5f228..33065553 100644
--- a/_alp/Agents/EnergyModel/Variables.xml
+++ b/_alp/Agents/EnergyModel/Variables.xml
@@ -1932,6 +1932,34 @@
+
+ 1758796402884
+
+ 870
+ 200
+
+ false
+ true
+ true
+
+
+ NONE
+ false
+
+
+
+
+ 1758796402882
+ CHECK_BOX
+ 0
+ 100
+ NO_DELIMETER
+
+
+
1663238323139
diff --git a/_alp/Agents/GCUtility/Variables.xml b/_alp/Agents/GCUtility/Variables.xml
index 798c3070..61864fbe 100644
--- a/_alp/Agents/GCUtility/Variables.xml
+++ b/_alp/Agents/GCUtility/Variables.xml
@@ -17,9 +17,6 @@
AccessType="public"
StaticVariable="false">
-
-
-
@@ -39,9 +36,6 @@
AccessType="public"
StaticVariable="false">
-
-
-
diff --git a/_alp/Agents/GIS_Building/AOC.GIS_Building.xml b/_alp/Agents/GIS_Building/AOC.GIS_Building.xml
index 2ff9301b..55d9cfac 100644
--- a/_alp/Agents/GIS_Building/AOC.GIS_Building.xml
+++ b/_alp/Agents/GIS_Building/AOC.GIS_Building.xml
@@ -4,6 +4,8 @@
1752681631114
+
zero_engine
GIS_Object
diff --git a/_alp/Agents/GIS_Object/AOC.GIS_Object.xml b/_alp/Agents/GIS_Object/AOC.GIS_Object.xml
index 9e55691a..2a88e9a7 100644
--- a/_alp/Agents/GIS_Object/AOC.GIS_Object.xml
+++ b/_alp/Agents/GIS_Object/AOC.GIS_Object.xml
@@ -6,25 +6,10 @@
1752681631114
+
+//@JsonIgnoreProperties({"va_building", "va_parcel", "_origin_VA","gisRegion",
+// "p_defaultFillColor", "p_defaultLineColor", "p_defaultLineStyle"})]]>
false
1667726338855
diff --git a/_alp/Agents/GridConnection/Code/Functions.java b/_alp/Agents/GridConnection/Code/Functions.java
index a0158960..52b23d4b 100644
--- a/_alp/Agents/GridConnection/Code/Functions.java
+++ b/_alp/Agents/GridConnection/Code/Functions.java
@@ -201,6 +201,7 @@
fm_currentProductionFlows_kW.clear();
fm_currentConsumptionFlows_kW.clear();
fm_currentBalanceFlows_kW.clear();
+//fm_currentAssetFlows_kW.clear(); // Why not this one??
v_previousPowerElectricity_kW = 0;
v_previousPowerHeat_kW = 0;
diff --git a/_alp/Agents/GridConnection/Levels/Level.level.xml b/_alp/Agents/GridConnection/Levels/Level.level.xml
index 47862932..84ed2e5f 100644
--- a/_alp/Agents/GridConnection/Levels/Level.level.xml
+++ b/_alp/Agents/GridConnection/Levels/Level.level.xml
@@ -348,7 +348,7 @@
1668439095469
- 730
+ 720
640
@@ -228,9 +225,6 @@
AccessType="public"
StaticVariable="false">
-
-
-
diff --git a/_alp/Agents/GridNode/Code/Functions.java b/_alp/Agents/GridNode/Code/Functions.java
index 2a74fb00..7ca6da18 100644
--- a/_alp/Agents/GridNode/Code/Functions.java
+++ b/_alp/Agents/GridNode/Code/Functions.java
@@ -363,7 +363,8 @@
v_weekendExcessExport_MWh = 0;
// Reset Accumulators
-acc_annualElectricityBalance_kW.reset();
+acc_annualElectricityBalance_kW = new ZeroAccumulator(true, energyModel.p_timeStep_h, energyModel.p_runEndTime_h - energyModel.p_runStartTime_h);
+//acc_annualElectricityBalance_kW.reset();
/*ALCODEEND*/}
double f_calculateKPIs()
@@ -416,8 +417,6 @@ ArrayList f_getConnectedGridConnections()
v_totalInstalledPVPower_kW += GN.v_totalInstalledPVPower_kW;
}
-acc_annualElectricityBalance_kW = new ZeroAccumulator(true, energyModel.p_timeStep_h, energyModel.p_runEndTime_h - energyModel.p_runStartTime_h);
-
/*
if ( p_energyType == OL_EnergyCarriers.HEAT ) {
double capacityHeat_kW = 1000000;
diff --git a/_alp/Classes/Class.AgentMixin.java b/_alp/Classes/Class.AgentMixin.java
index e9ea48ab..0cec36f7 100644
--- a/_alp/Classes/Class.AgentMixin.java
+++ b/_alp/Classes/Class.AgentMixin.java
@@ -15,27 +15,9 @@
include = JsonTypeInfo.As.PROPERTY,
property = "type" // 👈 this will be the field name in your JSON
)
-/*
-@JsonSubTypes({ // Needed because parentAgent in J_EA is of type Agent, and paused gridConnections are first serialized via their energy assets, leading to type ambigueity
- @JsonSubTypes.Type(value = Actor.class, name = "Actor"),
- @JsonSubTypes.Type(value = GridConnection.class, name = "GridConnection"),
- @JsonSubTypes.Type(value = GridNode.class, name = "GridNode"),
- @JsonSubTypes.Type(value = GIS_Object.class, name = "GIS_Object"),
- @JsonSubTypes.Type(value = EnergyModel.class, name = "EnergyModel"),
- @JsonSubTypes.Type(value = NationalEnergyMarket.class, name = "NationalEnergyMarket"),
-
- //@JsonSubTypes.Type(value = EnergyCoopL4L.class, name = "EnergyCoopL4L"),
- // @JsonSubTypes.Type(value = J_EAConversionGasBurner.class, name = "J_EAConversionGasBurner"),
- // @JsonSubTypes.Type(value = J_EAConversionHeatPump.class, name = "J_EAConversionHeatPump"),
- // @JsonSubTypes.Type(value = J_EAEV.class, name = "J_EAEV"),
- // @JsonSubTypes.Type(value = J_EADieselVehicle.class, name = "J_EADieselVehicle"),
-
- // Add other known subtypes here if needed
-})
-*/
@JsonAutoDetect(
- fieldVisibility = Visibility.PUBLIC_ONLY, // ✅ only public fields are serialized
+ fieldVisibility = Visibility.ANY,//PUBLIC_ONLY, // ✅ only public fields are serialized
getterVisibility = Visibility.NONE,
isGetterVisibility = Visibility.NONE,
setterVisibility = Visibility.NONE,
@@ -43,11 +25,31 @@
)
//@JsonIgnoreProperties({"connections"})
@JsonIgnoreProperties({
- "gisRegion","p_uniqueColor","p_defaultFillColor","p_defaultLineColor",
"_pl_powerFlows_autoUpdateEvent_xjal",
- "_SOC_plot_autoUpdateEvent_xjal",
+ "_SOC_plot_autoUpdateEvent_xjal",
"c_defaultHeatingStrategies",
- "connections"
+ "connections",
+
+ // When also writing private values, these additional fields end up in the json:
+ "ik",
+ "presentation",
+ "_getLevels_xjal"
+})
+ //"line",
+ //"text",
+ //"level",
+
+ /*"icon",
+ "font",
+ "name",
+ "color"*/
+
+ //"gisRegion","p_uniqueColor","p_defaultFillColor","p_defaultLineColor",
+ /*"c_gridNodeExecutionList",
+ "c_gridNodeExecutionListReverse",
+ "c_gridNodesTopLevel",
+ "c_gridNodesNotTopLevel",*/
+
//"p_cookingPatternCsv","p_householdTripsCsv","p_truckTripsCsv",
/*"data_liveLoad_kW","data_liveCapacitySupply_kW", "data_liveCapacityDemand_kW",
@@ -70,7 +72,7 @@
"PublicChargers",
"Neighborhoods",*/
-})
+
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id")
public abstract class AgentMixin implements Serializable {
diff --git a/_alp/Classes/Class.J_Contract.java b/_alp/Classes/Class.J_Contract.java
index 5b7f2091..2a7a0bda 100644
--- a/_alp/Classes/Class.J_Contract.java
+++ b/_alp/Classes/Class.J_Contract.java
@@ -1,6 +1,9 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonIdentityInfo;
+import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id")
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
include = JsonTypeInfo.As.PROPERTY,
diff --git a/_alp/Classes/Class.J_LiveData.java b/_alp/Classes/Class.J_LiveData.java
index 8e89210e..55c10c73 100644
--- a/_alp/Classes/Class.J_LiveData.java
+++ b/_alp/Classes/Class.J_LiveData.java
@@ -2,8 +2,8 @@
/**
* J_LiveData
*/
-import com.fasterxml.jackson.annotation.JsonIgnoreType;
-@JsonIgnoreType
+//import com.fasterxml.jackson.annotation.JsonIgnoreType;
+
public class J_LiveData {
public Agent parentAgent;
@@ -29,6 +29,11 @@ public class J_LiveData {
/**
* Default constructor
*/
+
+ public J_LiveData() { // needed for deserialisation
+
+ }
+
public J_LiveData(Agent parentAgent) {
this.parentAgent = parentAgent;
}