ningshuxia
2024-05-07 ad80204d8c020c626253da9547e5e192c2395195
代码提交
已修改4个文件
155 ■■■■■ 文件已修改
Schedule/IStation.Algorithm/Schedule/SchedulingHelper.cs 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/IStation.Application.Core/1-dispatch/1-solution/DispatchSolution_Controller.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/IStation.Entry.Core/IStation.Entry.Core.csproj.user 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebApi/IStation.Entry.Core/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Schedule/IStation.Algorithm/Schedule/SchedulingHelper.cs
@@ -11,9 +11,51 @@
        public FreCombine() { }
        public List<int> Flags { get; set; }
        public int RunCount { get; set; }
        public double Frequency { get; set; }
        public double Flow { get; set; }
        public double Head { get; set; }
        public double Power { get; set; }
        public double Efficiency { get; set; }
        public double Frequency { get; set; }
        public double Speed { get; set; }
        public List<FrePump> FrePumps { get; set; }
        public void Round()
        {
            this.Flow = Math.Round(this.Flow, 1);
            this.Head = Math.Round(this.Head, 3);
            this.Power = Math.Round(this.Power, 1);
            this.Efficiency = Math.Round(this.Efficiency, 1);
            this.Frequency = Math.Round(this.Frequency, 1);
            this.Speed = Math.Round(this.Speed, 1);
        }
    }
    /// <summary>
    ///
    /// </summary>
    public class FrePump
    {
        public FrePump() { }
        public int Flag { get; set; }
        public double Flow { get; set; }
        public double Head { get; set; }
        public double Power { get; set; }
        public double Efficiency { get; set; }
        public double Frequency { get; set; }
        public double Speed { get; set; }
        public void Round()
        {
            this.Flow = Math.Round(this.Flow, 1);
            this.Head = Math.Round(this.Head, 3);
            this.Power = Math.Round(this.Power, 1);
            this.Efficiency = Math.Round(this.Efficiency, 1);
            this.Frequency = Math.Round(this.Frequency, 1);
            this.Speed = Math.Round(this.Speed, 1);
        }
    }
@@ -27,11 +69,39 @@
        public double Flow { get; set; }
        public double Head { get; set; }
        public double Power { get; set; }
        public double Efficiency { get; set; }
        public double WP { get; set; }
        public double UWP { get; set; }
        public List<FreCombine> Combines { get; set; }
        public List<int> Flags { get; set; }
        public int FlagCount { get; set; }
        public string Remark { get; set; }
        public double MeritRatio { get; set; }
        public void Round()
        {
            this.Flow = Math.Round(this.Flow, 1);
            this.Head = Math.Round(this.Head, 3);
            this.Power = Math.Round(this.Power, 1);
            this.Efficiency = Math.Round(this.Efficiency, 1);
            this.WP = Math.Round(this.WP, 2);
            this.UWP = Math.Round(this.UWP, 2);
            if (this.Combines != null && this.Combines.Any())
            {
                foreach (var combine in Combines)
                {
                    combine.Round();
                    if (combine.FrePumps != null && combine.FrePumps.Any())
                    {
                        foreach (var pump in combine.FrePumps)
                        {
                            pump.Round();
                        }
                    }
                }
            }
        }
    }
    #endregion
@@ -136,6 +206,7 @@
            #endregion
            var pump_nr_dict = pumps.ToDictionary(x => x.ID, x => x.Nr);
            var pump_flag_list = pumps.Select(x => x.ID).ToList();
            var optimal_combine_list = new List<OptimalCombine>();
            for (int pumpCount = 1; pumpCount <= pumps.Count; pumpCount++)
@@ -221,6 +292,7 @@
                            var freCombine = new FreCombine();
                            freCombine.Frequency = (double)fre;
                            freCombine.Flags = new List<int>();
                            freCombine.FrePumps = new List<FrePump>();
                            foreach (var item in conclusion_list_dic)
                            {
                                var conclusion = item.Value.Find(x => x.Pump1 == (double)fre);
@@ -230,6 +302,16 @@
                                    freCombine.Flow += conclusion.Flow;
                                    freCombine.Power += conclusion.Power;
                                    freCombine.RunCount++;
                                    var fre_pump = new FrePump();
                                    fre_pump.Flag = item.Key;
                                    fre_pump.Flow = conclusion.Flow;
                                    fre_pump.Head = target_head;
                                    fre_pump.Power = conclusion.Power;
                                    fre_pump.Efficiency = CurveCalcuHelper.CalculateE(fre_pump.Flow, fre_pump.Head, fre_pump.Power);
                                    fre_pump.Frequency = freCombine.Frequency;
                                    fre_pump.Speed = (double)fre / 50 * pump_nr_dict[item.Key];
                                    freCombine.FrePumps.Add(fre_pump);
                                }
                            }
                            if (freCombine.Flags.Count < 1)
