Opened 3 years ago

Closed 2 years ago

#2232 closed enhancement (done)

Split ILocalImprovementOperator

Reported by: pfleck Owned by: abeham
Priority: medium Milestone: HeuristicLab 3.3.11
Component: Algorithms.VariableNeighborhoodSearch Version: 3.3.10
Keywords: Cc:


The ILocalImprovementOperator specifies a ProblemType and stores a Problem which is required by the LocalSearchImprovementOperator and SimulatedAnnealingImprovementOperator. Other LocalImprovementOperators, like the QAPExhaustiveSwap2LocalImprovement and the AlbaLambdaInterchangeLocalImprovementOperator, does not require this parameter.

In addition, storing the problem in the ILocalImprovementOperator causes a cycle when the operator is added to the problems OperatorCollection which causes problems when cloning the OperatorCollection.

To avoid this cycle and get rid of the unused parameter, the interface need to be split into a simple operator which does not specify the Problem and ProblemType and an operator which represents an operator graph/algorithm which requires the Problem and ProblemType.

Change History (6)

comment:1 Changed 3 years ago by pfleck

  • Status changed from new to accepted

comment:2 Changed 3 years ago by pfleck

r11300 Introduced ILocalImprovementAlgorithmOperator to separate single operators for local improvement and operator graphs/algorithms for local improvement. This way the ILocalImprovementOperator does not have to specify a problem type and does not store a problem any more.

The LocalSearchImprovementOperator and SimulatedAnnealingImprovementOperator implement the new ILocalImprovementAlgorithmOperator as they represent an operator graph for local improvement. The QAP and VRP local improvement operators implement the ILocalImprovementOperator which does not store a problem anymore.

comment:3 Changed 3 years ago by pfleck

r11302 VNS always clears all LocalImprovement operators when changing problem. Added missing AlbaLambdaLocalImprovementOperator in VRP.

comment:4 Changed 3 years ago by pfleck

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

comment:5 Changed 2 years ago by abeham

  • Status changed from reviewing to readytorelease

reviewed the changes, tested it.

comment:6 Changed 2 years ago by abeham

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

r11905: merged to stable

Note: See TracTickets for help on using tickets.