2022年2月19日土曜日

Highsのログの読み方

 ikegami-2Shift-DATA1をAlgorithm2で駆動しました。Objective Bounds/Best Solで、目的関数値の変化が分かります。GAPは、Lower BoundsとUpper Boundsの差です。時間が経過するとともに、GAPは減少します。GAPが0になったときにOptimalとして、終了します。(GAPが0になるまで終了しません)


最後にHIGHS UBと出ているのが、ScheduleNurse上の真のUBです。このUBとHighsの最終的な目的関数値が一致しているときは、上記のObjectiveBoundsの列は、イコール目的関数値の変化と捉えてOKです。

次の例は、INRC1からsprint hidden01のデータです。


この例の場合HiGHS UB=32になっていて、HiGHSログ上の最終目的関数値と一致していません。これは、HiGHSに与えているモデルにオフセットが存在するためです。(たまたま、ikegami-2Shift-DATA1の方はオフセットが0だった)

なので、Best Integerの列は、

-24 →+32なので、

-23 →+33

-22→+34

という具合にoffset=32-(-24)=56を加えた値を足して読み替えてください。

<終了の仕方>

中規模以上のベンチは、HiGHSで解くことは出来ませんので、途中で止めたくなることがあると思います。(上記のベンチの場合HiGHSは、百数十秒かかっていますが、Algorithm3でしたら1-2秒で求められます)

その場合は、Abort/中止を押すと、コンソールが表示されるタイミングで終了します。(Algorithm3-4も同様です。)

<サポート>

HiGHSのインターフェース実装が完成していません。正式サポートは当面ありません。

<実装>

Algorithm2を選択するとHiGHSとなります。

0 件のコメント:

コメントを投稿