discrete_optimization.generic_rcpsp_tools.solvers package

Subpackages

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

problem: RcpspProblem | PreemptiveRcpspProblem | SpecialConstraintsPreemptiveRcpspProblem | MultiskillRcpspProblem | VariantMultiskillRcpspProblem

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

build_solution(domain, individual=None, func_heuristic=None)[source]
evaluate_heuristic(individual, domains) float[source]
evaluation_method: EvaluationGphh
init_model()[source]

Initialize internal model used to solve.

Can initialize a ortools, milp, gurobi, … model.

init_primitives(pset) PrimitiveSet[source]
initialize_cpm_data_for_training()[source]
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
training_domains: list[Problem]
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()[source]
static default_for_set_features(set_feature: set[FeatureEnum])[source]
evaluation: EvaluationGphh = None
static fast_test()[source]
max_tree_depth: int = None
min_tree_depth: int = None
static ms_default()[source]
static ms_fast()[source]
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.gphh.if_then_else(input1, output1, output2)[source]
discrete_optimization.generic_rcpsp_tools.solvers.gphh.max_operator(left, right)[source]
discrete_optimization.generic_rcpsp_tools.solvers.gphh.min_operator(left, right)[source]
discrete_optimization.generic_rcpsp_tools.solvers.gphh.protected_div(left, right)[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

class discrete_optimization.generic_rcpsp_tools.solvers.ls.LsSolverType(value)[source]

Bases: Enum

An enumeration.

HC = 1
SA = 0

Module contents