protected override void PerformActualStep(IStepParameters parameters) { var calcParameters = _repository.CalcParameters; HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } var householdKey = entry.HHKey; _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass()); Logger.Info("Starting to complete list of heat gains by human activity at each time step..."); var singletimestepEntries = _repository.ReadSingleTimestepActionEntries(householdKey) .OrderBy(x => x.TimeStep) .ToList(); if (singletimestepEntries.Count == 0) { throw new LPGException("No file for actions each time step found"); } var actionEntries = _repository.ReadActionEntries(householdKey); if (actionEntries.Count == 0) { throw new LPGException(""); } var actionEntryDict = new Dictionary <StrGuid, ActionEntry>(); foreach (var ae in actionEntries) { actionEntryDict.Add(ae.ActionEntryGuid, ae); } BodilyActivityLevelStatistics bals = new BodilyActivityLevelStatistics(householdKey); foreach (BodilyActivityLevel level in Enum.GetValues(typeof(BodilyActivityLevel))) { bals.ActivityLevels.Add(level, new List <double>(new double[calcParameters.OfficalTimesteps])); } foreach (var actionEntry in singletimestepEntries) { var ae = actionEntryDict[actionEntry.ActionEntryGuid]; var ts = actionEntry.TimeStep; bals.ActivityLevels[ae.BodilyActivityLevel][ts] += 1; } _inputDataLogger.Save(householdKey, bals); _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass()); }
protected override void PerformActualStep(IStepParameters parameters) { HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } Run(_fft, entry.HHKey); }
protected override void PerformActualStep(IStepParameters parameters) { HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } BuildActivitiesPerMinute(entry.HHKey, Repository.AffordanceTaggingSets, Repository.GetPersons(entry.HHKey)); }
protected override void PerformActualStep(IStepParameters parameters) { HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } BuildActivationsPerHours(_fft, entry.HHKey, Repository.AffordanceTaggingSets, Repository.ReadActionEntries(entry.HHKey)); }
protected override void PerformActualStep(IStepParameters parameters) { var calcParameters = _repository.CalcParameters; HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } var householdKey = entry.HHKey; _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass()); Logger.Info("Starting to complete list of actions for each person at each time step for statistical analysis..."); var displayNegativeTime = calcParameters.ShowSettlingPeriodTime; var activitiesPerPerson = ReadActivities(householdKey); //var fileIdx = 0; if (activitiesPerPerson.Count == 0) { throw new LPGException("There were no activities for any person in the household " + householdKey.Key); } List <SingleTimestepActionEntry> allSteps = new List <SingleTimestepActionEntry>(); foreach (var personActivities in activitiesPerPerson) { Logger.Info("Starting to generate the carpet plot for " + personActivities.Key.Name + "..."); var times = MakeTimeArray(displayNegativeTime, personActivities.Value); allSteps.AddRange(times); } _inputDataLogger.SaveList(allSteps.ConvertAll(x => (IHouseholdKey)x)); _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass()); }
protected override void PerformActualStep(IStepParameters parameters) { HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } var householdKey = entry.HHKey; _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass()); Logger.Info("Starting to complete list of actions for each person at each time step for statistical analysis..."); var activitiesPerPerson = ReadActivities(householdKey); //var fileIdx = 0; if (activitiesPerPerson.Count == 0) { throw new LPGException("There were no activities for any person in the household " + householdKey.Key); } var affs = ReadActivities(householdKey); var sactionEntries = _repository.ReadSingleTimestepActionEntries(householdKey); Dictionary <BodilyActivityLevel, List <int> > personCountByActivity = new Dictionary <BodilyActivityLevel, List <int> >(); foreach (BodilyActivityLevel bal in Enum.GetValues(typeof(BodilyActivityLevel))) { personCountByActivity.Add(bal, new List <int>(new int[_repository.CalcParameters.OfficalTimesteps])); } foreach (var singleTimestepActionEntry in sactionEntries) { var aff = affs[singleTimestepActionEntry.ActionEntryGuid]; personCountByActivity[aff.BodilyActivityLevel][singleTimestepActionEntry.TimeStep]++; } foreach (var pair in personCountByActivity) { JsonSumProfile jsp = new JsonSumProfile("Person Count for Activity Level " + pair.Key.ToString() + " " + householdKey.Key, Repository.CalcParameters.InternalStepsize, Repository.CalcParameters.OfficialStartTime, "Person Count for - " + pair.Key.ToString(), "", null, hhp.Key); foreach (var val in pair.Value) { jsp.Values.Add(val); } var sumfile = _fft.MakeFile <StreamWriter>("BodilyActivityLevel." + pair.Key + "." + householdKey.Key + ".json", "Bodily Activity Level for " + pair.Key + " in the household " + householdKey.Key, true, ResultFileID.BodilyActivityJsons, householdKey, TargetDirectory.Results, Repository.CalcParameters.InternalStepsize, CalcOption.BodilyActivityStatistics, null, null, pair.Key.ToString()); sumfile.Write(JsonConvert.SerializeObject(jsp, Formatting.Indented)); sumfile.Flush(); } _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass()); }
private void ActualFunctionCaller([CanBeNull][ItemNotNull] List <string> loadTypesToProcess) { //var now = DateTime.Now; //var step = 1; /* * if (repository.CalcParameters.IsSet(CalcOption.OverallSum)) { * _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass() + " - Overall Sum File"); * foreach (var calcLoadType in repository.LoadTypes) { * HouseDeviceProfileFileProcessor dpfp = new HouseDeviceProfileFileProcessor(_fft, repository.CalcParameters); * dpfp.ProcessSumFile(calcLoadType); * } * LogProcessingProgress(ref now, ref step, * CalcOptionHelper.CalcOptionDictionary[CalcOption.OverallSum]); * _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass() + " - Overall Sum File"); * }*/ { GeneralStepParameters gsp = new GeneralStepParameters(); foreach (var generalPostProcessingStep in _generalPostProcessingSteps) { if (generalPostProcessingStep.IsEnabled()) { generalPostProcessingStep.Run(gsp); } } } foreach (HouseholdKeyEntry keyEntry in _repository.HouseholdKeys) { HouseholdStepParameters gsp = new HouseholdStepParameters(keyEntry); var prios = _generalHouseholdSteps.Select(x => x.Priority).OrderBy(x => x).Distinct().ToList(); foreach (var i in prios) { var filteredSteps = _generalHouseholdSteps.Where(x => x.Priority == i).ToList(); foreach (var generalPostProcessingStep in filteredSteps) { if (generalPostProcessingStep.IsEnabled()) { generalPostProcessingStep.Run(gsp); } } } } /* * foreach (var householdKey in repository.HouseholdKeys) { * if (repository.CalcParameters.IsSet(CalcOption.ActivationFrequencies) && * repository.CalcObjectType == CalcObjectType.ModularHousehold && * repository.CalcParameters.IsSet(CalcOption.HouseholdPlan) && repository.CalcParameters.IsSet(CalcOption.ActionsLogfile)) { * _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass() + " - Household Plans"); * MakeHouseholdPlanResult mhpr = new MakeHouseholdPlanResult(repository.CalcParameters); * mhpr.Run(repository.affordanceEnergyUseFile.EnergyUseByHouseholdAffordanceAndLoadtype, * repository.householdNamesByKey[householdKey], repository.householdPlans, _fft, householdKey, * MakeActivationsPerFrequencies.AffordanceTaggingSetByPersonByTag, * MakeActivationsPerFrequencies.AffordanceTaggingSetByPersonByTagExecutioncount); * _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass() + " - Household Plans"); * } * }*/ // make totals per loadtype _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass() + " - Load Type Dependend"); RunLoadTypeDependend(loadTypesToProcess); //repository.efc, devices, calcLocations, autoDevices, loadTypes, deviceTaggingSets, allResults,persons, deviceNameToDeviceCategory, householdNamesByKey,carpetPlotColumnWidth); _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass() + " - Load Type Dependend"); }
protected override void PerformActualStep([JetBrains.Annotations.NotNull] IStepParameters parameters) { HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; if (hhp.Key.KeyType != HouseholdKeyType.Household) { return; } if (!Repository.CalcParameters.TransportationEnabled) { return; } var hhkey = hhp.Key.HHKey; ReadActivities(hhkey, out var statebyDevice, out var siteByDevice, out var socByDevice, out var drivingDistanceByDevice); foreach (var soc in socByDevice) { //state of charge JsonSumProfile jsp = new JsonSumProfile("State of Charge for " + soc.Key + " " + hhkey.Key, Repository.CalcParameters.InternalStepsize, Repository.CalcParameters.OfficialStartTime, "State of charge - " + soc.Key, "", null, hhp.Key); foreach (var entry in soc.Value) { if (entry.Time.DisplayThisStep) { jsp.Values.Add(entry.Val); } } var sumfile = _fft.MakeFile <StreamWriter>("Soc." + soc.Key + "." + hhkey.Key + ".json", "SOC Values for " + soc.Key + " in the household " + hhkey.Key, true, ResultFileID.JsonTransportSoc, hhkey, TargetDirectory.Results, Repository.CalcParameters.InternalStepsize, CalcOption.TansportationDeviceJsons, null, null, soc.Key); sumfile.Write(JsonConvert.SerializeObject(jsp, Formatting.Indented)); sumfile.Flush(); } foreach (var soc in drivingDistanceByDevice) { //driving distance JsonSumProfile jsp = new JsonSumProfile("Driving Distance for " + soc.Key + " " + hhkey.Key, Repository.CalcParameters.InternalStepsize, Repository.CalcParameters.OfficialStartTime, "Driving Distance - " + soc.Key, "", null, hhp.Key); foreach (var entry in soc.Value) { if (entry.Time.DisplayThisStep) { jsp.Values.Add(entry.Val); } } var sumfile = _fft.MakeFile <StreamWriter>("DrivingDistance." + soc.Key + "." + hhkey.Key + ".json", "Driving Distance for " + soc.Key + " in the household " + hhkey.Key, true, ResultFileID.JsonTransportDrivingDistance, hhkey, TargetDirectory.Results, Repository.CalcParameters.InternalStepsize, CalcOption.TansportationDeviceJsons, null, null, soc.Key); sumfile.Write(JsonConvert.SerializeObject(jsp, Formatting.Indented)); sumfile.Flush(); } foreach (var soc in statebyDevice) { //driving distance JsonEnumProfile jsp = new JsonEnumProfile("Car State for " + soc.Key + " " + hhkey.Key, Repository.CalcParameters.InternalStepsize, Repository.CalcParameters.OfficialStartTime, "Car State - " + soc.Key, "", null, hhp.Key); foreach (var entry in soc.Value) { if (entry.Time.DisplayThisStep) { jsp.Values.Add(entry.Category); } } var sumfile = _fft.MakeFile <StreamWriter>("Carstate." + soc.Key + "." + hhkey.Key + ".json", "Car State for " + soc.Key + " in the household " + hhkey.Key, true, ResultFileID.JsonTransportDeviceState, hhkey, TargetDirectory.Results, Repository.CalcParameters.InternalStepsize, CalcOption.TansportationDeviceJsons, null, null, soc.Key); sumfile.Write(JsonConvert.SerializeObject(jsp, Formatting.Indented)); sumfile.Flush(); } foreach (var soc in siteByDevice) { //driving distance JsonEnumProfile jsp = new JsonEnumProfile("Car Location for " + soc.Key + " " + hhkey.Key, Repository.CalcParameters.InternalStepsize, Repository.CalcParameters.OfficialStartTime, "Car Location - " + soc.Key, "", null, hhp.Key); foreach (var entry in soc.Value) { if (entry.Time.DisplayThisStep) { jsp.Values.Add(entry.Category); } } var sumfile = _fft.MakeFile <StreamWriter>("CarLocation." + soc.Key + "." + hhkey.Key + ".json", "Car Location for " + soc.Key + " in the household " + hhkey.Key, true, ResultFileID.JsonTransportDeviceLocation, hhkey, TargetDirectory.Results, Repository.CalcParameters.InternalStepsize, CalcOption.TansportationDeviceJsons, null, null, soc.Key); sumfile.Write(JsonConvert.SerializeObject(jsp, Formatting.Indented)); sumfile.Flush(); } }