Я попытался создать модель LP с помощью pyomo.environ. Однако мне сложно создавать декорации. Для моей задачи мне нужно создать два набора. Один набор состоит из группы узлов, а другой - из нескольких дуг между узлами. Я создаю сеть, используя 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 превратился в один кортеж вместо двух. Затем я попытался преобразовать свои узлы и дуги в строку, но все равно получил ошибку. Может кто-нибудь показать мне намек? Или как удалить этот баг? Спасибо!