Source code for discrete_optimization.generic_rcpsp_tools.typing

#  Copyright (c) 2023 AIRBUS and its affiliates.
#  This source code is licensed under the MIT license found in the
#  LICENSE file in the root directory of this source tree.

from typing import Union

from discrete_optimization.generic_tools.do_problem import Problem, Solution
from discrete_optimization.rcpsp import (
    RCPSPModel,
    RCPSPModelPreemptive,
    RCPSPModelSpecialConstraintsPreemptive,
)
from discrete_optimization.rcpsp.rcpsp_model_preemptive import RCPSPSolutionPreemptive
from discrete_optimization.rcpsp.rcpsp_solution import RCPSPSolution
from discrete_optimization.rcpsp.solver import CP_MRCPSP_MZN, CP_RCPSP_MZN
from discrete_optimization.rcpsp.solver.cp_solvers import (
    CP_MRCPSP_MZN_PREEMPTIVE,
    CP_RCPSP_MZN_PREEMPTIVE,
)
from discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import (
    MS_RCPSPModel,
    MS_RCPSPModel_Variant,
    MS_RCPSPSolution,
    MS_RCPSPSolution_Preemptive,
    MS_RCPSPSolution_Preemptive_Variant,
    MS_RCPSPSolution_Variant,
)
from discrete_optimization.rcpsp_multiskill.solvers.cp_solvers import (
    CP_MS_MRCPSP_MZN,
    CP_MS_MRCPSP_MZN_PARTIAL_PREEMPTIVE,
    CP_MS_MRCPSP_MZN_PREEMPTIVE,
)

ANY_CLASSICAL_RCPSP = Union[
    RCPSPModel,
    RCPSPModelPreemptive,
    RCPSPModelSpecialConstraintsPreemptive,
]
ANY_RCPSP = Union[
    RCPSPModel,
    RCPSPModelPreemptive,
    RCPSPModelSpecialConstraintsPreemptive,
    MS_RCPSPModel,
    MS_RCPSPModel_Variant,
]
ANY_MSRCPSP = Union[MS_RCPSPModel_Variant, MS_RCPSPModel]
ANY_SOLUTION = Union[
    RCPSPSolutionPreemptive,
    RCPSPSolution,
    MS_RCPSPSolution,
    MS_RCPSPSolution_Variant,
    MS_RCPSPSolution_Preemptive,
    MS_RCPSPSolution_Preemptive_Variant,
]
ANY_SOLUTION_UNPREEMPTIVE = Union[
    RCPSPSolution, MS_RCPSPSolution, MS_RCPSPSolution_Variant
]
ANY_SOLUTION_PREEMPTIVE = Union[RCPSPSolutionPreemptive, MS_RCPSPSolution_Preemptive]
ANY_SOLUTION_CLASSICAL_RCPSP = Union[RCPSPSolution, RCPSPSolutionPreemptive]
ANY_SOLUTION_MSRCPSP = Union[
    MS_RCPSPSolution,
    MS_RCPSPSolution_Variant,
    MS_RCPSPSolution_Preemptive,
    MS_RCPSPSolution_Preemptive_Variant,
]
ANY_CP_SOLVER = Union[
    CP_RCPSP_MZN_PREEMPTIVE,
    CP_RCPSP_MZN,
    CP_MRCPSP_MZN,
    CP_MRCPSP_MZN_PREEMPTIVE,
    CP_MS_MRCPSP_MZN,
    CP_MS_MRCPSP_MZN_PREEMPTIVE,
    CP_MS_MRCPSP_MZN_PARTIAL_PREEMPTIVE,
]


[docs] def is_instance_any_rcpsp_problem(problem: Problem) -> bool: return isinstance( problem, ( RCPSPModel, RCPSPModelPreemptive, RCPSPModelSpecialConstraintsPreemptive, MS_RCPSPModel, MS_RCPSPModel_Variant, ), )
[docs] def is_instance_any_rcpsp_solution(solution: Solution) -> bool: return isinstance( solution, ( RCPSPSolutionPreemptive, RCPSPSolution, MS_RCPSPSolution, MS_RCPSPSolution_Variant, MS_RCPSPSolution_Preemptive, MS_RCPSPSolution_Preemptive_Variant, ), )