discrete_optimization.generic_rcpsp_tools package
Submodules
discrete_optimization.generic_rcpsp_tools.generic_rcpsp_solver module
- class discrete_optimization.generic_rcpsp_tools.generic_rcpsp_solver.SolverGenericRCPSP(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
SolverDO
discrete_optimization.generic_rcpsp_tools.gphh_solver module
- class discrete_optimization.generic_rcpsp_tools.gphh_solver.EvaluationGPHH(value)[source]
Bases:
Enum
An enumeration.
- PERMUTATION_DISTANCE = 1
- SGS = 0
- class discrete_optimization.generic_rcpsp_tools.gphh_solver.FeatureEnum(value)[source]
Bases:
Enum
An enumeration.
- ALL_DESCENDANTS = 'all_descendants'
- DUMMY = 'DUMMY'
- EARLIEST_FINISH_DATE = 'EFD'
- EARLIEST_START_DATE = 'ESD'
- LATEST_FINISH_DATE = 'LFD'
- LATEST_START_DATE = 'LSD'
- N_PREDECESSORS = 'n_predecessors'
- N_SUCCESSORS = 'n_successors'
- RESSOURCE_AVG = 'avg_res_requ'
- RESSOURCE_MAX = 'max_res_requ'
- RESSOURCE_MIN = 'min_res_requ'
- RESSOURCE_NZ_MIN = 'nz_min_res_requ'
- RESSOURCE_REQUIRED = 'res_requ'
- RESSOURCE_TOTAL = 'total_nres'
- TASK_DURATION = 'task_duration'
- class discrete_optimization.generic_rcpsp_tools.gphh_solver.GPHH(training_domains: List[Problem], problem: Problem, weight: int = 1, params_gphh: ParametersGPHH | None = None, params_objective_function: ParamsObjectiveFunction | None = None)[source]
Bases:
SolverGenericRCPSP
- evaluation_method: EvaluationGPHH
- init_model()[source]
Initialize intern model used to solve.
Can initialize a ortools, milp, gurobi, … model.
- params_gphh: ParametersGPHH
- permutation_distance: PermutationDistance
- pset: PrimitiveSet
- reference_permutations: Dict
- 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
- toolbox: Toolbox
- weight: int
- class discrete_optimization.generic_rcpsp_tools.gphh_solver.ParametersGPHH(set_feature, set_primitves, tournament_ratio, pop_size, n_gen, min_tree_depth, max_tree_depth, crossover_rate, mutation_rate, deap_verbose, evaluation, permutation_distance)[source]
Bases:
object
- crossover_rate: float = None
- deap_verbose: bool = None
- static default_for_set_features(set_feature: Set[FeatureEnum])[source]
- evaluation: EvaluationGPHH = None
- max_tree_depth: int = None
- min_tree_depth: int = None
- mutation_rate: float = None
- n_gen: int = None
- permutation_distance = 0
- pop_size: int = None
- set_feature: Set[FeatureEnum] = None
- set_primitves: PrimitiveSet = None
- tournament_ratio: float = None
- class discrete_optimization.generic_rcpsp_tools.gphh_solver.PermutationDistance(value)[source]
Bases:
Enum
An enumeration.
- HAMMING = 1
- KTD = 0
- KTD_HAMMING = 2
- discrete_optimization.generic_rcpsp_tools.gphh_solver.compute_cpm(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_all_descendants(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_average_resource_requirements(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_efd(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
Will only work if you store cpm results into the object. dirty trick
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_esd(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
Will only work if you store cpm results into the object. dirty trick
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_lfd(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
Will only work if you store cpm results into the object. dirty trick
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_lsd(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
Will only work if you store cpm results into the object. dirty trick
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_maximum_resource_requirements(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_minimum_resource_requirements(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_n_predecessors(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_n_successors(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_non_zero_minimum_resource_requirements(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_resource_requirements(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_task_duration(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.feature_total_n_res(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.gphh_solver.get_dummy(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, cpm, cpm_esd, task_id: int, increase: int, **kwargs)[source]
Will only work if you store cpm results into the object. dirty trick
- discrete_optimization.generic_rcpsp_tools.gphh_solver.get_resource_requirements_across_duration(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, task_id: int, **kwargs)[source]
discrete_optimization.generic_rcpsp_tools.graph_tools_rcpsp module
- class discrete_optimization.generic_rcpsp_tools.graph_tools_rcpsp.GraphRCPSP(problem: RCPSPModel | RCPSPModelPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant)[source]
Bases:
object
- class discrete_optimization.generic_rcpsp_tools.graph_tools_rcpsp.GraphRCPSPSpecialConstraints(problem: RCPSPModel | RCPSPModelSpecialConstraintsPreemptive)[source]
Bases:
GraphRCPSP
- discrete_optimization.generic_rcpsp_tools.graph_tools_rcpsp.build_graph_rcpsp_object(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive)[source]
discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling module
- class discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.ConstraintHandlerType(value)[source]
Bases:
Enum
An enumeration.
- MIX_SUBPROBLEMS = 0
- SOLUTION_REPAIR = 1
- class discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.LargeNeighborhoodSearchScheduling(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, partial_solution=None, cp_solver: MinizincCPSolver | None = None, initial_solution_provider: InitialSolution | None = None, constraint_handler: ConstraintHandler | None = None, post_process_solution: PostProcessSolution | None = None, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
LNS_CP
,SolverGenericRCPSP
- hyperparameters: List[Hyperparameter] = [EnumHyperparameter(name='cp_solver_name', default=<CPSolverName.CHUFFED: 0>, choices=[<CPSolverName.CHUFFED: 0>, <CPSolverName.GECODE: 1>, <CPSolverName.CPLEX: 2>, <CPSolverName.CPOPT: 3>, <CPSolverName.GUROBI: 4>, <CPSolverName.ORTOOLS: 5>, <CPSolverName.HIGHS: 6>]), CategoricalHyperparameter(name='do_ls', default=False, choices=[True, False]), EnumHyperparameter(name='constraint_handler_type', default=<ConstraintHandlerType.MIX_SUBPROBLEMS: 0>, choices=[<ConstraintHandlerType.MIX_SUBPROBLEMS: 0>, <ConstraintHandlerType.SOLUTION_REPAIR: 1>]), FloatHyperparameter(name='fraction_subproblem', default=0.05, low=0.0, high=1.0), IntegerHyperparameter(name='nb_cut_part', default=10, low=0, high=100), CategoricalHyperparameter(name='use_makespan_of_subtasks', default=False, choices=[True, False]), SubBrickHyperparameter(name='params_0_cls', default=<class 'discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ParamsConstraintBuilder'>, choices=[<class 'discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ParamsConstraintBuilder'>]), SubBrickKwargsHyperparameter(name='params_0_kwargs', default=None), SubBrickHyperparameter(name='params_1_cls', default=<class 'discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ParamsConstraintBuilder'>, choices=[<class 'discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ParamsConstraintBuilder'>]), SubBrickKwargsHyperparameter(name='params_1_kwargs', default=None)]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.build_constraint_handler(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.build_constraint_handler_helper(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.build_default_cp_model(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, partial_solution=None, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.build_default_initial_solution(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.large_neighborhood_search_scheduling.build_default_postpro(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, partial_solution=None, **kwargs)[source]
discrete_optimization.generic_rcpsp_tools.ls_solver module
- class discrete_optimization.generic_rcpsp_tools.ls_solver.LS_RCPSP_Solver(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, params_objective_function: ParamsObjectiveFunction | None = None, ls_solver: LS_SOLVER = LS_SOLVER.SA, **args)[source]
Bases:
SolverGenericRCPSP
- hyperparameters: List[Hyperparameter] = [CategoricalHyperparameter(name='init_solution_process', default=False, choices=[True, False]), EnumHyperparameter(name='ls_solver', default=<LS_SOLVER.SA: 0>, choices=[<LS_SOLVER.SA: 0>, <LS_SOLVER.HC: 1>]), FloatHyperparameter(name='temperature', default=3, low=0.01, high=10), IntegerHyperparameter(name='nb_iteration_no_improvement', default=200, low=10, high=2000)]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- solve(callbacks: List[Callback] | None = None, **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
discrete_optimization.generic_rcpsp_tools.neighbor_builder module
- class discrete_optimization.generic_rcpsp_tools.neighbor_builder.OptionNeighborRandom(value)[source]
Bases:
Enum
An enumeration.
- DEBUG = 5
- LARGE = 4
- MIX_ALL = 0
- MIX_FAST = 1
- MIX_LARGE_NEIGH = 2
- NO_CONSTRAINT = 6
- class discrete_optimization.generic_rcpsp_tools.neighbor_builder.Params(fraction_to_fix, minus_delta, plus_delta)[source]
Bases:
object
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_basic_random_and_neighbor(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_basic_random_constraint_handler(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_basic_time_window_constraint_handler(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_constraint_handler_cut_part(rcpsp_problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph=None, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_neighbor_mixing_cut_parts(rcpsp_model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph: GraphRCPSP | None = None, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_neighbor_mixing_methods(rcpsp_model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph: GraphRCPSP | None = None, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.build_neighbor_random(option_neighbor: OptionNeighborRandom, rcpsp_model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant) ConstraintHandler [source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.constraint_neigh(rcpsp_model, fraction_subproblem: float = 0.35, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.cut_parts(rcpsp_model, nb_cut_part=4, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.mix(rcpsp_model, nb_cut_part=3, fraction_subproblem=0.25)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.mix_both(rcpsp_model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, option_neighbor_random: OptionNeighborRandom, graph: GraphRCPSP | None = None, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.mix_lot(rcpsp_model, nb_cut_parts, fraction_subproblems, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.random_neigh(rcpsp_model, fraction_subproblem: float = 0.35, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_builder.return_random_basic_constraint_handler(rcpsp_model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph=None, fraction_to_fix=0.9, minus_delta=100, plus_delta=100, minus_delta_2=4000, plus_delta_2=4000)[source]
discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp module
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.BasicConstraintBuilder(neighbor_builder: NeighborBuilder, params_constraint_builder: ParamsConstraintBuilder | None = None, preemptive: bool = False, multiskill: bool = False, verbose: bool = False)[source]
Bases:
object
- return_constraints(current_solution: RCPSPSolutionPreemptive | RCPSPSolution | MS_RCPSPSolution | MS_RCPSPSolution_Variant | MS_RCPSPSolution_Preemptive | MS_RCPSPSolution_Preemptive_Variant, cp_solver: 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, params_constraint_builder: ParamsConstraintBuilder | None = None)[source]
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ConstraintHandlerMultiskillAllocation(problem: MS_RCPSPModel_Variant | MS_RCPSPModel, params_list: List[ParamsConstraintBuilder] | None = None, verbose: bool = False)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(cp_solver: 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, child_instance: Instance, result_storage: ResultStorage, last_result_store: ResultStorage | None = None) Iterable[Any] [source]
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ConstraintHandlerScheduling(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, basic_constraint_builder: BasicConstraintBuilder, params_list: List[ParamsConstraintBuilder] | None = None, use_makespan_of_subtasks: bool = True, objective_subproblem: ObjectiveSubproblem = ObjectiveSubproblem.GLOBAL_MAKESPAN, verbose: bool = True)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(cp_solver: 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, child_instance: Instance, result_storage: ResultStorage, last_result_store: ResultStorage | None = None) Iterable[Any] [source]
- remove_constraints_from_previous_iteration(cp_solver: 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, child_instance, previous_constraints: Iterable[Any])[source]
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.EquilibrateMultiskillAllocation(problem: MS_RCPSPModel_Variant | MS_RCPSPModel, params_list: List[ParamsConstraintBuilder] | None = None, verbose: bool = False)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(cp_solver: 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, child_instance: Instance, result_storage: ResultStorage, last_result_store: ResultStorage | None = None) Iterable[Any] [source]
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.EquilibrateMultiskillAllocationNonPreemptive(problem: MS_RCPSPModel_Variant | MS_RCPSPModel, params_list: List[ParamsConstraintBuilder] | None = None, verbose: bool = False)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(cp_solver: 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, child_instance: Instance, result_storage: ResultStorage, last_result_store: ResultStorage | None = None) Iterable[Any] [source]
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborBuilder[source]
Bases:
object
- abstract find_subtasks(current_solution: RCPSPSolutionPreemptive | RCPSPSolution | MS_RCPSPSolution | MS_RCPSPSolution_Variant | MS_RCPSPSolution_Preemptive | MS_RCPSPSolution_Preemptive_Variant, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborBuilderMix(list_neighbor: List[NeighborBuilder], weight_neighbor: List[float] | array, verbose: bool = False)[source]
Bases:
NeighborBuilder
- find_subtasks(current_solution: RCPSPSolution, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborBuilderSubPart(problem: RCPSPModel, graph: GraphRCPSP | None = None, nb_cut_part: int = 10)[source]
Bases:
NeighborBuilder
Cut the schedule in different subpart in the increasing order of the schedule.
- find_subtasks(current_solution: RCPSPSolution, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborBuilderTimeWindow(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph: GraphRCPSP | None = None, time_window_length: int = 10)[source]
Bases:
NeighborBuilder
- find_subtasks(current_solution: RCPSPSolutionPreemptive | RCPSPSolution | MS_RCPSPSolution | MS_RCPSPSolution_Variant | MS_RCPSPSolution_Preemptive | MS_RCPSPSolution_Preemptive_Variant, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborConstraintBreaks(problem: RCPSPModelSpecialConstraintsPreemptive | RCPSPModel, graph: GraphRCPSP | None = None, fraction_subproblem: float = 0.1, other_constraint_handler: NeighborBuilder | None = None)[source]
Bases:
NeighborBuilder
- find_subtasks(current_solution: RCPSPSolution, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborRandom(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph: GraphRCPSP | None = None, fraction_subproblem: float = 0.9, delta_abs_time_from_makespan_to_not_fix: int = 5, delta_rel_time_from_makespan_to_not_fix: float = 0.0)[source]
Bases:
NeighborBuilder
- find_subtasks(current_solution: RCPSPSolutionPreemptive | RCPSPSolution | MS_RCPSPSolution | MS_RCPSPSolution_Variant | MS_RCPSPSolution_Preemptive | MS_RCPSPSolution_Preemptive_Variant, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.NeighborRandomAndNeighborGraph(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, graph: GraphRCPSP | None = None, fraction_subproblem: float = 0.1)[source]
Bases:
NeighborBuilder
- find_subtasks(current_solution: RCPSPSolution, subtasks: Set[Hashable] | None = None) Tuple[Set[Hashable], Set[Hashable]] [source]
Split the scheduling task set in 2 part, it can then be used by constraint handler to introduce different constraints in those two subsets. Usually the first returned set will be considered like the subproblem in LNS :param current_solution: current solution to consider :param subtasks: possibly existing subset of tasks that are in the neighborhood
Returns:
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ObjectiveSubproblem(value)[source]
Bases:
Enum
An enumeration.
- GLOBAL_MAKESPAN = 3
- MAKESPAN_SUBTASKS = 0
- SUM_END_SUBTASKS = 2
- SUM_START_SUBTASKS = 1
- class discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.ParamsConstraintBuilder(minus_delta_primary: int, plus_delta_primary: int, minus_delta_secondary: int, plus_delta_secondary: int, minus_delta_primary_duration: int = 5, plus_delta_primary_duration: int = 5, minus_delta_secondary_duration: int = 5, plus_delta_secondary_duration: int = 5, constraint_max_time_to_current_solution: bool = True, fraction_of_task_assigned_multiskill: float = 0.6, except_assigned_multiskill_primary_set: bool = False, first_method_multiskill: bool = True, second_method_multiskill: bool = False, additional_methods: bool = False)[source]
Bases:
Hyperparametrizable
- hyperparameters: List[Hyperparameter] = [IntegerHyperparameter(name='minus_delta_primary', default=100, low=0, high=None), IntegerHyperparameter(name='plus_delta_primary', default=100, low=0, high=None), IntegerHyperparameter(name='minus_delta_secondary', default=0, low=0, high=None), IntegerHyperparameter(name='plus_delta_secondary', default=0, low=0, high=None), IntegerHyperparameter(name='minus_delta_primary_duration', default=5, low=0, high=None), IntegerHyperparameter(name='plus_delta_primary_duration', default=5, low=0, high=None), IntegerHyperparameter(name='minus_delta_secondary_duration', default=5, low=0, high=None), IntegerHyperparameter(name='plus_delta_secondary_duration', default=5, low=0, high=None), CategoricalHyperparameter(name='constraint_max_time_to_current_solution', default=False, choices=[True, False]), FloatHyperparameter(name='fraction_of_task_assigned_multiskill', default=0.6, low=0.0, high=1.0), CategoricalHyperparameter(name='except_assigned_multiskill_primary_set', default=False, choices=[True, False]), CategoricalHyperparameter(name='first_method_multiskill', default=True, choices=[True, False]), CategoricalHyperparameter(name='second_method_multiskill', default=False, choices=[True, False]), CategoricalHyperparameter(name='additional_methods', default=False, choices=[True, False])]
Hyperparameters available for this solver.
- These hyperparameters are to be feed to **kwargs found in
__init__()
init_model() (when available)
solve()
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraint_number_of_change_in_worker_allocation(current_solution: MS_RCPSPSolution, nb_moves: int)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraint_number_of_change_in_worker_allocation_preemptive(current_solution: MS_RCPSPSolution_Preemptive, nb_preemptive: int, nb_moves: int)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraint_unit_used_subset_employees(employees_set: Set[Hashable], current_solution: MS_RCPSPSolution, cp_solver: CP_MS_MRCPSP_MZN, employees_usage_dict=None)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraint_unit_used_subset_employees_preemptive(employees_set: Set[Hashable], current_solution: MS_RCPSPSolution_Preemptive, cp_solver: CP_MS_MRCPSP_MZN_PREEMPTIVE, employees_usage_dict=None, exceptions=None)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraint_unit_used_to_tasks(tasks_set: Set[Hashable], current_solution: MS_RCPSPSolution, cp_solver: CP_MS_MRCPSP_MZN)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraint_unit_used_to_tasks_preemptive(tasks_set: Set[Hashable], current_solution: MS_RCPSPSolution_Preemptive, cp_solver: CP_MS_MRCPSP_MZN_PREEMPTIVE, exceptions=None)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_exchange_worker(current_solution: MS_RCPSPSolution, nb_moves: int, cp_solver: 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)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_start_on_end(current_solution: MS_RCPSPSolution, cp_solver: 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, frac=0.5)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_start_on_end_preemptive(current_solution: RCPSPSolutionPreemptive | MS_RCPSPSolution_Preemptive, cp_solver: 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, frac=0.5)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_strings(current_solution: RCPSPSolution | MS_RCPSPSolution, cp_solver: 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, tasks_primary: Set[Hashable], tasks_secondary: Set[Hashable], params_constraints: ParamsConstraintBuilder)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_strings_multiskill(current_solution: MS_RCPSPSolution, cp_solver: 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, tasks_primary: Set[Hashable], tasks_secondary: Set[Hashable], params_constraints: ParamsConstraintBuilder)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_strings_multiskill_preemptive(current_solution: RCPSPSolutionPreemptive | RCPSPSolution | MS_RCPSPSolution | MS_RCPSPSolution_Variant | MS_RCPSPSolution_Preemptive | MS_RCPSPSolution_Preemptive_Variant, cp_solver: 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, tasks_primary: Set[Hashable], tasks_secondary: Set[Hashable], params_constraints: ParamsConstraintBuilder)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.constraints_strings_preemptive(current_solution: RCPSPSolutionPreemptive | MS_RCPSPSolution_Preemptive, cp_solver: 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, tasks_primary: Set[Hashable], tasks_secondary: Set[Hashable], params_constraints: ParamsConstraintBuilder)[source]
- discrete_optimization.generic_rcpsp_tools.neighbor_tools_rcpsp.get_max_time_solution(solution: RCPSPSolutionPreemptive | RCPSPSolution | MS_RCPSPSolution | MS_RCPSPSolution_Variant | MS_RCPSPSolution_Preemptive | MS_RCPSPSolution_Preemptive_Variant)[source]
discrete_optimization.generic_rcpsp_tools.postpro_local_search module
- class discrete_optimization.generic_rcpsp_tools.postpro_local_search.PostProLocalSearch(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs)[source]
Bases:
PostProcessSolution
- build_other_solution(result_storage: ResultStorage) ResultStorage [source]
discrete_optimization.generic_rcpsp_tools.solution_repair module
- class discrete_optimization.generic_rcpsp_tools.solution_repair.NeighborRepairProblems(problem: RCPSPModel | RCPSPModelPreemptive | RCPSPSolutionPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel, params_list: List[ParamsConstraintBuilder] | None = None)[source]
Bases:
ConstraintHandler
- adding_constraint_from_results_store(cp_solver: CP_RCPSP_MZN_PREEMPTIVE | CP_MS_MRCPSP_MZN_PREEMPTIVE | CP_MRCPSP_MZN_PREEMPTIVE, child_instance: Instance, result_storage: ResultStorage, last_result_store: ResultStorage | None = None) Iterable[Any] [source]
- remove_constraints_from_previous_iteration(cp_solver: CP_RCPSP_MZN_PREEMPTIVE | CP_MS_MRCPSP_MZN_PREEMPTIVE | CP_MRCPSP_MZN_PREEMPTIVE, child_instance, previous_constraints: Iterable[Any])[source]
- discrete_optimization.generic_rcpsp_tools.solution_repair.compute_shift_extremities(model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant)[source]
- discrete_optimization.generic_rcpsp_tools.solution_repair.find_possible_problems_preemptive(model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, solution: MS_RCPSPSolution_Preemptive | RCPSPSolutionPreemptive | RCPSPSolutionSpecialPreemptive)[source]
- discrete_optimization.generic_rcpsp_tools.solution_repair.post_process_solution(model, solution)[source]
- discrete_optimization.generic_rcpsp_tools.solution_repair.problem_constraints(current_solution: RCPSPSolutionPreemptive | MS_RCPSPSolution_Preemptive, problems_output: Dict[Hashable, List], minus_delta: int, plus_delta: int, cp_solver: CP_RCPSP_MZN_PREEMPTIVE | CP_MRCPSP_MZN_PREEMPTIVE | CP_MS_MRCPSP_MZN_PREEMPTIVE, constraint_max_time=False, minus_delta_2=0, plus_delta_2=0)[source]
- discrete_optimization.generic_rcpsp_tools.solution_repair.return_pauses_and_active_times(model: RCPSPModel | RCPSPModelPreemptive | RCPSPModelSpecialConstraintsPreemptive | MS_RCPSPModel | MS_RCPSPModel_Variant, solution: MS_RCPSPSolution_Preemptive | RCPSPSolutionPreemptive | RCPSPSolutionSpecialPreemptive)[source]