Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/24/20 00:58:42 (4 years ago)
Author:
abeham
Message:

#2521: working on VRP (WIP)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Prins/Manipulators/PrinsLSManipulator.cs

    r17226 r17698  
    4848    }
    4949
    50     protected double GetQuality(PrinsEncoding individual) {
     50    protected double GetQuality(PrinsEncodedSolution individual) {
    5151      return ProblemInstance.Evaluate(individual).Quality;
    5252    }
    5353
    54     private int FindCity(PrinsEncoding individual, int city) {
     54    private int FindCity(PrinsEncodedSolution individual, int city) {
    5555      int index = -1;
    5656
     
    6868    protected const int depot = -1;
    6969
    70     private Tour FindTour(PrinsEncoding individual, int city) {
     70    private Tour FindTour(PrinsEncodedSolution individual, int city) {
    7171      Tour found = null;
    7272
     
    8585
    8686    //inserts u after v in the child
    87     private void InsertAfter(int u, int v, PrinsEncoding parent, PrinsEncoding child) {
     87    private void InsertAfter(int u, int v, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    8888      int pi = 0;
    8989      int ci = 0;
     
    104104
    105105    //inserts (u, x) after v in the child
    106     private void InsertAfter(int u, int x, int v, PrinsEncoding parent, PrinsEncoding child) {
     106    private void InsertAfter(int u, int x, int v, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    107107      int pi = 0;
    108108      int ci = 0;
     
    126126
    127127    //inserts u before v in the child
    128     private void InsertBefore(int u, int v, PrinsEncoding parent, PrinsEncoding child) {
     128    private void InsertBefore(int u, int v, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    129129      int pi = 0;
    130130      int ci = 0;
     
    145145
    146146    //inserts (u, x) before v in the child
    147     private void InsertBefore(int u, int x, int v, PrinsEncoding parent, PrinsEncoding child) {
     147    private void InsertBefore(int u, int x, int v, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    148148      int pi = 0;
    149149      int ci = 0;
     
    167167
    168168    //swaps u and v
    169     private void Swap(int u, int v, PrinsEncoding parent, PrinsEncoding child) {
     169    private void Swap(int u, int v, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    170170      for (int i = 0; i < child.Length; i++) {
    171171        if (parent[i] == u)
     
    179179
    180180    //swaps (u, x) and v
    181     private void Swap(int u, int x, int v, PrinsEncoding parent, PrinsEncoding child) {
     181    private void Swap(int u, int x, int v, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    182182      int childIndex = 0;
    183183      int parentIndex = 0;
     
    201201
    202202    //swaps (u, x) and (v, y)
    203     private void Swap(int u, int x, int v, int y, PrinsEncoding parent, PrinsEncoding child) {
     203    private void Swap(int u, int x, int v, int y, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    204204      int i = 0;
    205205
     
    222222
    223223    //swaps (u, x) and (v, y) by (u, y) and (x, v)
    224     private void Swap2(int u, int x, int v, int y, PrinsEncoding parent, PrinsEncoding child) {
     224    private void Swap2(int u, int x, int v, int y, PrinsEncodedSolution parent, PrinsEncodedSolution child) {
    225225      int i = 0;
    226226
     
    240240    }
    241241
    242     private void M1(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     242    private void M1(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    243243      if (u != depot) {
    244244        if (v == depot) {
     
    252252    }
    253253
    254     private void M2(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     254    private void M2(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    255255      if (u != depot) {
    256256        Tour tour = FindTour(child, u + 1);
     
    270270    }
    271271
    272     private void M3(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     272    private void M3(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    273273      if (u != depot) {
    274274        Tour tour = FindTour(child, u + 1);
     
    288288    }
    289289
    290     private void M4(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     290    private void M4(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    291291      if (u != depot && v != depot) {
    292292        Swap(u, v, parent, child);
     
    294294    }
    295295
    296     private void M5(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     296    private void M5(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    297297      if (u != depot && v != depot) {
    298298        Tour tour = FindTour(child, u + 1);
     
    307307    }
    308308
    309     private void M6(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     309    private void M6(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    310310      if (u != depot && v != depot) {
    311311        Tour tour = FindTour(child, u + 1);
     
    326326    }
    327327
    328     private void M7(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     328    private void M7(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    329329      if (u != depot && v != depot) {
    330330        Tour tu = FindTour(child, u + 1);
     
    348348    }
    349349
    350     private void M8(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     350    private void M8(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    351351      if (u != depot && v != depot) {
    352352        Tour tu = FindTour(child, u + 1);
     
    370370    }
    371371
    372     private void M9(PrinsEncoding parent, PrinsEncoding child, int u, int v) {
     372    private void M9(PrinsEncodedSolution parent, PrinsEncodedSolution child, int u, int v) {
    373373      if (u != depot && v != depot) {
    374374        Tour tu = FindTour(child, u + 1);
     
    392392    }
    393393
    394     protected PrinsEncoding Manipulate(PrinsEncoding individual,
     394    protected PrinsEncodedSolution Manipulate(PrinsEncodedSolution individual,
    395395      double originalQuality, int u, int v) {
    396       PrinsEncoding child = null;
     396      PrinsEncodedSolution child = null;
    397397      bool improvement = false;
    398398
    399399      if (u != v) {
    400         child = individual.Clone() as PrinsEncoding;
     400        child = individual.Clone() as PrinsEncodedSolution;
    401401        M1(individual, child, u, v);
    402402        improvement = GetQuality(child) < originalQuality;
    403403
    404404        if (!improvement) {
    405           child = individual.Clone() as PrinsEncoding;
     405          child = individual.Clone() as PrinsEncodedSolution;
    406406          M2(individual, child, u, v);
    407407          improvement = GetQuality(child) < originalQuality;
     
    409409
    410410        if (!improvement) {
    411           child = individual.Clone() as PrinsEncoding;
     411          child = individual.Clone() as PrinsEncodedSolution;
    412412          M3(individual, child, u, v);
    413413          improvement = GetQuality(child) < originalQuality;
     
    415415
    416416        if (!improvement) {
    417           child = individual.Clone() as PrinsEncoding;
     417          child = individual.Clone() as PrinsEncodedSolution;
    418418          M4(individual, child, u, v);
    419419          improvement = GetQuality(child) < originalQuality;
     
    421421
    422422        if (!improvement) {
    423           child = individual.Clone() as PrinsEncoding;
     423          child = individual.Clone() as PrinsEncodedSolution;
    424424          M5(individual, child, u, v);
    425425          improvement = GetQuality(child) < originalQuality;
     
    427427
    428428        if (!improvement) {
    429           child = individual.Clone() as PrinsEncoding;
     429          child = individual.Clone() as PrinsEncodedSolution;
    430430          M6(individual, child, u, v);
    431431          improvement = GetQuality(child) < originalQuality;
     
    433433
    434434        if (!improvement) {
    435           child = individual.Clone() as PrinsEncoding;
     435          child = individual.Clone() as PrinsEncodedSolution;
    436436          M7(individual, child, u, v);
    437437          improvement = GetQuality(child) < originalQuality;
     
    439439
    440440        if (!improvement) {
    441           child = individual.Clone() as PrinsEncoding;
     441          child = individual.Clone() as PrinsEncodedSolution;
    442442          M8(individual, child, u, v);
    443443          improvement = GetQuality(child) < originalQuality;
     
    445445
    446446        if (!improvement) {
    447           child = individual.Clone() as PrinsEncoding;
     447          child = individual.Clone() as PrinsEncodedSolution;
    448448          M9(individual, child, u, v);
    449449          improvement = GetQuality(child) < originalQuality;
Note: See TracChangeset for help on using the changeset viewer.