discrete_optimization.rcpsp_multiskill.solvers package
Submodules
discrete_optimization.rcpsp_multiskill.solvers.cp_solver_mspsp_instlib module
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solver_mspsp_instlib.CP_MSPSP_MZN(problem: MS_RCPSPModel, cp_solver_name: CPSolverName = CPSolverName.CHUFFED, params_objective_function: ParamsObjectiveFunction | None = None, silent_solve_error: bool = False, **kwargs)[source]
Bases:
MinizincCPSolver
- init_model(**args)[source]
Instantiate a CP model instance
Afterwards, self.instance should not be None anymore.
- problem: MS_RCPSPModel
- retrieve_solution(_output_item: str | None = None, **kwargs: Any) MS_RCPSPSolution [source]
Return a d-o solution from the variables computed by minizinc.
- Parameters:
_output_item – string representing the minizinc solver output passed by minizinc to the solution constructor
**kwargs – keyword arguments passed by minzinc to the solution contructor containing the objective value (key “objective”), and the computed variables as defined in minizinc model.
Returns:
- discrete_optimization.rcpsp_multiskill.solvers.cp_solver_mspsp_instlib.chuffed_specific_code()[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solver_mspsp_instlib.create_usefull_res_data(rcpsp_model: MS_RCPSPModel)[source]
discrete_optimization.rcpsp_multiskill.solvers.cp_solvers module
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.CP_MS_MRCPSP_MZN(problem: MS_RCPSPModel, cp_solver_name: CPSolverName = CPSolverName.CHUFFED, params_objective_function: ParamsObjectiveFunction | None = None, silent_solve_error: bool = False, **kwargs)[source]
Bases:
MinizincCPSolver
- init_model(**args)[source]
Instantiate a CP model instance
Afterwards, self.instance should not be None anymore.
- problem: MS_RCPSPModel
- retrieve_solution(_output_item: str | None = None, **kwargs: Any) MS_RCPSPSolution [source]
Return a d-o solution from the variables computed by minizinc.
- Parameters:
_output_item – string representing the minizinc solver output passed by minizinc to the solution constructor
**kwargs – keyword arguments passed by minzinc to the solution contructor containing the objective value (key “objective”), and the computed variables as defined in minizinc model.
Returns:
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.CP_MS_MRCPSP_MZN_PARTIAL_PREEMPTIVE(problem: MS_RCPSPModel, cp_solver_name: CPSolverName = CPSolverName.CHUFFED, params_objective_function: ParamsObjectiveFunction | None = None, silent_solve_error: bool = False, **kwargs)[source]
Bases:
CP_MS_MRCPSP_MZN_PREEMPTIVE
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.CP_MS_MRCPSP_MZN_PREEMPTIVE(problem: MS_RCPSPModel, cp_solver_name: CPSolverName = CPSolverName.CHUFFED, params_objective_function: ParamsObjectiveFunction | None = None, silent_solve_error: bool = False, **kwargs)[source]
Bases:
MinizincCPSolver
- constraint_duration_string_preemptive_i(task, duration, part_id=1, sign: SignEnum = SignEnum.EQUAL) str [source]
- constraint_start_time_string_preemptive_i(task, start_time, part_id=1, sign: SignEnum = SignEnum.EQUAL) str [source]
- init_model(**args)[source]
Instantiate a CP model instance
Afterwards, self.instance should not be None anymore.
- problem: MS_RCPSPModel
- retrieve_solution(_output_item: str | None = None, **kwargs: Any) MS_RCPSPSolution_Preemptive [source]
Return a d-o solution from the variables computed by minizinc.
- Parameters:
_output_item – string representing the minizinc solver output passed by minizinc to the solution constructor
**kwargs – keyword arguments passed by minzinc to the solution contructor containing the objective value (key “objective”), and the computed variables as defined in minizinc model.
Returns:
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.PrecomputeEmployeesForTasks(ms_rcpsp_model: MS_RCPSPModel, cp_solver_name: CPSolverName = CPSolverName.CHUFFED)[source]
Bases:
object
- retrieve_solutions(result, parameters_cp: ParametersCP)[source]
- solve(parameters_cp: ParametersCP | None = None, **args)[source]
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.SearchStrategyMS_MRCPSP(value)[source]
Bases:
Enum
An enumeration.
- NONE = 'none'
- PRIORITY_SEARCH_START_UNIT_USED = 'priority_smallest'
- START_THEN_USED_UNIT = 'durThenStartThenMode'
- class discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.SolutionPrecomputeEmployeesForTasks(unit_used, worker_type_used, mode_dict, overskill_unit, overskill_type)[source]
Bases:
object
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.add_constraints_string(child_instance, list_of_strings)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.add_fake_task_cp_data(rcpsp_model: MS_RCPSPModel, ignore_fake_task: bool = True, max_time_to_consider: int | None = None)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.add_hard_special_constraints(partial_solution: PartialSolution, cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.add_soft_special_constraints(partial_solution: PartialSolution, cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.define_second_part_objective(weights, name_penalty, equal=False)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_end_window(end_times_window: Dict[Hashable, Tuple[int, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_start_after_nunit(list_start_after_nunit: List[Tuple[Hashable, Hashable, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_start_at_end(list_start_at_end: List[Tuple[Hashable, Hashable]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_start_at_end_plus_offset(list_start_at_end_plus_offset, cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_start_times(dict_start_times: Dict[Hashable, int], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_start_together(list_start_together: List[Tuple[Hashable, Hashable]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.hard_start_window(start_times_window: Dict[Hashable, Tuple[int, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_end_window(end_times_window: Dict[Hashable, Tuple[int, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_start_after_nunit(list_start_after_nunit: List[Tuple[Hashable, Hashable, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_start_at_end(list_start_at_end: List[Tuple[Hashable, Hashable]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_start_at_end_plus_offset(list_start_at_end_plus_offset: List[Tuple[Hashable, Hashable, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_start_times(dict_start_times: Dict[Hashable, int], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_start_together(list_start_together: List[Tuple[Hashable, Hashable]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.soft_start_window(start_times_window: Dict[Hashable, Tuple[int, int]], cp_solver: CP_MS_MRCPSP_MZN | CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.stick_to_solution(solution: RCPSPSolution, cp_solver: CP_MS_MRCPSP_MZN)[source]
- discrete_optimization.rcpsp_multiskill.solvers.cp_solvers.stick_to_solution_preemptive(solution: RCPSPSolutionPreemptive, cp_solver: CP_MS_MRCPSP_MZN_PREEMPTIVE)[source]
discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp module
- class discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp.PostProMSRCPSP(problem: MS_RCPSPModel, params_objective_function: ParamsObjectiveFunction | None = None)[source]
Bases:
PostProcessSolution
- build_other_solution(result_storage: ResultStorage) ResultStorage [source]
- class discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp.PostProMSRCPSPPreemptive(problem: MS_RCPSPModel, params_objective_function: ParamsObjectiveFunction | None = None)[source]
Bases:
PostProcessSolution
- build_other_solution(result_storage: ResultStorage) ResultStorage [source]
- discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp.compute_schedule_per_employees(solution: MS_RCPSPSolution_Preemptive | MS_RCPSPSolution, problem: MS_RCPSPModel, predecessors_dict)[source]
- discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp.sgs_variant(solution: MS_RCPSPSolution, problem: MS_RCPSPModel, predecessors_dict)[source]
- discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp.sgs_variant_preemptive(solution: MS_RCPSPSolution_Preemptive, problem: MS_RCPSPModel, predecessors_dict)[source]
- discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp.shift_left_method(solution: MS_RCPSPSolution_Preemptive | MS_RCPSPSolution, problem: MS_RCPSPModel, predecessors_dict)[source]
discrete_optimization.rcpsp_multiskill.solvers.lp_model module
- class discrete_optimization.rcpsp_multiskill.solvers.lp_model.LP_Solver_MRSCPSP(problem: MS_RCPSPModel, lp_solver: MilpSolverName = MilpSolverName.CBC, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs)[source]
Bases:
PymipMilpSolver
- init_model(**args)[source]
Initialize intern model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- problem: MS_RCPSPModel
- retrieve_current_solution(get_var_value_for_current_solution: Callable[[Any], float], get_obj_value_for_current_solution: Callable[[], float]) MS_RCPSPSolution [source]
Retrieve current solution from internal gurobi solution.
This converts internal gurobi solution into a discrete-optimization Solution. This method can be called after the solve in retrieve_solutions() or during solve within a gurobi/pymilp/cplex callback. The difference will be the get_var_value_for_current_solution and get_obj_value_for_current_solution callables passed.
- Parameters:
get_var_value_for_current_solution – function extracting the value of the given variable for the current solution will be different when inside a callback or after the solve is finished
get_obj_value_for_current_solution – function extracting the value of the objective for the current solution.
- Returns:
the converted solution at d-o format
- solve(parameters_milp: ParametersMilp | None = None, **args) ResultStorage [source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem
discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_ga_solver module
- class discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_ga_solver.GA_MSRCPSP_Solver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
SolverDO
- problem: RCPSPModel
- solve(parameters_ga: ~discrete_optimization.generic_tools.ea.ga_tools.ParametersAltGa = <discrete_optimization.generic_tools.ea.ga_tools.ParametersAltGa object>, **args)[source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem
discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver module
- class discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver.ConstraintHandlerFixStartTime(problem: MS_RCPSPModel, fraction_fix_start_time: float = 0.9)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(milp_solver: LP_Solver_MRSCPSP, result_storage: ResultStorage) Mapping[Hashable, Any] [source]
- remove_constraints_from_previous_iteration(milp_solver: LP_Solver_MRSCPSP, previous_constraints: Mapping[Hashable, Any])[source]
- class discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver.ConstraintHandlerStartTimeIntervalMRCPSP(problem: MS_RCPSPModel, fraction_to_fix: float = 0.9, minus_delta: int = 2, plus_delta: int = 2)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(milp_solver: LP_Solver_MRSCPSP, result_storage: ResultStorage) Mapping[Hashable, Any] [source]
- remove_constraints_from_previous_iteration(milp_solver: LP_Solver_MRSCPSP, previous_constraints: Mapping[Hashable, Any])[source]
- class discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver.InitialSolutionMS_RCPSP(problem: MS_RCPSPModel, params_objective_function: ParamsObjectiveFunction | None = None, initial_method: InitialMethodRCPSP = InitialMethodRCPSP.PILE)[source]
Bases:
InitialSolution
- get_starting_solution() ResultStorage [source]
discrete_optimization.rcpsp_multiskill.solvers.multimode_transposition module
- class discrete_optimization.rcpsp_multiskill.solvers.multimode_transposition.MultimodeTranspositionSolver(problem: MS_RCPSPModel, multimode_problem: RCPSPModel | RCPSPModelPreemptive | None = None, worker_type_to_worker: Dict[str, Set[str | int]] | None = None, params_objective_function: ParamsObjectiveFunction | None = None, solver_multimode_rcpsp: SolverDO | None = None)[source]
Bases:
SolverDO
- problem: MS_RCPSPModel
- solve(**kwargs) ResultStorage [source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem
- discrete_optimization.rcpsp_multiskill.solvers.multimode_transposition.rebuild_multiskill_solution(multiskill_rcpsp_model: MS_RCPSPModel, multimode_rcpsp_model: RCPSPModel | RCPSPModelPreemptive, worker_type_to_worker: Dict[str, Set[str | int]], solution_rcpsp: RCPSPSolution | RCPSPSolutionPreemptive)[source]
- discrete_optimization.rcpsp_multiskill.solvers.multimode_transposition.rebuild_multiskill_solution_cp_based(multiskill_rcpsp_model: MS_RCPSPModel, multimode_rcpsp_model: RCPSPModel | RCPSPModelPreemptive, worker_type_to_worker: Dict[str, Set[str | int]], solution_rcpsp: RCPSPSolution | RCPSPSolutionPreemptive)[source]
discrete_optimization.rcpsp_multiskill.solvers.solver_rcpsp_based module
- class discrete_optimization.rcpsp_multiskill.solvers.solver_rcpsp_based.Solver_RCPSP_Based(problem: MS_RCPSPModel | MS_RCPSPModel_Variant, method, params_objective_function: ParamsObjectiveFunction | None = None, **args)[source]
Bases:
SolverDO
- problem: MS_RCPSPModel | MS_RCPSPModel_Variant
- solve(**kwargs)[source]
Generic solving function.
- Parameters:
callbacks – list of callbacks used to hook into the various stage of the solve
**kwargs – any argument specific to the solver
Solvers deriving from SolverDo should use callbacks methods .on_step_end(), … during solve(). But some solvers are not yet updated and are just ignoring it.
Returns (ResultStorage): a result object containing potentially a pool of solutions to a discrete-optimization problem