private void ParameterizeSelector(ISingleObjectiveSelector selector) { selector.CopySelected = new BoolValue(true); // must always be true selector.MaximizationParameter.ActualName = MaximizationParameter.Name; selector.QualityParameter.ActualName = QualityParameter.Name; IStochasticOperator stoOp = (selector as IStochasticOperator); if (stoOp != null) { stoOp.RandomParameter.ActualName = RandomParameter.Name; } }
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 ParameterizeSelector(ISingleObjectiveSelector selector) { selector.CopySelected = new BoolValue(true); // must always be true selector.MaximizationParameter.ActualName = MaximizationParameter.Name; selector.QualityParameter.ActualName = QualityParameter.Name; IStochasticOperator stoOp = (selector as IStochasticOperator); if (stoOp != null) stoOp.RandomParameter.ActualName = RandomParameter.Name; }