Opened 4 years ago

Closed 3 years ago

#2152 closed enhancement (done)

The extensibility of the VRPProblem should be improved for creating new problem instances

Reported by: pfleck Owned by: pfleck
Priority: medium Milestone: HeuristicLab 3.3.10
Component: Problems.VehicleRouting Version: 3.3.9
Keywords: Cc:

Description

In order to implement a new VRP problem instance you have to extend the VehicleRoutingProblem because the IProblemInstanceConsumer interface has to be added. This is not desired because only the ProblemInstance should be extended and not the problem itself.

public interface IVRPInstanceConsumer :
  IProblemInstanceConsumer<CVRPData>, IProblemInstanceConsumer<CVRPTWData>,
  IProblemInstanceConsumer<MDCVRPData>, IProblemInstanceConsumer<MDCVRPTWData>,
  IProblemInstanceConsumer<PDPTWData> {
}
	
...
public sealed class VehicleRoutingProblem : ..., IVRPInstanceConsumer {

Change History (14)

comment:1 Changed 4 years ago by pfleck

  • Status changed from new to accepted

comment:2 Changed 4 years ago by pfleck

r10435

  • Removed generic argument of VRPInstanceProvider.
  • Removed specific IProblemInstanceConsumer interfaces.
  • Added dynamic lookup of compatible interpreter.

comment:3 Changed 4 years ago by pfleck

  • Owner changed from pfleck to abeham
  • Status changed from accepted to reviewing

comment:4 Changed 4 years ago by svonolfe

added static apply methods to VRP operators in r10460

comment:5 Changed 4 years ago by pfleck

r10475 made static apply method for Potvin IterativeInsertionCreator public.

comment:6 follow-up: Changed 4 years ago by abeham

Is it possible to define an interpreter in the VRPData so that we don't need the dynamic lookup of the interpreter?

comment:7 in reply to: ↑ 6 Changed 4 years ago by pfleck

Replying to abeham:

Is it possible to define an interpreter in the VRPData so that we don't need the dynamic lookup of the interpreter?

This would cause a problem dependent dependency. As the HL.Instances are problem independent, I think this should be avoided.

Besides, this change would probably cause a cyclic dependency too.

comment:8 Changed 4 years ago by pfleck

  • Owner changed from abeham to pfleck
  • Status changed from reviewing to assigned

comment:9 Changed 4 years ago by pfleck

  • Status changed from assigned to accepted

comment:10 Changed 4 years ago by pfleck

r10651:

  • Lookup for appropriate Interpreter now causes an InvalidOperationException if no or more than one interpreter is found.
  • Put InterpreterDataType extraction into new method for better readability.

comment:11 Changed 4 years ago by pfleck

r10652: Added unit test which loads all available VRP instances to check correct interpreter lookup. (Same approach as QAPLIBInstancesTest)

comment:12 Changed 4 years ago by pfleck

  • Owner changed from pfleck to abeham
  • Status changed from accepted to reviewing

comment:13 Changed 3 years ago by abeham

  • Owner changed from abeham to pfleck
  • Status changed from reviewing to readytorelease

OK

comment:14 Changed 3 years ago by pfleck

  • Resolution set to done
  • Status changed from readytorelease to closed

r10744: merged r10435, r10460, r10475, r10651,r10652 into stable

Note: See TracTickets for help on using tickets.