2023年9月16日土曜日

実インスタンスで厳密解を阻んでいる要因

<ナーススケジューリング問題は終わっていない>

塾講師配置問題の最適化 - Qiita

実世界のインスタンスで、Reasonableな時間内に厳密解を示せることが最終目標ですが、未だ道半ばという認識です。

スケジュールナースが殆どのベンチマークテストで、厳密解を示してきたのに対して、実務インスタンスでは、そうなっていないのは、ペア制約の有無にあります。

ベンチマークテスト→ペア制約がない

実務インスタンス→ペア制約の記述がある。感覚的には、5割以上のプロジェクトで記述がある

<アルゴリズムの要因>

Defaultのアルゴリズムでも、厳密解を出せる場合があります。UB=0のときは、いうまでもなく厳密解です。そしてエラーの数が数個レベル以下のときも、厳密解を出せる場合もあります。しかし、その場面は、多くはなく、大抵の場合、ソフトタイムアウトを待って処理終了となるでしょう。タイムアウトを待って処理終了としているので、厳密解ではありません。Defaultアルゴリズムが厳密解を出せるのは、限られているということです。Defaultアルゴリズムが、得意なのは、AND,OR,NOT等のboolean operationです。数を数えることも出来ますが、それは、コンピュータが数を数えるのと同じ原理で数を数えるしかありません。数を数えるのは、得意ではありません。最も困難なのは、掛け算です。定数との掛け算も容易ではありません。


<数理ソルバ>

エラーが多いときは、数理ソルバに利があります。そこで、アルゴリズム3,4の登場となります。数理ソルバは、線形ソルバを基礎にしています。線形ソルバが出来るのは、定数x変数と、変数同士の足し算(引き算)のみです。変数同士の掛け算は、出来ません。

<線形ソルバは、And OR演算は不得意>

一般的には、AND OR オペレーションは、線形的ではありません。なので、AND/ORで表現される ペア制約は、相性がよくありません。

 実インスタンスで数理ソルバの厳密解を阻んでいる要因は、ペア制約にあります。ペア制約は、「禁止」と「AならばB」の二つがありますが、問題は、「AならばB」にあります。

逆に言えば、ペア制約の「AならばB」を使っていないプロジェクトでは、アルゴリズム4で、かなりのインスタンスが厳密解を出せると思います。

また、ペア制約があるプロジェクトでもペア制約のチェックを外せば、かなりのプロジェクトが厳密解を出せる筈です。(全部ではありません。整数最適化アプローチへの入門 (ieice.org)のように、小さくても難しい問題は存在します。)

つまり、実インスタンスでスケジュールナースの厳密解を阻んでいる主因は、ペア制約にあります。

<なぜペア禁止は、阻害要因とならないか?>

ペア禁止は、列制約に書き換え可能です。ペア禁止したい集合があったとして、その集合内で、ペア禁止は、二つの同じシフトが無いことなので

ΣX[p][day][shift]<=1

と制約すれば、禁止とすることが出来ます。つまり線形和で表現できます。

<列制約は、線形和である>

列制約の表現は、全て線形和で表現できます。禁止にしろ強制にしろ、

Σa[i]X[i] =b[lower:upper]

という線形和形式で表現できます。

<AならばBは、線形には表現できない>

ここで、ペア禁止に戻ると、AならばBは、単純な線形和では表現できません。

つまり、線形和で表現出来ない部分が、複雑にしているとも言えます。この複雑にしている部分を、線形和で表現するというモデリング変更を行えば、普通の線形演算のみで構成することが出来ます。

<モデリングを線形和形式に変更する>

そこで、ペア制約も線形和形式でモデリングすることを考えます。この辺の話は、Integer Programming と呼ばれ、アカデミックのようでいて、ノウハウのようでもあり、不思議なトリックの世界です。全てを線形トリックに変換できるとは思わないのですが、考え方変更で、かなりの部分を線形和形式にすることができます。で、線形和形式に全てできたときに、厳密解を得る公算がかなり高まります。

<まとめ>

■ソフトエラーが多数のとき、数理ソルバに利がある

■数理ソルバは、線形ソルバを基礎に置く。線形オペレーションが得意

■列制約は、線形である

■ペア制約も、線形にモデリングすることによって、不得意部を無くす⇒得意演算のみに出来る

■ペア制約を入れ込んだベンチマークにすべき。⇒アカデミック領域で、ベンチマークテスト開発、提案



0 件のコメント:

コメントを投稿