private static CalcRepo PrepareCalculation([NotNull] Simulator sim, [NotNull] CalcStartParameterSet csps, [NotNull] ILifetimeScope scope, [NotNull] out CalcLoadTypeDtoDictionary dtoltdict, [NotNull] out DayLightStatus dls, [NotNull] out CalcVariableRepository variableRepository ) { CalcRepo calcRepo = scope.Resolve <CalcRepo>(); var inputDataLogger = scope.Resolve <IInputDataLogger>(); inputDataLogger.Save(Constants.GeneralHouseholdKey, calcRepo.CalcParameters); inputDataLogger.Save(Constants.GeneralHouseholdKey, csps.TemperatureProfile); dtoltdict = scope.Resolve <CalcLoadTypeDtoDictionary>(); var affordanceTaggingSetFactory = scope.Resolve <AffordanceTaggingSetFactory>(); var affordanceTaggingSets = affordanceTaggingSetFactory.GetAffordanceTaggingSets(sim); if (calcRepo.CalcParameters.Options.Contains(CalcOption.AffordanceTaggingSets)) { inputDataLogger.Save(affordanceTaggingSets); } calcRepo.FileFactoryAndTracker.RegisterGeneralHouse(); dls = scope.Resolve <DayLightStatus>(); if (calcRepo.CalcParameters.Options.Contains(CalcOption.DaylightTimesList)) { inputDataLogger.Save(Constants.GeneralHouseholdKey, dls); } variableRepository = scope.Resolve <CalcVariableRepository>(); return(calcRepo); }
public void Init(DayLightStatus daylightArray, int simulationSeed) { //_allProfiles = new Dictionary<int, CalcProfile>(); //var subhouseholdNumber = 1; if (_households == null) { throw new LPGException("Households was null"); } foreach (var chh in _households) { chh.Init(daylightArray, //"HH" + subhouseholdNumber, simulationSeed); /*var profiles = chh.CollectAllProfiles(); * foreach (var keyValuePair in profiles) { * if (!_allProfiles.ContainsKey(keyValuePair.Key)) { * _allProfiles.Add(keyValuePair.Key, keyValuePair.Value); * } * }*/ //subhouseholdNumber++; } }
public override void Run(HouseholdKey key, object o) { DayLightStatus dayLightStatus = (DayLightStatus)o; //List<EveryDayLightTimes> daylights = new List<EveryDayLightTimes>(); var startTimeStep = 0; if (!_calcParameters.ShowSettlingPeriodTime) { startTimeStep = _calcParameters.DummyCalcSteps; } SaveableEntry se = new SaveableEntry(key, ResultTableDefinition); se.AddField("Timestep", SqliteDataType.Integer); se.AddField("DateTime", SqliteDataType.Integer); se.AddField("Daylight", SqliteDataType.Bit); for (var i = startTimeStep; i < dayLightStatus.Status.Count; i++) { TimeStep ts = new TimeStep(i, _calcParameters); string timestamp = _dsc.MakeDateStringFromTimeStep(ts); se.AddRow(RowBuilder.Start("Timestep", ts.ExternalStep).Add("DateTime", timestamp).Add("Daylight", dayLightStatus.Status[i]).ToDictionary()); //EveryDayLightTimes edlt = new EveryDayLightTimes(timestamp,timestep, ); //daylights.Add(edlt); } _srls.SaveResultEntry(se); }
public void DumpHouseholdContentsToTextTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { using (var wd1 = new WorkingDir(Utili.GetCurrentMethodAndClass())) { var sim = new Simulator(db.ConnectionString) { MyGeneralConfig = { StartDateUIString = "01.01.2015", EndDateUIString = "02.01.2015", InternalTimeResolution = "00:01:00", ExternalTimeResolution = "00:15:00", RandomSeed = 5 } }; sim.MyGeneralConfig.ApplyOptionDefault(OutputFileDefault.NoFiles); sim.MyGeneralConfig.Enable(CalcOption.TotalsPerDevice); sim.MyGeneralConfig.CSVCharacter = ";"; //ConfigSetter.SetGlobalTimeParameters(sim.MyGeneralConfig); sim.Should().NotBeNull(); SimIntegrityChecker.Run(sim); CalcManagerFactory.DoIntegrityRun = false; var cmf = new CalcManagerFactory(); var calculationProfiler = new CalculationProfiler(); var csps = new CalcStartParameterSet(sim.GeographicLocations[0], sim.TemperatureProfiles[0], sim.ModularHouseholds[0], EnergyIntensityType.Random, false, null, LoadTypePriority.RecommendedForHouses, null, null, null, sim.MyGeneralConfig.AllEnabledOptions(), new DateTime(2015, 1, 1), new DateTime(2015, 1, 2), new TimeSpan(0, 1, 0), ";", 5, new TimeSpan(0, 15, 0), false, false, false, 3, 3, calculationProfiler, wd1.WorkingDirectory, false); var cm = cmf.GetCalcManager(sim, csps, false); //,, wd1.WorkingDirectory, sim.ModularHouseholds[0], false, //sim.TemperatureProfiles[0], sim.GeographicLocations[0], EnergyIntensityType.Random, version, //LoadTypePriority.RecommendedForHouses, null,null var dls = new DayLightStatus(new BitArray(100)); if (cm.CalcObject == null) { throw new LPGException("xxx"); } cm.CalcObject.Init(dls, 1); CalcManager.ExitCalcFunction = true; cm.CalcObject.DumpHouseholdContentsToText(); cm.Dispose(); db.Cleanup(); wd1.CleanUp(); } } }
public CalcManager([NotNull] string resultPath, int randomSeed, [NotNull] DayLightStatus lightNeededArray, [NotNull] CalcVariableRepository variableRepository, CalcRepo calcRepo) { _lightNeededArray = lightNeededArray; //_srls = srls; _randomSeed = randomSeed; //_fileVersion = fileVersion; //_calcHouseholdPlans = calcHouseholdPlans; //_affordanceTaggingSets = affordanceTaggingSets; //_deviceTaggingSets = deviceTaggingSets; _resultPath = resultPath; //_name = pName; _variableRepository = variableRepository; CalcRepo = calcRepo; }
public void RunDaylightSavingsLoggerTests() { using (WorkingDir wd = new WorkingDir(Utili.GetCurrentMethodAndClass())) { SqlResultLoggingService sqrls = new SqlResultLoggingService(wd.WorkingDirectory); BitArray ba = new BitArray(365 * 24 * 60); for (int i = 0; i < ba.Length; i++) { if (i % 3 == 0) { ba[i] = true; } } DayLightStatus dls = new DayLightStatus(ba); CalcParameters calcParameters = CalcParametersFactory.MakeGoodDefaults(); DaylightTimesLogger dsl = new DaylightTimesLogger(sqrls, calcParameters); dsl.Run(Constants.GeneralHouseholdKey, dls); wd.CleanUp(); } }
//public Dictionary<int, CalcProfile> AllProfiles => _allProfiles; public void Init(DayLightStatus daylightArray, int simulationSeed) { _simulationSeed = simulationSeed; _daylightArray = daylightArray; if (_calcRepo.Logfile == null) { throw new LPGException("logfile was null"); } if (_persons == null) { throw new LPGException("_persons was null"); } _calcRepo.FileFactoryAndTracker.RegisterHousehold(_householdKey, Name, HouseholdKeyType.Household, _description, null, null); //_lf.TransportationLogFile.SetTransportationHandler(TransportationHandler); if (_calcRepo.CalcParameters.IsSet(CalcOption.DesiresLogfile)) { if (_calcRepo.Logfile.DesiresLogfile == null) { throw new LPGException("Desires logfile was null"); } foreach (var p in _persons) { _calcRepo.Logfile.DesiresLogfile.RegisterDesires(p.PersonDesires.Desires.Values); _calcRepo.Logfile.DesiresLogfile.RegisterDesires(p.SicknessDesires.Desires.Values); } } CalcConsistencyCheck.CheckConsistency(this, _calcRepo.CalcParameters); if (_calcRepo.CalcParameters.IsSet(CalcOption.VariableLogFile)) { //_variableLogfile = new VariableLogfile(Srls,_calcVariableRepository); //_variableLogfile = new VariableLogfile(_lf, _householdKey,_calcParameters); } if (_autoDevs == null) { throw new LPGException("Autodevs should not be null"); } if (_devices == null) { throw new LPGException("_devices should not be null"); } MatchAutonomousDevicesWithNormalDevices(_autoDevs, _devices); //if (_calcParameters.IsSet(CalcOption.HouseholdContents)) { // SaveBridgeDays(); //SaveVacationDays(); //} var affordances = 0; foreach (var calcLocation in Locations) { affordances += calcLocation.Affordances.Count; } if (affordances == 0) { throw new LPGException( "Somehow the number of affordances is 0 after initializing, which should never happen. Please report."); } _startSimulation = DateTime.Now; }
public void TestInterruptionTest() { using var wd = new WorkingDir(Utili.GetCurrentMethodAndClass()); DateTime startdate = new DateTime(2018, 1, 1); DateTime enddate = startdate.AddMinutes(100); CalcParameters calcParameters = CalcParametersFactory.MakeGoodDefaults().SetStartDate(startdate).SetEndDate(enddate).SetSettlingDays(0).EnableShowSettlingPeriod().DisableShowSettlingPeriod().SetAffordanceRepetitionCount(1); //var r = new Random(1); //var nr = new NormalRandom(0, 1, r); var desire1 = new CalcDesire("desire1", 1, 0.5m, 4, 1, 1, 60, -1, null, "", ""); var lt = new CalcLoadType("calcLoadtype1", "kwh", "W", 1, true, Guid.NewGuid().ToStrGuid()); //var variableOperator = new VariableOperator(); using var fft = new FileFactoryAndTracker(wd.WorkingDirectory, "blub", wd.InputDataLogger); var key = new HouseholdKey("HH1"); wd.InputDataLogger.AddSaver(new ActionEntryLogger(wd.SqlResultLoggingService)); wd.InputDataLogger.AddSaver(new ColumnEntryLogger(wd.SqlResultLoggingService)); wd.InputDataLogger.AddSaver(new HouseholdKeyLogger(wd.SqlResultLoggingService)); wd.InputDataLogger.AddSaver(new ResultFileEntryLogger(wd.SqlResultLoggingService)); wd.InputDataLogger.AddSaver(new LocationEntryLogger(wd.SqlResultLoggingService)); fft.RegisterHousehold(key, "hh1", HouseholdKeyType.Household, "desc", null, null); fft.RegisterHousehold(Constants.GeneralHouseholdKey, "General", HouseholdKeyType.General, "Desc", null, null); //SqlResultLoggingService srls = new SqlResultLoggingService(wd.WorkingDirectory); DateStampCreator dsc = new DateStampCreator(calcParameters); using OnlineLoggingData old = new OnlineLoggingData(dsc, wd.InputDataLogger, calcParameters); using var lf = new LogFile(calcParameters, fft); var cloc = new CalcLocation("loc1", Guid.NewGuid().ToStrGuid()); BitArray isSick = new BitArray(calcParameters.InternalTimesteps); BitArray isOnVacation = new BitArray(calcParameters.InternalTimesteps); CalcPersonDto calcPerson = CalcPersonDto.MakeExamplePerson(); var odap = new OnlineDeviceActivationProcessor(old, calcParameters, fft); Random rnd = new Random(); NormalRandom nr = new NormalRandom(0, 1, rnd); using CalcRepo calcRepo = new CalcRepo(lf: lf, odap: odap, calcParameters: calcParameters, rnd: rnd, normalRandom: nr, onlineLoggingData: old); var cp = new CalcPerson(calcPerson, cloc, isSick, isOnVacation, calcRepo); //"blub", 1, 1, r,20, PermittedGender.Male, lf, "HH1", cloc,"traittag","hhname0", calcParameters,isSick, Guid.NewGuid().ToStrGuid()); cp.PersonDesires.AddDesires(desire1); cp.SicknessDesires.AddDesires(desire1); var deviceLoads = new List <CalcDeviceLoad> { new CalcDeviceLoad("devload1", 1, lt, 100, 1) }; var devCategoryGuid = Guid.NewGuid().ToStrGuid(); CalcDeviceDto cdd1 = new CalcDeviceDto("cdevice1", devCategoryGuid, key, OefcDeviceType.Device, "category", "", Guid.NewGuid().ToStrGuid(), cloc.Guid, cloc.Name); var cdev1 = new CalcDevice(deviceLoads, cloc, cdd1, calcRepo); CalcDeviceDto cdd2 = new CalcDeviceDto("cdevice2", devCategoryGuid, key, OefcDeviceType.Device, "category", "", Guid.NewGuid().ToStrGuid(), cloc.Guid, cloc.Name); var cdev2 = new CalcDevice(deviceLoads, cloc, cdd2, calcRepo); CalcDeviceDto cdd3 = new CalcDeviceDto("cdevice3", devCategoryGuid, key, OefcDeviceType.Device, "category", "", Guid.NewGuid().ToStrGuid(), cloc.Guid, cloc.Name); var cdev3 = new CalcDevice(deviceLoads, cloc, cdd3, calcRepo); cloc.Devices.Add(cdev1); cloc.Devices.Add(cdev2); cloc.Devices.Add(cdev3); var daylight = new BitArray(100); daylight.SetAll(true); DayLightStatus dls = new DayLightStatus(daylight); double[] newValues = { 1, 1, 1.0, 1, 1, 1, 1, 1 }; var newList = new List <double>(newValues); var cprof = new CalcProfile("cp1", Guid.NewGuid().ToStrGuid(), newList, ProfileType.Relative, "bla"); var desires = new List <CalcDesire> { desire1 }; var color = new ColorRGB(255, 0, 0); CalcVariableRepository crv = new CalcVariableRepository(); BitArray isBusy = new BitArray(calcParameters.InternalTimesteps, false); var aff1 = new CalcAffordance("aff1", cprof, cloc, false, desires, 1, 100, PermittedGender.All, false, 0, color, "aff category", true, false, new List <CalcAffordanceVariableOp>(), new List <VariableRequirement>(), ActionAfterInterruption.GoBackToOld, "bla", 100, false, "", Guid.NewGuid().ToStrGuid(), crv , new List <CalcAffordance.DeviceEnergyProfileTuple>(), isBusy, BodilyActivityLevel.Low, calcRepo); aff1.AddDeviceTuple(cdev1, cprof, lt, 0, calcParameters.InternalStepsize, 1, 1); cloc.AddAffordance(aff1); var aff2 = new CalcAffordance("aff2", cprof, cloc, false, desires, 1, 100, PermittedGender.All, false, 0, color, "aff category", false, false, new List <CalcAffordanceVariableOp>(), new List <VariableRequirement>(), ActionAfterInterruption.GoBackToOld, "bla", 100, false, "", Guid.NewGuid().ToStrGuid(), crv , new List <CalcAffordance.DeviceEnergyProfileTuple>(), isBusy, BodilyActivityLevel.Low, calcRepo); aff2.AddDeviceTuple(cdev2, cprof, lt, 0, calcParameters.InternalStepsize, 1, 1); cloc.AddAffordance(aff2); var clocs = new List <CalcLocation> { cloc }; BitArray isBusySub = new BitArray(calcParameters.InternalTimesteps, false); var calcSubAffordance = new CalcSubAffordance("subaffname", cloc, desires, 0, 100, 1, PermittedGender.All, "subaff", false, true, aff1, new List <CalcAffordanceVariableOp>(), 100, "testing", Guid.NewGuid().ToStrGuid(), isBusySub, crv, BodilyActivityLevel.Low, calcRepo); aff2.SubAffordances.Add(calcSubAffordance); calcSubAffordance.SetDurations(2); var persons = new List <CalcPerson> { cp }; for (var i = 0; i < 100; i++) { TimeStep ts = new TimeStep(i, 0, true); cp.NextStep(ts, clocs, dls, new HouseholdKey("hh1"), persons, 1); } //wd.CleanUp(); }