Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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();
        }