discrete_optimization.generic_rcpsp_tools.solvers package
Subpackages
- discrete_optimization.generic_rcpsp_tools.solvers.lns_cp package
- Submodules
- discrete_optimization.generic_rcpsp_tools.solvers.lns_cp.neighbor_builder module
OptionNeighborRandom
Params
build_basic_random_and_neighbor()
build_basic_random_constraint_handler()
build_basic_time_window_constraint_handler()
build_constraint_handler_cut_part()
build_neighbor_mixing_cut_parts()
build_neighbor_mixing_methods()
build_neighbor_random()
constraint_neigh()
cut_parts()
mix()
mix_both()
mix_lot()
random_neigh()
return_random_basic_constraint_handler()
time_window_neigh()
- discrete_optimization.generic_rcpsp_tools.solvers.lns_cp.neighbor_tools module
BasicConstraintBuilder
ConstraintHandlerMultiskillAllocation
ConstraintHandlerScheduling
EquilibrateMultiskillAllocation
EquilibrateMultiskillAllocationNonPreemptive
NeighborBuilder
NeighborBuilderMix
NeighborBuilderSubPart
NeighborBuilderTimeWindow
NeighborConstraintBreaks
NeighborRandom
NeighborRandomAndNeighborGraph
ObjectiveSubproblem
ParamsConstraintBuilder
constraint_number_of_change_in_worker_allocation()
constraint_number_of_change_in_worker_allocation_preemptive()
constraint_unit_used_subset_employees()
constraint_unit_used_subset_employees_preemptive()
constraint_unit_used_to_tasks()
constraint_unit_used_to_tasks_preemptive()
constraints_exchange_worker()
constraints_start_on_end()
constraints_start_on_end_preemptive()
constraints_strings()
constraints_strings_multiskill()
constraints_strings_multiskill_preemptive()
constraints_strings_preemptive()
get_max_time_solution()
intersect()
- discrete_optimization.generic_rcpsp_tools.solvers.lns_cp.postpro_ls module
- discrete_optimization.generic_rcpsp_tools.solvers.lns_cp.solution_repair module
- discrete_optimization.generic_rcpsp_tools.solvers.lns_cp.solver module
- Module contents
Submodules
discrete_optimization.generic_rcpsp_tools.solvers.generic_rcpsp_solver module
- class discrete_optimization.generic_rcpsp_tools.solvers.generic_rcpsp_solver.GenericRcpspSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]
Bases:
SolverDO
discrete_optimization.generic_rcpsp_tools.solvers.gphh module
- class discrete_optimization.generic_rcpsp_tools.solvers.gphh.EvaluationGphh(value)[source]
Bases:
Enum
An enumeration.
- PERMUTATION_DISTANCE = 1
- SGS = 0
- class discrete_optimization.generic_rcpsp_tools.solvers.gphh.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.solvers.gphh.GphhGenericRcpspSolver(problem: Problem, training_domains: list[Problem] | None = None, weight: int = 1, params_gphh: ParametersGphh | None = None, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs)[source]
Bases:
GenericRcpspSolver
- evaluation_method: EvaluationGphh
- init_model()[source]
Initialize internal 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.solvers.gphh.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.solvers.gphh.PermutationDistance(value)[source]
Bases:
Enum
An enumeration.
- HAMMING = 1
- KTD = 0
- KTD_HAMMING = 2
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.compute_cpm(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_all_descendants(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_average_resource_requirements(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_efd(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, 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.solvers.gphh.feature_esd(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, 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.solvers.gphh.feature_lfd(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, 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.solvers.gphh.feature_lsd(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, 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.solvers.gphh.feature_maximum_resource_requirements(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_minimum_resource_requirements(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_n_predecessors(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_n_successors(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_non_zero_minimum_resource_requirements(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_resource_requirements(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_task_duration(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.feature_total_n_res(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, cpm, cpm_esd, task_id: int, **kwargs)[source]
- discrete_optimization.generic_rcpsp_tools.solvers.gphh.get_dummy(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, 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.solvers.gphh.get_resource_requirements_across_duration(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, task_id: int, **kwargs)[source]
discrete_optimization.generic_rcpsp_tools.solvers.ls module
- class discrete_optimization.generic_rcpsp_tools.solvers.ls.LsGenericRcpspSolver(problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem, params_objective_function: ParamsObjectiveFunction | None = None, ls_solver: LsSolverType = LsSolverType.SA, **args)[source]
Bases:
GenericRcpspSolver
- hyperparameters: list[Hyperparameter] = [CategoricalHyperparameter(name='init_solution_process', default=False, depends_on=None, name_in_kwargs='init_solution_process'), EnumHyperparameter(name='ls_solver', default=<LsSolverType.SA: 0>, depends_on=None, name_in_kwargs='ls_solver'), FloatHyperparameter(name='temperature', default=3, depends_on=('ls_solver', [<LsSolverType.SA: 0>]), name_in_kwargs='temperature', low=0.01, high=10, suggest_low=False, suggest_high=False, step=None, log=False), IntegerHyperparameter(name='nb_iteration_no_improvement', default=200, depends_on=None, name_in_kwargs='nb_iteration_no_improvement', low=10, high=2000, step=1, log=False)]
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