python - Pulp Python 中的 For 循环
问题描述
我有一个 Pulp 问题,它运行良好并给了我正确的值,但我想清理代码。这是有问题的部分:
prob += (select_vars['MeatA'] + select_vars['MeatB'] + select_vars['MeatC']) >= 3, ""
我想把它放到一个for循环中,像这样:
meat_count = 0
Meats = ["MeatA", "MeatB", "MeatC"]
for i in Meats:
if select_vars[i] is not None: meat_count += 1
prob += meat_count >= 5, "Meat min"
但这将 NoneTypes 放入我的 prob.variables() 中,我不知道为什么。当我在没有 for 循环的情况下以第一种方式运行它时,我的 prob.variables() 中没有 NoneTypes。
# Print out the variables with their optimal value
for v in prob.variables():
print("some none ", v)
if v.varValue > 0:
print(v.name, "=", v.varValue)
解决方案
首先,我建议您查看 PuLP 文档中的案例研究。在那里,您将看到如何使用循环来制作适应您的数据的通用模型。另外:我不确定您是否在 python 变量和 PuLP 变量之间有所不同,这很重要。
在您的情况下,您可能想要执行以下操作:
import pulp
prob = pulp.LpProblem('example')
Meats = ['MeatA', 'MeatB', 'MeatC']
select_vars = pulp.LpVariable.dicts("selected_vars", Meats)
prob += pulp.lpSum(select_vars.get(m, 0) for m in Meats) >= 3, ""
但我坚持要检查示例以查看每个约束的作用。
推荐阅读
- database-design - 外键序列
- javascript - 如何通过 evt 对象获取元素的角色?或任何其他可区分的属性
- flutter - 在显示 HomeScreen 之前登录后从 firestore 获取数据
- c++ - 在未评估的上下文中使用概念会产生不一致的结果
- android - 房间 SQLite 继承
- java - 编译错误,意外类型。必需:找到的变量:值
- google-bigquery - 如何在 Bigquery 中将五列与数组/结构/json 混合为一列
- reactjs - 我如何用 Redux 实现切换逻辑
- python - 如何在 Python 中从该类中创建嵌套类的实例?
- css - 在 CSS 变量和 SCSS 变量之间执行数学加法