Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/01/10 11:13:46 (14 years ago)
Author:
svonolfe
Message:

Merged r4351 of the VRP feature branch into trunk (#1039)

Location:
trunk/sources/HeuristicLab.Problems.VehicleRouting
Files:
28 deleted
8 edited
28 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.VehicleRouting

  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs

    r4204 r4352  
    2626using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2727using System.Collections.Generic;
     28using HeuristicLab.Problems.VehicleRouting.Encodings.General;
    2829
    2930namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    3031  [Item("AlbaEncoding", "Represents an Alba encoding of VRP solutions. It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")]
    3132  [StorableClass]
    32   public class AlbaEncoding : Permutation, IVRPEncoding {
     33  public class AlbaEncoding : PermutationEncoding {
    3334    [Storable]
    3435    private int cities;
    3536   
    3637    #region IVRPEncoding Members
    37     public ItemList<Tour> Tours {
    38       get {
    39         ItemList<Tour> result = new ItemList<Tour>();
    40        
    41         Tour tour = new Tour();
    42         for (int i = 0; i < this.array.Length; i++) {
    43           if (this.array[i] >= cities) {
    44             if (tour.Cities.Count > 0) {
    45               result.Add(tour);
     38    public override List<Tour> GetTours(ILookupParameter<DoubleMatrix> distanceMatrix = null, int maxVehicles = int.MaxValue) {
     39      List<Tour> result = new List<Tour>();
    4640
    47               tour = new Tour();
    48             }
    49           } else {
    50             tour.Cities.Add(this.array[i] + 1);
     41      Tour tour = new Tour();
     42      for (int i = 0; i < this.array.Length; i++) {
     43        if (this.array[i] >= cities) {
     44          if (tour.Cities.Count > 0) {
     45            result.Add(tour);
     46
     47            tour = new Tour();
    5148          }
     49        } else {
     50          tour.Cities.Add(this.array[i] + 1);
    5251        }
     52      }
    5353
    54         if (tour.Cities.Count > 0) {
    55           result.Add(tour);
    56         }
     54      if (tour.Cities.Count > 0) {
     55        result.Add(tour);
     56      }
    5757
    58         return result;
    59       }
     58      return result;
    6059    }
    6160
     
    6564
    6665    public int MaxVehicles {
    67       get { return Length - Cities;  }
     66      get { return Length - Cities + 1;  }
    6867    }
    6968
     
    7978
    8079    public AlbaEncoding(Permutation permutation, int cities)
    81       : base(PermutationTypes.RelativeUndirected) {
    82       this.array = new int[permutation.Length];
    83       for (int i = 0; i < array.Length; i++)
    84         this.array[i] = permutation[i];
    85 
     80      : base(permutation) {
    8681      this.cities = cities;
    8782    }
     
    8984    [StorableConstructor]
    9085    private AlbaEncoding(bool serializing)
    91       : base() {
     86      : base(serializing) {
    9287    }
    9388
    94     public static AlbaEncoding ConvertFrom(IVRPEncoding encoding, int vehicles) {
    95       ItemList<Tour> tours = encoding.Tours;
     89    public static AlbaEncoding ConvertFrom(IVRPEncoding encoding, int vehicles, ILookupParameter<DoubleMatrix> distanceMatrix) {
     90      List<Tour> tours = encoding.GetTours(distanceMatrix, vehicles);
    9691
    9792      int cities = 0;
     
    132127    public static AlbaEncoding ConvertFrom(List<int> routeParam) {
    133128      List<int> route = new List<int>(routeParam);
     129      route.RemoveAt(routeParam.Count - 1);
    134130     
    135131      int cities = 0;
     
    156152
    157153    internal static void RemoveUnusedParameters(ParameterCollection parameters) {
    158       parameters.Remove("DistanceMatrix");
    159154      parameters.Remove("UseDistanceMatrix");
    160155      parameters.Remove("Capacity");
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs

    r4206 r4352  
    5353
    5454        if (!(solution is AlbaEncoding)) {
    55           parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
     55          parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value,
     56            DistanceMatrixParameter);
    5657        } else {
    5758          parents[i] = solution;
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs

    r4206 r4352  
    6262      IVRPEncoding solution = VRPToursParameter.ActualValue;
    6363      if (!(solution is AlbaEncoding)) {
    64         VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
     64        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter);
    6565      }
    6666
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveMaker.cs

    r4208 r4352  
    2626
    2727namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    28   [Item("PermutationTranslocationMoveMaker", "An operator which makes translocation moves for the Alba representation.")]
     28  [Item("AlbaTranslocationMoveMaker", "An operator which makes translocation moves for the Alba representation.")]
    2929  [StorableClass]
    3030  public abstract class AlbaMoveMaker : AlbaMoveOperator {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs

    r4204 r4352  
    4141      IVRPEncoding solution = VRPToursParameter.ActualValue;
    4242      if (!(solution is AlbaEncoding)) {
    43         VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value);
     43        VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value,
     44          DistanceMatrixParameter);
    4445      }
    4546
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaIntraRouteInversionMoveOperator.cs

    r4206 r4352  
    2626namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    2727  public interface IAlbaIntraRouteInversionMoveOperator : IVRPMoveOperator {
    28     ILookupParameter<IntraRouteInversionMove> IntraRouteInversionMoveParameter { get; }
     28    ILookupParameter<AlbaIntraRouteInversionMove> IntraRouteInversionMoveParameter { get; }
    2929  }
    3030}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaLambdaInterchangeMoveOperator.cs

    r4204 r4352  
    2626namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
    2727  public interface IAlbaLambdaInterchangeMoveOperator : IVRPMoveOperator {
    28     ILookupParameter<LambdaInterchangeMove> LambdaInterchangeMoveParameter { get; }
     28    ILookupParameter<AlbaLambdaInterchangeMove> LambdaInterchangeMoveParameter { get; }
    2929  }
    3030}
Note: See TracChangeset for help on using the changeset viewer.