public void TestParallelLaunch() { WorkingDir wd = new WorkingDir(Utili.GetCurrentMethodAndClass()); ParallelJsonLauncher.CopyAll(DatabaseSetup.AssemblyDirectory, wd.WorkingDirectory); using (DatabaseSetup db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { Logger.Info("Assembly directory: " + DatabaseSetup.AssemblyDirectory); Directory.SetCurrentDirectory(wd.WorkingDirectory); HouseCreationAndCalculationJob hcj = new HouseCreationAndCalculationJob(); Simulator sim = new Simulator(db.ConnectionString); JsonCalcSpecification cspec = JsonCalcSpecification.MakeDefaultsForTesting(); cspec.DefaultForOutputFiles = OutputFileDefault.OnlySums; cspec.CalcOptions = new List <CalcOption>(); cspec.CalcOptions.Add(CalcOption.SumProfileExternalEntireHouse); hcj.CalcSpec = cspec; MakeSingleHouse(cspec, wd, hcj, sim.Houses[0], "house1"); MakeSingleHouse(cspec, wd, hcj, sim.Houses[1], "house2"); var fn = wd.Combine("profilegenerator.db3"); hcj.PathToDatabase = fn; HouseJobSerializer.WriteJsonToFile(wd.Combine("hj2.json"), hcj); File.Copy(db.FileName, fn, true); } ParallelJsonLauncher.ThrowOnInvalidFile = true; ParallelJsonLauncher.ParallelJsonLauncherOptions options = new ParallelJsonLauncher.ParallelJsonLauncherOptions(); options.JsonDirectory = wd.WorkingDirectory; ParallelJsonLauncher.LaunchParallel(options); //wd.CleanUp(1); }
private static void MakeSingleHouse([JetBrains.Annotations.NotNull] JsonCalcSpecification cspec, [JetBrains.Annotations.NotNull] WorkingDir wd, [JetBrains.Annotations.NotNull] HouseCreationAndCalculationJob hcj, [JetBrains.Annotations.NotNull] House house1, string housename) { cspec.OutputDirectory = housename; if (cspec.OutputDirectory == null) { throw new LPGException("Output directory was null"); } var dirtodelete = wd.Combine(cspec.OutputDirectory); if (Directory.Exists(dirtodelete)) { Directory.Delete(dirtodelete, true); } hcj.House = house1.MakeHouseData(); HouseJobSerializer.WriteJsonToFile(wd.Combine(housename + ".json"), hcj); }
public static void CreateExampleHouseJob([NotNull] string connectionString) { const string relativePathHousejobs = "Example\\HouseJobs"; DirectoryInfo diHouseJobs = new DirectoryInfo(relativePathHousejobs); if (!diHouseJobs.Exists) { diHouseJobs.Create(); } const string relativePathGuids = "Example\\GuidLists"; DirectoryInfo diGuids = new DirectoryInfo(relativePathGuids); if (!diGuids.Exists) { diGuids.Create(); } Simulator sim = new Simulator(connectionString); HouseData houseData1 = new HouseData(Guid.NewGuid().ToStrGuid(), "HT01", 20000, 10000, "MyFirstHouse"); HouseholdData hhd1 = new HouseholdData(Guid.NewGuid().ToString(), "My First Household, template randomly chosen based on persons", null, null, null, new List <TransportationDistanceModifier>(), HouseholdDataSpecificationType.ByPersons); HouseholdDataPersonSpecification personSpec = new HouseholdDataPersonSpecification(new List <PersonData>() { new PersonData(25, Gender.Male) }); hhd1.HouseholdDataPersonSpec = personSpec; houseData1.Households.Add(hhd1); HouseholdData hhd2 = new HouseholdData(Guid.NewGuid().ToString(), "My Second Household (with transportation, template defined by name )", sim.ChargingStationSets[0].GetJsonReference(), sim.TransportationDeviceSets[0].GetJsonReference(), sim.TravelRouteSets[0].GetJsonReference(), null, HouseholdDataSpecificationType.ByTemplateName); hhd2.HouseholdTemplateSpec = new HouseholdTemplateSpecification("CHR01"); houseData1.Households.Add(hhd2); HouseData houseData2 = new HouseData(Guid.NewGuid().ToStrGuid(), "HT02", 20000, 10000, "MySecondHouse"); HouseholdData hhd3 = new HouseholdData(Guid.NewGuid().ToString(), "My Third Household, using predefined household", null, null, null, null, HouseholdDataSpecificationType.ByHouseholdName); hhd3.HouseholdNameSpec = new HouseholdNameSpecification(sim.ModularHouseholds[0].GetJsonReference()); houseData2.Households.Add(hhd3); HouseholdData hhd4 = new HouseholdData(Guid.NewGuid().ToString(), "My Fourth Household", null, null, null, null, HouseholdDataSpecificationType.ByPersons); hhd4.HouseholdDataPersonSpec = new HouseholdDataPersonSpecification(new List <PersonData>() { new PersonData(75, Gender.Male), new PersonData(74, Gender.Female) }); houseData2.Households.Add(hhd4); var calculationSettings = new JsonCalcSpecification { StartDate = new DateTime(2019, 1, 1), EndDate = new DateTime(2019, 1, 3), DeleteDAT = true, DefaultForOutputFiles = OutputFileDefault.OnlySums }; if (calculationSettings.CalcOptions == null) { throw new LPGException("error"); } calculationSettings.CalcOptions.Add(CalcOption.HouseSumProfilesFromDetailedDats); //calculationSettings.CalcOptions.Add(CalcOption.OverallSum.ToString()); calculationSettings.CalcOptions.Add(CalcOption.SumProfileExternalEntireHouse); calculationSettings.CalcOptions.Add(CalcOption.SumProfileExternalIndividualHouseholds); calculationSettings.LoadtypesForPostprocessing?.Add("Electricity"); calculationSettings.CalculationName = "My Comment"; calculationSettings.ExternalTimeResolution = "00:15:00"; calculationSettings.InternalTimeResolution = "00:01:00"; calculationSettings.LoadTypePriority = LoadTypePriority.RecommendedForHouses; calculationSettings.TemperatureProfile = sim.TemperatureProfiles[0].GetJsonReference(); calculationSettings.GeographicLocation = sim.GeographicLocations[0].GetJsonReference(); Logger.Info("--------"); Logger.Info("Writing example file and additional data file that you might need."); HouseCreationAndCalculationJob hj = new HouseCreationAndCalculationJob("scenario", "year", "districtname", HouseDefinitionType.HouseData); hj.House = houseData1; hj.CalcSpec = calculationSettings; hj.CalcSpec.OutputDirectory = "Example1-Results"; HouseJobSerializer.WriteJsonToFile(Path.Combine(diHouseJobs.FullName, "ExampleHouseJob-1.json"), hj); hj.House = houseData2; hj.CalcSpec.OutputDirectory = "Example2-Results"; HouseJobSerializer.WriteJsonToFile(Path.Combine(diHouseJobs.FullName, "ExampleHouseJob-2.json"), hj); Logger.Info("Finished writing example house jobs..."); WriteGuidList("GuidsForAllHouseholds.csv", sim.ModularHouseholds.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllHouses.csv", sim.Houses.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllChargingStationSets.csv", sim.ChargingStationSets.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllDeviceSelections.csv", sim.DeviceSelections.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllGeographicLocations.csv", sim.GeographicLocations.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllTemperatureProfiles.csv", sim.TemperatureProfiles.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllTransportationDeviceSets.csv", sim.TransportationDeviceSets.It.Select(x => (DBBase)x).ToList(), diGuids); WriteGuidList("GuidsForAllTravelRouteSets.csv", sim.TravelRouteSets.It.Select(x => (DBBase)x).ToList(), diGuids); }