核心概念
CG:SHOP 2024チャレンジにおいて、Shadoksチームは良好な初期解を得るためにInteger Programmingと慎重に設計されたグリーディーアプローチを使用し、その後ローカルサーチによって解を改善するというアプローチを採用した。
要約
CG:SHOP 2024チャレンジは2次元のナップサックパッキング問題を扱う。入力は凸多角形のコンテナと、各アイテムが単純多角形で整数値を持つマルチセットである。目的は、コンテナ内に整数並進で一部のアイテムを詰め込み、その価値の合計を最大化することである。
Shadoksチームのアプローチは以下の通り:
Integer Programmingアプローチ:
各アイテムの乱数並進を生成し、重複を表す辺と同一アイテムの並進を表す頂点クリークを持つグラフを構築する。
CPLEXソルバーを用いて最大重み独立集合問題を解く。
前の解を使ってグラフを更新し、標準偏差を徐々に小さくしながら最適化を繰り返す。
大規模な問題に対しては、コンテナを格子状に分割し、各セルを独立に解く。
グリーディーヒューリスティック:
コンテナ内の格子点リストを作成し、アイテムを価値/面積の順に並べる。
各アイテムについて、格子点とその周辺の位置に配置を試み、衝突しない場合は配置する。
配置後、アイテムを押し出す方向に移動させる。
スレート前処理:
アイテムのペアを組み合わせて効率的に詰められるスレートを事前に計算する。
アイテムの形状と向きの類似性に基づいてグラフを構築し、隣接するアイテムを組み合わせる。
ローカルサーチ:
詰め込み操作とアイテムの押し出し操作を繰り返し実行し、解を改善する。
これらの手法を組み合わせることで、CG:SHOP 2024チャレンジの180問題中75問で最良の解を得ることができた。