Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/25/15 16:22:37 (8 years ago)
Author:
abeham
Message:

#2521:

  • Refactored QuadraticAssignmentProblem to use new SingleObjectiveProblem
    • Removed QAPEvaluator
    • Adapted RobustTabooSearch
  • Introduced several interfaces in PermutationEncoding necessary for wiring
  • Changed all Encodings to use IItem instead of IOperator in ConfigureOperators (name still unchanged)
  • Added a protected MaximizationParameter property in SingleObjectiveProblem (necessary for wiring)
  • Changed AlleleFrequnencyAnalyzer to use ISolution interface instead of IItem
  • Added a comment to ISolutionCreator<TSolution> of some changes that would be welcomed
Location:
branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3
Files:
3 added
17 edited
4 copied

Legend:

Unmodified
Added
Removed
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/HeuristicLab.Encodings.PermutationEncoding-3.3.csproj

    r11961 r13396  
    128128    <Compile Include="Crossovers\PositionBasedCrossover.cs" />
    129129    <Compile Include="Crossovers\UniformLikeCrossover.cs" />
     130    <Compile Include="Interfaces\IPermutationInversionMoveQualityOperator.cs" />
     131    <Compile Include="Interfaces\IPermutationLocalImprovementOperator.cs" />
     132    <Compile Include="Interfaces\IPermutationScrambleMoveQualityOperator.cs" />
    130133    <Compile Include="Interfaces\IPermutationScrambleMoveOperator.cs" />
    131134    <Compile Include="Interfaces\IPermutationMultiNeighborhoodShakingOperator.cs" />
     135    <Compile Include="Interfaces\IPermutationSolutionsOperator.cs" />
     136    <Compile Include="Interfaces\IPermutationSolutionOperator.cs" />
     137    <Compile Include="Interfaces\IPermutationSwap2MoveQualityOperator.cs" />
    132138    <Compile Include="Interfaces\IPermutationSwap2MoveOperator.cs" />
    133139    <Compile Include="Interfaces\IPermutationCreator.cs" />
     
    136142    <Compile Include="Interfaces\IPermutationMoveOperator.cs" />
    137143    <Compile Include="Interfaces\IPermutationOperator.cs" />
     144    <Compile Include="Interfaces\IPermutationTranslocationMoveQualityOperator.cs" />
    138145    <Compile Include="Interfaces\IPermutationTranslocationMoveOperator.cs" />
    139146    <Compile Include="Interfaces\IPermutationInversionMoveOperator.cs" />
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationCreator.cs

    r13366 r13396  
    2828  /// An interface which represents an operator for creating permutations.
    2929  /// </summary>
    30   public interface IPermutationCreator : IPermutationOperator, ISolutionCreator<Permutation> {
     30  public interface IPermutationCreator : IPermutationSolutionOperator, ISolutionCreator<Permutation> {
    3131    IValueLookupParameter<IntValue> LengthParameter { get; }
    32     ILookupParameter<Permutation> PermutationParameter { get; }
    3332    IValueParameter<PermutationType> PermutationTypeParameter { get; }
    3433  }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationInversionMoveQualityOperator.cs

    r13393 r13396  
    2121
    2222using HeuristicLab.Core;
     23using HeuristicLab.Data;
    2324
    2425namespace HeuristicLab.Encodings.PermutationEncoding {
    25   public interface IPermutationInversionMoveOperator : IPermutationMoveOperator {
    26     ILookupParameter<InversionMove> InversionMoveParameter { get; }
     26  public interface IPermutationInversionMoveQualityOperator : IPermutationInversionMoveOperator {
     27    ILookupParameter<DoubleValue> MoveQualityParameter { get; }
    2728  }
    2829}
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationManipulator.cs

    r12012 r13396  
    2020#endregion
    2121
    22 using HeuristicLab.Core;
    2322using HeuristicLab.Optimization;
    2423
     
    2726  /// An interface which represents an operator for manipulating solutions.
    2827  /// </summary>
    29   public interface IPermutationManipulator : IPermutationOperator, IManipulator {
    30     ILookupParameter<Permutation> PermutationParameter { get; }
    31   }
     28  public interface IPermutationManipulator : IPermutationSolutionOperator, IManipulator { }
    3229}
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationScrambleMoveQualityOperator.cs

    r13393 r13396  
    2121
    2222using HeuristicLab.Core;
     23using HeuristicLab.Data;
    2324
    2425namespace HeuristicLab.Encodings.PermutationEncoding {
    25   public interface IPermutationScrambleMoveOperator : IPermutationMoveOperator {
    26     ILookupParameter<ScrambleMove> ScrambleMoveParameter { get; }
     26  public interface IPermutationScrambleMoveQualityOperator : IPermutationScrambleMoveOperator {
     27    ILookupParameter<DoubleValue> MoveQualityParameter { get; }
    2728  }
    2829}
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationSwap2MoveQualityOperator.cs

    r13393 r13396  
    2121
    2222using HeuristicLab.Core;
     23using HeuristicLab.Data;
    2324
    2425namespace HeuristicLab.Encodings.PermutationEncoding {
    25   public interface IPermutationSwap2MoveOperator : IPermutationMoveOperator {
    26     ILookupParameter<Swap2Move> Swap2MoveParameter { get; }
     26  public interface IPermutationSwap2MoveQualityOperator : IPermutationSwap2MoveOperator {
     27    ILookupParameter<DoubleValue> MoveQualityParameter { get; }
    2728  }
    2829}
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Interfaces/IPermutationTranslocationMoveQualityOperator.cs

    r13393 r13396  
    2121
    2222using HeuristicLab.Core;
     23using HeuristicLab.Data;
    2324
    2425namespace HeuristicLab.Encodings.PermutationEncoding {
    25   public interface IPermutationTranslocationMoveOperator : IPermutationMoveOperator {
    26     ILookupParameter<TranslocationMove> TranslocationMoveParameter { get; }
     26  public interface IPermutationTranslocationMoveQualityOperator : IPermutationTranslocationMoveOperator {
     27    ILookupParameter<DoubleValue> MoveQualityParameter { get; }
    2728  }
    2829}
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Scramble/ScrambleMoveMaker.cs

    r12012 r13396  
    3131  [Item("ScrambleMoveMaker", "Peforms a scramble move on a given permutation and updates the quality.")]
    3232  [StorableClass]
    33   public class ScrambleMoveMaker : SingleSuccessorOperator, IPermutationScrambleMoveOperator, IMoveMaker, ISingleObjectiveOperator {
     33  public class ScrambleMoveMaker : SingleSuccessorOperator, IPermutationScrambleMoveQualityOperator, IMoveMaker, ISingleObjectiveOperator {
    3434    public override bool CanChangeName {
    3535      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Swap2/Swap2MoveHardTabuCriterion.cs

    r12012 r13396  
    3535If the aspiration condition is activated, a move will not be considered tabu against a move in the tabu list if it leads to a better solution than the quality recorded with the move in the tabu list.")]
    3636  [StorableClass]
    37   public class Swap2MoveHardTabuCriterion : SingleSuccessorOperator, IPermutationSwap2MoveOperator, ITabuChecker {
     37  public class Swap2MoveHardTabuCriterion : SingleSuccessorOperator, IPermutationSwap2MoveQualityOperator, ITabuChecker {
    3838    public override bool CanChangeName {
    3939      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Swap2/Swap2MoveMaker.cs

    r12012 r13396  
    3131  [Item("Swap2MoveMaker", "Peforms a swap-2 move on a given permutation and updates the quality.")]
    3232  [StorableClass]
    33   public class Swap2MoveMaker : SingleSuccessorOperator, IPermutationSwap2MoveOperator, IMoveMaker, ISingleObjectiveOperator {
     33  public class Swap2MoveMaker : SingleSuccessorOperator, IPermutationSwap2MoveQualityOperator, IMoveMaker, ISingleObjectiveOperator {
    3434    public override bool CanChangeName {
    3535      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Swap2/Swap2MoveSoftTabuCriterion.cs

    r12012 r13396  
    3535If the aspiration condition is activated, a move will not be considered tabu against a move in the tabu list if it leads to a better solution than the quality recorded with the move in the tabu list.")]
    3636  [StorableClass]
    37   public class Swap2MoveSoftTabuCriterion : SingleSuccessorOperator, IPermutationSwap2MoveOperator, ITabuChecker {
     37  public class Swap2MoveSoftTabuCriterion : SingleSuccessorOperator, IPermutationSwap2MoveQualityOperator, ITabuChecker {
    3838    public override bool CanChangeName {
    3939      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/Swap2/Swap2MoveTabuMaker.cs

    r12012 r13396  
    2929  [Item("Swap2MoveTabuMaker", "Declares a given swap-2 move as tabu, by adding its attributes to the tabu list and also store the solution quality or the move quality (whichever is better).")]
    3030  [StorableClass]
    31   public class Swap2MoveTabuMaker : TabuMaker, IPermutationSwap2MoveOperator {
     31  public class Swap2MoveTabuMaker : TabuMaker, IPermutationSwap2MoveQualityOperator {
    3232    public ILookupParameter<Permutation> PermutationParameter {
    3333      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/ThreeOpt/TranslocationMoveHardTabuCriterion.cs

    r12012 r13396  
    3434If the aspiration condition is activated, a move will not be considered tabu against a move in the tabu list if it leads to a better solution than the quality recorded with the move in the tabu list.")]
    3535  [StorableClass]
    36   public class TranslocationMoveHardTabuCriterion : SingleSuccessorOperator, IPermutationTranslocationMoveOperator, ITabuChecker {
     36  public class TranslocationMoveHardTabuCriterion : SingleSuccessorOperator, IPermutationTranslocationMoveQualityOperator, ITabuChecker {
    3737    public override bool CanChangeName {
    3838      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/ThreeOpt/TranslocationMoveMaker.cs

    r12012 r13396  
    3131  [Item("TranslocationMoveMaker", "Peforms a translocation or insertion move (3-opt) on a given permutation and updates the quality.")]
    3232  [StorableClass]
    33   public class TranslocationMoveMaker : SingleSuccessorOperator, IPermutationTranslocationMoveOperator, IMoveMaker, ISingleObjectiveOperator {
     33  public class TranslocationMoveMaker : SingleSuccessorOperator, IPermutationTranslocationMoveQualityOperator, IMoveMaker, ISingleObjectiveOperator {
    3434    public override bool CanChangeName {
    3535      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/ThreeOpt/TranslocationMoveSoftTabuCriterion.cs

    r12012 r13396  
    3434If the aspiration condition is activated, a move will not be considered tabu against a move in the tabu list if it leads to a better solution than the quality recorded with the move in the tabu list.")]
    3535  [StorableClass]
    36   public class TranslocationMoveSoftTabuCriterion : SingleSuccessorOperator, IPermutationTranslocationMoveOperator, ITabuChecker {
     36  public class TranslocationMoveSoftTabuCriterion : SingleSuccessorOperator, IPermutationTranslocationMoveQualityOperator, ITabuChecker {
    3737    public override bool CanChangeName {
    3838      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/ThreeOpt/TranslocationMoveTabuMaker.cs

    r12012 r13396  
    2929  [Item("TranslocationMoveTabuMaker", "Declares a given translocation or insertion move (3-opt) as tabu, by adding its attributes to the tabu list.")]
    3030  [StorableClass]
    31   public class TranslocationMoveTabuMaker : TabuMaker, IPermutationTranslocationMoveOperator {
     31  public class TranslocationMoveTabuMaker : TabuMaker, IPermutationTranslocationMoveQualityOperator {
    3232    public ILookupParameter<Permutation> PermutationParameter {
    3333      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/TwoOpt/InversionMoveHardTabuCriterion.cs

    r12012 r13396  
    3535If the aspiration condition is activated, a move will not be considered tabu against a move in the tabu list if it leads to a better solution than the quality recorded with the move in the tabu list.")]
    3636  [StorableClass]
    37   public class InversionMoveHardTabuCriterion : SingleSuccessorOperator, IPermutationInversionMoveOperator, ITabuChecker {
     37  public class InversionMoveHardTabuCriterion : SingleSuccessorOperator, IPermutationInversionMoveQualityOperator, ITabuChecker {
    3838    public override bool CanChangeName {
    3939      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/TwoOpt/InversionMoveMaker.cs

    r12012 r13396  
    3131  [Item("InversionMoveMaker", "Peforms an inversion move (2-opt) on a given permutation and updates the quality.")]
    3232  [StorableClass]
    33   public class InversionMoveMaker : SingleSuccessorOperator, IPermutationInversionMoveOperator, IMoveMaker, ISingleObjectiveOperator {
     33  public class InversionMoveMaker : SingleSuccessorOperator, IPermutationInversionMoveQualityOperator, IMoveMaker, ISingleObjectiveOperator {
    3434    public override bool CanChangeName {
    3535      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/TwoOpt/InversionMoveSoftTabuCriterion.cs

    r12012 r13396  
    3535If the aspiration condition is activated, a move will not be considered tabu against a move in the tabu list if it leads to a better solution than the quality recorded with the move in the tabu list.")]
    3636  [StorableClass]
    37   public class InversionMoveSoftTabuCriterion : SingleSuccessorOperator, IPermutationInversionMoveOperator, ITabuChecker {
     37  public class InversionMoveSoftTabuCriterion : SingleSuccessorOperator, IPermutationInversionMoveQualityOperator, ITabuChecker {
    3838    public override bool CanChangeName {
    3939      get { return false; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/Moves/TwoOpt/InversionMoveTabuMaker.cs

    r12012 r13396  
    2929  [Item("InversionMoveTabuMaker", "Declares a given inversion move (2-opt) as tabu, by adding its attributes to the tabu list and also store the solution quality or the move quality (whichever is better).")]
    3030  [StorableClass]
    31   public class InversionMoveTabuMaker : TabuMaker, IPermutationInversionMoveOperator {
     31  public class InversionMoveTabuMaker : TabuMaker, IPermutationInversionMoveQualityOperator {
    3232    public ILookupParameter<Permutation> PermutationParameter {
    3333      get { return (ILookupParameter<Permutation>)Parameters["Permutation"]; }
  • branches/ProblemRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationEncoding.cs

    r13366 r13396  
    145145          typeof (IPermutationScrambleMoveOperator),
    146146          typeof (IPermutationSwap2MoveOperator),                   
    147           typeof (IPermutationTranslocationMoveOperator)
     147          typeof (IPermutationTranslocationMoveOperator),
     148          typeof (IPermutationLocalImprovementOperator),
     149          typeof (IPermutationSolutionOperator),
     150          typeof (IPermutationSolutionsOperator),
    148151      };
    149152    }
     
    160163    #endregion
    161164
    162     public override void ConfigureOperators(IEnumerable<IOperator> operators) {
     165    public override void ConfigureOperators(IEnumerable<IItem> operators) {
    163166      ConfigureCreators(operators.OfType<IPermutationCreator>());
    164167      ConfigureCrossovers(operators.OfType<IPermutationCrossover>());
     
    170173      ConfigureSwap2MoveOperators(operators.OfType<IPermutationSwap2MoveOperator>());
    171174      ConfigureTranslocationMoveOperators(operators.OfType<IPermutationTranslocationMoveOperator>());
     175      ConfigureLocalImprovementOperators(operators.OfType<IPermutationLocalImprovementOperator>());
     176      ConfigureSolutionOperators(operators.OfType<IPermutationSolutionOperator>());
     177      ConfigureSolutionsOperators(operators.OfType<IPermutationSolutionsOperator>());
    172178    }
    173179
     
    176182      foreach (var creator in creators) {
    177183        creator.LengthParameter.ActualName = LengthParameter.Name;
    178         creator.PermutationParameter.ActualName = Name;
    179184        creator.PermutationTypeParameter.Value.Value = Type;
    180185      }
     
    187192    }
    188193    private void ConfigureManipulators(IEnumerable<IPermutationManipulator> manipulators) {
    189       foreach (var manipulator in manipulators) {
    190         manipulator.PermutationParameter.ActualName = Name;
    191       }
     194      // IPermutationManipulator does not contain additional parameters (already contained in IPermutationSolutionOperator)
    192195    }
    193196    private void ConfigureShakingOperators(IEnumerable<IPermutationMultiNeighborhoodShakingOperator> shakingOperators) {
     
    221224      }
    222225    }
    223 
     226    private void ConfigureLocalImprovementOperators(IEnumerable<IPermutationLocalImprovementOperator> localImprovementOperators) {
     227      // IPermutationLocalImprovementOperator does not contain additional parameters (already contained in IPermutationSolutionOperator)
     228    }
     229    private void ConfigureSolutionOperators(IEnumerable<IPermutationSolutionOperator> solutionOperators) {
     230      foreach (var solutionOperator in solutionOperators) {
     231        solutionOperator.PermutationParameter.ActualName = Name;
     232      }
     233    }
     234    private void ConfigureSolutionsOperators(IEnumerable<IPermutationSolutionsOperator> solutionsOperators) {
     235      foreach (var solutionsOperator in solutionsOperators) {
     236        solutionsOperator.PermutationsParameter.ActualName = Name;
     237      }
     238    }
    224239    #endregion
    225240  }
Note: See TracChangeset for help on using the changeset viewer.