IndexError: ограничение 'restr1': невозможно инициализировать несколько индексов ограничения одним выражением - PullRequest
0 голосов
/ 24 июня 2018

Пожалуйста, мне нужны руки помощи для устранения вышеуказанной ошибки, которую я разместил в качестве заголовка.Я новичок в Pyomo.Недавно я перешел по этой ссылке: https://github.com/amianAA/ALNS. В MadridALNS.py все прекрасно работает до того места, где созданы ограничения:

#2 // arrival flow to each destination "wd" equal to demand of the destination origin pair "w"

    def resd1_rule(model,w):
        wo=model.tabla[w,'wo']
        expr=0
        for l in model.L:
            if model.b[wo,l]==1:
                expr += model.fo[w,l]
        if expr!=0:
                return (expr + model.h[w]==model.tabla[w,'g']*model.factorg)
        else:
                return Constraint.Skip
    model.restr1 = Constraint(model.W,expr=resd1_rule)

Это ошибка, которую я получаю всякий раз, когда запускаюкод:

ERROR: Constructing component 'restr1' from data=None failed:
    IndexError: Constraint 'restr1': Cannot initialize multiple indices of
    a constraint with a single expression
Traceback (most recent call last):
   File "ALNS.py", line 16, in <module>
   instance = model.create_instance('madridALNS.dat')
   File "/usr/local/lib/python3.5/dist-packages/pyomo/core/base/PyomoModel.py", line 723, in create_instance
   profile_memory=profile_memory )
   File "/usr/local/lib/python3.5/dist-packages/pyomo/core/base/PyomoModel.py", line 806, in load
   profile_memory=profile_memory)
   File "/usr/local/lib/python3.5/dist-packages/pyomo/core/base/PyomoModel.py", line 870, in _load_model_data
   self._initialize_component(modeldata, namespaces, component_name, profile_memory)
  File "/usr/local/lib/python3.5/dist-packages/pyomo/core/base/PyomoModel.py", line 925, in _initialize_component
  declaration.construct(data)
   File "/usr/local/lib/python3.5/dist-packages/pyomo/core/base/constraint.py", line 786, in construct
   (self.name,) )
  IndexError: Constraint 'restr1': Cannot initialize multiple indices of a constraint with a single expression

Файлы можно найти здесь https://github.com/amianAA/ALNS

1 Ответ

0 голосов
/ 25 июня 2018

Аргумент expr= предназначен для одного неиндексированного выражения. Вместо этого вы должны попробовать rule=resid1_rule.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...