Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/09/12 12:22:33 (12 years ago)
Author:
jkarder
Message:

#1331:

  • fixed bug in path relinking selection
  • fixed bug in ScatterSearch.Prepare()
  • added custom interface (IImprovementOperator) for Scatter Search specific improvement operators
  • switched from diversity calculation to similarity calculation
  • separated IPathRelinker from ICrossover
  • changed TestFunctionsImprovementOperator to use reflection for evaluating functions
  • changed SolutionPoolUpdateMethod to use similarity calculation for solution comparison
  • improved TravelingSalesmanImprovementOperator
  • improved operator graph
  • removed specific operators used to evaluate TestFunctions problems
  • removed custom crossover operator (NChildCrossover)
  • added parameters and adjusted types
  • adjusted event handling
  • changed access levels
  • minor code improvements
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ScatterSearch/HeuristicLab.Algorithms.ScatterSearch/3.3/Knapsack/KnapsackImprovementOperator.cs

    r7775 r7786  
    2020#endregion
    2121
    22 using System;
    2322using System.Linq;
    2423using HeuristicLab.Common;
     
    2726using HeuristicLab.Encodings.BinaryVectorEncoding;
    2827using HeuristicLab.Operators;
    29 using HeuristicLab.Optimization;
    3028using HeuristicLab.Parameters;
    3129using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3836  [Item("KnapsackImprovementOperator", "An operator that improves knapsack solutions.")]
    3937  [StorableClass]
    40   public sealed class KnapsackImprovementOperator : SingleSuccessorOperator, ILocalImprovementOperator, IScatterSearchTargetProcessor {
    41     #region Problem properties
    42     public Type ProblemType {
    43       get { return typeof(KnapsackProblem); }
    44     }
    45     [Storable]
    46     private KnapsackProblem problem;
    47     public IProblem Problem {
    48       get { return problem; }
    49       set { problem = (KnapsackProblem)value; }
    50     }
    51     #endregion
    52 
     38  public sealed class KnapsackImprovementOperator : SingleSuccessorOperator, IImprovementOperator {
    5339    #region Parameter properties
    5440    public ScopeParameter CurrentScopeParameter {
    5541      get { return (ScopeParameter)Parameters["CurrentScope"]; }
    5642    }
    57     public IValueLookupParameter<IntArray> ValuesParameter {
    58       get { return (IValueLookupParameter<IntArray>)Parameters["Values"]; }
     43    public ILookupParameter<IntValue> KnapsackCapacityParameter {
     44      get { return (ILookupParameter<IntValue>)Parameters["KnapsackCapacity"]; }
    5945    }
    60     public IValueLookupParameter<IntArray> WeightsParameter {
    61       get { return (IValueLookupParameter<IntArray>)Parameters["Weights"]; }
    62     }
    63     public IValueLookupParameter<IntValue> KnapsackCapacityParameter {
    64       get { return (IValueLookupParameter<IntValue>)Parameters["KnapsackCapacity"]; }
     46    public ILookupParameter<DoubleValue> PenaltyParameter {
     47      get { return (ILookupParameter<DoubleValue>)Parameters["Penalty"]; }
    6548    }
    6649    public IValueLookupParameter<IItem> TargetParameter {
    6750      get { return (IValueLookupParameter<IItem>)Parameters["Target"]; }
    6851    }
    69     public IValueLookupParameter<DoubleValue> PenaltyParameter {
    70       get { return (IValueLookupParameter<DoubleValue>)Parameters["Penalty"]; }
     52    public ILookupParameter<IntArray> ValuesParameter {
     53      get { return (ILookupParameter<IntArray>)Parameters["Values"]; }
    7154    }
    72     #region ILocalImprovementOperator Parameters
    73     public IValueLookupParameter<IntValue> MaximumIterationsParameter {
    74       get { return (IValueLookupParameter<IntValue>)Parameters["MaximumIterations"]; }
     55    public ILookupParameter<IntArray> WeightsParameter {
     56      get { return (ILookupParameter<IntArray>)Parameters["Weights"]; }
    7557    }
    76     public ILookupParameter<IntValue> EvaluatedSolutionsParameter {
    77       get { return (ILookupParameter<IntValue>)Parameters["EvaluatedSolutions"]; }
    78     }
    79     public ILookupParameter<ResultCollection> ResultsParameter {
    80       get { return (ILookupParameter<ResultCollection>)Parameters["Results"]; }
    81     }
    82     #endregion
    8358    #endregion
    8459
     
    8661    private IScope CurrentScope {
    8762      get { return CurrentScopeParameter.ActualValue; }
     63    }
     64    private IntValue KnapsackCapacity {
     65      get { return KnapsackCapacityParameter.ActualValue; }
     66      set { KnapsackCapacityParameter.ActualValue = value; }
     67    }
     68    private DoubleValue Penalty {
     69      get { return PenaltyParameter.ActualValue; }
     70      set { PenaltyParameter.ActualValue = value; }
     71    }
     72    private IItem Target {
     73      get { return TargetParameter.ActualValue; }
    8874    }
    8975    private IntArray Values {
     
    9581      set { WeightsParameter.ActualValue = value; }
    9682    }
    97     private IntValue KnapsackCapacity {
    98       get { return KnapsackCapacityParameter.ActualValue; }
    99       set { KnapsackCapacityParameter.ActualValue = value; }
    100     }
    101     private IItem Target {
    102       get { return TargetParameter.ActualValue; }
    103     }
    104     private DoubleValue Penalty {
    105       get { return PenaltyParameter.ActualValue; }
    106       set { PenaltyParameter.ActualValue = value; }
    107     }
    10883    #endregion
    10984
    11085    [StorableConstructor]
    11186    private KnapsackImprovementOperator(bool deserializing) : base(deserializing) { }
    112     private KnapsackImprovementOperator(KnapsackImprovementOperator original, Cloner cloner)
    113       : base(original, cloner) {
    114       this.problem = cloner.Clone(original.problem);
    115     }
     87    private KnapsackImprovementOperator(KnapsackImprovementOperator original, Cloner cloner) : base(original, cloner) { }
    11688    public KnapsackImprovementOperator()
    11789      : base() {
    11890      #region Create parameters
    11991      Parameters.Add(new ScopeParameter("CurrentScope"));
    120       Parameters.Add(new ValueLookupParameter<IntArray>("Values"));
    121       Parameters.Add(new ValueLookupParameter<IntArray>("Weights"));
    122       Parameters.Add(new ValueLookupParameter<IntValue>("KnapsackCapacity"));
     92      Parameters.Add(new LookupParameter<IntValue>("KnapsackCapacity"));
     93      Parameters.Add(new LookupParameter<DoubleValue>("Penalty"));
    12394      Parameters.Add(new ValueLookupParameter<IItem>("Target"));
    124       Parameters.Add(new ValueLookupParameter<DoubleValue>("Penalty"));
     95      Parameters.Add(new LookupParameter<IntArray>("Values"));
     96      Parameters.Add(new LookupParameter<IntArray>("Weights"));
    12597      #endregion
    12698      TargetParameter.ActualName = "KnapsackSolution"; // temporary solution for the knapsack problem
     
    132104
    133105    public override IOperation Apply() {
    134       var sol = CurrentScope.Variables[TargetParameter.ActualName].Value as BinaryVector;
     106      BinaryVector sol = CurrentScope.Variables[TargetParameter.ActualName].Value as BinaryVector;
    135107
    136108      // calculate value-to-weight ratio
Note: See TracChangeset for help on using the changeset viewer.