Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/16/17 15:16:55 (7 years ago)
Author:
abeham
Message:

#2205: added results tab to solution view to analyze vrp solution in more detail

  • reorganized insertion infos and adapted some evaluators and instances
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/OptimizationNetworks/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/VRPEvaluation.cs

    r14185 r14677  
    2121
    2222using System.Collections.Generic;
     23using System.Globalization;
     24using System.Linq;
     25using System.Text;
    2326
    2427namespace HeuristicLab.Problems.VehicleRouting.ProblemInstances {
    2528  public class StopInsertionInfo {
    2629    private int start;
    27 
    2830    public int Start {
    2931      get { return start; }
     
    3133
    3234    private int end;
    33 
    3435    public int End {
    3536      get { return end; }
    3637    }
    3738
    38     public StopInsertionInfo(int start, int end)
     39    private double distance;
     40    public double Distance {
     41      get { return distance; }
     42    }
     43
     44    public StopInsertionInfo(int start, int end, double distance)
    3945      : base() {
    4046      this.start = start;
    4147      this.end = end;
     48      this.distance = distance;
     49    }
     50
     51    protected virtual void GetStopInsertionReport(StringBuilder builder) {
     52      builder.Append("From\t");
     53      builder.Append(Start.ToString(CultureInfo.CurrentCulture));
     54      builder.Append("\tto\t");
     55      builder.AppendLine(End.ToString(CultureInfo.CurrentCulture));
     56      builder.Append("Distance:\t");
     57      builder.AppendLine(Distance.ToString(CultureInfo.CurrentCulture));
     58    }
     59
     60    public virtual void GetReport(StringBuilder builder) {
     61      GetStopInsertionReport(builder);
    4262    }
    4363  }
     
    4666    public double Penalty { get; set; }
    4767    public double Quality { get; set; }
     68    public double Distance { get { return stopInsertionInfos.Count > 0 ? stopInsertionInfos.Sum(x => x.Distance) : 0; } }
    4869
    4970    public int Vehicle { get; set; }
    5071
    51     private List<StopInsertionInfo> stopInsertionInfos;
     72    protected List<StopInsertionInfo> stopInsertionInfos;
    5273
    5374    public TourInsertionInfo(int vehicle)
     
    6889      return stopInsertionInfos.Count;
    6990    }
     91
     92    protected virtual void GetTourInsertionReport(StringBuilder builder) {
     93      builder.AppendLine("=== Tour ===");
     94      builder.Append("Vehicle:\t");
     95      builder.AppendLine(Vehicle.ToString(CultureInfo.CurrentCulture));
     96      builder.Append("Distance:\t");
     97      builder.AppendLine(Distance.ToString(CultureInfo.CurrentCulture));
     98      builder.Append("Quality:\t");
     99      builder.AppendLine(Quality.ToString(CultureInfo.CurrentCulture));
     100      builder.Append("Penalty:\t");
     101      builder.AppendLine(Penalty.ToString(CultureInfo.CurrentCulture));
     102    }
     103
     104    public virtual void GetReport(StringBuilder builder) {
     105      GetTourInsertionReport(builder);
     106      builder.AppendLine("==== Stops ====");
     107      for (var i = 0; i < stopInsertionInfos.Count; i++) {
     108        stopInsertionInfos[i].GetReport(builder);
     109      }
     110    }
    70111  }
    71112
     
    85126      return tourInsertionInfos[tour];
    86127    }
     128
     129    protected virtual void GetInsertionReport(StringBuilder builder) {
     130      builder.AppendLine("== VRP Route Report ==");
     131    }
     132
     133    public virtual void GetReport(StringBuilder builder) {
     134      GetInsertionReport(builder);
     135      for (var i = 0; i < tourInsertionInfos.Count; i++) {
     136        tourInsertionInfos[i].GetReport(builder);
     137      }
     138    }
    87139  }
    88140
     
    98150      InsertionInfo = new InsertionInfo();
    99151    }
     152
     153    protected virtual void GetEvaluationReport(StringBuilder builder) {
     154      builder.AppendLine("= VRP Solution Report =");
     155      builder.Append("Quality:\t");
     156      builder.AppendLine(Quality.ToString(CultureInfo.CurrentCulture));
     157      builder.Append("Penalty:\t");
     158      builder.AppendLine(Penalty.ToString(CultureInfo.CurrentCulture));
     159      builder.Append("Distance:\t");
     160      builder.AppendLine(Distance.ToString(CultureInfo.CurrentCulture));
     161      builder.Append("Vehicles used:\t");
     162      builder.AppendLine(VehicleUtilization.ToString(CultureInfo.CurrentCulture));
     163    }
     164
     165    public virtual void GetReport(StringBuilder builder) {
     166      GetEvaluationReport(builder);
     167      InsertionInfo.GetReport(builder);
     168    }
    100169  }
    101170}
Note: See TracChangeset for help on using the changeset viewer.