Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/17/12 14:32:54 (12 years ago)
Author:
svonolfe
Message:

Fixed behavior of VRP analyzers related to constraint relaxation (#1177)

Location:
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation
Files:
3 edited

Legend:

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

    r8053 r8497  
    6060      get { return (IValueParameter<DoubleValue>)Parameters["MinPenaltyFactor"]; }
    6161    }
     62    public IValueParameter<DoubleValue> MaxPenaltyFactorParameter {
     63      get { return (IValueParameter<DoubleValue>)Parameters["MaxPenaltyFactor"]; }
     64    }
    6265
    6366    public ValueLookupParameter<ResultCollection> ResultsParameter {
     
    8083      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Overload", "The overloads of the VRP solutions which should be analyzed."));
    8184
    82       Parameters.Add(new ValueParameter<DoubleValue>("Sigma", "The sigma applied to the penalty factor.", new DoubleValue(0.04)));
    83       Parameters.Add(new ValueParameter<DoubleValue>("Phi", "The phi applied to the penalty factor.", new DoubleValue(0.01)));
     85      Parameters.Add(new ValueParameter<DoubleValue>("Sigma", "The sigma applied to the penalty factor.", new DoubleValue(0.5)));
     86      Parameters.Add(new ValueParameter<DoubleValue>("Phi", "The phi applied to the penalty factor.", new DoubleValue(0.5)));
    8487      Parameters.Add(new ValueParameter<DoubleValue>("MinPenaltyFactor", "The minimum penalty factor.", new DoubleValue(0.01)));
     88      Parameters.Add(new ValueParameter<DoubleValue>("MaxPenaltyFactor", "The maximum penalty factor.", new DoubleValue(100000)));
    8589
    8690      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best VRP solution should be stored."));
     
    9599    }
    96100
     101    [StorableHook(HookType.AfterDeserialization)]
     102    private void AfterDeserialization() {
     103      // BackwardsCompatibility3.3
     104      #region Backwards compatible code, remove with 3.4
     105      if (!Parameters.ContainsKey("MaxPenaltyFactor")) {
     106        Parameters.Add(new ValueParameter<DoubleValue>("MaxPenaltyFactor", "The maximum penalty factor.", new DoubleValue(100000)));
     107      }
     108      #endregion
     109    }
     110
    97111    public override IOperation Apply() {
    98112      ICapacitatedProblemInstance cvrp = ProblemInstanceParameter.ActualValue as ICapacitatedProblemInstance;
     
    105119      double phi = PhiParameter.Value.Value;
    106120      double minPenalty = MinPenaltyFactorParameter.Value.Value;
     121      double maxPenalty = MaxPenaltyFactorParameter.Value.Value;
    107122
    108123      for (int j = 0; j < qualities.Length; j++) {
     
    124139      if (cvrp.OverloadPenalty.Value < minPenalty)
    125140        cvrp.OverloadPenalty.Value = minPenalty;
     141      if (cvrp.OverloadPenalty.Value > maxPenalty)
     142        cvrp.OverloadPenalty.Value = maxPenalty;
    126143
    127144      for (int j = 0; j < qualities.Length; j++) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/PickupAndDelivery/PickupViolationsRelaxationVRPAnalyzer.cs

    r8053 r8497  
    6060      get { return (IValueParameter<DoubleValue>)Parameters["MinPenaltyFactor"]; }
    6161    }
     62    public IValueParameter<DoubleValue> MaxPenaltyFactorParameter {
     63      get { return (IValueParameter<DoubleValue>)Parameters["MaxPenaltyFactor"]; }
     64    }
    6265
    6366    public ValueLookupParameter<ResultCollection> ResultsParameter {
     
    8083      Parameters.Add(new ScopeTreeLookupParameter<IntValue>("PickupViolations", "The pickup violation of the VRP solutions which should be analyzed."));
    8184
    82       Parameters.Add(new ValueParameter<DoubleValue>("Sigma", "The sigma applied to the penalty factor.", new DoubleValue(0.04)));
    83       Parameters.Add(new ValueParameter<DoubleValue>("Phi", "The phi applied to the penalty factor.", new DoubleValue(0.01)));
     85      Parameters.Add(new ValueParameter<DoubleValue>("Sigma", "The sigma applied to the penalty factor.", new DoubleValue(0.5)));
     86      Parameters.Add(new ValueParameter<DoubleValue>("Phi", "The phi applied to the penalty factor.", new DoubleValue(0.5)));
    8487      Parameters.Add(new ValueParameter<DoubleValue>("MinPenaltyFactor", "The minimum penalty factor.", new DoubleValue(0.01)));
     88      Parameters.Add(new ValueParameter<DoubleValue>("MaxPenaltyFactor", "The maximum penalty factor.", new DoubleValue(100000)));
    8589
    8690      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best VRP solution should be stored."));
     
    9599    }
    96100
     101    [StorableHook(HookType.AfterDeserialization)]
     102    private void AfterDeserialization() {
     103      // BackwardsCompatibility3.3
     104      #region Backwards compatible code, remove with 3.4
     105      if (!Parameters.ContainsKey("MaxPenaltyFactor")) {
     106        Parameters.Add(new ValueParameter<DoubleValue>("MaxPenaltyFactor", "The maximum penalty factor.", new DoubleValue(100000)));
     107      }
     108      #endregion
     109    }
     110
    97111    public override IOperation Apply() {
    98112      IPickupAndDeliveryProblemInstance pdp = ProblemInstanceParameter.ActualValue as IPickupAndDeliveryProblemInstance;
     
    105119      double phi = PhiParameter.Value.Value;
    106120      double minPenalty = MinPenaltyFactorParameter.Value.Value;
     121      double maxPenalty = MaxPenaltyFactorParameter.Value.Value;
    107122
    108123      for (int j = 0; j < qualities.Length; j++) {
     
    124139      if (pdp.PickupViolationPenalty.Value < minPenalty)
    125140        pdp.PickupViolationPenalty.Value = minPenalty;
     141      if (pdp.PickupViolationPenalty.Value > maxPenalty)
     142        pdp.PickupViolationPenalty.Value = maxPenalty;
    126143
    127144      for (int j = 0; j < qualities.Length; j++) {
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/TimeWindowed/TimeWindowRelaxationVRPAnalyzer.cs

    r8053 r8497  
    6060      get { return (IValueParameter<DoubleValue>)Parameters["MinPenaltyFactor"]; }
    6161    }
     62    public IValueParameter<DoubleValue> MaxPenaltyFactorParameter {
     63      get { return (IValueParameter<DoubleValue>)Parameters["MaxPenaltyFactor"]; }
     64    }
    6265
    6366    public ValueLookupParameter<ResultCollection> ResultsParameter {
     
    8083      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Tardiness", "The tardiness of the VRP solutions which should be analyzed."));
    8184
    82       Parameters.Add(new ValueParameter<DoubleValue>("Sigma", "The sigma applied to the penalty factor.", new DoubleValue(0.04)));
    83       Parameters.Add(new ValueParameter<DoubleValue>("Phi", "The phi applied to the penalty factor.", new DoubleValue(0.01)));
     85      Parameters.Add(new ValueParameter<DoubleValue>("Sigma", "The sigma applied to the penalty factor.", new DoubleValue(0.5)));
     86      Parameters.Add(new ValueParameter<DoubleValue>("Phi", "The phi applied to the penalty factor.", new DoubleValue(0.5)));
    8487      Parameters.Add(new ValueParameter<DoubleValue>("MinPenaltyFactor", "The minimum penalty factor.", new DoubleValue(0.01)));
     88      Parameters.Add(new ValueParameter<DoubleValue>("MaxPenaltyFactor", "The maximum penalty factor.", new DoubleValue(100000)));
    8589
    8690      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best VRP solution should be stored."));
     
    9599    }
    96100
     101    [StorableHook(HookType.AfterDeserialization)]
     102    private void AfterDeserialization() {
     103      // BackwardsCompatibility3.3
     104      #region Backwards compatible code, remove with 3.4
     105      if (!Parameters.ContainsKey("MaxPenaltyFactor")) {
     106        Parameters.Add(new ValueParameter<DoubleValue>("MaxPenaltyFactor", "The maximum penalty factor.", new DoubleValue(100000)));
     107      }
     108      #endregion
     109    }
     110
    97111    public override IOperation Apply() {
    98112      ITimeWindowedProblemInstance vrptw = ProblemInstanceParameter.ActualValue as ITimeWindowedProblemInstance;
     
    105119      double phi = PhiParameter.Value.Value;
    106120      double minPenalty = MinPenaltyFactorParameter.Value.Value;
     121      double maxPenalty = MaxPenaltyFactorParameter.Value.Value;
    107122
    108123      for (int j = 0; j < qualities.Length; j++) {
     
    124139      if (vrptw.TardinessPenalty.Value < minPenalty)
    125140        vrptw.TardinessPenalty.Value = minPenalty;
     141      if (vrptw.TardinessPenalty.Value > maxPenalty)
     142        vrptw.TardinessPenalty.Value = maxPenalty;
    126143
    127144      for (int j = 0; j < qualities.Length; j++) {
Note: See TracChangeset for help on using the changeset viewer.