gpt4 book ai didi

OptaPlanner:所有可能的值都必须适合内存吗?

转载 作者:行者123 更新时间:2023-12-02 01:32:43 26 4
gpt4 key购买 nike

目前可用的两个选项 (6.3.0.Final) 似乎是将值范围定义为 Collection 或 ValueRange(由边界定义)。对于由 Java 对象表示的每个变量,我的领域都有大量潜在值(不计算或数字行值)。

随着我们的问题扩大,将所有不同规划变量的所有可能值一起存储在内存中变得不切实际。

有什么方法可以根据需要向引擎提供值吗?批量还是使用迭代器?

如果是这样,我可以想象大部分值存储在数据库或其他磁盘结构中,并且只以小批量形式进入内存以供考虑。

最佳答案

为了让阅读这篇文章的其他人清楚:这些是否需要放入内存中?

  • 所有规划实体。例如,当将 30k 进程调度到 10k 台计算机时,所有 30k 进程都必须装入内存,两次(一次用于工作解决方案,一次用于在此过程中找到的最佳解决方案)但不是平方(就像在单纯形中一样,没有它就无法扩展分区)。
  • 所有规划值? (这是你的问题)。这就是发明规划 ValueRange 接口(interface)的原因。但是,当您从 @ValueRangeProvider 返回一个简单的 Collection 时,它当然会返回。另请注意,如果您使用实体的值范围而不是正常的解决方案的值范围,则会占用更大的内存。
  • 所有可能的解决方案,如果那样的话,我们连 100 台计算机上 300 个进程这样的小问题都解决不了。

回答你的问题:

因为您的计划值不适合内存,您的 @ValueRangeProvider 无法返回 Collection。而是返回 CountableValueRange(如果前者不可能,则返回 ValueRange)。如果值类型是数字(int、long、double、BigDecimal),请使用 ValueRangeFactory 上的方法。如果不是——并且你不想或不能重构(我会推荐)——那么进入兔子洞并使用深度实现类来实现你自己的 CountableValueRange...开始阅读吧来自 ValueRangeFactory

出于兴趣:您的规划值类别是什么类型?为什么不能是数字?我想了解您的用例,以便我可以评估我们是否需要在 OptaPlanner 中为此类值范围(或更通用的变体)添加开箱即用的支持。

关于OptaPlanner:所有可能的值都必须适合内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33245834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com