微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google或工具:AddVariableMinimizedByFinalizer TypeError

如何解决Google或工具:AddVariableMinimizedByFinalizer TypeError

在我的车辆路线问题中,我试图使成本目标函数最小化,同时还添加其他变量以使['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对象是一个表达式...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。