gurobipy:更新 tupledict 实现

问题描述 投票:0回答:1

我正在使用

tupledict
中的
gurobipy
,我真的很喜欢
select
功能。但是它仅限于值而不是条件表达式。

我的变量元组字典包含一个元组

(r,t)
作为键,其中
r
是一个代表路线的对象,有2个主要属性节点和边(为简单起见,我只提到这两个),
t
是一个整数代表时间段。我正在做一个分支和价格算法,我必须对节点的访问次数进行分支,这意味着我必须迭代我的变量
tupledict
以查看路线
r
是否包含节点。其他时候我必须检查路线是否包含边缘。这些迭代非常昂贵,我想知道是否有可能知道
select
方法是如何构建的,因为例如在选择
t
时它非常快。 我愿意使用 cython 编写自己的
tupledict
类,并为我拥有的每个分支规则编写类似
select
的函数,但是我似乎没有找到
tupledict
的实现。我希望这不是一个“秘密”。

python cython gurobi
1个回答
0
投票

gurobipy.tuplelistgurobipy.tupledict 是为常见的优化模型结构创建的,您需要在一个元组上匹配的子集元素。典型的用例是网络流模型的流守恒约束:您希望所有弧都关联到一个节点。具体来说,您希望所有(有向)弧 (i,j) 和 (j,k) 都为固定 j。

您所描述的有点不同:您想要找到 (r,t),其中路由 r 包含节点 j。这与匹配特定值无关:这需要了解路由对象的结构。

tl;dr:gurobipy.tuplelist 不支持此功能,但您可以使用列表字典之类的东西构建自己的从 j 到 r 的索引。

© www.soinside.com 2019 - 2024. All rights reserved.