@@ -259,6 +341,7 @@
                            var freCombine = new FreCombine();
                            freCombine.Frequency = (double)fre;
                            freCombine.Flags = new List<int>();
                            freCombine.FrePumps = new List<FrePump>();
                            foreach (var item in conclusion_list_dic)
                            {
                                var conclusion = item.Value.Find(x => x.Pump1 == (double)fre);
@@ -268,6 +351,16 @@
                                    freCombine.Flow += conclusion.Flow;
                                    freCombine.Power += conclusion.Power;
                                    freCombine.RunCount++;
                                    var fre_pump = new FrePump();
                                    fre_pump.Flag = item.Key;
                                    fre_pump.Flow = conclusion.Flow;
                                    fre_pump.Head = target_head;
                                    fre_pump.Power = conclusion.Power;
                                    fre_pump.Efficiency = CurveCalcuHelper.CalculateE(fre_pump.Flow, fre_pump.Head, fre_pump.Power);
                                    fre_pump.Frequency = freCombine.Frequency;
                                    fre_pump.Speed = (double)fre / 50 * pump_nr_dict[item.Key];
                                    freCombine.FrePumps.Add(fre_pump);
                                }
                            }
                            if (freCombine.Flags.Count < 1)
@@ -360,6 +453,10 @@
                    }
                    var efficiency = CurveCalcuHelper.CalculateE(total_flow, target_head, total_power);
                    var wp = CurveCalcuHelper.CalculateWP(total_power, total_flow);
                    var uwp = CurveCalcuHelper.CalculateUWP(total_power, total_flow, target_head);
                    #region 分析最优组合方案
                    var optimal_combine = new OptimalCombine();
@@ -375,14 +472,17 @@
                        optimal_combine.Combines.Add(optimal_combine_part2);
                        optimal_combine.Flags.AddRange(optimal_combine_part2.Flags);
                    }
                    optimal_combine.Flow = Math.Round(total_flow, 1);
                    optimal_combine.Power = Math.Round(total_power, 1);
                    optimal_combine.Flow = total_flow;
                    optimal_combine.Head = target_head;
                    optimal_combine.Power = total_power;
                    optimal_combine.Efficiency = efficiency;
                    optimal_combine.WP = wp;
                    optimal_combine.UWP = uwp;
                    optimal_combine.Flags = optimal_combine.Flags.OrderBy(x => x).ToList();
                    optimal_combine.FlagCount = optimal_combine.Flags.Count;
                    optimal_combine.Remark = IntListHelper.ToString(optimal_combine.Flags);
                    optimal_combine.MeritRatio = combine_merit_ratio;
                    optimal_combine.Head = Math.Round(target_head, 1);
                    optimal_combine_list.Add(optimal_combine);
                    #endregion
@@ -393,7 +493,9 @@
                return default;
            optimal_combine_list = optimal_combine_list.OrderByDescending(x => x.MeritRatio).ToList();
            return optimal_combine_list.First();
            var opt = optimal_combine_list.First();
            opt.Round();
            return opt;
        }
