tangxu
2022-10-31 8ea88fedd51e4961d0fd0aec6c2873a579fb6db8
Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelperѹÁ¦.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)
            {//只用固频泵即可