ningshuxia
2025-04-22 1519533649b43337d214523f7cd075edf237b3f7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System.Collections.Generic;
using System.Linq;
 
namespace IStation.Algorithm.Curve
{
    public class PumpScheduling
    {
        public static List<PumpSchedulingPlan> Run(PumpSchedulingParams inputPrams)
        {
            List<PumpSchedulingPlan> plans = new List<PumpSchedulingPlan>();
 
            List<Pump> pumps = new List<Pump>();
            foreach (InPumpParam pump_param in inputPrams.Pumps)
            {
 
                PumpRatedParam rated_param = new PumpRatedParam()
                {
                    EMEfficiency = pump_param.RatedParam.EMEfficiency,
                    EMPower = pump_param.RatedParam.EMPower,
                    MaxPower = pump_param.RatedParam.MaxPower,
                    MinPower = pump_param.RatedParam.MinPower,
                    MaxSpeed = pump_param.RatedParam.MaxSpeed,
                    MinSpeed = pump_param.RatedParam.MinSpeed,
                    CurveQH = pump_param.RatedParam.CurveQH.Clone(),
                    CurveQP = pump_param.RatedParam.CurveQP.Clone(),
                    RatedFlow = pump_param.RatedParam.RatedFlow,
                    RatedHead = pump_param.RatedParam.RatedHead,
                    RatedSpeed = pump_param.RatedParam.RatedSpeed,
                    VFDEfficency = pump_param.RatedParam.VFDEfficency
                };
 
                pumps.Add(new Pump(pump_param.PumpNum, rated_param, true));
            }
 
            List<PumpGroupSchedulingOperation> operations = new List<PumpGroupSchedulingOperation>();
 
            foreach (InPumpSchedulingOperation operation_param in inputPrams.Operations)
            {
                operations.Add(new PumpGroupSchedulingOperation()
                {
                    OperationNum = operation_param.OperationNum,
                    InPressure = operation_param.InPressure,
                    OutPressure = operation_param.OutPressure,
                    OutFlow = operation_param.OutFlow,
                    Pumps = pumps?.Select(x => new Pump(x)).ToList()
                });
            }
 
            PumpGroupSchedulingManager sch_mgr = new PumpGroupSchedulingManager(operations);
            List<PumpSchedulingOperationPlan> op_results_match_flow = sch_mgr.MatchFlowPlan();
            List<PumpSchedulingOperationPlan> op_results_min_power = sch_mgr.MinPowerPlan();
 
            PumpSchedulingPlan sch_result_match_flow = new PumpSchedulingPlan();
            sch_result_match_flow.Operations.AddRange(op_results_match_flow);
            sch_result_match_flow.SchedulingName = "最匹配流量方案";
 
            plans.Add(sch_result_match_flow);
 
            PumpSchedulingPlan sch_result_min_power = new PumpSchedulingPlan();
            sch_result_min_power.Operations.AddRange(op_results_min_power);
            sch_result_min_power.SchedulingName = "最低能耗方案";
 
            plans.Add(sch_result_min_power);
 
            return plans;
        }
    }
}