#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 = 25360.896; //double target_head1 = IStation.Curve.PumpCalculateHelper.Mpa2M(0.3178); //IStation.GlobalHelper.GetRealTimeZyScadaList(out List zy_scada_list, true); //var station1 = station_info.Station1; //var station1_schedule_config = _service_schedule_config.GetStation1(); //IStation.GlobalHelper.GetStationOpenFlagList(zy_scada_list, out List station1_open_flag_list, out List station2_open_flag_list); //IStation.GlobalHelper.GetFlagInletWaterLevelDict(zy_scada_list, out Dictionary station1_flag_inlet_water_level_dict, out Dictionary station2_flag_inlet_water_level_dict); //var helper = new IStation.Algorithm.ScheduleHelper(); //helper.Initial(station1_open_flag_list, station1_schedule_config); //var optimal_test = helper.GetOptAnaCombine(station1, 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; //using IStation.Algorithm; //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}"); //} //using IStation.Algorithm; //using IStation.Curve; //using IStation.Epanet.Network.Structures; //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 #region using System.Text; var station = new IStation.Service.Station().Get(); var all_pump_list = new List(); all_pump_list.AddRange(station.Station1); all_pump_list.AddRange(station.Station2); var str_build = new StringBuilder(); var service=new IStation.Service.AnalysisParameter(); foreach (var pump in all_pump_list) { var run_flag = IStation.Algorithm.RunFlagHelper.GetRunFlag(pump.Flag,pump.IsBp); var cl_list = service.GetList(run_flag); var cl_by_hz_group=cl_list.GroupBy(x=>x.Hz).ToDictionary(x=>x.Key,x=>x.OrderBy(x=>x.PressureDiff).ToList()); foreach (var item in cl_by_hz_group) { var hz = item.Key; var list = item.Value; decimal min_pressure_diff = (decimal)list.First().PressureDiff; decimal max_pressure_diff = (decimal)list.Last().PressureDiff; for (decimal pre_diff = min_pressure_diff; pre_diff <= max_pressure_diff; pre_diff += 0.1m) { if (!list.Exists(x=>x.PressureDiff==(double)pre_diff)) { str_build.AppendLine($"{pump.Flag}# {hz}hz {pre_diff}压差"); } } } } var info = str_build.ToString(); File.WriteAllText(@"D:\info2.txt",info); Console.WriteLine(str_build.ToString()); #endregion Console.WriteLine(); Console.WriteLine(); Console.WriteLine("OK"); Console.ReadKey();