How is 2D bin packing achieved programmatically?
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
Introduction
2D bin packing is a classic computational problem where the objective is to efficiently arrange a set of 2D rectangular items into bins of fixed dimensions without overlap, minimizing the number of bins used. This problem has significant applications in various industries such as cutting stock, logistics, and resource management in computing. Solving this problem programmatically involves a combination of computational geometry and combinatorial optimization techniques, frequently employing heuristics due to the problem’s NP-hard nature.
Fundamental Concepts
1. Problem Definition and Constraints
In 2D bin packing, the main parameters include:
• Items: Each item is defined by its width and height. • Bins: Each bin has a fixed width and height. • Constraints: Items must be fully contained within the bin; they can't overlap or rotate (unless specified otherwise).
2. Objective
The goal is to minimize the number of bins used or maximize the usage of a single bin. This objective might shift based on specific application needs.
Approaches and Algorithms
1. Exact Algorithms
Exact algorithms guarantee finding the optimal solution but are computationally expensive for large instances.
a. Integer Linear Programming (ILP)
Integer Linear Programming can be used where integer variables represent item placements, and constraints ensure no overlaps. However, it's computationally expensive because of the factorial growth of possibilities.
ILP example:
Minimize:
Subject to:
• Item fit constraints (placement within bin dimensions)
• Overlap constraints
• Boolean constraints on variable states (item in or out of bin)
2. Heuristics and Approximations
Heuristics offer faster solutions with reasonable accuracy, especially for large datasets.
a. First-Fit Decreasing Height (FFDH)
- Sorting: Items are sorted by descending height.
- Placement: Attempt to place each item in the first bin where it fits. If it doesn't fit in existing bins, open a new bin.
Example:
Consider items with dimensions: (4,2), (3,3), and (1,1) with bin width and height 5.
• Sorted items: (3,3), (4,2), (1,1) • Bin 1: Place (3,3). Bin now has (Width Used=3, Height Used=3) • Bin 2: Place (4,2). New bin as it won't fit in Bin 1. • Bin 1: Place (1,1). Fits alongside existing item in Bin 1.
b. Best-Fit Decreasing Height (BFDH)
- Sorting: Items are sorted by descending height.
- Placement: Place each item in the bin that will have the least leftover height after the item is placed.
3. Metaheuristics
Metaheuristics like Genetic Algorithms or Simulated Annealing iteratively refine solutions by exploring the search space more broadly.
a. Genetic Algorithms
• Initialization: Start with a population of random solutions. • Selection: Evaluate the fitness based on criteria like minimizing unused space. • Crossover and Mutation: Combine and mutate solutions to explore the solution space. • Iteration: Continue until convergence criteria are met.
Implementation Considerations
1. Data Structures
Efficient data structures like segment trees or interval trees can be used for rapid querying of placement feasibility during heuristic execution.
2. Rotation and Representation
Allowing rotation of items can enhance packing efficiency and requires an adaptation in representation where orientation becomes a part of the solution space.
3. Computational Complexity
Typical complexity considerations focus on balancing between optimality and performance, particularly in cases requiring real-time or near-real-time solutions.
Comparative Table of Algorithms
| Algorithm | Type | Strengths | Weaknesses |
| ILP | Exact | Optimal solution | High computational cost |
| FFDH | Heuristic | Simple, quick | Not always optimal, order dependent |
| BFDH | Heuristic | Better packing than FFDH, quick | Order dependent |
| Genetic Algorithms | Metaheuristic | Flexible, Good approximation with exploration | Takes many iterations to refine solution |
Conclusion
2D bin packing remains an essential yet complex problem in computational geometry. While exact methods are desirable for small instances, larger problems frequently employ heuristics or metaheuristic approaches to strike a balance between computational feasibility and solution quality. By programming these algorithms, various industries can achieve remarkable efficiencies in space utilization and resource management.
Related reading
- How is a minimum bottleneck spanning tree different from a minimum spanning tree?
- How is arctan implemented?
- How is counting sort a stable sort?
- How is dynamic programming different from greedy algorithms?
- How is CPU usage calculated?
- How is Greedy Technique different from Exhaustive Search?
- How is pi \`π\` calculated?
- How many bytes are required to hold N decimal digits

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.