N
長方形があるとします。各長方形について、 を水平スパン、 を高さとしi
ます。[a_i, b_i]
h_i
ソリューション スペースは のようy_i, i = 1, ..., N
に見えます。ここで、長方形の垂直スパンi
は です[y_i, y_i + h_i]
。
一般性を失うことなく、 を制約できますy_i >= 0
。次に、目的関数 を最小化しますmax{y_i + h_i | i}
。
重なり合わない四角形に対する制約は次のとおりです。
y_i + h_i <= y_j
OR
y_j + h_j <= y_i
for all i != j such that `[a_i, b_i]` and `[a_j, b_j]` intersect
[a_i, b_i]
互いに交差するものを特定するのは簡単なので、これらの制約を形成する四角形のペアを特定するのは簡単です。
制約内の OR を取り除くには、z_k
各制約に対してバイナリ ダミー変数を作成し、十分な大きさk
の "Big M"を作成して次のように書き直します。M
y_i + h_i <= y_j + (z_k)M
y_j + h_j <= y_i + (1-z_k)M
for all i != j such that `[a_i, b_i]` and `[a_j, b_j]` intersect
目的関数を最小化として書き直すことができるように、ダミー変数を導入しH
て制約を追加できます。y_i + h_i <= H
H
結果の最適化問題は次のとおりです。
minimize H
with respect to: y_i, z_k, H
subject to:
(1) y_i + h_i <= y_j + (z_k)M for all i != j such that [a_i, b_i]
y_j + h_j <= y_i + (1-z_k)M and [a_j, b_j] intersect
(2) y_i + h_i <= H for all i
(3) y_i >= 0 for all i
(4) z_k in {0, 1} for all constraints of type (1) k
これは混合整数線形最適化問題です。このタイプの問題には、直接適用できる一般的なソルバーがあります。
通常、彼らはバイナリ制約をアルゴリズム中に存在する制約に緩和するなどのトリックを実行しますz_k
。これにより、これは非常に効率的に解決できる線形計画問題に変わります。z_k
[0,1]
これらのソルバーを再発明しようとすることはお勧めしません。