首页 > 解决方案 > 使用 Pulp 进行线性编程:LpAffineExpression 出错

问题描述

我目前正在使用纸浆包进行线性规划。我试图设置随决策变量而变化的因变量但失败了......我所做的是:

opt = LpProblem(name="OPT")

# Data
df={"A":[5,4,3,4,6]}
a=df["A"]

# Set decision variable 
var=LpVariable.dicts("Var", df.index, lowBound=-3.3, upBound=3.3, cat="Continuous")

# Set dependent variable
k={}
for i in df.index:
    k[i]=math.tanh(-var[i])

# Set constraints
opt += a[i]-var[i] >= 0

# Define the objective function
opt += lpSum ((a[i]-var[i])*k[i]) for i in df.index)

opt_model.solve()

我得到“TypeError:必须是实数,而不是 LpAffineExpression”。我想知道如何在 tanh 函数中设置决策变量。

标签: pythontypeerrorlinear-programming

解决方案


这里有两个相关的错误。

  1. math.tanh不知道决策变量。它只能以数字作为参数。

  2. 即使它被允许,这仍然是没有意义的,因为这会使问题成为非线性的。PuLP 仅适用于线性模型。


推荐阅读