优化规划师;允许的大小限制是多少?
Optaplanner; What is the allowable size limit?
我的问题大小为 80000,但是当我超过这个限制时我卡住了,
Optaplanner 中使用的问题大小有限制吗?
这个限制是多少?
当我超过这个限制 (80000) 时,我得到一个 java 堆异常
一些想法需要研究:
1) 给JVM更多的内存:-Xmx=2G
2) 使用更高效的数据结构。 80k 个实例将很容易装入一个小内存中。我敢打赌你在 2 个集合之间有某种交叉矩阵。例如,20k VRP 位置的距离矩阵需要 (20k)² = 400m
个整数(每个整数至少 4 个字节),因此它需要将近 2GB 的 RAM 以其最有效的形式(数组)保存在内存中。 使用 JProfiler 或 VisualVM 等分析器 找出哪些数据结构占用了如此多的内存。
3) 阅读有关 "planning clone" 的章节。有时将 Job 拆分为 Job 和 JobAssignment 可以节省内存,因为只需要克隆 JobAssignment,而在另一种情况下,引用 Job 的所有内容也需要计划克隆。
我的问题大小为 80000,但是当我超过这个限制时我卡住了,
Optaplanner 中使用的问题大小有限制吗?
这个限制是多少?
当我超过这个限制 (80000) 时,我得到一个 java 堆异常
一些想法需要研究:
1) 给JVM更多的内存:-Xmx=2G
2) 使用更高效的数据结构。 80k 个实例将很容易装入一个小内存中。我敢打赌你在 2 个集合之间有某种交叉矩阵。例如,20k VRP 位置的距离矩阵需要 (20k)² = 400m
个整数(每个整数至少 4 个字节),因此它需要将近 2GB 的 RAM 以其最有效的形式(数组)保存在内存中。 使用 JProfiler 或 VisualVM 等分析器 找出哪些数据结构占用了如此多的内存。
3) 阅读有关 "planning clone" 的章节。有时将 Job 拆分为 Job 和 JobAssignment 可以节省内存,因为只需要克隆 JobAssignment,而在另一种情况下,引用 Job 的所有内容也需要计划克隆。