Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/07/17 12:51:24 (7 years ago)
Author:
abeham
Message:

#2696:

  • Added additional event handlers to detect change of problem instance data
  • Cleared best known solution if it cannot be evaluated anymore due to an exception, e.g. structural change
  • Cleared distance matrix in case coordinates change
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/ProblemInstances/MultiDepotVRP/MultiDepotVRPProblemInstance.cs

    r14185 r15168  
    2020#endregion
    2121
     22using System;
    2223using System.Collections.Generic;
    2324using System.Linq;
     
    174175    [StorableConstructor]
    175176    protected MultiDepotVRPProblemInstance(bool deserializing) : base(deserializing) { }
    176 
     177    protected MultiDepotVRPProblemInstance(MultiDepotVRPProblemInstance original, Cloner cloner)
     178      : base(original, cloner) {
     179      AttachEventHandlers();
     180    }
    177181    public MultiDepotVRPProblemInstance() {
    178182      Parameters.Add(new ValueParameter<IntValue>("Depots", "The number of depots", new IntValue(0)));
    179183      Parameters.Add(new ValueParameter<IntArray>("VehicleDepotAssignment", "The assignment of vehicles to depots", new IntArray()));
     184      AttachEventHandlers();
    180185    }
    181186
     
    184189    }
    185190
    186     protected MultiDepotVRPProblemInstance(MultiDepotVRPProblemInstance original, Cloner cloner)
    187       : base(original, cloner) {
    188     }
     191    [StorableHook(HookType.AfterDeserialization)]
     192    private void AfterDeserialization() {
     193      AttachEventHandlers();
     194    }
     195
     196    private void AttachEventHandlers() {
     197      DepotsParameter.ValueChanged += DepotsParameter_ValueChanged;
     198      Depots.ValueChanged += Depots_ValueChanged;
     199      VehicleDepotAssignmentParameter.ValueChanged += VehicleDepotAssignmentParameter_ValueChanged;
     200      VehicleDepotAssignment.Reset += VehicleDepotAssignment_Changed;
     201      VehicleDepotAssignment.ItemChanged += VehicleDepotAssignment_Changed;
     202    }
     203
     204    #region Event handlers
     205    private void DepotsParameter_ValueChanged(object sender, EventArgs e) {
     206      Depots.ValueChanged += Depots_ValueChanged;
     207      EvalBestKnownSolution();
     208    }
     209    private void Depots_ValueChanged(object sender, EventArgs e) {
     210      EvalBestKnownSolution();
     211    }
     212    private void VehicleDepotAssignmentParameter_ValueChanged(object sender, EventArgs e) {
     213      VehicleDepotAssignment.Reset += VehicleDepotAssignment_Changed;
     214      VehicleDepotAssignment.ItemChanged += VehicleDepotAssignment_Changed;
     215      EvalBestKnownSolution();
     216    }
     217    private void VehicleDepotAssignment_Changed(object sender, EventArgs e) {
     218      EvalBestKnownSolution();
     219    }
     220    #endregion
    189221  }
    190222}
Note: See TracChangeset for help on using the changeset viewer.