discrete_optimization.alb.salbp.transformations package
Submodules
discrete_optimization.alb.salbp.transformations.to_binpack module
Transformation from SALBP to BinPacking (reverse direction).
Note: This transformation DISCARDS precedence constraints! Only use when precedence can be safely ignored or doesn’t exist.
- class discrete_optimization.alb.salbp.transformations.to_binpack.SalbpToBinpackTransformation[source]
Bases:
ProblemTransformation[SalbpProblem,SalbpSolution,BinPackProblem,BinPackSolution]Transform SALBP to BinPacking (reverse direction).
Mapping: - Tasks (with processing times) → Items (with weights) - Station cycle time → Bin capacity - Minimize stations → Minimize bins - Precedence constraints DISCARDED
This transformation is INCOMPLETE IN BOTH DIRECTIONS: - Forward (problem): LOSSY - precedence constraints cannot be represented in BinPack - Backward (solution): LOSSY - incompatibility constraints from BinPack cannot be verified in SALBP
- Only use when:
SALBP has NO precedence constraints AND
BinPack has NO incompatibility constraints
In this case, both problems are equivalent (pure capacity allocation)
Warning
This transformation LOSES precedence information! Solutions from BinPack solvers may violate precedence if present in SALBP.
- back_transform_solution(solution: BinPackSolution, source_problem: SalbpProblem) SalbpSolution[source]
Transform BinPacking solution back to SALBP solution.
- Parameters:
solution – BinPacking solution
source_problem – Original SALBP problem
- Returns:
Equivalent SALBP solution
- forward_transform_solution(solution: SalbpSolution, target_problem: BinPackProblem) BinPackSolution | None[source]
Transform SALBP solution to BinPacking solution (for warmstart).
- Parameters:
solution – SALBP solution
target_problem – Target BinPacking problem
- Returns:
Equivalent BinPacking solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (SALBP → BinPack).
This direction is LOSSY: precedence constraints cannot be represented.
- transform_problem(source_problem: SalbpProblem) BinPackProblem[source]
Transform SALBP to BinPacking.
- Parameters:
source_problem – SALBP problem instance
- Returns:
Equivalent BinPacking problem (without precedence)
discrete_optimization.alb.salbp.transformations.to_facility module
Transformation from SALBP to Facility Location.
Creates a facility problem with uniform facilities and zero distances.
- class discrete_optimization.alb.salbp.transformations.to_facility.SalbpToFacilityTransformation[source]
Bases:
ProblemTransformation[SalbpProblem,SalbpSolution,FacilityProblem,FacilitySolution]Transform SALBP to Facility Location.
Mapping: - Tasks → Customers (demand = task_time) - Stations → Facilities (capacity = cycle_time) - Minimize stations → Minimize facilities - Precedence DISCARDED (Facility has no precedence concept)
This transformation is ASYMMETRIC: - Forward (problem): LOSSY - precedence constraints lost - Backward (solution): EXACT - facility assignments map to station assignments
- Creates:
Uniform facilities (all same capacity = cycle_time, zero setup cost)
Zero distances between customers and facilities
This makes it equivalent to pure capacity allocation
- back_transform_solution(solution: FacilitySolution, source_problem: SalbpProblem) SalbpSolution[source]
Transform Facility Location solution back to SALBP solution.
- Parameters:
solution – Facility Location solution
source_problem – Original SALBP problem
- Returns:
Equivalent SALBP solution
- forward_transform_solution(solution: SalbpSolution, target_problem: FacilityProblem) FacilitySolution | None[source]
Transform SALBP solution to Facility Location solution (for warmstart).
- Parameters:
solution – SALBP solution
target_problem – Target Facility Location problem
- Returns:
Equivalent Facility Location solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (SALBP → Facility).
This direction is LOSSY: precedence constraints cannot be represented.
- transform_problem(source_problem: SalbpProblem) FacilityProblem[source]
Transform SALBP to Facility Location.
- Parameters:
source_problem – SALBP problem instance
- Returns:
Equivalent Facility Location problem
discrete_optimization.alb.salbp.transformations.to_rcalbp_l module
Transformation from SALBP to RCALBP_L (Resource-Constrained Assembly Line Balancing with Learning).
- class discrete_optimization.alb.salbp.transformations.to_rcalbp_l.SalbpToRcalbpLTransformation(nb_stations_upper_bound: int | None = None)[source]
Bases:
ProblemTransformation[SalbpProblem,SalbpSolution,RCALBPLProblem,RCALBPLSolution]Transform SALBP to RCALBP_L.
Mapping: - SALBP tasks → RCALBP_L tasks (single period, no learning) - SALBP stations → RCALBP_L workstations - SALBP cycle time → RCALBP_L target cycle time - SALBP precedence → RCALBP_L precedence - No resources, no zones (empty sets) - Single period (no learning effect) - Task durations remain constant across workstations
This is a SUBSET transformation: SALBP is a special case of RCALBP_L where: - nb_resources = 0 - nb_zones = 0 - nb_periods = 1 - No learning effect (durations constant)
- back_transform_solution(solution: RCALBPLSolution, source_problem: SalbpProblem) SalbpSolution[source]
Transform RCALBP_L solution back to SALBP solution.
- Parameters:
solution – RCALBP_L solution
source_problem – Original SALBP problem
- Returns:
Equivalent SALBP solution
- forward_transform_solution(solution: SalbpSolution, target_problem: RCALBPLProblem) RCALBPLSolution | None[source]
Transform SALBP solution to RCALBP_L solution (for warmstart).
- Parameters:
solution – SALBP solution
target_problem – Target RCALBP_L problem
- Returns:
Equivalent RCALBP_L solution
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward transformation (SALBP → RCALBP_L).
- transform_problem(source_problem: SalbpProblem) RCALBPLProblem[source]
Transform SALBP to RCALBP_L.
- Parameters:
source_problem – SALBP problem instance
- Returns:
Equivalent RCALBP_L problem (no resources, single period)
Module contents
Problem transformations for SALBP (Simple Assembly Line Balancing Problem).
- class discrete_optimization.alb.salbp.transformations.SalbpToBinpackTransformation[source]
Bases:
ProblemTransformation[SalbpProblem,SalbpSolution,BinPackProblem,BinPackSolution]Transform SALBP to BinPacking (reverse direction).
Mapping: - Tasks (with processing times) → Items (with weights) - Station cycle time → Bin capacity - Minimize stations → Minimize bins - Precedence constraints DISCARDED
This transformation is INCOMPLETE IN BOTH DIRECTIONS: - Forward (problem): LOSSY - precedence constraints cannot be represented in BinPack - Backward (solution): LOSSY - incompatibility constraints from BinPack cannot be verified in SALBP
- Only use when:
SALBP has NO precedence constraints AND
BinPack has NO incompatibility constraints
In this case, both problems are equivalent (pure capacity allocation)
Warning
This transformation LOSES precedence information! Solutions from BinPack solvers may violate precedence if present in SALBP.
- back_transform_solution(solution: BinPackSolution, source_problem: SalbpProblem) SalbpSolution[source]
Transform BinPacking solution back to SALBP solution.
- Parameters:
solution – BinPacking solution
source_problem – Original SALBP problem
- Returns:
Equivalent SALBP solution
- forward_transform_solution(solution: SalbpSolution, target_problem: BinPackProblem) BinPackSolution | None[source]
Transform SALBP solution to BinPacking solution (for warmstart).
- Parameters:
solution – SALBP solution
target_problem – Target BinPacking problem
- Returns:
Equivalent BinPacking solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (SALBP → BinPack).
This direction is LOSSY: precedence constraints cannot be represented.
- transform_problem(source_problem: SalbpProblem) BinPackProblem[source]
Transform SALBP to BinPacking.
- Parameters:
source_problem – SALBP problem instance
- Returns:
Equivalent BinPacking problem (without precedence)
- class discrete_optimization.alb.salbp.transformations.SalbpToFacilityTransformation[source]
Bases:
ProblemTransformation[SalbpProblem,SalbpSolution,FacilityProblem,FacilitySolution]Transform SALBP to Facility Location.
Mapping: - Tasks → Customers (demand = task_time) - Stations → Facilities (capacity = cycle_time) - Minimize stations → Minimize facilities - Precedence DISCARDED (Facility has no precedence concept)
This transformation is ASYMMETRIC: - Forward (problem): LOSSY - precedence constraints lost - Backward (solution): EXACT - facility assignments map to station assignments
- Creates:
Uniform facilities (all same capacity = cycle_time, zero setup cost)
Zero distances between customers and facilities
This makes it equivalent to pure capacity allocation
- back_transform_solution(solution: FacilitySolution, source_problem: SalbpProblem) SalbpSolution[source]
Transform Facility Location solution back to SALBP solution.
- Parameters:
solution – Facility Location solution
source_problem – Original SALBP problem
- Returns:
Equivalent SALBP solution
- forward_transform_solution(solution: SalbpSolution, target_problem: FacilityProblem) FacilitySolution | None[source]
Transform SALBP solution to Facility Location solution (for warmstart).
- Parameters:
solution – SALBP solution
target_problem – Target Facility Location problem
- Returns:
Equivalent Facility Location solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (SALBP → Facility).
This direction is LOSSY: precedence constraints cannot be represented.
- transform_problem(source_problem: SalbpProblem) FacilityProblem[source]
Transform SALBP to Facility Location.
- Parameters:
source_problem – SALBP problem instance
- Returns:
Equivalent Facility Location problem
- class discrete_optimization.alb.salbp.transformations.SalbpToRcalbpLTransformation(nb_stations_upper_bound: int | None = None)[source]
Bases:
ProblemTransformation[SalbpProblem,SalbpSolution,RCALBPLProblem,RCALBPLSolution]Transform SALBP to RCALBP_L.
Mapping: - SALBP tasks → RCALBP_L tasks (single period, no learning) - SALBP stations → RCALBP_L workstations - SALBP cycle time → RCALBP_L target cycle time - SALBP precedence → RCALBP_L precedence - No resources, no zones (empty sets) - Single period (no learning effect) - Task durations remain constant across workstations
This is a SUBSET transformation: SALBP is a special case of RCALBP_L where: - nb_resources = 0 - nb_zones = 0 - nb_periods = 1 - No learning effect (durations constant)
- back_transform_solution(solution: RCALBPLSolution, source_problem: SalbpProblem) SalbpSolution[source]
Transform RCALBP_L solution back to SALBP solution.
- Parameters:
solution – RCALBP_L solution
source_problem – Original SALBP problem
- Returns:
Equivalent SALBP solution
- forward_transform_solution(solution: SalbpSolution, target_problem: RCALBPLProblem) RCALBPLSolution | None[source]
Transform SALBP solution to RCALBP_L solution (for warmstart).
- Parameters:
solution – SALBP solution
target_problem – Target RCALBP_L problem
- Returns:
Equivalent RCALBP_L solution
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward transformation (SALBP → RCALBP_L).
- transform_problem(source_problem: SalbpProblem) RCALBPLProblem[source]
Transform SALBP to RCALBP_L.
- Parameters:
source_problem – SALBP problem instance
- Returns:
Equivalent RCALBP_L problem (no resources, single period)