protected override void RunActualProcess([NotNull] ScenarioSliceParameters parameters) { var dbDstProfiles = Services.SqlConnection.GetDatabaseConnection(Stage.ProfileGeneration, parameters); var dbSrcProfiles = Services.SqlConnection.GetDatabaseConnection(Stage.ProfileImport, Constants.PresentSlice).Database; var vdewvals = dbSrcProfiles.Fetch <VDEWProfileValues>(); var dbHouses = Services.SqlConnection.GetDatabaseConnection(Stage.Houses, parameters).Database; var houses = dbHouses.Fetch <House>(); Prosumer.ClearProsumerTypeFromDB(Services.SqlConnection.GetDatabaseConnection(Stage.ProfileGeneration, parameters), ProsumerType.Household, TableType.HousePart); var slp = new SLPProvider(parameters.DstYear); //var houses = dbHouses.Fetch<House>(); var households = dbHouses.Fetch <Household>(); //var trafoKreise = dbDstProfiles.Database.Fetch<TrafoKreisResult>(); Log(MessageType.Info, "making " + households.Count + " households"); var sa = Prosumer.GetSaveableEntry(dbDstProfiles, TableType.HousePart); // && idx < 20 double totalHouseholdEnergy = 0; double totalProfileEnergy = 0; for (var idx = 0; idx < households.Count; idx++) { var household = households[idx]; House house = houses.Single(x => x.HouseGuid == household.HouseGuid); Hausanschluss ha = house.Hausanschluss.Single(x => x.HausanschlussGuid == household.HausAnschlussGuid); // ReSharper disable once UseObjectOrCollectionInitializer var pa = new Prosumer(household.HouseGuid, household.StandortIDsAsJson, ProsumerType.Household, household.HouseholdGuid, household.FinalIsn, household.HausAnschlussGuid, ha.ObjectID); pa.Profile = slp.Run(vdewvals, "H0", household.LowVoltageYearlyTotalElectricityUse); pa.SumElectricityPlanned = household.LowVoltageYearlyTotalElectricityUse; sa.RowEntries.Add(pa.GetRow()); totalHouseholdEnergy += pa.SumElectricityPlanned; totalProfileEnergy += pa.Profile?.EnergySum() ?? 0; if (sa.RowEntries.Count > 1000) { sa.SaveDictionaryToDatabase(); } } sa.SaveDictionaryToDatabase(); if (Math.Abs(totalHouseholdEnergy - totalProfileEnergy) > 1) { throw new FlaException("energy sums not equal between planned energy and energy in profiles"); } Info("Total Household energy: " + totalHouseholdEnergy); /* * var loadedProsumers = Prosumer.LoadProsumers(dbDstProfiles, TableType.HousePart); * foreach (Prosumer loadedProsumer in loadedProsumers) { * Log(MessageType.Info,loadedProsumer.Name + " - " + loadedProsumer.SumElectricityFromProfile + " - " + loadedProsumer.Profile?.Values.Sum() ); * }*/ //dbDstProfiles.Database.CompleteTransaction(); }
protected override void RunChartMaking() { var dbImport = Services.SqlConnection.GetDatabaseConnection(Stage.ProfileImport, Constants.PresentSlice); var slpValues = dbImport.Database.Fetch <VDEWProfileValues>(); var sp = new SLPProvider(2017); var pH0 = sp.Run(slpValues, "H0", 1000); var filename = MakeAndRegisterFullFilename("H0.png", "SLPTests", "SlpTests", Constants.PresentSlice); Services.PlotMaker.MakeLineChart(filename, "Leistung", pH0); var pG0 = sp.Run(slpValues, "G0", 1000); filename = MakeAndRegisterFullFilename("G0.png", "SLPTests", "SlpTests", Constants.PresentSlice); Services.PlotMaker.MakeLineChart(filename, "Leistung", pG0); var pG1 = sp.Run(slpValues, "G1", 1000); filename = MakeAndRegisterFullFilename("G1.png", "SLPTests", "SlpTests", Constants.PresentSlice); Services.PlotMaker.MakeLineChart(filename, "Leistung", pG1); }
protected override void RunChartMaking() { var dbRaw = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.Raw, Constants.PresentSlice); var slpValues = dbRaw.Fetch <VDEWProfileValue>(); var feiertage = dbRaw.Fetch <FeiertagImport>(); var sp = new SLPProvider(2017, slpValues, feiertage); var pH0 = sp.Run("H0", 1000); var filename = MakeAndRegisterFullFilename("H0.png", Constants.PresentSlice); Services.PlotMaker.MakeLineChart(filename, "Leistung", pH0); var pG0 = sp.Run("G0", 1000); filename = MakeAndRegisterFullFilename("G0.png", Constants.PresentSlice); Services.PlotMaker.MakeLineChart(filename, "Leistung", pG0); var pG1 = sp.Run("G1", 1000); filename = MakeAndRegisterFullFilename("G1.png", Constants.PresentSlice); Services.PlotMaker.MakeLineChart(filename, "Leistung", pG1); }
protected override void RunActualProcess([NotNull] ScenarioSliceParameters parameters) { var dbSrcProfiles = Services.SqlConnection.GetDatabaseConnection(Stage.ProfileImport, Constants.PresentSlice).Database; var vdewvals = dbSrcProfiles.Fetch <VDEWProfileValues>(); var dbHouses = Services.SqlConnection.GetDatabaseConnection(Stage.Houses, parameters).Database; var dbDstProfiles = Services.SqlConnection.GetDatabaseConnection(Stage.ProfileGeneration, parameters); Prosumer.ClearProsumerTypeFromDB(Services.SqlConnection.GetDatabaseConnection(Stage.ProfileGeneration, parameters), ProsumerType.Household, TableType.HousePart); var slp = new SLPProvider(parameters.DstYear); //var hausAnschlüsse = dbHouses.Fetch<Hausanschluss>(); //var houses = dbHouses.Fetch<House>(); var buisineses = dbHouses.Fetch <BusinessEntry>(); //double totalHouseholdEnergy = 0; //double totalProfileEnergy = 0; var sa = Prosumer.GetSaveableEntry(dbDstProfiles, TableType.HousePart); Log(MessageType.Info, "making " + buisineses.Count + " businesses"); foreach (var be in buisineses) { // Hausanschluss ha = hausAnschlüsse.Single(x => x.HausanschlussGuid == be.HausAnschlussGuid); var pa = new Prosumer(be.HouseGuid, be.StandortIDsAsJson, ProsumerType.BusinessNoLastgang, be.BusinessGuid, be.FinalIsn, be.HausAnschlussGuid, "") { Profile = slp.Run(vdewvals, "G0", be.LowVoltageYearlyTotalElectricityUse), SumElectricityPlanned = be.LowVoltageYearlyTotalElectricityUse }; //totalHouseholdEnergy += pa.SumElectricityPlanned; //totalProfileEnergy += (double)pa.Profile?.EnergySum(); sa.AddRow(pa); } /*var trafoKreise = dbDstProfiles.Database.Fetch<TrafoKreisResult>(); * double plannedHouseholdEnergy = trafoKreise.Sum(x => x.BusinessEnergy); * if (Math.Abs(plannedHouseholdEnergy - totalHouseholdEnergy) > 1) * { * throw new Exception("energy sums are not equal between planned energy and allocated household energy"); * } * * if (Math.Abs(plannedHouseholdEnergy - totalProfileEnergy) > 1) * { * throw new Exception("energy sums not equal between planned energy and energy in profiles"); * }*/ sa.SaveDictionaryToDatabase(); }