sampo.scheduler.genetic.schedule_builder#

Overview#

Function#

create_toolbox_and_mapping_objects(wg, contractors, worker_pool, population_size, mutate_order, mutate_resources, init_schedules, rand, spec, work_estimator, assigned_parent_time, landscape, verbose)

-

build_schedule(wg, contractors, worker_pool, population_size, generation_number, mutpb_order, mutpb_res, init_schedules, rand, spec, landscape, fitness_object, work_estimator, n_cpu, assigned_parent_time, timeline, time_border, optimize_resources, deadline, verbose)

Genetic algorithm.

compare_individuals(first, second)

-

Functions#

sampo.scheduler.genetic.schedule_builder.create_toolbox_and_mapping_objects(wg: sampo.schemas.graph.WorkGraph, contractors: list[sampo.schemas.contractor.Contractor], worker_pool: sampo.schemas.contractor.WorkerContractorPool, population_size: int, mutate_order: float, mutate_resources: float, init_schedules: dict[str, tuple[sampo.schemas.schedule.Schedule, list[sampo.schemas.graph.GraphNode] | None, sampo.schemas.schedule_spec.ScheduleSpec, float]], rand: random.Random, spec: sampo.schemas.schedule_spec.ScheduleSpec = ScheduleSpec(), work_estimator: sampo.schemas.time_estimator.WorkTimeEstimator = None, assigned_parent_time: sampo.schemas.time.Time = Time(0), landscape: sampo.schemas.landscape.LandscapeConfiguration = LandscapeConfiguration(), verbose: bool = True) tuple[deap.base.Toolbox, dict[str, int], dict[int, dict[int, sampo.schemas.resources.Worker]], dict[int, list[int]]]#
sampo.scheduler.genetic.schedule_builder.build_schedule(wg: sampo.schemas.graph.WorkGraph, contractors: list[sampo.schemas.contractor.Contractor], worker_pool: sampo.schemas.contractor.WorkerContractorPool, population_size: int, generation_number: int, mutpb_order: float, mutpb_res: float, init_schedules: dict[str, tuple[sampo.schemas.schedule.Schedule, list[sampo.schemas.graph.GraphNode] | None, sampo.schemas.schedule_spec.ScheduleSpec, float]], rand: random.Random, spec: sampo.schemas.schedule_spec.ScheduleSpec, landscape: sampo.schemas.landscape.LandscapeConfiguration = LandscapeConfiguration(), fitness_object: sampo.scheduler.genetic.operators.FitnessFunction = TimeFitness(), work_estimator: sampo.schemas.time_estimator.WorkTimeEstimator = DefaultWorkEstimator(), n_cpu: int = 1, assigned_parent_time: sampo.schemas.time.Time = Time(0), timeline: sampo.scheduler.timeline.base.Timeline | None = None, time_border: int = None, optimize_resources: bool = False, deadline: sampo.schemas.time.Time = None, verbose: bool = True) tuple[sampo.schemas.schedule.ScheduleWorkDict, sampo.schemas.time.Time, sampo.scheduler.timeline.base.Timeline, list[sampo.schemas.graph.GraphNode]]#

Genetic algorithm. Structure of chromosome: [[order of job],

[[numbers of workers types 1 for each job], [numbers of workers types 2], … ],

[[border of workers types 1 for each contractor], [border of workers types 2], …]

]

Different mate and mutation for order and for workers. Generate order of job by prioritization from HEFTs and from Topological. Generate resources from min to max. Overall initial population is valid.

Returns:

schedule

sampo.scheduler.genetic.schedule_builder.compare_individuals(first: tuple[sampo.scheduler.genetic.operators.ChromosomeType], second: tuple[sampo.scheduler.genetic.operators.ChromosomeType])#