如何从规划实体中使用OptaPlanner ValueRange?

时间:2015-01-12 22:57:03

标签: java optaplanner

我试图限制可以与特定实体相关联的计划变量。在第4.3.4.2.2节的OptaPlanner手册中,显示了一个示例,但不清楚应如何生成变量列表。该清单应包含哪些内容?这些计划变量本身是?它们可以复制吗?如果允许复制,那么它们如何比较?如果没有,规划变量在定义规划实体时不在范围内 - 我意识到这是一个Java问题,但是如何从规划实体定义中访问规划变量列表并不明显。

这是早期版本不支持的6.1功能吗?

使用此功能会限制工作内存大小吗?这是我的目标。

非常感谢您的协助!

以下是手册中的示例:

@PlanningVariable

@ValueRange(type = ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY, planningEntityProperty = "possibleRoomList")

public Room getRoom() {

    return room;

}


public List<Room> getPossibleRoomList() {

    return getCourse().getTeacher().getPossibleRoomList();

}

1 个答案:

答案 0 :(得分:1)

让我们先设置术语:规划变量(例如示例中的getRoom())具有一个值范围(这是一个规划值列表),它们与实体实例不同

关于此类 List计划值

  • 每个实体都拥有自己的List实例,但如果多个实体具有完全相同的值范围,则可以共享相同的List实例。
  • 无副本:计划值实例应仅在解决方案中存在一次。因此,具有不同值范围但在其值范围内具有相同计划值的2个实体应使用相同的计划值实例。