需要有关链式变量的 superclass/interface 的信息
Require information on superclass/interface for Chained variable
对于 Vehicle Routing 问题,我删除了接口(即 Standstill)并修改了 Solver Configuration(即 vehicleRoutingSolverConfig.xml)以将 Standstill entityClass 替换为 Vehicle entityClass。还对代码进行了其他更改。
但是,我在尝试 运行 求解器时遇到以下异常。
线程中的异常"main" java.lang.IllegalArgumentException:entityClass (class org.optaplanner.examples.vehiclerouting.domain.Customer) 有一个 PlanningVariable 注释 属性 (previousVehicle)带链式 (true) 和 属性Type (class org.optaplanner.examples.vehiclerouting.domain.Vehicle) 不是 superclass/interface 或与 entityClass (class org.optaplanner.examples.vehiclerouting.domain.Customer).
我试图理解,为什么 optaPlanner 要求在另一个实体 class(即客户类型)中引用的链变量(即车辆类型)具有相同的 superclass/interface。
请参阅有关 chained 规划变量的文档。链式变量有许多内置规范:
- 每条链恰好有 1 个锚点和 0 到 n 个实体(按顺序)。
- 每个实体都指向前一个实体 xor 锚点,因此链被建模为链表。
应用这两个规范,结果发现实体(例如Customer
)和锚点(例如Vehicle
)需要一个通用接口(例如Standstill
),因为否则 Entity.getPreviousInChain()
规划变量 return 是什么类型?两者皆可。
至于你得到的错误:它说在那个模型中,一个实体不可能指向另一个实体,所以不可能有超过 1 个实体的链...
对于 Vehicle Routing 问题,我删除了接口(即 Standstill)并修改了 Solver Configuration(即 vehicleRoutingSolverConfig.xml)以将 Standstill entityClass 替换为 Vehicle entityClass。还对代码进行了其他更改。
但是,我在尝试 运行 求解器时遇到以下异常。
线程中的异常"main" java.lang.IllegalArgumentException:entityClass (class org.optaplanner.examples.vehiclerouting.domain.Customer) 有一个 PlanningVariable 注释 属性 (previousVehicle)带链式 (true) 和 属性Type (class org.optaplanner.examples.vehiclerouting.domain.Vehicle) 不是 superclass/interface 或与 entityClass (class org.optaplanner.examples.vehiclerouting.domain.Customer).
我试图理解,为什么 optaPlanner 要求在另一个实体 class(即客户类型)中引用的链变量(即车辆类型)具有相同的 superclass/interface。
请参阅有关 chained 规划变量的文档。链式变量有许多内置规范:
- 每条链恰好有 1 个锚点和 0 到 n 个实体(按顺序)。
- 每个实体都指向前一个实体 xor 锚点,因此链被建模为链表。
应用这两个规范,结果发现实体(例如Customer
)和锚点(例如Vehicle
)需要一个通用接口(例如Standstill
),因为否则 Entity.getPreviousInChain()
规划变量 return 是什么类型?两者皆可。
至于你得到的错误:它说在那个模型中,一个实体不可能指向另一个实体,所以不可能有超过 1 个实体的链...