From 8ea88fedd51e4961d0fd0aec6c2873a579fb6db8 Mon Sep 17 00:00:00 2001 From: tangxu <76880903@qq.com> Date: 星期一, 31 十月 2022 14:18:36 +0800 Subject: [PATCH] 完善调度计划分析 --- Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper压力.cs | 131 ++++++++++++++++++++++++++++--------------- 1 files changed, 85 insertions(+), 46 deletions(-) diff --git "a/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" "b/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" index fdd7862..f4d3da2 100644 --- "a/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" +++ "b/Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper\345\216\213\345\212\233.cs" @@ -65,20 +65,41 @@ /// 鍒濆鍖栧弬鏁� /// </summary> /// <param name="targetQ"></param> - /// <param name="water_level"></param> - /// <param name="outlet_press"></param> + /// <param name="inlet_para"></param> + /// <param name="inlet_is_waterlevel"></param> + /// <param name="outlet_para"></param> + /// <param name="outlet_is_waterlevel"></param> /// <param name="MinQ"></param> /// <param name="MaxQ"></param> /// <param name="allEnginePumpList"></param> /// <param name="MachineRunFilterList"></param> /// <returns></returns> public bool InitialParas( - double targetQ, double water_level, double outlet_press, string MinQ, string MaxQ, + double targetQ, + double inlet_para,bool inlet_is_waterlevel, + double outlet_para,bool outlet_is_waterlevel, + string MinQ, string MaxQ, List<IStation.Calculation.DispatchAna.Model.MachineDetail> allEnginePumpList, List<IStation.Calculation.DispatchAna.Model.MachineRunFilter> MachineRunFilterList) - { - this._targetInletPress = Math.Round(water_level / 102, 4); - this._targetOutletPress = outlet_press; + { + if (inlet_is_waterlevel) + { + this._targetInletPress = Math.Round(inlet_para / 102, 4); + } + else + { + this._targetInletPress = Math.Round(inlet_para, 4); + } + + if (outlet_is_waterlevel) + { + this._targetOutletPress = Math.Round(outlet_para / 102, 4); + } + else + { + this._targetOutletPress = outlet_para; + } + this._targetQ = targetQ; this._allMachineList = allEnginePumpList; @@ -283,51 +304,66 @@ #region 寮�濮嬪垎鏋� _anaSchemeList = new List<IStation.Calculation.DispatchAna.Model.AnaScheme>(); - - int max_fre_num = 2;//鏈�澶氬彉棰�2鍙�, 鍏朵綑鐨勫嵆浣垮彉棰�,涔熸寜50HZ杩愯 - var arry_allMachineList = all_machine_ana_result_list.ToArray(); - for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++) + if (all_machine_ana_result_list.Count() == 0) { - //寰楀埌鎵�鏈夋帓鍒楃粍鍚� - List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list = - IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( - arry_allMachineList, openPumpNum); - - - foreach (var open_machine_list in open_machine_combine_list) + return null; + } + else if (all_machine_ana_result_list.Count() == 1) + { + var first_pump = all_machine_ana_result_list.First(); + first_pump.AsFrequency = true; + IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] open_machine_list = new + IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] { first_pump }; + AnaMahineComb(open_machine_list); + } + else + { + int max_fre_num = 2;//鏈�澶氬彉棰�2鍙�, 鍏朵綑鐨勫嵆浣垮彉棰�,涔熸寜50HZ杩愯 + var arry_allMachineList = all_machine_ana_result_list.ToArray(); + for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++) { - var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray(); + //寰楀埌鎵�鏈夋帓鍒楃粍鍚� + List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list = + IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( + arry_allMachineList, openPumpNum); - if (fre_machines.Count() > max_fre_num) - {//鏈�澶氭妸2鍙版车褰撲綔鍙橀娉佃繍琛�, 鍏朵綑鎸夊伐棰戞车杩愯 - List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list = - IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( - fre_machines, max_fre_num);//鎺掑垪缁勫悎,鎵鹃噷闈㈢殑2鍙� - foreach (var real_fre_machine_list in real_fre_machine_combine_list) + foreach (var open_machine_list in open_machine_combine_list) + { + var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray(); + + if (fre_machines.Count() > max_fre_num) + {//鏈�澶氭妸2鍙版车褰撲綔鍙橀娉佃繍琛�, 鍏朵綑鎸夊伐棰戞车杩愯 + List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list = + IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination( + fre_machines, max_fre_num);//鎺掑垪缁勫悎,鎵鹃噷闈㈢殑2鍙� + + foreach (var real_fre_machine_list in real_fre_machine_combine_list) + { + foreach (var m in fre_machines) + {//鍏堟妸鎵�鏈夊彉棰戞车褰撲綔宸ラ娉� + m.AsFrequency = false; + } + foreach (var m in real_fre_machine_list) + {//鎶婃帓鍒楃粍鍚堜腑鐨勪袱鍙拌缃綅鍙橀娉� + m.AsFrequency = true; + } + AnaMahineComb(open_machine_list); + } + + } + else { foreach (var m in fre_machines) - {//鍏堟妸鎵�鏈夊彉棰戞车褰撲綔宸ラ娉� - m.AsFrequency = false; - } - foreach (var m in real_fre_machine_list) - {//鎶婃帓鍒楃粍鍚堜腑鐨勪袱鍙拌缃綅鍙橀娉� + { m.AsFrequency = true; } AnaMahineComb(open_machine_list); } - - } - else - { - foreach (var m in fre_machines) - { - m.AsFrequency = true; - } - AnaMahineComb(open_machine_list); } } } + #endregion if (_anaSchemeList.Count() == 0) @@ -409,15 +445,18 @@ fixPumpAnaCombine.Add(machine); } } + if (fre_pump_count > 0) + { + if (total_min_flow > _targetQmax) + { + return; + } + if (total_max_flow < _targetQmin) + { + return; + } + } - if (total_min_flow > _targetQmax) - { - return; - } - if (total_max_flow < _targetQmin) - { - return; - } if (fre_pump_count == 0) {//鍙敤鍥洪娉靛嵆鍙� -- Gitblit v1.9.3