2024年12月22日日曜日

最新SAT SOLVER性能比較

 ベンチマーク問題INRC2 n110w4_0_1-4-2-8を解く途中に出現するSAT問題を用いて性能比較しました。

ヒントの数が多ければ多いほど解くのが容易となる傾向にあります。ヒントのサイズ、Fixed Lits Sizeをパラメータとしたとき、何秒で解けるかを評価したものです。

ソルバは、CADICAL最新版、KISSAT去年、KISSAT今年、DPS去年、PRS今年のSAT competition提出版になります。DPSとPRSは、32threadsのパラレル版で、いずれもその時点のKISSAT最新版がベースになっています。



青が1位、黄色が2位でマークしています。一見して分かるのは、

■パラレル版が10倍程度高速で安定傾向、PRSが最速

■SAT Solver Single thread版でも最新になるほど性能向上が見られる

さらに考察として、

PRSに搭載されているKISSATは、去年以前のKISSATがベースですから、今年のKISSATにReplaceすれば、さらに性能向上が期待できます。

しかし、ヒントの数が少ないと、PRSをもってしても現実時間内に解くことは出来ません。(1割少なくなっただけで、もはや解くことが出来ません。ヒントなしでは論外。)

つまり、SATソルバだけでは解くことは出来ないことを示しています。一般に、解空間が広い場合(最適化の結果、残る解の個数が多い場合)SATソルバのみで解くことが出来ますが、INRC2問題のように解空間が非常に狭い最適化問題の場合は、複合技が必須となります。今回の問題で言えば、SATソルバを選ぶことに注力するより、ヒントの数を増やした方が遥かに効率的に解くことが出来ます。

今回、パラレル版で意外な性能向上が見られたので、採用しようかな、と思います。今回求めているのは、UNSAT証明能力で、SAT解探索能力と比例傾向にあるからです。





2024年12月21日土曜日

ヘルスケアのOR」第20回研究会(学生発表会)

 学生さんの発表会です。ZOOMで視聴することにしました。

OR学会の会員ではありませんが、将来、こちらでもスケジュールナースの最近の成果についても、報告できれば、と考えています。

<特殊から一般へ>

ナーススケジューリング問題のオープンインスタンスを全てCloseするという空前絶後の壮大な計画は、難航していますが、INRC2については、形が見えつつあります。今までに得られた知見を総合すると、ナーススケジューリング問題を解く一般系というのが、少し見えてきたような気がします。特殊で困難な問題群ではありますが、それを解く努力を重ねることで、それで得た知見を基に、実務上の比較的容易/困難なインスタンス群についても、最適解をリーズナブルな時間内に提示するという、

塾講師配置問題の最適化 #数理最適化 - Qiitaの「ナーススケジューリング問題は、終わっていない」

に対する回答を示せるのではないか?と考え始めています。当初は、ただ世界記録更新だけを目的にしていたのですが、特殊なインスタンスから一般インスタンスへの応用が可能ではないか?と気づきました。言い換えると特殊解法から、一般解法への統一化です。どのような問題も、それに適した特殊なアルゴリズムを適用するのではなく、一般化した一つのアルゴリズムで解くのがスマートであることは言うまでもありません。どのような問題にせよ、それに入力すれば、最適解がリーズナブル時間内で出力される、それがあればアルゴリズムを選定する必要はありません。

現状のナーススケジューリング問題は、二つの課題があります。

<最高性能のソルバ開発>

実務のナーススケジューリング問題は、Gurobiを持ってしても厳密解をリーズナブルな時間内に解くことは難しい場合が多いというのが現状です。これを一気に解決するソルバを夢見ています。

<モデリング、誰が行うのか>

もう一つの現実課題は、モデリングです。勤務表は、作って終わりということはなく、月々にアップデートしていく必要があります。時に、制約追加ということがあります。つまりメンテナンスを誰が行うか?ということが常に付きまといます。モデリングのAI化、ハード制約やソフト制約等基本となる教育も含めて、両面から考えていく必要があります。

以上二つの課題にたいして、取り組む所存です。



