多くの制約を受けて、最適なシフト割り当てを自動的に見つけるプログラムに取り組んでいます。私はgrailsを使用しています。つまり、ワーカー、シフト、割り当てに関するデータは DBMS に保存されます。
最適化自体については、データの小さなサブセット (約 5 つの異なるテーブルから合計約 600 行) に対して非常に集中的に作業する必要があります。さまざまなサブサブセットを何十回も反復して検索し、フィットネス関数を計算し、いくつかの値を変更し、フィットネスを再度計算し、泡立て、すすぎ、繰り返し、おそらく何百回も行う必要があります。
さて、検索と反復はまさに DBMS の目的ですが、この場合、HSQLDB のようなインメモリ DBMS であっても、何百もの DB 要求のオーバーヘッドが実際に行われる作業を小さくすると思います。代わりに、最初にサブセット全体をメモリに丸呑みし、実行する必要があるルックアップ用に独自のインデックス (主に HashMap) を構築し、それらのみを使用して、DB から離れて作業することを計画しています。完了し、結果を書き込みます。
これは健全なアプローチですか?より良いアイデアはありますか?