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)