python - 生成器表达式必须在约束上加括号
问题描述
我正在尝试写:
f = model.addConstr(E["1","5"] <= x["1"] for i in I, name="f")
通过在“5”上使用 for 循环。
所以我写了以下内容,其中 I 的值为 I=["1","5","4", "9","6","8","2","3","7"]
f = model.addConstr(E["1",i] <= x["1"] for i in I, name="f")
但是我不断收到错误 SyntaxError: Generator expression must be parenthesized,我不知道为什么。
另外,我正在尝试添加 if 语句,因此当 E["1","1"] 它将为零。我试着写:
f = model.addConstr(E["1",i] <= x["1"] for i in I if i != "1", name="f")
但当然它不起作用
但是在编写约束之前,我也在尝试以下方法:
for i in I:
if i == "1":
E[i,i]=0
如果有人可以提供一些指导,我将不胜感激。谢谢!
解决方案
您的表达式E["1",i] <= x["1"] for i in I if i != "1"
采用列表或生成器理解的形式,但没有列表或生成器的[]
包装()
。尝试:
f = model.addConstr([E["1","5"] <= x["1"] for i in I], name="f")
或者
f = model.addConstr((E["1","5"] <= x["1"] for i in I), name="f")
推荐阅读
- odata - Power BI Desktop Odata 数据限制
- python-3.x - 如何理解这个 Pygame 错误?
- unit-testing - 如何使用golang实现单元测试程序?
- c# - 如何定义一个字符串数组列表?
- https - 微服务:只能使用 KestrelServerOptions.Listen 配置 Https 端点
- python - 当行以特定单词开头时搜索测试
- c# - IIS 中 Ghostscript.NET.dll 中的“Ghostscript.NET.GhostscriptLibraryNotInstalledException”
- oracle - 一年中的12个月,每个月随机选择一个日期,不包括周六和周日
- excel - Excel 天数 360 功能。- 二月的天数问题
- sql - 如何快速自我加入(与 distinct on 相同)?