Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 37 additions & 36 deletions _alp/Agents/EnergyModel/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
b_isLastTimeStepOfDay = t_h % 24 == (24-p_timeStep_h);
t_hourOfDay = t_h % 24; // Assumes modelrun starts at midnight.

c_profiles.forEach(p -> p.updateValue(t_h));
c_profiles.forEach(p -> p.updateValue(t_h)); //
//v_currentAmbientTemperature_degC = pp_ambientTemperature_degC.getCurrentValue();
//v_currentWindPowerNormalized_r = pp_windProduction_fr.getCurrentValue();
//v_currentSolarPowerNormalized_r = pp_PVProduction35DegSouth_fr.getCurrentValue();
Expand Down Expand Up @@ -589,44 +589,9 @@ ArrayList<GridConnection> f_getActiveGridConnections()
if (b_isInitialized) {
throw new RuntimeException("Error: Engine was initalized a second time.");
}
// 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);


//traceln("Day of the week on january 1st %s: %s, int value: %s", p_year, DayOfWeek.from(localDate).name(), v_dayOfWeek1jan);

// 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());

Expand Down Expand Up @@ -1264,6 +1229,7 @@ Date f_getDate()

double f_loopSimulation()
{/*ALCODESTART::1758619562148*/
v_liveSimLoopCount++;
v_timeStepsElapsed = 0;
f_clearAllLiveDatasets();
traceln("The simulation has been looped.");
Expand Down Expand Up @@ -1377,3 +1343,38 @@ ArrayList<GridConnection> f_getAllGridConnections()
c_assetManagement.remove(assetManagement);
/*ALCODEEND*/}

double f_initializeTimeDates()
{/*ALCODESTART::1767178014622*/
// Initialize time and date
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);


/*ALCODEEND*/}

28 changes: 22 additions & 6 deletions _alp/Agents/EnergyModel/Code/Functions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
<Id>1671636439933</Id>
<Name><![CDATA[f_initializeForecasts]]></Name>
<X>730</X>
<Y>113</Y>
<Y>133</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -206,7 +206,7 @@
<Id>1716884712799</Id>
<Name><![CDATA[f_buildGridNodeTree]]></Name>
<X>730</X>
<Y>68</Y>
<Y>88</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand All @@ -222,7 +222,7 @@
<Id>1716886716306</Id>
<Name><![CDATA[f_gridNodeRecursiveAdd]]></Name>
<X>750</X>
<Y>88</Y>
<Y>108</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -258,7 +258,7 @@
<Id>1716893898501</Id>
<Name><![CDATA[f_initializeEngine]]></Name>
<X>700</X>
<Y>48</Y>
<Y>68</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -355,7 +355,7 @@
<Name><![CDATA[f_initializePause]]></Name>
<Description><![CDATA[Function to initialize the paused gridconnections.]]></Description>
<X>730</X>
<Y>153</Y>
<Y>173</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -443,7 +443,7 @@
<Id>1731573713521</Id>
<Name><![CDATA[f_initializeLiveDataSets]]></Name>
<X>730</X>
<Y>133</Y>
<Y>153</Y>
<Label>
<X>10</X>
<Y>0</Y>
Expand Down Expand Up @@ -802,4 +802,20 @@
</Parameter>
<Body xmlns:al="http://anylogic.com"/>
</Function>
<Function AccessType="public" StaticFunction="false">
<ReturnModificator>VOID</ReturnModificator>
<ReturnType>double</ReturnType>
<Id>1767178014622</Id>
<Name><![CDATA[f_initializeTimeDates]]></Name>
<X>700</X>
<Y>50</Y>
<Label>
<X>10</X>
<Y>0</Y>
</Label>
<PublicFlag>false</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>true</ShowLabel>
<Body xmlns:al="http://anylogic.com"/>
</Function>
</Functions>
23 changes: 23 additions & 0 deletions _alp/Agents/EnergyModel/Variables.xml
Original file line number Diff line number Diff line change
Expand Up @@ -676,6 +676,7 @@
<Variable Class="PlainVariable">
<Id>1712842800772</Id>
<Name><![CDATA[v_dayOfWeek1jan]]></Name>
<Description><![CDATA[Index of day-of-week; 1 = Monday, 7 = Sunday]]></Description>
<X>-610</X>
<Y>130</Y>
<Label>
Expand Down Expand Up @@ -1485,6 +1486,28 @@
<Type><![CDATA[J_FlowsMap]]></Type>
</Properties>
</Variable>
<Variable Class="PlainVariable">
<Id>1767621890121</Id>
<Name><![CDATA[v_liveSimLoopCount]]></Name>
<X>1070</X>
<Y>430</Y>
<Label>
<X>10</X>
<Y>0</Y>
</Label>
<PublicFlag>false</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>true</ShowLabel>
<Properties SaveInSnapshot="true"
Constant="false"
AccessType="public"
StaticVariable="false">
<Type><![CDATA[int]]></Type>
<InitialValue Class="CodeValue">
<Code><![CDATA[0]]></Code>
</InitialValue>
</Properties>
</Variable>
<Variable Class="Parameter">
<Id>1658496701675</Id>
<Name><![CDATA[p_timeStep_h]]></Name>
Expand Down
4 changes: 2 additions & 2 deletions _alp/Agents/GridConnection/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,8 @@

vehicle.tripTracker = tripTracker;
}
else if( vehicle.getAvailability() && vehicle instanceof J_EAEV ev){
tripTracker.prepareNextActivity((energyModel.t_h-energyModel.p_runStartTime_h)*60, p_chargePoint);
else if( vehicle.getAvailability() && vehicle instanceof J_EAEV ev){ // J_EAEV that already has triptracker, but still needs to prepare next trip to determine chargedeadline.
tripTracker.prepareNextActivity(energyModel.t_h*60, p_chargePoint);
}
c_tripTrackers.add( tripTracker );
//v_vehicleIndex ++;
Expand Down
2 changes: 1 addition & 1 deletion _alp/Classes/Class.J_ActivityTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
creatorVisibility = Visibility.NONE
)
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id")
public class J_ActivityTracker implements Serializable {
public abstract class J_ActivityTracker implements Serializable {
protected EnergyModel energyModel;

// Tripdata
Expand Down
5 changes: 2 additions & 3 deletions _alp/Classes/Class.J_ActivityTrackerCooking.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,14 @@ public J_ActivityTrackerCooking(TextFile inputCookingActivities, int rowIndex, d
}

while ( starttimes_min.get(v_eventIndex) - time_min < 0) {
starttimes_min.set( v_eventIndex, starttimes_min.get(v_eventIndex) + 1440 );
endtimes_min.set( v_eventIndex, endtimes_min.get(v_eventIndex) + 1440 );
starttimes_min.set( v_eventIndex, starttimes_min.get(v_eventIndex) + 1440 ); // Source data is always just one day, repeating every day.
endtimes_min.set( v_eventIndex, endtimes_min.get(v_eventIndex) + 1440 ); // Source data is always just one day, repeating every day.
v_eventIndex++;
if ( v_eventIndex > starttimes_min.size() - 1 ) {
v_eventIndex = 0;
}
}


initalStarttimes_min = new ArrayList<>(starttimes_min);
initalEndtimes_min = new ArrayList<>(endtimes_min);
//traceln("Current model time in minutes: " + energyModel.t_h*60 + ", nb sessions: " + nbOfCookingSessions);
Expand Down
Loading