Efficient MILP problem reformulation
I am trying to solve the following MILP through LP solve. A link for the
original problem is here
The total number of binary variables = M*N
The total number of real variables = N
The total number of constraints = N + M*N + M
M ~ 10, N ~ 40. (H_i, W_i | i = 1 to N) and T are constants.
minimize sum { CW_k | k = 1, ..., N }
with respect to
C_i_k in { 0, 1 }, Feeder i placed in column k, i = 1, ..., M; k = 1,
..., N
CW_k >= 0, Width of column k //k = 1, ..., N
and subject to
//Total height of each column less than T
// I have already implemented height of present column <= height of prev col
// to avoid duplicate solutions.
[1] sum { H_i * C_i_k | i = 1, ..., M } <= T, k = 1, ..., N
//Width of each column = max( widths of individual feeders in that column)
[2] CW_k >= W_i * C_i_k, i = 1, ..., M; k = 1, ..., N
// Each feeder can be placed in only 1 column.
[3] sum { C_i_k | k = 1, ..., N } = 1, i = 1, ..., M
However, beyond a particular value of N (say 20) lp_solve just appears to
hang. I am told that the above size is pretty much "handle-able" for
solvers.
Is there any way I can re-formulate the above MILP so that it can be
solved more efficiently. I have not tried out other solvers but I guess
the performance shall not vary much.
Any help shall be appreciated.
Thanks!
No comments:
Post a Comment