optaplanner:修改车辆路线,让客户不被服务

时间:2014-05-20 12:02:54

标签: optaplanner

在车辆路线问题中,我想消除每个客户必须服务的限制,但为服务对象添加奖品。

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

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

1 个答案:

答案 0 :(得分:0)

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

解决方法:创建1个虚拟Vehicle,在所有分数规则中将其忽略,并添加分数规则以奖励由非虚拟车辆提供服务的任何客户。