Opened 10 years ago
Closed 10 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: |
Description
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 10 years ago by pfleck
- Status changed from new to accepted
comment:2 Changed 10 years ago by pfleck
comment:3 Changed 10 years ago by pfleck
r11302 VNS always clears all LocalImprovement operators when changing problem. Added missing AlbaLambdaLocalImprovementOperator in VRP.
comment:4 Changed 10 years ago by pfleck
- Owner changed from pfleck to abeham
- Status changed from accepted to reviewing
comment:5 Changed 10 years ago by abeham
- Status changed from reviewing to readytorelease
reviewed the changes, tested it.
comment:6 Changed 10 years ago by abeham
- Resolution set to done
- Status changed from readytorelease to closed
r11905: merged to stable
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.