OptaPlanner专家,
我是OptaPlanner的新手,我向你求助。
据我发现this thread在OptaPlanner的CVRPTW示例(版本CR4)中,实体Vehicle
(here)表示车辆行程(而不是车辆) ,我想问一下如何管理一个真实的情况,即数量有限的车辆不能重复旅行。
在提到的主题中,建议是用VehicleTrip替换实体车辆,并创建一个新的Vehicle实体。 我想新车有一个VehicleTrip对象列表(因为车辆可以在一天内完成几次旅行 - 例如)。 但是如何配置规划器以最小化每辆车的VehicleTrip数量?
该示例应如何修改? (我不关心Swing部分,只关心模型和规划者的配置 - 监听器/ DRL / XML)
修改
我如上所述修改了模型,并在类int getOverlappingTime()
中创建了方法VrpTimeWindowedVehicleRoutingSolution
,它返回了同一VehicleTrip
的不同Vehicle
的重叠时间量。 }。然后我创建了以下规则:
rule "vehicleTripsOverlapping"
when
$solution : VrpTimeWindowedVehicleRoutingSolution()
then
scoreHolder.addHardConstraintMatch(kcontext, - $solution.getOverlappingTime());
end
该方法正常工作(已测试),但分数不会改变(似乎规则未被触发)。有人能帮我吗?
答案 0 :(得分:0)
如何配置规划器以最小化数量 每辆车的VehicleTrip?
使用平方法:
when
$v : Vehicle
$count : Number() from accumulate (VehicleTrip(vehicle == $v), count())
then
scoreHolder.addSoftConstraintMatch(kcontext, - $count * $count);
end