Changeset 11970 for trunk/sources/HeuristicLab.Optimization/3.3
- Timestamp:
- 02/07/15 13:52:48 (9 years ago)
- Location:
- trunk/sources/HeuristicLab.Optimization/3.3
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Optimization/3.3/BasicProblems/BasicProblem.cs
r11949 r11970 86 86 private void RegisterEvents() { 87 87 EncodingParameter.ValueChanged += (o, e) => OnEncodingChanged(); 88 var multiEncoding = Encoding as MultiEncoding; 89 if (multiEncoding != null) multiEncoding.EncodingsChanged += MultiEncodingOnEncodingsChanged; 88 90 } 89 91 90 92 protected virtual void OnEncodingChanged() { 91 if (oldEncoding != null) AdaptEncodingOperators(oldEncoding, Encoding); 93 if (oldEncoding != null) { 94 AdaptEncodingOperators(oldEncoding, Encoding); 95 var oldMultiEncoding = oldEncoding as MultiEncoding; 96 if (oldMultiEncoding != null) 97 oldMultiEncoding.EncodingsChanged -= MultiEncodingOnEncodingsChanged; 98 } 92 99 oldEncoding = Encoding; 93 100 … … 104 111 //TODO register solution creator changed event, change access modifier to private 105 112 //((IValueParameter)solutionCreatorParam).ValueChanged += SolutionCreatorParameter_ValueChanged; 113 114 var multiEncoding = Encoding as MultiEncoding; 115 if (multiEncoding != null) multiEncoding.EncodingsChanged += MultiEncodingOnEncodingsChanged; 106 116 107 117 OnOperatorsChanged(); … … 141 151 } 142 152 153 protected virtual void MultiEncodingOnEncodingsChanged(object sender, EventArgs e) { 154 OnOperatorsChanged(); 155 } 143 156 } 144 157 } -
trunk/sources/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/ISingleObjectiveMoveOperator.cs
r11961 r11970 21 21 22 22 namespace HeuristicLab.Optimization { 23 public interface ISingleObjectiveMoveOperator : IMoveOperator {23 public interface ISingleObjectiveMoveOperator : IMoveOperator, ISingleObjectiveOperator { 24 24 } 25 25 } -
trunk/sources/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/IMultiObjectiveAnalysisOperator.cs
r11949 r11970 24 24 25 25 namespace HeuristicLab.Optimization { 26 internal interface IMultiObjectiveAnalysisOperator : IEncodingOperator, IAnalyzer {26 internal interface IMultiObjectiveAnalysisOperator : IEncodingOperator, IAnalyzer, IMultiObjectiveOperator { 27 27 Action<Individual[], double[][], ResultCollection, IRandom> AnalyzeAction { get; set; } 28 28 } -
trunk/sources/HeuristicLab.Optimization/3.3/BasicProblems/Interfaces/internal/ISingleObjectiveAnalysisOperator.cs
r11961 r11970 24 24 25 25 namespace HeuristicLab.Optimization { 26 internal interface ISingleObjectiveAnalysisOperator : IEncodingOperator {26 internal interface ISingleObjectiveAnalysisOperator : IEncodingOperator, ISingleObjectiveOperator { 27 27 Action<Individual[], double[], ResultCollection, IRandom> AnalyzeAction { get; set; } 28 28 } -
trunk/sources/HeuristicLab.Optimization/3.3/BasicProblems/MultiObjectiveBasicProblem.cs
r11949 r11970 63 63 } 64 64 65 protected override void OnOperatorsChanged() { 66 base.OnOperatorsChanged(); 67 if (Encoding != null) { 68 PruneSingleObjectiveOperators(Encoding); 69 var multiEncoding = Encoding as MultiEncoding; 70 if (multiEncoding != null) { 71 foreach (var encoding in multiEncoding.Encodings.ToList()) { 72 PruneSingleObjectiveOperators(encoding); 73 } 74 } 75 } 76 } 77 78 private void PruneSingleObjectiveOperators(IEncoding encoding) { 79 if (encoding != null && encoding.Operators.Any(x => x is ISingleObjectiveOperator && !(x is IMultiObjectiveOperator))) 80 encoding.Operators = encoding.Operators.Where(x => !(x is ISingleObjectiveOperator) || x is IMultiObjectiveOperator).ToList(); 81 } 82 65 83 protected override void OnEvaluatorChanged() { 66 84 base.OnEvaluatorChanged(); -
trunk/sources/HeuristicLab.Optimization/3.3/BasicProblems/SingleObjectiveBasicProblem.cs
r11949 r11970 75 75 } 76 76 77 protected override void OnOperatorsChanged() { 78 base.OnOperatorsChanged(); 79 if (Encoding != null) { 80 PruneMultiObjectiveOperators(Encoding); 81 var multiEncoding = Encoding as MultiEncoding; 82 if (multiEncoding != null) { 83 foreach (var encoding in multiEncoding.Encodings.ToList()) { 84 PruneMultiObjectiveOperators(encoding); 85 } 86 } 87 } 88 } 89 90 private void PruneMultiObjectiveOperators(IEncoding encoding) { 91 if (encoding.Operators.Any(x => x is IMultiObjectiveOperator && !(x is ISingleObjectiveOperator))) 92 encoding.Operators = encoding.Operators.Where(x => !(x is IMultiObjectiveOperator) || x is ISingleObjectiveOperator).ToList(); 93 } 94 77 95 protected override void OnEvaluatorChanged() { 78 96 base.OnEvaluatorChanged(); -
trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj
r11961 r11970 154 154 <Compile Include="BasicProblems\SingleObjectiveBasicProblem.cs" /> 155 155 <Compile Include="Interfaces\ILocalImprovementAlgorithmOperator.cs" /> 156 <Compile Include="Interfaces\IMultiObjectiveOperator.cs" /> 157 <Compile Include="Interfaces\ISingleObjectiveOperator.cs" /> 156 158 <Compile Include="Interfaces\ISingleObjectivePathRelinker.cs" /> 157 159 <Compile Include="Interfaces\ISingleObjectiveImprovementOperator.cs" /> -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IMultiObjectiveEvaluator.cs
r11171 r11970 27 27 /// An interface which represents an evaluation operator for multi-objective optimization problems. 28 28 /// </summary> 29 public interface IMultiObjectiveEvaluator : IEvaluator {29 public interface IMultiObjectiveEvaluator : IEvaluator, IMultiObjectiveOperator { 30 30 ILookupParameter<DoubleArray> QualitiesParameter { get; } 31 31 } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IMultiObjectiveSelector.cs
r11171 r11970 27 27 /// An interface which represents a selection operator for selecting solutions of multi-objective optimization problems. 28 28 /// </summary> 29 public interface IMultiObjectiveSelector : ISelector {29 public interface IMultiObjectiveSelector : ISelector, IMultiObjectiveOperator { 30 30 ILookupParameter<BoolArray> MaximizationParameter { get; } 31 31 ILookupParameter<ItemArray<DoubleArray>> QualitiesParameter { get; } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleMoveGenerator.cs
r11171 r11970 21 21 22 22 namespace HeuristicLab.Optimization { 23 public interface ISingleMoveGenerator : IMoveGenerator {23 public interface ISingleMoveGenerator : IMoveGenerator, ISingleObjectiveOperator { 24 24 } 25 25 } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectiveEvaluator.cs
r11171 r11970 27 27 /// An interface which represents an evaluation operator for single-objective optimization problems. 28 28 /// </summary> 29 public interface ISingleObjectiveEvaluator : IEvaluator {29 public interface ISingleObjectiveEvaluator : IEvaluator, ISingleObjectiveOperator { 30 30 ILookupParameter<DoubleValue> QualityParameter { get; } 31 31 } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectiveImprovementOperator.cs
r11171 r11970 26 26 /// An interface which represents an operator for improvement of a single objective solution. 27 27 /// </summary> 28 public interface ISingleObjectiveImprovementOperator : IImprovementOperator {28 public interface ISingleObjectiveImprovementOperator : IImprovementOperator, ISingleObjectiveOperator { 29 29 IValueLookupParameter<IItem> SolutionParameter { get; } 30 30 } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectiveMoveEvaluator.cs
r11171 r11970 24 24 25 25 namespace HeuristicLab.Optimization { 26 public interface ISingleObjectiveMoveEvaluator : IOperator {26 public interface ISingleObjectiveMoveEvaluator : IOperator, ISingleObjectiveOperator { 27 27 ILookupParameter<DoubleValue> QualityParameter { get; } 28 28 ILookupParameter<DoubleValue> MoveQualityParameter { get; } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectivePathRelinker.cs
r11171 r11970 26 26 /// An interface which represents an operator for path relinking between single objective solutions. 27 27 /// </summary> 28 public interface ISingleObjectivePathRelinker : IPathRelinker {28 public interface ISingleObjectivePathRelinker : IPathRelinker, ISingleObjectiveOperator { 29 29 ILookupParameter<ItemArray<IItem>> ParentsParameter { get; } 30 30 } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectiveReplacer.cs
r11171 r11970 27 27 /// An interface which represents a replacement operator for replacing solutions of single-objective optimization problems. 28 28 /// </summary> 29 public interface ISingleObjectiveReplacer : IReplacer {29 public interface ISingleObjectiveReplacer : IReplacer, ISingleObjectiveOperator { 30 30 IValueLookupParameter<BoolValue> MaximizationParameter { get; } 31 31 ILookupParameter<ItemArray<DoubleValue>> QualityParameter { get; } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectiveSelector.cs
r11171 r11970 27 27 /// An interface which represents a selection operator for selecting solutions of single-objective optimization problems. 28 28 /// </summary> 29 public interface ISingleObjectiveSelector : ISelector {29 public interface ISingleObjectiveSelector : ISelector, ISingleObjectiveOperator { 30 30 IValueLookupParameter<BoolValue> MaximizationParameter { get; } 31 31 ILookupParameter<ItemArray<DoubleValue>> QualityParameter { get; } -
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/ISingleObjectiveSolutionSimilarityCalculator.cs
r11171 r11970 24 24 /// An interface which represents an operator for similarity calculation between single objective solutions. 25 25 /// </summary> 26 public interface ISingleObjectiveSolutionSimilarityCalculator : ISolutionSimilarityCalculator {26 public interface ISingleObjectiveSolutionSimilarityCalculator : ISolutionSimilarityCalculator, ISingleObjectiveOperator { 27 27 string SolutionVariableName { get; set; } 28 28 string QualityVariableName { get; set; }
Note: See TracChangeset
for help on using the changeset viewer.