2024年12月29日日曜日

変則2交代、実務インスタンスによる性能比較


基本的に同じインスタンス上での比較になります。性能を比較するのに、各々別のインスタンスを使っていたのでは比較になりません。よく何秒で解けた、というのを目にしますが、他と同じ土俵で比較して、というのは見たことがありません。易しい問題なのか?難しいなのかは、他者には分からないです。易しい問題で数秒と言っても何の優位性もありません。

NSPではベンチマーク問題が多数ネットに転がっていますので、優位性があるのであれば、そちらで主張すべきと思います。(基準は、Gurobi/Cplexです。)

スケジュールナースが解いた問題をMPSファイルに変換することで、この目的を果たすことが出来ます。まさに自職場で使う状態で、同じMPSファイルでの比較ですので正確な性能比較が可能です。

ちなみに、最近の新しいプロジェクトは、ほぼ、この変則2交代です。

今回のまとめは、以下のようになりました。



以下、一つづつ見ていきます。最初は、スケジュールナースです。IntelCore5 8500で普通のPCです。


Gurobi結果です。NEOSサーバ上のデータです。Verboseデータを見ていると、内部の動きが分かります。解がいきなり183secで出てきますが、それまでは一切出てきません。しかしながら、LBは、すぐに0が出ているので、LP+CuttingPlaneという古典的数理手法であることは疑う余地がありません。


HIGHSは、スケジュールナースAlgorithm2として組み込まれています。Feasibleな解が2時間経ってようやく出てきます。内部のヒューリスティクスソルバが貧弱なのは、明らかなので、後述のLocal-MIPを組み込めば、劇的に改善できるでしょう。(誰かやりませんか?)

最後は、最近注目のLocal-MIPで、Ubuntus22、PCは、Ryzen 5950X上でのデータです。

考察
大体、いつも通りの結果となっています。エラー0に出来ているのは、いつも通りスケジュールナースとGurobiだけです。(Gurobiに対して9倍速と言っていますが、PCが違うのでちょっとアンフェアです。)

驚くべきは、やはりLocal-MIPだと思います。Feasibleな解が出てくる速度は、スケジュールナースを上回り非常に高速です。スケジュールナースを上回るソルバを初めてみました。エラー0には出来ないものの2時間後に目的関数値20に到達しており、メタヒューリスティクスソルバとしては、非常に優秀だと思います。

多くの他の勤務表ソフトの性能は、最先端性能のLocal-MIPを上回る結果は残せないでしょう。また、人間が行ったらHighsにも及ばない結果となるでしょう。

道具はあります。後はどのようにしてそれを使いこなすか? だけです。


参考までに生データです。














0 件のコメント:

コメントを投稿