今期のビッグイベントはなんと言ってもSplr-0.3.0のリリース。めでたい。
三ヶ月の開発期間を経て2月10日にようやくSplr-0.3.0をリリースすることができました。その更新内容から大事な部分を拾ってみると、
これで6000行のプログラムの2000行ほどが更新されることになったし、質的にも結構大きな修正だった。多分この文章以外にはどこにも書かないだろうけど、上記強調部分は眼から鱗の出来事だった。
前回から0.2.2の目玉として考えてきたChronoBTの実装は論文をちゃんと読んでみると、バックトラック時の再割り当ての手間を省くのは主目的ではなく、バックトラックコストが少ない学習節の作成から得られるむしろ副作用のようなものであることがわかった。ということでこれまでの安直な実装を目指していたブランチは全て見当外れ。0.3.0のリリース後に論文見ながら一からやり直すことになった。これが0.3.1の主目標になるでしょう。
ベンチマークをSAT Competition 2018ものからSAT RACE 2019に変更しました。過去のデータが使えなくなるのは大きいので延び延びになっていたけどようやく重い腰をあげた。下図が去年の公式データの結果のカクタスプロット(2つほどなんか変なデータがあったので除去が必要だった)。やはり500秒くらいで既にある程度の傾向は見て取れる。現実的な到達目標にしようと思う。これなら並列実行すれば今の環境でも1日掛からないくらいで1回のベンチマークを終わらせることができるし。
さて、ここに(並列実行の影響補正用の適当なスケーリングありで)Splr-0.3.0でやってみた結果を追加してみると、絶望するほどじゃないじゃん。少なくとも下位グループの中位には位置づけできそうな感じだ。
あとはChronoBTを導入することで、どこまで伸ばすことができるか。期待しよう。
さらにJupyter labを導入しました。まあ慣れてしまえばいいことでRもPythonも同じようなもんだな。Pythonでプログラミングするつもりはないけど、まあ21世紀のPostScriptのようなもんだろう、図形表示言語という意味で。Rustカーネルも入れてみたけど、使いところがないなあ。
さあChronoBTの実装だ!下位グループから脱却できるかなあ。