我正在开发一个程序来自动找到最佳的班次分配,但受到很多限制。我正在使用grails,即有关工人、轮班和分配的数据将保存在 DBMS 中。
对于优化本身,我必须非常集中地处理一小部分数据(来自大约 5 个不同表的总共大约 600 行)。我将不得不迭代并搜索各种子子集数十次以计算适应度函数、更改一些值、再次计算适应度、起泡、冲洗、重复,也许数百次。
现在,虽然搜索和迭代正是 DBMS 的用途,但我相信在这种情况下,数百个 DB 请求的开销会使实际完成的工作相形见绌,即使对于像 HSQLDB 这样的内存 DBMS 也是如此。因此,相反,我计划在开始时将整个子集放入内存中,为我必须要做的查找构建我自己的索引(主要是 HashMap),然后只使用这些索引,远离数据库直到我已经完成并将我的结果写入它。
这是一种合理的方法吗?有更好的想法吗?