Пример #1
0
        protected override void RunActualProcess()
        {
            string                  fn          = CombineForRaw("stadtprofil_15min_auflösung.csv");
            const string            profilename = "01-bkwlast";
            var                     bkwRaw      = ZZ_ProfileImportHelper.ReadCSV(fn, profilename);
            JsonSerializableProfile jsp         = new JsonSerializableProfile(bkwRaw);
            var                     bkp         = new BkwProfile {
                Profile = jsp,
                Name    = "BKW übergabe"
            };

            var db = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.Raw, Constants.PresentSlice);

            db.RecreateTable <BkwProfile>();
            db.BeginTransaction();
            db.Save(bkp);
            db.CompleteTransaction();
        }
        public void Run()
        {
            var          logger    = new Logging.Logger(null);
            var          pm        = new PlotMaker(new MapDrawer(logger), logger, null);
            const string targetDir = @"c:\work\simzukunft\Stadtprofile";
            //read profiles
            const string filename    = @"U:\SimZukunft\StadtProfil\BKWLast_1h.csv";
            const string profilename = "01-bkwlast";
            var          bkwRaw      = ZZ_ProfileImportHelper.ReadCSV(filename, profilename);
            var          bkwScaled   = bkwRaw.ScaleToTargetSum(103_000_000, "BKW");

            VisualizeOneProfile(targetDir, bkwScaled, pm, false);
            const string filename2    = @"U:\SimZukunft\StadtProfil\PVEinspeisung_1h.csv";
            const string profilename2 = "01-pv";
            var          evProfile    = Profile.MakeConstantProfile(15_000_000, "EV", Profile.ProfileResolution.Hourly);
            var          pv           = ZZ_ProfileImportHelper.ReadCSV(filename2, profilename2);

            VisualizeOneProfile(targetDir, pv, pm, false);
            //scaling

            const string filename3    = @"U:\SimZukunft\StadtProfil\temperaturen.csv";
            const string profilename3 = "01-temperaturen";
            var          temperaturen = ZZ_ProfileImportHelper.ReadCSV(filename3, profilename3);

            const string filename4    = @"U:\SimZukunft\StadtProfil\pv_einspeisung_pvgis_2016_35_süd.csv";
            const string profilename4 = "pvgis_süd_35";
            var          pvgis35      = ZZ_ProfileImportHelper.ReadCSV(filename4, profilename4);

            const string filename5    = @"U:\SimZukunft\StadtProfil\pv_einspeisung_pvgis_2016_90_süd.csv";
            const string profilename5 = "pvgis_süd_90";
            var          pvgis90      = ZZ_ProfileImportHelper.ReadCSV(filename5, profilename5);


            VisualizeOneProfile(targetDir, temperaturen, pm, false);

            var degreeDayPowerProfile = temperaturen.MakeDegreeDayPowerProfile("02-HeatingDegreedays", 15, 22_000_000);

            var coolingdegreeDayPowerProfile = temperaturen.MakeCoolingDegreeHours("02-CoolingDegreeHours", 20, 15_000_000);

            VisualizeOneProfile(targetDir, coolingdegreeDayPowerProfile, pm, false);
            var summedLoadProfile = bkwScaled.Add(evProfile, "with ev").Add(degreeDayPowerProfile, "with heating").Add(coolingdegreeDayPowerProfile, "with cooling");
            var bkwsum            = summedLoadProfile.EnergySum();
            var scaledPv1         = pv.ScaleToTargetSum(bkwsum, "02-PV Scaled");

            var scaledPv35 = pvgis35.ScaleToTargetSum(bkwsum, "pvgis_süd_35_scaled");

            VisualizeOneProfile(targetDir, scaledPv35, pm, false);
            var scaledPv90 = pvgis90.ScaleToTargetSum(bkwsum, "pvgis_süd_90_scaled");

            VisualizeOneProfile(targetDir, scaledPv90, pm, false);
            VisualizeOneProfile(targetDir, degreeDayPowerProfile, pm, false);
            const string targetdir1 = @"c:\work\simzukunft\Stadtprofile\measured";

            AnalyzePVProfile(bkwScaled, scaledPv1, degreeDayPowerProfile, evProfile, coolingdegreeDayPowerProfile, targetdir1, pm, summedLoadProfile);

            const string targetdir2 = @"c:\work\simzukunft\Stadtprofile\35süd";

            AnalyzePVProfile(bkwScaled, scaledPv35, degreeDayPowerProfile, evProfile, coolingdegreeDayPowerProfile, targetdir2, pm, summedLoadProfile);
            const string targetdir3 = @"c:\work\simzukunft\Stadtprofile\90süd";

            AnalyzePVProfile(bkwScaled, scaledPv90, degreeDayPowerProfile, evProfile, coolingdegreeDayPowerProfile, targetdir3, pm, summedLoadProfile);
            //var withStorage50KWh = residualAfterPv.IntegrateStorage(50 * 4000, "06-50kwhStorage", out var storageValues50Kwh);
            //VisualizeOneProfile(withStorage50KWh, pm, true);
            //VisualizeOneProfile(storageValues50Kwh, pm, false);
            //var onlypositiveBattery50Kwh = withStorage50KWh.GetOnlyPositive("06-50kwhBatterly only positive");
            //VisualizeOneProfile(onlypositiveBattery50Kwh, pm, false);

            //level target for 10 kWh
            //var targetLoad = FindMinimumTargetLoad(summedLoadProfile, residualAfterPv,10);
            //var leveledProfile =residualAfterPv.IntegrateStorageWithAdjustedCurrentValue(20 * 4000,"07-20kwhStoragePredictive-target-" + targetLoad,out var _, targetLoad);
            //VisualizeOneProfile(leveledProfile, pm, true);
            //VisualizeOneProfile(leveledProfile.GetOnlyPositive("07-20kwh_predicitive_onlypositive"), pm, true);

            //look at minimum power draw over different storage sizes
            //Profile minimumTargetLoads = new Profile("08-MinimumTargetLoads");
            //double maxLoad = summedLoadProfile.Values.Max();
            //for (int i = 0; i < 3000; i+=10) {
            //var targetLoad1 = FindMinimumTargetLoad(summedLoadProfile, residualAfterPv,i);
            //double relativeLoad = targetLoad1 / maxLoad;
            //minimumTargetLoads.Values.Add(relativeLoad);
            //}
            //VisualizeOneProfile(minimumTargetLoads, pm, true);

            pm.Finish();
        }