Interface SelectionFilter<Solution_,T>
- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotationT
- the selection type. On problems using multiple planning variables on a single entity without specifying single variable name, this needs to beObject
as variables of both types will be tested.
- All Known Implementing Classes:
MovableChainedTrailingValueFilter
,PinEntityFilter
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
Decides on accepting or discarding a selection,
which is either a
PlanningEntity
, a planning value, a Move
or a Selector
).
For example, a pinned PlanningEntity
is rejected and therefore never used in a Move
.
A filtered selection is considered as not selected, it does not count as an unaccepted selection.
Implementations are expected to be stateless. The solver may choose to reuse instances.
-
Method Summary
Modifier and TypeMethodDescriptionboolean
accept
(ScoreDirector<Solution_> scoreDirector, T selection) static <Solution_,
T>
SelectionFilter<Solution_,T> compose
(List<SelectionFilter<Solution_, T>> filterList) As defined bycompose(SelectionFilter[])
.static <Solution_,
T>
SelectionFilter<Solution_,T> compose
(SelectionFilter<Solution_, T>... filterArray) Creates aSelectionFilter
which applies all the provided filters one after another.
-
Method Details
-
compose
static <Solution_,T> SelectionFilter<Solution_,T> compose(SelectionFilter<Solution_, T>... filterArray) Creates aSelectionFilter
which applies all the provided filters one after another. Once one filter in the sequence returns false, no subsequent filers are evaluated.- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotationT
- the selection type- Parameters:
filterArray
- filters to apply, never null- Returns:
- never null
-
compose
static <Solution_,T> SelectionFilter<Solution_,T> compose(List<SelectionFilter<Solution_, T>> filterList) As defined bycompose(SelectionFilter[])
. -
accept
- Parameters:
scoreDirector
- never null, theScoreDirector
which has theScoreDirector.getWorkingSolution()
to which the selection belongs or applies toselection
- never null, aPlanningEntity
, a planningValue, aMove
or aSelector
- Returns:
- true if the selection is accepted (for example it is movable), false if the selection will be discarded (for example it is pinned)
-