WebApi/IStation.Application.Core/1-dispatch/1-solution/DispatchSolution_Controller.cs
@@ -1,4 +1,5 @@
using Yw.Calculation;
using IStation.Algorithm;
using Yw.Calculation;
namespace IStation.Application
{
@@ -49,24 +50,44 @@
                if (optimal_combine1 != null)
                {
                    output.objects["1输水总流量"] = optimal_combine1.Flow;
                    output.objects["1输水总压力"] = M2Mpa(optimal_combine1.Head);
                    output.objects["1输水总压力"] = Math.Round(M2Mpa(optimal_combine1.Head), 4);
                    output.objects["1输水总功率"] = optimal_combine1.Power;
                    output.objects["1输水总效率"] = optimal_combine1.Efficiency;
                    output.objects["1输水总千吨能耗"] = optimal_combine1.WP;
                    output.objects["1输水总单位能耗"] = optimal_combine1.UWP;
                    foreach (var combine in optimal_combine1.Combines)
                    {
                        foreach (var pump_flag in combine.Flags)
                        foreach (var fre_pump in combine.FrePumps)
                        {
                            output.objects[$"1输水{pump_flag}#频率"] = combine.Frequency;
                            var flag = fre_pump.Flag;
                            output.objects[$"1输水{flag}#流量"] = fre_pump.Flow;
                            output.objects[$"1输水{flag}#扬程"] = fre_pump.Head;
                            output.objects[$"1输水{flag}#功率"] = fre_pump.Power;
                            output.objects[$"1输水{flag}#效率"] = fre_pump.Efficiency;
                            output.objects[$"1输水{flag}#频率"] = fre_pump.Frequency;
                            output.objects[$"1输水{flag}#转速"] = fre_pump.Speed;
                        }
                    }
                }
                if (optimal_combine2 != null)
                {
                    output.objects["2输水总流量"] = optimal_combine2.Flow;
                    output.objects["2输水总压力"] = M2Mpa(optimal_combine2.Head);
                    output.objects["2输水总压力"] = Math.Round(M2Mpa(optimal_combine2.Head), 4);
                    output.objects["2输水总功率"] = optimal_combine2.Power;
                    output.objects["2输水总效率"] = optimal_combine2.Efficiency;
                    output.objects["2输水总千吨能耗"] = optimal_combine2.WP;
                    output.objects["2输水总单位能耗"] = optimal_combine2.UWP;
                    foreach (var combine in optimal_combine2.Combines)
                    {
                        foreach (var pump_flag in combine.Flags)
                        foreach (var fre_pump in combine.FrePumps)
                        {
                            output.objects[$"2输水{pump_flag}#频率"] = combine.Frequency;
                            var flag = fre_pump.Flag;
                            output.objects[$"2输水{flag}#流量"] = fre_pump.Flow;
                            output.objects[$"2输水{flag}#扬程"] = fre_pump.Head;
                            output.objects[$"2输水{flag}#功率"] = fre_pump.Power;
                            output.objects[$"2输水{flag}#效率"] = fre_pump.Efficiency;
                            output.objects[$"2输水{flag}#频率"] = fre_pump.Frequency;
                            output.objects[$"2输水{flag}#转速"] = fre_pump.Speed;
                        }
                    }
                }
WebApi/IStation.Entry.Core/IStation.Entry.Core.csproj.user
@@ -2,5 +2,9 @@
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <NameOfLastUsedPublishProfile>D:\WorkCode\IStation\Code\Service.Ch.V1.0\WebApi\IStation.Entry.Core\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
    <ActiveDebugProfile>IIS Express</ActiveDebugProfile>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
  </PropertyGroup>
</Project>
WebApi/IStation.Entry.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
<Project>
  <PropertyGroup>
    <_PublishTargetUrl>D:\WorkCode\IStation\Code\Service.Ch.V1.0\WebApi\IStation.Entry.Core\bin\Release\net6.0\publish\</_PublishTargetUrl>
    <History>True|2024-05-07T02:48:01.6650551Z;True|2024-05-07T10:33:33.1990927+08:00;True|2024-05-07T10:20:40.5715968+08:00;False|2024-05-07T10:20:22.6825823+08:00;False|2024-05-07T10:19:44.6799744+08:00;True|2023-06-26T11:38:29.6648988+08:00;True|2023-06-21T16:17:40.6226554+08:00;True|2023-06-21T13:30:18.8163322+08:00;True|2023-06-21T13:19:43.9290154+08:00;True|2023-06-21T11:35:28.3376504+08:00;</History>
    <History>True|2024-05-07T05:47:16.3080124Z;True|2024-05-07T13:44:09.0634975+08:00;True|2024-05-07T13:43:07.6375223+08:00;True|2024-05-07T13:42:37.6279153+08:00;False|2024-05-07T13:42:22.8710353+08:00;True|2024-05-07T13:39:32.9872224+08:00;True|2024-05-07T13:39:19.1500141+08:00;True|2024-05-07T13:38:20.6940580+08:00;True|2024-05-07T13:19:21.5169757+08:00;True|2024-05-07T10:48:01.6650551+08:00;True|2024-05-07T10:33:33.1990927+08:00;True|2024-05-07T10:20:40.5715968+08:00;False|2024-05-07T10:20:22.6825823+08:00;False|2024-05-07T10:19:44.6799744+08:00;True|2023-06-26T11:38:29.6648988+08:00;True|2023-06-21T16:17:40.6226554+08:00;True|2023-06-21T13:30:18.8163322+08:00;True|2023-06-21T13:19:43.9290154+08:00;True|2023-06-21T11:35:28.3376504+08:00;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>