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));
        }
Beispiel #5
0
        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());
        }
Beispiel #7
0
        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");
        }
Beispiel #8
0
        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();
            }
        }