#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<IStation.Model.ZyScada> 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<int> station1_open_flag_list, out List<int> station2_open_flag_list);
|
//IStation.GlobalHelper.GetFlagInletWaterLevelDict(zy_scada_list, out Dictionary<int, double> station1_flag_inlet_water_level_dict, out Dictionary<int, double> 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<IStation.AvgStatisticsS1ViewModel> avg_statistics_station1_vm_list,
|
// out List<IStation.AvgStatisticsS2ViewModel> 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<IStation.Model.ZyScada> zy_scada_list, is_zy_scada_debug);
|
//GlobalHelper.GetStationOpenFlagList(zy_scada_list, out List<int> station1_open_flag_list, out List<int> station2_open_flag_list);
|
|
|
//Dictionary<int, double> 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<int, double> 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<Tuple<int, double, bool>>();
|
//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<List<Tuple<int, double,bool>>>();
|
|
//foreach (var item in same_section_flag_combine_list1)
|
//{
|
// var list = new List<Tuple<int, double, bool>>();
|
// 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<Tuple<int, double, bool>>();
|
// 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<List<Tuple<int, double, bool>>>();
|
//foreach (var item in same_section_flag_combine_list1)
|
//{
|
// var list_list = new List<Tuple<int, double, bool>>();
|
// 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<Tuple<int, double, bool>>();
|
// 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<Tuple<List<int>, double>> GetRatio(Dictionary<int,double> dict)
|
//{
|
|
// var list=new List<Tuple<int,double,double>>();
|
// 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<IStation. Model.ZyScada> 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<IStation.Model.Pump>();
|
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();
|