Interface SelectionFilter<Solution_,​T>

  • Type Parameters:
    Solution_ - the solution type, the class with the PlanningSolution annotation
    T - the selection type. On problems using multiple planning variables on a single entity without specifying single variable name, this needs to be Object 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.

    @FunctionalInterface
    public interface SelectionFilter<Solution_,​T>
    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 Detail

      • compose

        static <Solution_,​T> SelectionFilter<Solution_,​T> compose​(SelectionFilter<Solution_,​T>... filterArray)
        Creates a SelectionFilter 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 the PlanningSolution annotation
        T - the selection type
        Parameters:
        filterArray - filters to apply, never null
        Returns:
        never null