Monday, April 6, 2020

Mondriaan Tilings 2

In [1], I showed a Mixed Integer Programming formulation for the Mondriaan Tiling Problem. To summarize, the problem can be stated as:

  1. Given an n×n square area,
  2. Partition this area into differently sized rectangles,
  3. Such that the difference in size between the largest and the smallest rectangle is minimized.

Instead of partitioning, we can look at the problem as a tiling problem: given a set of differently sized tiles, place a subset of them on the area such that the whole area is covered and the difference in the size of used tiles (largest minus smallest) is minimized.

The model in [1] looked like:

Original MIP Model
minuk,r,i,j|cover(k,r,i,j,i,j)xk,r,i,j=1i,jcover cell (i,j)yk=r,i,j|ok(k,r,i,j)xk,r,i,jkselect max one type of rectangleareakyk+M(1yk)kbound smallest areauareakykkbound largest areakareakyk=n2extra constraintxk,r,i,j{0,1}yk{0,1}u,0M=maxkareak

The main (binary) variables are:

Decision Variables
yk={1if tile k is selected0otherwise
xk,r,i,j={1if tile k (orientation r) is placed at location (i,j)0otherwise


Here I want to discuss a different approach. Instead of solving the problem in one swoop for both y (select tiles) and x (place tiles), we can design a simple algorithm that iterates between two different models until we find a feasible integer solution. By ordering things from best to worse, as soon as we find a feasible solution, we have the optimal solution.

The first model is dedicated to select y variables (i.e. select tiles) such that kareakyk=n2 and where the objective minu is optimized. The second model takes a solution for y and checks if it is feasible. If not feasible, we go back to model 1 and generate a new, next best solution for y.

Model 1: selection of tiles, can look like:

MIP Model 1: Generate proposals for y
minuareakyk+M(1yk)kbound smallest areauareakykkbound largest areakareakyk=n2area constraintk(2Yp,k1)ykkYp,k1pPcut off previously found solutionsyk{0,1}u,0M=maxkareak

Previously found solutions for y are stored in the data structure Y. The cut will forbid any previously found solution to be considered again. In the first solve, we can use P= (no previously found solutions).

The second model establishes whether the solution y in model 1 is feasible. This model, given a selection of tiles (y) will try to place the tiles such that all locations of the whole area are covered by exactly one tile.


MIP Model 2: Check feasibility of y
min0k,r,i,j|cover(k,r,i,j,i,j)xk,r,i,j=1i,j and kKcover cell (i,j)r,i,j|ok(k,r,i,j)xk,r,i,j=1where kKselect one type of rectanglexk,r,i,j{0,1}K={k|yk=1}set of selected tiles

The algorithm can look like:

  1. Initialization: P=.
  2. Solve model 1
  3. Record the solution yk, augment the set P and add this solution to Yp,k.
  4. Solve model 2
  5. If feasible: STOP. We have found the optimal solution.
  6. Go to step 2.

Small example


When we solve a 10×10 problem, we need 10 cycles:



----    227 PARAMETER ysolrep  solutions for m1 (ordered by obj)

              obj    smallest     largest      status

sol1            3          24          27  Infeasible
sol2            6          18          24  Infeasible
sol3            6          18          24  Infeasible
sol4            7           9          16  Infeasible
sol5            7           9          16  Infeasible
sol6            7          21          28  Infeasible
sol7            7          21          28  Infeasible
sol8            7          14          21  Infeasible
sol9            7          14          21  Infeasible
sol10           8           4          12    Feasible


The status column indicates what model 2 thinks about this proposal. The first 9 generated proposals were infeasible. The first tiling with a difference of 8 was feasible, and we can declare that an optimal solution. We have proven that no better solution exists.

The results look like:

Solution for 10x10 problem


Large example


The results for a 25×25 problem are:

Optimal solution for 25x25 problem

This problem required 246 cycles (i.e. 496 models to be solved).

References


  1. Mondriaan Tilings, https://yetanothermathprogrammingconsultant.blogspot.com/2020/04/mondriaan-tilings.html The problem and a mathematical model are detailed in this post. 

No comments:

Post a Comment