fhops.scheduling Package
Scheduling utilities (timeline, mobilisation, system registry).
- class fhops.scheduling.BlackoutWindow(*, start_day, end_day, reason=None)[source]
Bases:
BaseModelRepresents a continuous period where work is disallowed.
- end_day: int
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- start_day: int
- class fhops.scheduling.BlockDistance(*, from_block, to_block, distance_m)[source]
Bases:
BaseModelDistance between two blocks in metres.
- distance_m: float
- from_block: str
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- to_block: str
- class fhops.scheduling.MachineMobilisation(*, machine_id, walk_cost_per_meter, move_cost_flat, walk_threshold_m=1000.0, setup_cost=0.0)[source]
Bases:
BaseModelMobilisation parameters for a machine/system.
- Parameters:
- machine_id: str
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- move_cost_flat: float
- setup_cost: float
- walk_cost_per_meter: float
- walk_threshold_m: float
- class fhops.scheduling.MobilisationConfig(*, machine_params, distances=None, default_walk_threshold_m=1000.0, distance_csv=None)[source]
Bases:
BaseModelComplete mobilisation configuration for a scenario.
- Parameters:
machine_params (list[MachineMobilisation])
distances (list[BlockDistance] | None)
default_walk_threshold_m (float)
distance_csv (str | None)
- default_walk_threshold_m: float
- distances: list[BlockDistance] | None
- machine_params: list[MachineMobilisation]
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class fhops.scheduling.ShiftDefinition(*, name, hours, shifts_per_day)[source]
Bases:
BaseModelDefines a shift length and count for a machine/job context.
- hours: float
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- name: str
- shifts_per_day: int
- class fhops.scheduling.TimelineConfig(*, shifts, blackouts=[], days_per_week=7)[source]
Bases:
BaseModelAggregates shift definitions and blackout rules for a scenario.
- Parameters:
shifts (list[ShiftDefinition])
blackouts (list[BlackoutWindow])
days_per_week (int)
- blackouts: list[BlackoutWindow]
- days_per_week: int
- iter_blackouts()[source]
- Return type:
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- shifts: list[ShiftDefinition]
Shift/day timeline helpers and blackout scheduling support.
- class fhops.scheduling.timeline.BlackoutWindow(*, start_day, end_day, reason=None)[source]
Bases:
BaseModelRepresents a continuous period where work is disallowed.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class fhops.scheduling.timeline.ShiftDefinition(*, name, hours, shifts_per_day)[source]
Bases:
BaseModelDefines a shift length and count for a machine/job context.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class fhops.scheduling.timeline.TimelineConfig(*, shifts, blackouts=[], days_per_week=7)[source]
Bases:
BaseModelAggregates shift definitions and blackout rules for a scenario.
- Parameters:
shifts (list[ShiftDefinition])
blackouts (list[BlackoutWindow])
days_per_week (int)
- blackouts: list[BlackoutWindow]
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- shifts: list[ShiftDefinition]
Mobilisation distance and setup cost utilities.
- class fhops.scheduling.mobilisation.BlockDistance(*, from_block, to_block, distance_m)[source]
Bases:
BaseModelDistance between two blocks in metres.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class fhops.scheduling.mobilisation.MachineMobilisation(*, machine_id, walk_cost_per_meter, move_cost_flat, walk_threshold_m=1000.0, setup_cost=0.0)[source]
Bases:
BaseModelMobilisation parameters for a machine/system.
- Parameters:
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class fhops.scheduling.mobilisation.MobilisationConfig(*, machine_params, distances=None, default_walk_threshold_m=1000.0, distance_csv=None)[source]
Bases:
BaseModelComplete mobilisation configuration for a scenario.
- Parameters:
machine_params (list[MachineMobilisation])
distances (list[BlockDistance] | None)
default_walk_threshold_m (float)
distance_csv (str | None)
- distances: list[BlockDistance] | None
- machine_params: list[MachineMobilisation]
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- fhops.scheduling.mobilisation.build_distance_lookup(config)[source]
Return symmetric distance lookup from mobilisation config.
Harvest system registry exports.
- class fhops.scheduling.systems.HarvestSystem(system_id, jobs, environment=None, notes=None, role_counts=None, role_headstart_shifts=None, loader_batch_volume_m3=None)[source]
Bases:
objectHarvest system definition with ordered jobs.
- Parameters:
- class fhops.scheduling.systems.SystemJob(name, machine_role, prerequisites, productivity_overrides=None)[source]
Bases:
objectA single job in a harvest system sequence.
- Parameters:
- fhops.scheduling.systems.default_system_registry()[source]
Return the default harvest system registry inspired by Jaffray (2025).
- Return type: