我尝试使用 pyomo.environ 创建一个 LP 模型。但是,我很难创建集合。对于我的问题,我必须创建两组。一组来自一堆节点,另一组来自节点之间的几个弧。我通过使用 Networkx 创建一个网络来存储我的节点和弧。节点数据以元组形式保存为(经度,纬度)。弧保存为 (nodeA, nodeB),其中 nodeA 和 nodeB 都是元组中的坐标。
因此,节点类似于:
(-97.97516252657978, 30.342243012086083)
而且,圆弧类似于:
((-97.97516252657978, 30.342243012086083), (-97.976196300350608, 30.34247219922803))
我尝试创建集合的方式如下:
# import pyomo.envrion as pe
# create a model m
m = pe.ConcreteModel()
# network is an object I created by Networkx module
m.node_set = pe.Set(initialize= self.network.nodes())
m.arc_set = pe.Set(initialize= self.network.edges())
但是,我不断收到有关 arc_set 的错误消息。
ValueError: The value=(-97.97516252657978, 30.342243012086083,
-97.976196300350608, 30.34247219922803) does not have dimension=2,
which is needed for set=arc_set
我发现我的 arc_set 不知何故变成了一个元组而不是两个元组,这很奇怪。然后我尝试将我的节点和弧转换为字符串,但仍然出现错误。有人可以给我一些提示吗?或者如何删除这个错误?谢谢!