private void AfterDeserialization() { #region conversion of old NSM parameters if (Parameters.ContainsKey(SelectorParameterName)) // change SelectorParameter type from ISelector to ISingleObjectiveSelector { ValueParameter <ISelector> param = Parameters[SelectorParameterName] as ValueParameter <ISelector>; if (param != null) { ISingleObjectiveSelector selector = param.Value as ISingleObjectiveSelector; if (selector == null) { selector = new TournamentSelector(); } Parameters.Remove(SelectorParameterName); Parameters.Add(new ValueParameter <ISingleObjectiveSelector>(SelectorParameterName, "The inner selection operator to select the parents.", selector)); } } // FixedValueParameter for quality difference percentage, max attempts, use range if (Parameters.ContainsKey(QualityDifferencePercentageParameterName)) { ValueParameter <PercentValue> param = Parameters[QualityDifferencePercentageParameterName] as ValueParameter <PercentValue>; if (!(param is FixedValueParameter <PercentValue>)) { PercentValue diff = param != null ? param.Value as PercentValue : null; if (diff == null) { diff = new PercentValue(0.05); } Parameters.Remove(QualityDifferencePercentageParameterName); Parameters.Add(new FixedValueParameter <PercentValue>(QualityDifferencePercentageParameterName, "The minimum quality difference from parent1 to parent2 to accept the selection.", diff)); } } if (Parameters.ContainsKey(QualityDifferenceMaxAttemptsParameterName)) { ValueParameter <IntValue> param = Parameters[QualityDifferenceMaxAttemptsParameterName] as ValueParameter <IntValue>; if (!(param is FixedValueParameter <IntValue>)) { IntValue attempts = param != null ? param.Value as IntValue : null; if (attempts == null) { attempts = new IntValue(5); } Parameters.Remove(QualityDifferenceMaxAttemptsParameterName); Parameters.Add(new FixedValueParameter <IntValue>(QualityDifferenceMaxAttemptsParameterName, "The maximum number of attempts to find parents which differ in quality.", attempts)); } } if (Parameters.ContainsKey(QualityDifferenceUseRangeParameterName)) { ValueParameter <BoolValue> param = Parameters[QualityDifferenceUseRangeParameterName] as ValueParameter <BoolValue>; if (!(param is FixedValueParameter <BoolValue>)) { BoolValue range = param != null ? param.Value as BoolValue : null; if (range == null) { range = new BoolValue(true); } Parameters.Remove(QualityDifferenceUseRangeParameterName); Parameters.Add(new FixedValueParameter <BoolValue>(QualityDifferenceUseRangeParameterName, "Use the range from minimum to maximum quality as basis for QualityDifferencePercentage.", range)); } } if (!Parameters.ContainsKey(QualityDifferenceUseRangeParameterName)) // add use range parameter { Parameters.Add(new FixedValueParameter <BoolValue>(QualityDifferenceUseRangeParameterName, "Use the range from minimum to maximum quality as basis for QualityDifferencePercentage.", new BoolValue(true))); } #endregion RegisterParameterEventHandlers(); }
private void AfterDeserialization() { #region conversion of old NSM parameters if (Parameters.ContainsKey(SelectorParameterName)) { // change SelectorParameter type from ISelector to ISingleObjectiveSelector ValueParameter<ISelector> param = Parameters[SelectorParameterName] as ValueParameter<ISelector>; if (param != null) { ISingleObjectiveSelector selector = param.Value as ISingleObjectiveSelector; if (selector == null) selector = new TournamentSelector(); Parameters.Remove(SelectorParameterName); Parameters.Add(new ValueParameter<ISingleObjectiveSelector>(SelectorParameterName, "The inner selection operator to select the parents.", selector)); } } // FixedValueParameter for quality difference percentage, max attempts, use range if (Parameters.ContainsKey(QualityDifferencePercentageParameterName)) { ValueParameter<PercentValue> param = Parameters[QualityDifferencePercentageParameterName] as ValueParameter<PercentValue>; if (!(param is FixedValueParameter<PercentValue>)) { PercentValue diff = param != null ? param.Value as PercentValue : null; if (diff == null) diff = new PercentValue(0.05); Parameters.Remove(QualityDifferencePercentageParameterName); Parameters.Add(new FixedValueParameter<PercentValue>(QualityDifferencePercentageParameterName, "The minimum quality difference from parent1 to parent2 to accept the selection.", diff)); } } if (Parameters.ContainsKey(QualityDifferenceMaxAttemptsParameterName)) { ValueParameter<IntValue> param = Parameters[QualityDifferenceMaxAttemptsParameterName] as ValueParameter<IntValue>; if (!(param is FixedValueParameter<IntValue>)) { IntValue attempts = param != null ? param.Value as IntValue : null; if (attempts == null) attempts = new IntValue(5); Parameters.Remove(QualityDifferenceMaxAttemptsParameterName); Parameters.Add(new FixedValueParameter<IntValue>(QualityDifferenceMaxAttemptsParameterName, "The maximum number of attempts to find parents which differ in quality.", attempts)); } } if (Parameters.ContainsKey(QualityDifferenceUseRangeParameterName)) { ValueParameter<BoolValue> param = Parameters[QualityDifferenceUseRangeParameterName] as ValueParameter<BoolValue>; if (!(param is FixedValueParameter<BoolValue>)) { BoolValue range = param != null ? param.Value as BoolValue : null; if (range == null) range = new BoolValue(true); Parameters.Remove(QualityDifferenceUseRangeParameterName); Parameters.Add(new FixedValueParameter<BoolValue>(QualityDifferenceUseRangeParameterName, "Use the range from minimum to maximum quality as basis for QualityDifferencePercentage.", range)); } } if (!Parameters.ContainsKey(QualityDifferenceUseRangeParameterName)) // add use range parameter Parameters.Add(new FixedValueParameter<BoolValue>(QualityDifferenceUseRangeParameterName, "Use the range from minimum to maximum quality as basis for QualityDifferencePercentage.", new BoolValue(true))); #endregion RegisterParameterEventHandlers(); }
private TournamentSelector(TournamentSelector original, Cloner cloner) : base(original, cloner) { }