Линейное программирование с Pulp: Ошибка с LpAffineExpression - PullRequest
0 голосов
/ 15 февраля 2020

В настоящее время я использую пакет целлюлозы для работы над линейным программированием. Я попытался установить зависимую переменную, которая варьируется в зависимости от переменной решения, но не удалось ... То, что я сделал:

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.

1 Ответ

0 голосов
/ 15 февраля 2020

Здесь есть две связанные ошибки.

  1. math.tanh не знает о переменных решения. Он может принимать только цифры в качестве аргумента.

  2. Даже если бы это было разрешено, это все еще бессмысленно, поскольку это сделало бы проблему нелинейной. PuLP только для линейных моделей.

...