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;
|
}
|
}
|
}
|