问题描述
在我的车辆路线问题中,我试图使成本目标函数最小化,同时还添加其他变量以使['qux','foo']
最小化。
但是,当我执行以下操作时,我得到一个routing.AddVariableMinimizedByFinalizer
。从两个TypeError
创建一个IntVar
然后传递到CumulVar
的正确方法是什么?
AddVariableMinimizedByFinalizer
错误是:
for i in range(data['num_vehicles']):
duration = time_dimension.CumulVar(routing.End(vehicle_id)) - time_dimension.CumulVar(routing.Start(vehicle_id))
routing.AddVariableMinimizedByFinalizer(duration)
有关其他上下文,这是我在代码中设置时间窗口的方式:
TypeError Traceback (most recent call last)
<ipython-input-15-d27f070bd2ea> in <module>
6 # time_dimension.CumulVar(routing.End(i)))
7 duration = time_dimension.CumulVar(routing.End(vehicle_id)) - time_dimension.CumulVar(routing.Start(vehicle_id))
----> 8 routing.AddVariableMinimizedByFinalizer(duration)
~/.local/lib/python3.8/site-packages/ortools/constraint_solver/pywrapcp.py in AddVariableMinimizedByFinalizer(self,var)
3925 def AddVariableMinimizedByFinalizer(self,var: "IntVar") -> "void":
3926 r""" Adds a variable to minimize in the solution finalizer. The solution finalizer is called each time a solution is found during the search and allows to instantiate secondary variables (such as dimension cumul variables)."""
-> 3927 return _pywrapcp.RoutingModel_AddVariableMinimizedByFinalizer(self,var)
3928
3929 def AddVariableMaximizedByFinalizer(self,var: "IntVar") -> "void":
TypeError: in method 'RoutingModel_AddVariableMinimizedByFinalizer',argument 2 of type 'operations_research::IntVar *'
解决方法
为什么不简单地使用以下代码呢?
routing.AddVariableMaximizedByFinalizer(
time_dimension.CumulVar(routing.Start(i)))
routing.AddVariableMinimizedByFinalizer(
time_dimension.CumulVar(routing.End(i)))
这里的duration
对象是一个表达式...