0

在车辆路线问题中,我想消除必须为每个客户服务的约束,但为服务的人增加奖励。

我想为每个客户 c_i 添加一个虚拟车辆 v_i,这样 v_i 只能为客户 c_i 服务,而当它发生时,这意味着没有为客户服务。因此,当有 N 个客户时,有 M 个真实车辆加上 N 个虚拟车辆。

我的疑问是:如何设置 Customer 类的 valueRangeProviderRefs 以避免车辆 v_i 为客户端 c_j 提供服务,也就是说,如果参考静态车辆列表,我可以让“vehicleRange”依赖于特定客户吗?

4

1 回答 1

0

这称为过度约束规划。从技术上讲,@PlanningVariable(nullable=true)应该允许这样做,但 OptaPlanner 6.0(目前也是 6.1)还不支持nullable变量chained......

解决方法:创建 1 个 dummy Vehicle,它在所有评分规则中都被忽略,并添加一个评分规则来奖励由非虚拟车辆服务的任何客户。

于 2014-05-20T12:32:50.863 回答