Changeset 3336 for trunk/sources/HeuristicLab.Optimization/3.3/Interfaces
- Timestamp:
- 04/13/10 18:32:07 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Optimization/3.3/Interfaces
- Files:
-
- 5 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IMoveOperator.cs
r3044 r3336 23 23 24 24 namespace HeuristicLab.Optimization { 25 /// <summary> 26 /// The basic interface that marks all move operators. 27 /// </summary> 28 /// <remarks> 29 /// A group of move operators that belong together should derive an interface from this one 30 /// and implement the interface in each operator.<br /> 31 /// In an algorithm one can thus find out all move operators that belong together, by grouping operators 32 /// according to the most specific interface derived from this interface that they implement.<br /><br /> 33 /// A concrete example:<br /> 34 /// You have a solution representation <c>MyRep</c> and there you have a move <c>MyRepMove</c> that you want 35 /// to make available to the friendly GUIs. So in <c>MyRep</c> you derive an interface <c>IMyRepMoveOperator</c>.<br /> 36 /// Now you need to implement at least three operators that handle these moves: A MoveGenerator, a MoveMaker, and a MoveEvaluator. 37 /// Note: The MoveEvaluator should be implemented in the problem plugin if you choose to separate representation and problem.<br /> 38 /// In each of these operators you implement <c>IMyRepMoveOperator</c> as well as the appropriate operator specific interface. 39 /// For a MoveGenerator that would be one of <c>IExhaustiveMoveGenerator</c>, <c>ISingleMoveGenerator</c>, 40 /// or <c>IMultiMoveGenerator</c>, for a MoveMaker that would be <c>IMoveMaker</c>, and for a MoveEvaluator that would 41 /// either be <c>ISingleObjectiveMoveEvaluator</c> or <c>IMultiObjectiveMoveEvaluator</c>.<br /> 42 /// If you have this you need to make sure that an instance of all your operators are loaded in the Operators collection of your IProblem 43 /// and you can select them in the respective algorithms.<br /><br /> 44 /// For Tabu Search support you will need two additional operators: A TabuChecker (e.g. derived from <see cref="TabuChecker" />), 45 /// and a TabuMaker.<br /><br /> 46 /// If you decide later that you want another move, e.g. <c>MyRepMove2</c>, you would do as before and group them under 47 /// the interface <c>IMyRepMove2Operator</c>.<br /><br /> 48 /// If you want to make use of multiple different moves, all your operators would need to know about all the moves that you plan 49 /// to use.<br /><br /> 50 /// Take a look at the Permutation and TSP plugin to see how this looks like in real code. 51 /// </remarks> 25 52 public interface IMoveOperator : IOperator { 26 53 }
Note: See TracChangeset
for help on using the changeset viewer.