Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/10/10 17:40:41 (14 years ago)
Author:
svonolfe
Message:

Added some Potvin operators (RBX, SBX, LSM) (#1039)

Location:
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinCrossover.cs

    r4179 r4186  
    5151        DistanceMatrixParameter, UseDistanceMatrixParameter.ActualValue,
    5252        city, -1, out route, out place);
     53    }
     54
     55    protected Tour FindRoute(PotvinEncoding solution, int city) {
     56      Tour found = null;
     57
     58      foreach (Tour tour in solution.Tours) {
     59        if (tour.Cities.Contains(city)) {
     60          found = tour;
     61          break;
     62        }
     63      }
     64
     65      return found;
    5366    }
    5467
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/SequenceBasedCrossover.cs

    r4179 r4186  
    3535    public SequenceBasedCrossover()
    3636      : base() { }
    37    
    38     private Tour FindRoute(PotvinEncoding solution, int city) {
    39       Tour found = null;
    40 
    41       foreach (Tour tour in solution.Tours) {
    42         if (tour.Cities.Contains(city)) {
    43           found = tour;
    44           break;
    45         }
    46       }
    47 
    48       return found;
    49     }
    50    
     37       
    5138    protected override PotvinEncoding Crossover(IRandom random, PotvinEncoding parent1, PotvinEncoding parent2) {
    5239      PotvinEncoding child = parent1.Clone() as PotvinEncoding;
     
    7865          child.Unrouted.Add(city);
    7966
    80       if (Repair(random, child, newTour))
     67      if (Feasible(newTour) &&
     68          Repair(random, child, newTour)) {
    8169        return child;
    82       else {
    83         if(random.NextDouble() < 0.5)
     70      } else {
     71        if (random.NextDouble() < 0.5)
    8472          return parent1.Clone() as PotvinEncoding;
    8573        else
Note: See TracChangeset for help on using the changeset viewer.