| | |
| | | |
| | | namespace Hydro.CommonBase |
| | | { |
| | | [Serializable] |
| | | public class GeneticParams |
| | | { |
| | | static int Count = 0; |
| | |
| | | public bool isNeedOutput = true; |
| | | |
| | | public double CurrentTotalDemand = -1; |
| | | public GeneticParams DeepCopy() |
| | | { |
| | | var copy = new GeneticParams(this.Level); |
| | | copy.list_BestEnerge = this.list_BestEnerge?.ToList(); |
| | | copy.list_AvgHz = this.list_AvgHz?.ToList(); |
| | | copy.ranges = this.ranges?.Select(range => new DRange(range.Min, range.Max))?.ToList(); |
| | | copy.DLengths = this.DLengths?.ToList(); |
| | | copy.accuracys = this.accuracys?.ToList(); |
| | | copy.Dependencies = this.Dependencies?.ToList(); |
| | | copy.list_AtemtpArr = this.list_AtemtpArr?.ToArray(); |
| | | copy.SolutionSaveName = this.SolutionSaveName; |
| | | copy.populationSize = this.populationSize; |
| | | copy.iterations = this.iterations; |
| | | copy.populationSize_full = this.populationSize_full; |
| | | copy.iterations_full = this.iterations_full; |
| | | copy.Upopulations = this.Upopulations?.ToList(); |
| | | copy.selectionMethod = this.selectionMethod; |
| | | copy.optimizationMode = this.optimizationMode; |
| | | copy.强制重计算 = this.强制重计算; |
| | | copy.iterations_min = this.iterations_min; |
| | | copy.accuracyNum = this.accuracyNum; |
| | | copy.MaxRobot = this.MaxRobot; |
| | | copy.RuningRobot = this.RuningRobot; |
| | | copy.num = this.num; |
| | | copy.BestOptValue = this.BestOptValue; |
| | | copy.tolerance = tolerance==null?null: new DRange(this.tolerance.Min, this.tolerance.Max); |
| | | copy.onFinished = this.onFinished; |
| | | copy.onError = this.onError; |
| | | copy.onReportProgress = this.onReportProgress; |
| | | copy.setVars = this.setVars; |
| | | copy.Db = this.Db; // Assuming Db is a reference type |
| | | copy.SolutionDBHelper = this.SolutionDBHelper; // Assuming SolutionDBHelper is a reference type |
| | | copy.GlobalConfig = this.GlobalConfig.DeepCopyByBin<GlobalConfig>(); // Assuming GlobalConfig has a copy constructor |
| | | copy.isInited = this.isInited; |
| | | copy.Quene = this.Quene; // Assuming Quene has a copy constructor |
| | | copy.ID = this.ID; |
| | | copy.isNeedOutput = this.isNeedOutput; |
| | | copy.CurrentTotalDemand = this.CurrentTotalDemand; |
| | | |
| | | return copy; |
| | | } |
| | | } |
| | | public class Result |
| | | { |
| | |
| | | this.SearchRange = point.SearchRange; |
| | | this.isNeedtoSave = point.isNeedtoSave; |
| | | this.SaveKey = point.SaveKey; |
| | | if (point.Pattern!=null) this.Pattern= point.Pattern.ToList().ToArray(); |
| | | if (point.Pattern!=null) this.Pattern= point.Pattern.ToArray(); |
| | | |
| | | } |
| | | public string Name; |
| | |
| | | [Serializable] |
| | | public class variable: Ivariable |
| | | { |
| | | public static List<string> list_indicatorTypeName; |
| | | public static List<string> list_indicatorTypeName |
| | | { |
| | | get |
| | | { |
| | | if (_list_indicatorTypeName == null) |
| | | { |
| | | _list_indicatorTypeName = new List<string>() { "已知压力", "节点用水量", "节点用水模式", "水池水位", "水泵转速比", "管线阻力系数", "阀门开度", "水泵开关", "阀门开关", "管线开关", "管线直径", "管线长度", "总水量", "节点压力", "节点自由压力", "节点需水量", "节点标高", "节点水龄", "节点水质", "管线流量", "管线流速", "水头损失", "当前状态", "水泵能耗", "水泵开关", "水泵转速比", "初始及运行传参", "初始传参", "运行传参", "种群生成器", "方案筛选器", "计算前处理", "结果处理", "当量分配", "随机分配" }; |
| | | } |
| | | return _list_indicatorTypeName; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | private static List<string> _list_indicatorTypeName = null; |
| | | public static List<string> listUsedInitValue = new List<string>() { "初始计算值", "变化值", "绝对变化值" }; |
| | | public static List<string> list_输入值 = new List<string>() { "基准值(界面)", "定义值", "基准值(接口)", "模式系数(界面)", "模式系数(接口)" }; |
| | | //public static List<string> list_输入值 = new List<string>() { "基准值(界面)", "定义值", "基准值(接口)", "模式系数(界面)", "模式系数(接口)" }; |
| | | public static HashSet<string> list_输入值 = new HashSet<string>() { "基准值(界面)", "定义值", "基准值(接口)", "模式系数(界面)", "模式系数(接口)" }; |
| | | public static List<string> listUsedScadaValue = new List<string> { "定义值", "基准值(接口)" }; |
| | | |
| | | public static List<string> list_接口输出值 = new List<string>() { "表达式计算", "计算值", "变化值", "初始计算值", "子方案值" }; |
| | |
| | | public int arrgFuncType; |
| | | public string defaultExpress; |
| | | private int _indicatorType; |
| | | |
| | | public string IndicatorType |
| | | { |
| | | get |
| | | { |
| | | |
| | | if (_indicatorType<0) |
| | | { |
| | | return list_indicatorTypeName[0]; |
| | |
| | | { |
| | | get |
| | | { |
| | | return _Values.ToArray(); |
| | | return _Values; |
| | | } |
| | | private set |
| | | { |
| | | _Values = value.ToArray(); |
| | | _Values = value; |
| | | } |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | public string Value_Set(int period,double value) |
| | | { |
| | | _Values[period] = value; |
| | | return null; |
| | | string result = null; |
| | | double formatValue = value; |
| | | if (value!=double.NaN) formatValue = Math.Round(value, 小数位数); |
| | | //if (value!=double.NaN) formatValue = Math.Round(value, 小数位数); |
| | | /*[Cloudflight修改]2024-6-3 |
| | | 解锁 |
| | | */ |
| | |
| | | { |
| | | set |
| | | { |
| | | lock (this) |
| | | { |
| | | _Values = value; |
| | | } |
| | | //lock (this) |
| | | //{ |
| | | // _Values = value; |
| | | //} |
| | | _Values = value; |
| | | } |
| | | |
| | | } |
| | |
| | | // Value0 = result; |
| | | // return result; |
| | | //} |
| | | public double? GetLogicValue(int? period=0) |
| | | public double GetLogicValue(int period=0) |
| | | { |
| | | if (period != null && period >= 0 && period<LogicValues.Length) |
| | | return LogicValues[period.Value]; |
| | | if ( period >= 0 && period<LogicValues.Length) |
| | | return LogicValues[period]; |
| | | else |
| | | return LogicValue; |
| | | return double.NaN; |
| | | } |
| | | |
| | | public double[] GetShowValue_Arr() |
| | | { |
| | | |
| | | if (list_输入值.IndexOf(expressType) >= 0) |
| | | if (variable.list_输入值.Contains(expressType)) |
| | | //return LogicPattern; |
| | | return Values; |
| | | else |