簡體   English   中英

使用 Python 優化以分數為約束的線性規划問題

[英]Using Python to optimize a linear programming problem with a fraction as a constraint

我正在嘗試解決以下線性規划問題,其約束條件至少需要每種成分的 10%。 問題是要求解決方案至少包含 10% 的種子、10% 的葡萄干、10% 的薄片、10% 的山核桃和 10% 的核桃。 目前,我在“#ingredients”下設置了約束,但無法弄清楚如何將值設為 10%。 我正在使用分數方法,但我繼續收到以下錯誤。

無效的語法錯誤

from fractions import Fraction as Fraction
# declare the model
model = ConcreteModel()

# declare decision variables
model.seeds = Var(domain=NonNegativeReals)
model.raisins = Var(domain=NonNegativeReals)
model.flakes = Var(domain=NonNegativeReals)
model.peacans = Var(domain=NonNegativeReals)
model.walnuts = Var(domain=NonNegativeReals)


# declare objective
model.cost = Objective(
                  expr = 4*model.seeds + 5*model.raisins + 3*model.flakes + 7*model.peacans + 6*model.walnuts,
                  sense = minimize)

# declare constraints
# Vitamin Content
model.Vitamins = Constraint(expr = 10*model.seeds + 20*model.raisins + 10*model.flakes + 30*model.peacans + 20*model.walnuts >= 20)
# Mineral Content
model.Minerals = Constraint(expr = 5*model.seeds + 7*model.raisins + 4*model.flakes + 9*model.peacans + 2*model.walnuts >= 10)
# Protein Content
model.Protein = Constraint(expr = 1*model.seeds + 4*model.raisins + 10*model.flakes + 2*model.peacans + 1*model.walnuts >= 15)
# Calorie Content
model.Calories = Constraint(expr = 500*model.seeds + 450*model.raisins + 160*model.flakes + 300*model.peacans + 500*model.walnuts >= 600)
#ingredients
# Seed Constraint
model.Seeds = Constraint(expr = model.seeds >= (Fraction(1, 10))
# Raisin Constraint
model.Raisin = Constraint(expr = model.raisins >= (Fraction(1,10))
#Flakes Constraint
model.Flakes = Constraint(expr = model.flakes >= (Fraction(1,10))
# Peacans Constraint
model.Peacans = Constraint(expr = model.peacans >= (Fraction(1,10))
# Walnuts Constraint
model.Walnuts = Constraint(expr = model.walnuts >= (Fraction(1,10))

# show the model you've created
model.pprint()

您在上一行缺少右括號。

model.Seeds = 約束(expr = model.seeds >=(分數(1, 10))

數一數:你有 3 個左派和 2 個右派。 Raisins 行和以下行也是如此。

當您遇到語法錯誤時,這總是可能的罪魁禍首。

暫無
暫無

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

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