2024年12月20日金曜日

Q.2025当直拘束表の出力が出来ません

 Ans.申し訳ございません。

貴病院用医師当直拘束表のPython記述が2024年の固定となっておりました。Python記述のバグです。申し訳ございません。

以下のようにPython記述を修正しました。

<修正前>


<修正後>

Pythonソース修正



貴病院用ユーザマニュアル追加




2024年12月19日木曜日

2024年12月18日水曜日

Printemps メタヒューリスティクスソルバ

 メタヒューリスティクスに基づく汎用線形整数計画ソルバーの開発 - Speaker Deck

ベースになっているのは、法政大学の野々部先生のWCSPです。WCSPは、汎用国産ソルバNuorium Optimizer にも組み込まれています。

藤井 浩一|株式会社NTTデータ数理システム

野々部先生のWCSPは、第一回のナーススケジューリング国際競技会で、3位に入賞されています。野々部先生とは、以前RAMP講演でお会いしました。

その系統であるPrintempsもシフトスケジューリング問題に期待が持てるかもしれません。オープンソースでMPSファイルも読み取れます。オプションで連続変数を整数として読むことも出来ます。

Optimization Night#9に参加できなさそうなので発表されるPRINTEMPSで一人遊んでみた #最適化 - Qiita

こうしたソルバは、分枝限定法ソルバの初期段階でのUBを得るのに有効な場合があります。以前は、Feasibility Pump しかありませんでしたが、最近では、

GitHub - GioniMexi/FeasPumpCollection: Using multiple reference vectors in the Feasibility Pump.

CAI教授のローカルソルバシリーズ、

GitHub - shaowei-cai-group/Local-MIP: A standalone local search solver for general mixed integer programming

GitHub - shaowei-cai-group/NuPBO: A local search solver for PBO

GitHub - shaowei-cai-group/ParaILP: A Parallel Local Search Framework for Integer Linear Programming with Cooperative Evolution Mechanism

GitHub - shaowei-cai-group/PRS-sc24: Submission of PRS and PRS-distributed to International SAT Competition 2024

等あります。


2024年12月17日火曜日

n100w8_1_2-4-7-9-3-9-2-8 solved!

It took us five months to solve this problem. The challenge lies in proving that it is optimal.

n100w8_1_2-4-7-9-3-9-2-8:  LB=2145 UB=2145

While the upper bound (UB) of 2145 is relatively easy to obtain, demonstrating that there is no better solution is quite difficult. With the standard Branch and Bound method, you could run the algorithm for a million seconds and still not achieve a proof.

The initial gap between the lower bound (LB) and upper bound (UB) is less than 10, which may seem manageable, but it is actually one of the most challenging problems.

Throughout this process, we have learned a lot and gained valuable knowledge. What makes this particular instance unique is the extremely low gap-narrowing gain (a term we coined). We believe this is due to structural symmetry. To address this, we would need to implement symmetry breaking, but we will discuss that another time.

 There are now only two remaining unresolved instances for INRC2 8weeks on our side! 

n080w814-4-9-9-3-6-0-5

n080w820-4-0-9-1-9-6-2

2024年12月8日日曜日

Optimization Night 9

CDCLによるMILP解法が興味深いです。日本でも、このような方がいらしたのですね。NTT DATA出身の方らしいのですが、この会社は、OR業界の重鎮が在籍され、東大・京大出身の方が多い、印象です。(⇒RAMP講演の懇談会で名刺交換させていただいたことがありました。そのときは、NTT DATAに所属されていました。当時、私もSATの限界を感じ分岐限定法の勉強を始めたばかりでMILPのヒュリスティクスについて質問させていただいたのですが、丁寧に教えて頂いたことがあります。)


 Optimization Night #9

INTSATについては、その後、RoundingSATやExact系に引き継がれていると思いますが、Benders Decompositionを用いるというのは、聞いたことがありません。CDCLでBenders Cutを用いるのは新しいと思います。研究の最前線だと思いますので今後も要注目です。

CDCL による厳密解法を採用した MILP ソルバー - Speaker Deck