gpt4 book ai didi

java - OptaPlanner 具有链式变量的多个实体类

转载 作者:行者123 更新时间:2023-11-30 02:23:11 25 4
gpt4 key购买 nike

我正在使用 OptaPlanner 来解决车辆路径问题的变体,其中客户对车辆服务的要求差异很大。我有一些最常见的客户类型,并且希望使用不同的实体类对它们进行建模。由于单个驱动程序可以参与不同的类型,因此它们应该能够形成具有所有类实例的异构链。

我尝试通过修改 VRP 示例来进行概念验证。我提取了 ICustomer,这是我所有客户的一个接口(interface),并更改了 Standstill,以便 getNextCustomer 返回一个 ICustomer。当我尝试使用 Customer 和 Customer2 (客户类的副本)运行它时,两者都实现 ICustomer,我收到此错误:

Exception in thread "main" java.lang.IllegalArgumentException: The entityClass 
(interface org.optaplanner.examples.vehiclerouting.domain.Standstill) has a
InverseRelationShadowVariable annotated property (nextCustomer) with a masterClass
(interface org.optaplanner.examples.vehiclerouting.domain.ICustomer) which is not a
valid planning entity.

在最坏的情况下,我将在单个规划实体中使用枚举和“ifs”对不同的客户类型进行建模,以获得相同的行为。不过,很高兴知道我是否遇到了 API 限制或者有人知道实现此目的的更好方法。谢谢:)

最佳答案

OptaPlanner 完全支持多态性、类层次结构等。我们对其进行了测试(并且定期发现已解决的错误 - 最近的 7.3.final IIRC)。另请参见 TestDataSolution.java 等。当然,新的转载者作为 PR 是受欢迎的。

异常讲述了一个不同的故事。检查您在何处使用 @InverseRelationShadowVariable,即该字段/方法的返回类型 - 我怀疑您的重构可能没有正确影响该代码。

关于java - OptaPlanner 具有链式变量的多个实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287870/

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