簡體   English   中英

紙漿中的循環 Python

[英]For loop in Pulp Python

我有一個 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, ""

但我堅持要檢查示例以查看每個約束的作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM