2018年8月26日日曜日

シリアライゼーションライブラリ cereal

アルゴリズムの改善を行うのに、コンパイル→探索の サイクルを出来るだけ早く回したいというのが背景です。大規模になると、コンパイルするだけで時間がかかってしまいます。そこで、コンパイル後の状態を保存・解凍できるようにすると、(一回コンパイルすれば)コンパイルの時間が省けます。この機能は、Save/Restoreという風に呼ばれていると思いますが、いわゆる「シリアル化」です。C++のクラスやvectorなどのテンプレートを、簡単にシリアル化するのに、cerealを今回、使ってみました。cerealは、serialと発音的にどうなんでしょうか? ともあれ、とても簡単にシリアル化できました。BinaryやJson思いのままに可能です。日本語記事は、こちらか、こちらが詳しいです。

新しい解の発見 その3

instance20の新解を更新しました。(UB:4778→4775→4773→4772→4771→4770→4769)

autorosterのxml formatで、解の有効性は、確認済みです。
Instance20の最適解が確定しました。

 So Far Bestknown New Solution  
 LBUBLBUB
Instance153823383438243831
Instance204743494347694769

2018年8月20日月曜日

新しい解の発見 その2

性懲りもなく、未だ研究していて、その甲斐あって

instance20の新解を発見しました。


 So Far Bestknown New Solution  
 LBUBLBUB
Instance153823383438243831
Instance204743494347694778

2018年8月15日水曜日

116Aをリリースしました

エンジンは、変更していません。来年2/3月の勤務表を作る必要がある、という放射線関係のReq.にお応えして、2019年のカレンダをEnableしました。(本Versionよりライセンスドユーザは、2100年までEnableしています。)

また、UserContributionsということで、下記のサンプルを追加しています。

2交代診療所
・正循環
・複数の介護施設

特に複数の介護施設は、込み入っているので後で解説を書こうと思います。



2018年8月8日水曜日

マルチスレッド化検討

今回は、OpenMPを使おうと思っています。今回の技術開発において、最後の仕上げという段階に来て、OpenMPの調査を開始しました。小規模のソースの場合、数秒ですのであまり意味はないのですが、大規模ベンチマークテストでは、数十時間も走らせるので意味があります。開発マシンもメモリを増強し48GBとしました。