#region GetOptAnaCombine //IStation.Service.ScheduleRequest _service_schedule_request = new(); //IStation.Service.ScheduleScada _service_schedule_scada = new(); //IStation.Service.ScheduleRule _service_schedule_rule = new(); //IStation.Service.ScheduleConclusion _service_schedule_conclusion = new(); //IStation.Service.SchedulePump _service_schedule_pump = new(); //IStation.Service.Station _service_station = new(); //IStation.Service.ScheduleConfig _service_schedule_config = new(); //var station_info = _service_station.Get(); ////double target_flow1 = 22930.774; //double target_flow1 = 24759.909; //double target_flow2 = 39599.2; ////double target_head1 = IStation.Curve.PumpCalculateHelper.Mpa2M(0.2892); //double target_head1 = IStation.Curve.PumpCalculateHelper.Mpa2M(0.2853); //double target_head2 = IStation.Curve.PumpCalculateHelper.Mpa2M(0.1756); //GlobalHelper.GetRealTimeZyScadaList(out List zy_scada_list, true); //var station1 = station_info.Station1; //var station2 = station_info.Station2; //var station1_same_type_flag_group_first = GlobalHelper.Station1SameTypeFlagGroupFirst; //var station2_same_type_flag_group_first = GlobalHelper.Station2SameTypeFlagGroupFirst; //var station1_schedule_config = _service_schedule_config.GetStation1(); //var station2_schedule_config = _service_schedule_config.GetStation2(); //var station1_flag_list = GlobalHelper.Station1FlagList; //var station2_flag_list = GlobalHelper.Station2FlagList; //GlobalHelper.GetStationOpenFlagList(zy_scada_list, out List station1_open_flag_list, out List station2_open_flag_list); //GlobalHelper.GetFlagInletWaterLevelDict(zy_scada_list, out Dictionary station1_flag_inlet_water_level_dict, out Dictionary station2_flag_inlet_water_level_dict); ////var helper = new ScheduleHelper_Update(); //var helper = new IStation.Algorithm.ScheduleHelper(); //helper.Initial(station1_open_flag_list, station1_schedule_config); ////var optimal_combine1 = helper.Calc(station1, station1_same_type_flag_group_first, station1_flag_inlet_water_level_dict, target_flow1, target_head1); ////var a = optimal_combine1; //var optimal_test = helper.GetOptAnaCombine(station1, station1_same_type_flag_group_first, station1_flag_inlet_water_level_dict, target_flow1, target_head1); #endregion #region 模型单时刻验证 //IStation.HydraulicModelValidationHelper.Execute(); #endregion #region 模型历史数据验证 //using IStation; //IStation.ConfigHelper.DeleteDataBase(IStation.Settings.ParasHelper.DataBase.SQLite.ScheduleConnectString); //IStation.ConfigHelper.DeleteDataBase(IStation.Settings.ParasHelper.DataBase.SQLite.HydraulicConnectString); //IStation.ConfigHelper.InitScheduleDB(); //IStation.ConfigHelper.InitHydraulicDB(); //IStation.HistoryScadaValidHelper.Analysis(); #endregion #region 模型历史数据偏差统计 //var minQ = 5000; //var maxQ = 140000; //var spaceQ = 2500; //IStation.HistoryScadaValidHelper.Statistics( // minQ, // maxQ, // spaceQ, // out List avg_statistics_station1_vm_list, // out List avg_statistics_station2_vm_list); //var AvgStatisticsS1ViewModelList_json = Yw.JsonHelper.Object2FormatJson(avg_statistics_station1_vm_list); //var AvgStatisticsS2ViewModelList_json = Yw.JsonHelper.Object2FormatJson(avg_statistics_station2_vm_list); //File.WriteAllText("D:\\AvgStatisticsS1ViewModelList.json", AvgStatisticsS1ViewModelList_json); //File.WriteAllText("D:\\AvgStatisticsS2ViewModelList.json", AvgStatisticsS2ViewModelList_json); #endregion #region 单泵累计运行时长统计 using IStation; var is_zy_scada_debug = true; GlobalHelper.GetRealTimeZyScadaList(out List zy_scada_list, is_zy_scada_debug); GlobalHelper.GetStationOpenFlagList(zy_scada_list, out List station1_open_flag_list, out List station2_open_flag_list); Dictionary station1_flag_cumulative_run_time_dict = new() { { 11, 690.1 }, { 12, 718.8 }, { 13, 0 }, { 14, 690.1 }, { 15, 69.6 }, { 16, 396 }, { 17, 718.8 }, { 18, 0 } }; Dictionary station2_flag_cumulative_run_time_dict = new() { { 21, 0 }, { 22, 521 }, { 23, 716 }, { 24, 198 }, { 25, 415 }, { 26, 435 }, { 27, 92 } }; var config = new IStation.Service.ScheduleConfig().Get(); var same_section_flag_combine_list1 = config.Station1.SameSectionFlagCombineList; var must_open_flag_list1 = config.Station1.MustOpenFlagList; var must_close_flag_list1 = config.Station1.MustCloseFlagList; var forbidden_flag_combine_list1 = config.Station1.ForbiddenFlagCombineList; var associative_flag_combine_list1 = config.Station1.AssociativeFlagCombineList; var same_section_flag_combine_list2 = config.Station2.SameSectionFlagCombineList; var must_open_flag_list2 = config.Station2.MustOpenFlagList; var must_close_flag_list2 = config.Station2.MustCloseFlagList; var forbidden_flag_combine_list2 = config.Station2.ForbiddenFlagCombineList; var associative_flag_combine_list2 = config.Station2.AssociativeFlagCombineList; var level_in = 5 * 24; var list_all = new List>(); foreach (var item in station1_flag_cumulative_run_time_dict) { var flag = item.Key; var level = item.Value / level_in; level = Math.Round(level, 2); var bol= station1_open_flag_list.Contains(flag); list_all.Add(new(flag, level, bol)); } foreach (var item in station2_flag_cumulative_run_time_dict) { var flag = item.Key; var level = item.Value / level_in; var num = item.Value % level_in; level = Math.Round(level, 2); num = Math.Round(num, 2); var bol = station2_open_flag_list.Contains(flag); list_all.Add(new(flag, level, bol)); } list_all = list_all.OrderBy(x => x.Item2).ThenBy(x => x.Item1).ToList(); //foreach (var item in list_all) //{ // Console.WriteLine($"{item.Item1} level:{item.Item2} num:{item.Item3}"); //} var list_list_list = new List>>(); foreach (var item in same_section_flag_combine_list1) { var list = new List>(); foreach (var v in item) { var flag = v; var run_time = station1_flag_cumulative_run_time_dict[v]; if (must_open_flag_list1.Contains(flag)) { continue; } if (must_close_flag_list1.Contains(flag)) { continue; } var node = list_all.Find(x => x.Item1 == flag); list.Add(node); } list_list_list.Add(list); } foreach (var item in same_section_flag_combine_list2) { var list = new List>(); foreach (var v in item) { var flag = v; var run_time = station2_flag_cumulative_run_time_dict[v]; if (must_open_flag_list2.Contains(flag)) { continue; } if (must_close_flag_list2.Contains(flag)) { continue; } var node = list_all.Find(x => x.Item1 == flag); list.Add(node); } list_list_list.Add(list); } foreach (var item in list_list_list) { Console.WriteLine(""); foreach (var v in item) { var run = v.Item3 ? " v" : " x"; Console.WriteLine($"{v.Item1} level:{v.Item2} run:{run}"); } } Console.WriteLine(""); Console.WriteLine(""); foreach (var item in list_list_list) { Console.WriteLine(""); foreach (var v in item) { var run = v.Item3 ? " v" : " x"; var r = Math.Round(v.Item2 / 100, 2); var value = 1 - r; Console.WriteLine($"{v.Item1} {value} {run}"); } } //var config = new IStation.Service.ScheduleConfig().Get(); //var same_section_flag_combine_list1 = config.Station1.SameSectionFlagCombineList; //var must_open_flag_list1 = config.Station1.MustOpenFlagList; //var must_close_flag_list1 = config.Station1.MustCloseFlagList; //var forbidden_flag_combine_list1 = config.Station1.ForbiddenFlagCombineList; //var associative_flag_combine_list1 = config.Station1.AssociativeFlagCombineList; //var same_section_flag_combine_list2 = config.Station2.SameSectionFlagCombineList; //var must_open_flag_list2 = config.Station2.MustOpenFlagList; //var must_close_flag_list2 = config.Station2.MustCloseFlagList; //var forbidden_flag_combine_list2 = config.Station2.ForbiddenFlagCombineList; //var associative_flag_combine_list2 = config.Station2.AssociativeFlagCombineList; //var max_hour = 24 * 20; //Console.WriteLine(max_hour); //var list = new List>>(); //foreach (var item in same_section_flag_combine_list1) //{ // var list_list = new List>(); // foreach (var v in item) // { // var flag = v; // var run_time = station1_flag_cumulative_run_time_dict[v]; // if (must_open_flag_list1.Contains(flag)) // { // continue; // } // if (must_close_flag_list1.Contains(flag)) // { // continue; // } // if (station1_open_flag_list.Contains(flag)) // { // list_list.Add(new(v, run_time, true)); // } // else // { // list_list.Add(new(v, run_time, false)); // } // } // list.Add(list_list); //} //foreach (var item in same_section_flag_combine_list2) //{ // var list_list = new List>(); // foreach (var v in item) // { // var flag = v; // var run_time = station2_flag_cumulative_run_time_dict[v]; // if (must_open_flag_list2.Contains(flag)) // { // continue; // } // if (must_close_flag_list2.Contains(flag)) // { // continue; // } // if (station2_open_flag_list.Contains(flag)) // { // list_list.Add(new(v, run_time, true)); // } // else // { // list_list.Add(new(v, run_time, false)); // } // } // list.Add(list_list); //} //foreach (var item in list) //{ // Console.WriteLine(""); // foreach (var v in item) // { // var str = v.Item3 ? "" : "————"; // var str1 = ""; // if (v.Item2 > max_hour) // { // str1 = "xxx"; // } // Console.WriteLine($"{v.Item1}:{str}{v.Item2}{str1}"); // } // var max = item.Where(x => x.Item3).OrderBy(x => x.Item2).Last(); // var min = item.Where(x => !x.Item3).OrderBy(x => x.Item2).First(); // Console.WriteLine($"min:{min.Item1}-{min.Item2} max:{max.Item1}-{max.Item2}"); //} List, double>> GetRatio(Dictionary dict) { var list=new List>(); foreach (var item in dict) { var flag = item.Key; var level = item.Value / 7; var num = item.Value % 7; list.Add(new (flag, level,num)); } return default; } #endregion #region 定时保存实时数据 ////创建一个定时器,设置间隔时间为5000毫秒(即5秒) //using IStation; //int count = 3600; //int index = 0; //do //{ // Thread.Sleep(600); // var log = HistoryScadaHelper.GetRealTimeZyScadaList(out List zy_scada_list); // index++; // Console.WriteLine(index); //} while (index < count); #endregion #region ScadaModelValidHelper // using IStation; //ScadaModelValidHelper.Analysis3(); #endregion Console.WriteLine(); Console.WriteLine(); Console.WriteLine("OK"); Console.ReadKey();