ningshuxia
8 天以前 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
using System.Dynamic;
 
namespace IStation.Model
{
    /// <summary>
    /// 调度配置
    /// </summary>
    public class ScheduleConfig : System.ICloneable
    {
        /// <summary>
        /// 
        /// </summary>
        public ScheduleConfig() { }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="rhs"></param>
        public ScheduleConfig(ScheduleConfig rhs)
        {
            this.MinOpenCount = rhs.MinOpenCount;
            this.MaxOpenCount = rhs.MaxOpenCount;
            this.MustOpenFlagList = rhs.MustOpenFlagList?.ToList();
            this.MustCloseFlagList = rhs.MustCloseFlagList?.ToList();
            this.ForbiddenFlagCombineList = rhs.ForbiddenFlagCombineList?.ToList();
            this.AssociativeFlagCombineList = rhs.AssociativeFlagCombineList?.ToList();
            this.SameSectionFlagCombineList = rhs.SameSectionFlagCombineList?.ToList();
            this.WaterSupplyLimitList = rhs.WaterSupplyLimitList?.ToList();
            this.FrequencyLimitList = rhs.FrequencyLimitList?.ToList();
            this.FlagCumulativeRuntimeDict = new Dictionary<int, double>();
            this.PriorityOpenFlagList = rhs.PriorityOpenFlagList?.ToList();
            this.MaintenanceFlagList=rhs.MaintenanceFlagList?.ToList();
        }
 
        /// <summary>
        /// 
        /// </summary>
        /// <param name="rhs"></param>
        public void Reset(ScheduleConfig rhs)
        {
            this.MinOpenCount = rhs.MinOpenCount;
            this.MaxOpenCount = rhs.MaxOpenCount;
            this.MustOpenFlagList = rhs.MustOpenFlagList?.ToList();
            this.MustCloseFlagList = rhs.MustCloseFlagList?.ToList();
            this.ForbiddenFlagCombineList = rhs.ForbiddenFlagCombineList?.ToList();
            this.AssociativeFlagCombineList = rhs.AssociativeFlagCombineList?.ToList();
            this.SameSectionFlagCombineList = rhs.SameSectionFlagCombineList?.ToList();
            this.WaterSupplyLimitList = rhs.WaterSupplyLimitList?.ToList();
            this.FrequencyLimitList = rhs.FrequencyLimitList?.ToList();
            this.FlagCumulativeRuntimeDict = new Dictionary<int, double>();
            this.PriorityOpenFlagList = rhs.PriorityOpenFlagList?.ToList();
            this.MaintenanceFlagList=rhs.MaintenanceFlagList?.ToList();
        }
 
 
        /// <summary>
        /// 最小开泵数量
        /// </summary>
        public int MinOpenCount { get; set; }
 
        /// <summary>
        /// 最大开泵数量
        /// </summary>
        public int MaxOpenCount { get; set; }
 
        /// <summary>
        /// 必开泵列表
        /// </summary>
        public List<int> MustOpenFlagList { get; set; }
 
        /// <summary>
        /// 必关泵列表
        /// </summary>
        public List<int> MustCloseFlagList { get; set; }
 
        /// <summary>
        /// 禁用泵组合列表
        /// </summary>
        public List<List<int>> ForbiddenFlagCombineList { get; set; }
 
        /// <summary>
        /// 关联泵组合列表
        /// </summary>
        public List<List<int>> AssociativeFlagCombineList { get; set; }
 
        /// <summary>
        /// 同段泵组合列表
        /// </summary>
        public List<List<int>> SameSectionFlagCombineList { get; set; }
 
        /// <summary>
        /// 供水限制列表
        /// </summary>
        public List<WaterSupplyLimit> WaterSupplyLimitList { get; set; }
 
        /// <summary>
        /// 频率限制列表
        /// </summary> 
        public List<FrequencyLimit> FrequencyLimitList { get; set; }
 
        /// <summary>
        /// 泵累计运行时长字典
        /// </summary>
        public Dictionary<int, double> FlagCumulativeRuntimeDict { get; set; }
         
        /// <summary>
        /// 优先开泵列表
        /// </summary>
        public List<int> PriorityOpenFlagList { get; set; }
 
        /// <summary>
        /// 检修列表
        /// </summary>
        public List<int> MaintenanceFlagList { get; set; }
 
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public ScheduleConfig Clone()
        {
            return (ScheduleConfig)this.MemberwiseClone();
        }
 
        object ICloneable.Clone()
        {
            return this.MemberwiseClone();
        }
 
    }
}