Changeset 12488


Ignore:
Timestamp:
06/22/15 16:56:47 (4 years ago)
Author:
pfleck
Message:

#2400

  • Interfaces for Capaciated-, PickupAndDelivery- and TimeWindowed-ProblemInstances now specify an additional penalty parameter to set the current penalty factor for the constraint relaxation.
  • The setter of the penalty-property in the ProblemInstances is removed.
  • A CurrentPenalty property is added for setting the adapted penalty value from the relaxation analyzers. These properties are explicitly implemented to "hide" the setter from the API, so that it wont be used unaware of the relaxation mechanics.
  • Hide the CurrentPenaltyParameters for same reasons to avoid setting it unwarily.
  • Added additional infos in the error message off the VRPInstances unit-test.
Location:
trunk/sources
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/Capacitated/CapacityRelaxationVRPAnalyzer.cs

    r12012 r12488  
    136136      double max = cvrp.OverloadPenalty.Value * (1 + phi);
    137137
    138       cvrp.OverloadPenalty = new DoubleValue(min + (max - min) * factor);
    139       if (cvrp.OverloadPenalty.Value < minPenalty)
    140         cvrp.OverloadPenalty.Value = minPenalty;
    141       if (cvrp.OverloadPenalty.Value > maxPenalty)
    142         cvrp.OverloadPenalty.Value = maxPenalty;
     138      cvrp.CurrentOverloadPenalty = new DoubleValue(min + (max - min) * factor);
     139      if (cvrp.CurrentOverloadPenalty.Value < minPenalty)
     140        cvrp.CurrentOverloadPenalty.Value = minPenalty;
     141      if (cvrp.CurrentOverloadPenalty.Value > maxPenalty)
     142        cvrp.CurrentOverloadPenalty.Value = maxPenalty;
    143143
    144144      for (int j = 0; j < qualities.Length; j++) {
    145         qualities[j].Value += overloads[j].Value * cvrp.OverloadPenalty.Value;
     145        qualities[j].Value += overloads[j].Value * cvrp.CurrentOverloadPenalty.Value;
    146146      }
    147147
    148148      if (!results.ContainsKey("Current Overload Penalty")) {
    149         results.Add(new Result("Current Overload Penalty", new DoubleValue(cvrp.OverloadPenalty.Value)));
     149        results.Add(new Result("Current Overload Penalty", new DoubleValue(cvrp.CurrentOverloadPenalty.Value)));
    150150      } else {
    151         (results["Current Overload Penalty"].Value as DoubleValue).Value = cvrp.OverloadPenalty.Value;
     151        (results["Current Overload Penalty"].Value as DoubleValue).Value = cvrp.CurrentOverloadPenalty.Value;
    152152      }
    153153
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/PickupAndDelivery/PickupViolationsRelaxationVRPAnalyzer.cs

    r12012 r12488  
    136136      double max = pdp.PickupViolationPenalty.Value * (1 + phi);
    137137
    138       pdp.PickupViolationPenalty = new DoubleValue(min + (max - min) * factor);
    139       if (pdp.PickupViolationPenalty.Value < minPenalty)
    140         pdp.PickupViolationPenalty.Value = minPenalty;
    141       if (pdp.PickupViolationPenalty.Value > maxPenalty)
    142         pdp.PickupViolationPenalty.Value = maxPenalty;
     138      pdp.CurrentPickupViolationPenalty = new DoubleValue(min + (max - min) * factor);
     139      if (pdp.CurrentPickupViolationPenalty.Value < minPenalty)
     140        pdp.CurrentPickupViolationPenalty.Value = minPenalty;
     141      if (pdp.CurrentPickupViolationPenalty.Value > maxPenalty)
     142        pdp.CurrentPickupViolationPenalty.Value = maxPenalty;
    143143
    144144      for (int j = 0; j < qualities.Length; j++) {
    145         qualities[j].Value += pickupViolations[j].Value * pdp.PickupViolationPenalty.Value;
     145        qualities[j].Value += pickupViolations[j].Value * pdp.CurrentPickupViolationPenalty.Value;
    146146      }
    147147
    148148      if (!results.ContainsKey("Current Pickup Violation Penalty")) {
    149         results.Add(new Result("Current Pickup Violation Penalty", new DoubleValue(pdp.PickupViolationPenalty.Value)));
     149        results.Add(new Result("Current Pickup Violation Penalty", new DoubleValue(pdp.CurrentPickupViolationPenalty.Value)));
    150150      } else {
    151         (results["Current Pickup Violation Penalty"].Value as DoubleValue).Value = pdp.PickupViolationPenalty.Value;
     151        (results["Current Pickup Violation Penalty"].Value as DoubleValue).Value = pdp.CurrentPickupViolationPenalty.Value;
    152152      }
    153153
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/TimeWindowed/TimeWindowRelaxationVRPAnalyzer.cs

    r12012 r12488  
    136136      double max = vrptw.TardinessPenalty.Value * (1 + phi);
    137137
    138       vrptw.TardinessPenalty = new DoubleValue(min + (max - min) * factor);
    139       if (vrptw.TardinessPenalty.Value < minPenalty)
    140         vrptw.TardinessPenalty.Value = minPenalty;
    141       if (vrptw.TardinessPenalty.Value > maxPenalty)
    142         vrptw.TardinessPenalty.Value = maxPenalty;
     138      vrptw.CurrentTardinessPenalty = new DoubleValue(min + (max - min) * factor);
     139      if (vrptw.CurrentTardinessPenalty.Value < minPenalty)
     140        vrptw.CurrentTardinessPenalty.Value = minPenalty;
     141      if (vrptw.CurrentTardinessPenalty.Value > maxPenalty)
     142        vrptw.CurrentTardinessPenalty.Value = maxPenalty;
    143143
    144144      for (int j = 0; j < qualities.Length; j++) {
    145         qualities[j].Value += tardiness[j].Value * vrptw.TardinessPenalty.Value;
     145        qualities[j].Value += tardiness[j].Value * vrptw.CurrentTardinessPenalty.Value;
    146146      }
    147147
    148148      if (!results.ContainsKey("Current Tardiness Penalty")) {
    149         results.Add(new Result("Current Tardiness Penalty", new DoubleValue(vrptw.TardinessPenalty.Value)));
     149        results.Add(new Result("Current Tardiness Penalty", new DoubleValue(vrptw.CurrentTardinessPenalty.Value)));
    150150      } else {
    151         (results["Current Tardiness Penalty"].Value as DoubleValue).Value = vrptw.TardinessPenalty.Value;
     151        (results["Current Tardiness Penalty"].Value as DoubleValue).Value = vrptw.CurrentTardinessPenalty.Value;
    152152      }
    153153
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPProblemInstance.cs

    r12012 r12488  
    6161          return OverloadPenaltyParameter.Value;
    6262      }
     63    }
     64    DoubleValue ICapacitatedProblemInstance.CurrentOverloadPenalty {
     65      get { return CurrentOverloadPenaltyParameter.Value; }
    6366      set { CurrentOverloadPenaltyParameter.Value = value; }
    6467    }
     
    8790      Parameters.Add(new ValueParameter<DoubleArray>("Capacity", "The capacity of each vehicle.", new DoubleArray()));
    8891      Parameters.Add(new ValueParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.", new DoubleValue(100)));
    89       Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentOverloadPenalty", "The current overload penalty considered in the evaluation."));
     92      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentOverloadPenalty", "The current overload penalty considered in the evaluation.") { Hidden = true });
    9093
    9194      AttachEventHandlers();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPPDTW/MDCVRPPDTWProblemInstance.cs

    r12012 r12488  
    6161          return PickupViolationPenaltyParameter.Value;
    6262      }
     63    }
     64    DoubleValue IPickupAndDeliveryProblemInstance.CurrentPickupViolationPenalty {
     65      get { return CurrentPickupViolationPenaltyParameter.Value; }
    6366      set { CurrentPickupViolationPenaltyParameter.Value = value; }
    6467    }
     
    9497
    9598      Parameters.Add(new ValueParameter<DoubleValue>("EvalPickupViolationPenalty", "The pickup violation penalty considered in the evaluation.", new DoubleValue(100)));
    96       Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentPickupViolationPenalty", "The current pickup violation penalty considered in the evaluation."));
     99      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentPickupViolationPenalty", "The current pickup violation penalty considered in the evaluation.") { Hidden = true });
    97100
    98101      AttachEventHandlers();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MDCVRP/MDCVRPTW/MDCVRPTWProblemInstance.cs

    r12012 r12488  
    8383          return TardinessPenaltyParameter.Value;
    8484      }
     85    }
     86    DoubleValue ITimeWindowedProblemInstance.CurrentTardinessPenalty {
     87      get { return CurrentTardinessPenaltyParameter.Value; }
    8588      set { CurrentTardinessPenaltyParameter.Value = value; }
    8689    }
     
    113116      Parameters.Add(new ValueParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0)));
    114117      Parameters.Add(new ValueParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.", new DoubleValue(100)));
    115       Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentTardinessPenalty", "The current tardiness penalty considered in the evaluation."));
     118      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentTardinessPenalty", "The current tardiness penalty considered in the evaluation.") { Hidden = true });
    116119
    117120      AttachEventHandlers();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPProblemInstance.cs

    r12012 r12488  
    6161          return OverloadPenaltyParameter.Value;
    6262      }
     63    }
     64    DoubleValue ICapacitatedProblemInstance.CurrentOverloadPenalty {
     65      get { return CurrentOverloadPenaltyParameter.Value; }
    6366      set { CurrentOverloadPenaltyParameter.Value = value; }
    6467    }
     
    8790      Parameters.Add(new ValueParameter<DoubleValue>("Capacity", "The capacity of each vehicle.", new DoubleValue(0)));
    8891      Parameters.Add(new ValueParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation.", new DoubleValue(100)));
    89       Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentOverloadPenalty", "The current overload penalty considered in the evaluation."));
     92      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentOverloadPenalty", "The current overload penalty considered in the evaluation.") { Hidden = true });
    9093
    9194      AttachEventHandlers();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPPDTW/CVRPPDTWProblemInstance.cs

    r12012 r12488  
    6161          return PickupViolationPenaltyParameter.Value;
    6262      }
     63    }
     64    DoubleValue IPickupAndDeliveryProblemInstance.CurrentPickupViolationPenalty {
     65      get { return CurrentOverloadPenaltyParameter.Value; }
    6366      set { CurrentPickupViolationPenaltyParameter.Value = value; }
    6467    }
     
    9497
    9598      Parameters.Add(new ValueParameter<DoubleValue>("EvalPickupViolationPenalty", "The pickup violation penalty considered in the evaluation.", new DoubleValue(100)));
    96       Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentPickupViolationPenalty", "The current pickup violation penalty considered in the evaluation."));
     99      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentPickupViolationPenalty", "The current pickup violation penalty considered in the evaluation.") { Hidden = true });
    97100
    98101      AttachEventHandlers();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/SingleDepotVRP/CVRP/CVRPTW/CVRPTWProblemInstance.cs

    r12012 r12488  
    8383          return TardinessPenaltyParameter.Value;
    8484      }
     85    }
     86    DoubleValue ITimeWindowedProblemInstance.CurrentTardinessPenalty {
     87      get { return CurrentTardinessPenaltyParameter.Value; }
    8588      set { CurrentTardinessPenaltyParameter.Value = value; }
    8689    }
     
    113116      Parameters.Add(new ValueParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0)));
    114117      Parameters.Add(new ValueParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation.", new DoubleValue(100)));
    115       Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentTardinessPenalty", "The current tardiness penalty considered in the evaluation."));
     118      Parameters.Add(new OptionalValueParameter<DoubleValue>("CurrentTardinessPenalty", "The current tardiness penalty considered in the evaluation.") { Hidden = true });
    116119
    117120      AttachEventHandlers();
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Variants/Capacitated/ICapacitatedProblemInstance.cs

    r12012 r12488  
    2525namespace HeuristicLab.Problems.VehicleRouting.Variants {
    2626  public interface ICapacitatedProblemInstance : IVRPProblemInstance {
    27     DoubleValue OverloadPenalty { get; set; }
     27    DoubleValue OverloadPenalty { get; }
     28    DoubleValue CurrentOverloadPenalty { get; set; }
    2829  }
    2930}
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Variants/PickupAndDelivery/IPickupAndDeliveryProblemInstance.cs

    r12012 r12488  
    2626  public interface IPickupAndDeliveryProblemInstance : IVRPProblemInstance {
    2727    IntArray PickupDeliveryLocation { get; }
    28     DoubleValue PickupViolationPenalty { get; set; }
     28    DoubleValue PickupViolationPenalty { get; }
     29    DoubleValue CurrentPickupViolationPenalty { get; set; }
    2930
    3031    int GetPickupDeliveryLocation(int city);
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Variants/TimeWindowed/ITimeWindowedProblemInstance.cs

    r12012 r12488  
    2929    DoubleArray ServiceTime { get; }
    3030    DoubleValue TimeFactor { get; }
    31     DoubleValue TardinessPenalty { get; set; }
     31    DoubleValue TardinessPenalty { get; }
     32    DoubleValue CurrentTardinessPenalty { get; set; }
    3233  }
    3334}
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.VehicleRouting-3.4/VRPInstancesTest.cs

    r12012 r12488  
    4242      foreach (var provider in providers) {
    4343        IEnumerable<IDataDescriptor> instances = ((dynamic)provider).GetDataDescriptors();
    44         Assert.IsTrue(instances.Any(), "No instances could be found.");
     44        Assert.IsTrue(instances.Any(), string.Format("No instances could be found in {0}.", provider.Name));
    4545
    4646        foreach (var instance in instances) {
Note: See TracChangeset for help on using the changeset viewer.