Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/20/14 14:29:01 (10 years ago)
Author:
gkronber
Message:

#2124 merged all changes from trunk to prepare for trunk-reintegration

Location:
branches/SpectralKernelForGaussianProcesses
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/SpectralKernelForGaussianProcesses

  • branches/SpectralKernelForGaussianProcesses/HeuristicLab.Problems.VehicleRouting

  • branches/SpectralKernelForGaussianProcesses/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs

    r9456 r10479  
    3939
    4040namespace HeuristicLab.Problems.VehicleRouting {
    41   public interface IVRPInstanceConsumer : 
    42     IProblemInstanceConsumer<CVRPData>, IProblemInstanceConsumer<CVRPTWData>,
    43     IProblemInstanceConsumer<MDCVRPData>, IProblemInstanceConsumer<MDCVRPTWData>,
    44     IProblemInstanceConsumer<PDPTWData> {
    45   }
    46 
    4741  [Item("Vehicle Routing Problem", "Represents a Vehicle Routing Problem.")]
    4842  [Creatable("Problems")]
    4943  [StorableClass]
    50   public sealed class VehicleRoutingProblem : Problem, ISingleObjectiveHeuristicOptimizationProblem, IStorableContent, IVRPInstanceConsumer {
     44  public sealed class VehicleRoutingProblem : Problem, ISingleObjectiveHeuristicOptimizationProblem, IStorableContent, IProblemInstanceConsumer<VRPData> {
    5145    public string Filename { get; set; }
    5246
     
    143137      AttachEventHandlers();
    144138      AttachProblemInstanceEventHandlers();
     139
     140      EvaluatorParameter.Value = ProblemInstance.SolutionEvaluator;
    145141    }
    146142
     
    153149      : base(original, cloner) {
    154150      this.AttachEventHandlers();
     151      this.AttachProblemInstanceEventHandlers();
     152
     153      ProblemInstance.SolutionEvaluator = EvaluatorParameter.Value;
    155154    }
    156155
     
    173172      AttachEventHandlers();
    174173      AttachProblemInstanceEventHandlers();
     174
     175      ProblemInstance.SolutionEvaluator = EvaluatorParameter.Value;
    175176    }
    176177
     
    189190    private void AttachProblemInstanceEventHandlers() {
    190191      if (ProblemInstance != null) {
    191         EvaluatorParameter.Value = ProblemInstance.SolutionEvaluator;
    192192        ProblemInstance.EvaluationChanged += new EventHandler(ProblemInstance_EvaluationChanged);
    193193      }
     
    209209
    210210    void ProblemInstance_EvaluationChanged(object sender, EventArgs e) {
    211       EvaluatorParameter.Value = ProblemInstance.SolutionEvaluator;
    212211      EvalBestKnownSolution();
    213212    }
     
    216215      InitializeOperators();
    217216      AttachProblemInstanceEventHandlers();
     217
     218      EvaluatorParameter.Value = ProblemInstance.SolutionEvaluator;
    218219
    219220      OnSolutionCreatorChanged();
     
    383384      }
    384385    }
    385 
    386     public void Load(CVRPData data) {
    387       Load(data, new CVRPInterpreter());
    388     }
    389 
    390     public void Load(CVRPTWData data) {
    391       Load(data, new CVRPTWInterpreter());
    392     }
    393 
    394     public void Load(MDCVRPData data) {
    395       Load(data, new MDCVRPInterpreter());
    396     }
    397 
    398     public void Load(MDCVRPTWData data) {
    399       Load(data, new MDCVRPTWInterpreter());
    400     }
    401 
    402     public void Load(PDPTWData data) {
    403       Load(data, new PDPTWInterpreter());
     386    #endregion
     387
     388    #region IProblemInstanceConsumer<VRPData> Members
     389
     390    public void Load(VRPData data) {
     391      Type interpreterType = typeof(IVRPDataInterpreter<>).MakeGenericType(data.GetType());
     392      var interpreters = ApplicationManager.Manager.GetInstances(interpreterType);
     393      IVRPDataInterpreter interpreter = null;
     394      foreach (object i in interpreters) {
     395        var parentInterfaces = i.GetType().BaseType.GetInterfaces();
     396        var interfaces = i.GetType().GetInterfaces().Except(parentInterfaces);
     397        var interpreterInterface = interfaces.First(j => typeof(IVRPDataInterpreter).IsAssignableFrom(j));
     398        var interpreterDataType = interpreterInterface.GetGenericArguments()[0];
     399        if (interpreterDataType == data.GetType()) {
     400          interpreter = i as IVRPDataInterpreter;
     401          break;
     402        }
     403      }
     404
     405      if (interpreter == null)
     406        throw new ArgumentException("No interpreter found for the VRP type");
     407      Load(data, interpreter);
    404408    }
    405409
Note: See TracChangeset for help on using the changeset viewer.