discrete_optimization.facility.transformations package
Submodules
discrete_optimization.facility.transformations.to_binpack module
Transformation from Facility Location to BinPacking (reverse direction).
Note: This transformation DISCARDS facility setup costs and distances! Assumes uniform facility costs (all equal).
- class discrete_optimization.facility.transformations.to_binpack.FacilityToBinpackTransformation[source]
Bases:
ProblemTransformation[FacilityProblem,FacilitySolution,BinPackProblem,BinPackSolution]Transform Facility Location to BinPacking (reverse direction).
Mapping: - Customers (with demands) → Items (with weights) - Facility capacity → Bin capacity - Minimize facilities → Minimize bins - Setup costs and distances DISCARDED
This transformation is ASYMMETRIC: - Forward (problem): LOSSY - setup costs, assignment costs, and heterogeneous capacities lost - Backward (solution): EXACT - bin assignments map to facility assignments
- Assumptions:
All facilities have SAME capacity (uses first facility’s capacity)
Setup costs IGNORED (assumed uniform)
Distances/allocation costs IGNORED
- Use case:
Facility location without distance costs = bin packing
Capacitated facility location simplified to bin packing
Testing different solvers
- back_transform_solution(solution: BinPackSolution, source_problem: FacilityProblem) FacilitySolution[source]
Transform BinPacking solution back to Facility Location solution.
- Parameters:
solution – BinPacking solution
source_problem – Original Facility Location problem
- Returns:
Equivalent Facility Location solution
- forward_transform_solution(solution: FacilitySolution, target_problem: BinPackProblem) BinPackSolution | None[source]
Transform Facility solution to BinPacking solution (for warmstart).
- Parameters:
solution – Facility Location solution
target_problem – Target BinPacking problem
- Returns:
Equivalent BinPacking solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (Facility → BinPack).
This direction is LOSSY: setup costs, assignment costs, and heterogeneous capacities lost.
- transform_problem(source_problem: FacilityProblem) BinPackProblem[source]
Transform Facility Location to BinPacking.
- Parameters:
source_problem – Facility Location problem instance
- Returns:
Equivalent BinPacking problem (ignoring distances/costs)
discrete_optimization.facility.transformations.to_salbp module
Transformation from Facility Location to SALBP.
Note: This transformation DISCARDS facility setup costs and distances! Assumes uniform facility costs and no precedence.
- class discrete_optimization.facility.transformations.to_salbp.FacilityToSalbpTransformation[source]
Bases:
ProblemTransformation[FacilityProblem,FacilitySolution,SalbpProblem,SalbpSolution]Transform Facility Location to SALBP.
Mapping: - Customers (with demands) → Tasks (with processing times) - Facility capacity → Cycle time - Facilities → Stations - Minimize facilities → Minimize stations - Setup costs and distances DISCARDED - No precedence constraints (Facility has none)
This transformation is ASYMMETRIC: - Forward (problem): LOSSY - setup costs and assignment costs lost - Backward (solution): EXACT - station assignments map to facility assignments
- Assumptions:
All facilities have SAME capacity (uses first facility’s capacity)
Setup costs IGNORED
Distances/allocation costs IGNORED
- Use case:
Facility location viewed as line balancing problem
Capacitated facility location simplified to SALBP
- back_transform_solution(solution: SalbpSolution, source_problem: FacilityProblem) FacilitySolution[source]
Transform SALBP solution back to Facility Location solution.
- Parameters:
solution – SALBP solution
source_problem – Original Facility Location problem
- Returns:
Equivalent Facility Location solution
- forward_transform_solution(solution: FacilitySolution, target_problem: SalbpProblem) SalbpSolution | None[source]
Transform Facility solution to SALBP solution (for warmstart).
- Parameters:
solution – Facility Location solution
target_problem – Target SALBP problem
- Returns:
Equivalent SALBP solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (Facility → SALBP).
This direction is LOSSY: setup costs and assignment costs lost.
- transform_problem(source_problem: FacilityProblem) SalbpProblem[source]
Transform Facility Location to SALBP.
- Parameters:
source_problem – Facility Location problem instance
- Returns:
Equivalent SALBP problem (without distances/costs)
Module contents
Problem transformations for Facility Location.
- class discrete_optimization.facility.transformations.FacilityToBinpackTransformation[source]
Bases:
ProblemTransformation[FacilityProblem,FacilitySolution,BinPackProblem,BinPackSolution]Transform Facility Location to BinPacking (reverse direction).
Mapping: - Customers (with demands) → Items (with weights) - Facility capacity → Bin capacity - Minimize facilities → Minimize bins - Setup costs and distances DISCARDED
This transformation is ASYMMETRIC: - Forward (problem): LOSSY - setup costs, assignment costs, and heterogeneous capacities lost - Backward (solution): EXACT - bin assignments map to facility assignments
- Assumptions:
All facilities have SAME capacity (uses first facility’s capacity)
Setup costs IGNORED (assumed uniform)
Distances/allocation costs IGNORED
- Use case:
Facility location without distance costs = bin packing
Capacitated facility location simplified to bin packing
Testing different solvers
- back_transform_solution(solution: BinPackSolution, source_problem: FacilityProblem) FacilitySolution[source]
Transform BinPacking solution back to Facility Location solution.
- Parameters:
solution – BinPacking solution
source_problem – Original Facility Location problem
- Returns:
Equivalent Facility Location solution
- forward_transform_solution(solution: FacilitySolution, target_problem: BinPackProblem) BinPackSolution | None[source]
Transform Facility solution to BinPacking solution (for warmstart).
- Parameters:
solution – Facility Location solution
target_problem – Target BinPacking problem
- Returns:
Equivalent BinPacking solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (Facility → BinPack).
This direction is LOSSY: setup costs, assignment costs, and heterogeneous capacities lost.
- transform_problem(source_problem: FacilityProblem) BinPackProblem[source]
Transform Facility Location to BinPacking.
- Parameters:
source_problem – Facility Location problem instance
- Returns:
Equivalent BinPacking problem (ignoring distances/costs)
- class discrete_optimization.facility.transformations.FacilityToSalbpTransformation[source]
Bases:
ProblemTransformation[FacilityProblem,FacilitySolution,SalbpProblem,SalbpSolution]Transform Facility Location to SALBP.
Mapping: - Customers (with demands) → Tasks (with processing times) - Facility capacity → Cycle time - Facilities → Stations - Minimize facilities → Minimize stations - Setup costs and distances DISCARDED - No precedence constraints (Facility has none)
This transformation is ASYMMETRIC: - Forward (problem): LOSSY - setup costs and assignment costs lost - Backward (solution): EXACT - station assignments map to facility assignments
- Assumptions:
All facilities have SAME capacity (uses first facility’s capacity)
Setup costs IGNORED
Distances/allocation costs IGNORED
- Use case:
Facility location viewed as line balancing problem
Capacitated facility location simplified to SALBP
- back_transform_solution(solution: SalbpSolution, source_problem: FacilityProblem) FacilitySolution[source]
Transform SALBP solution back to Facility Location solution.
- Parameters:
solution – SALBP solution
source_problem – Original Facility Location problem
- Returns:
Equivalent Facility Location solution
- forward_transform_solution(solution: FacilitySolution, target_problem: SalbpProblem) SalbpSolution | None[source]
Transform Facility solution to SALBP solution (for warmstart).
- Parameters:
solution – Facility Location solution
target_problem – Target SALBP problem
- Returns:
Equivalent SALBP solution for warmstart
- get_forward_metadata() TransformationMetadata[source]
Metadata for forward problem transformation (Facility → SALBP).
This direction is LOSSY: setup costs and assignment costs lost.
- transform_problem(source_problem: FacilityProblem) SalbpProblem[source]
Transform Facility Location to SALBP.
- Parameters:
source_problem – Facility Location problem instance
- Returns:
Equivalent SALBP problem (without distances/costs)