We picked this challenge to put everything we've studied on combinatorial optimization into practice. We started sketching it as a CLP model, then considered ILP, but the geometry (rectilinear polygons, rotations, variable ceiling) blew up the formulation. So we pivoted to what actually fit the budget: a greedy constructive phase plus local search with LNS + Simulated Annealing over a bitmap state. Each iteration ended up being a 2D convolution — clean, fast, and surprisingly elegant.

Share this project:

Updates