Error_Generator expression_spyder (python 3.6) - PullRequest
0 голосов
/ 14 декабря 2018

Я разрабатываю математическую модель, используя gurobi solver, в python.
Я получаю следующую ошибку при запуске:

SyntaxError: Выражение генератора должно быть заключено в скобкиесли не единственный аргумент

Мое ограничение: enter image description here

Мой код:

for s in S:
    m.addConstr(sum(x[s,s0,c,i] for s0 in S0 for c in C for i in D,s!=p) == 1,'C_3')

1 Ответ

0 голосов
/ 22 января 2019

Прежде всего, все происходит, когда вы добавляете запятую: ,s!=p.

Я просто эмулировал ваш код с моделью, над которой я работаю, и, очевидно, получил ту же ошибку.Посмотрите вокруг (например, , если еще в понимании списка ), и вы увидите, что единственной ошибкой, с которой вы столкнулись, было то, что итератор в генераторе не был точно указан.Это означает, что вам нужно было использовать предложение if, чтобы достичь того, что вы хотели:

for s in S:
    m.addConstr( 
     quicksum(x[s,s0,c,i] for s0 in S0 for c in C for i in D if s!=p) == 1,
      'C_3_'+str(s) )

Кстати, как указано в коде, вы должны использовать quicksum вместо sum,Кроме того, я бы предложил попробовать изменить порядок итераторов;Другими словами, для компьютера не то же самое, что перечислять список из 5 элементов 1000 раз, чем 5 раз перечислять список из 1000 элементов, и это очень важно для синхронизации Python.

В качестве стороныобратите внимание, я попал в этот вопрос, когда искал следующее: TypeError: неподдерживаемые типы операндов для +: 'generator' и 'generator'

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