Как решить следующую проблему LP / QP, используя Pulp? - PullRequest
0 голосов
/ 23 января 2019
from pulp import *
import pandas as pd
import numpy as np
pd.read_excel('Example.xlsx', encoding='latin-1')

prob = pulp.LpProblem('Performance', pulp.LpMaximize)

#### Create Decision Variables:
decision_variables = []
for rownum, row in data.iterrows():
    variable = str('x' + str(rownum))
    variable = pulp.LpVariable(str(variable), lowBound= row['D']*0.7, 
upBound= row['D']*1.3, cat='Continuous')
decision_variables.append(variable)

#### Define Objective Function
total_cost = ""   
for rownum, row in data.iterrows():
    for i, variable in enumerate(decision_variables):
        if rownum == i:
            formula = variable * row['C'] * row['F'] / row['D']
            total_cost += formula           
prob += total_cost
print("Optimization Function: " + str(total_cost))

#### Define Constraints
problem_spend = ""
for rownum, row in data.iterrows():
    for i, variable in enumerate(decision_variables):
        if rownum == i:
            formula = variable * variable * row['C'] * row['F'] * row['E'] / row['D']
            problem_spend += formula
prob += (total_spend == problem_spend)

[Dataframe] Получение следующей ошибки после выполнения части #### Определить ограничения: «Ошибка типа: неконстантные выражения не могут быть умножены». Это может быть потому, что мои ограничения включают нелинейные переменные.

Моя целевая функция линейна: формула: развернуть [переменная * постоянная]

Мои ограничения являются квадратичными: формула: [Переменная * Переменная * Константа == Константа_Значение]

Я новичок в PULP, и у меня возникла проблема с этой ошибкой. Могу ли я использовать CVXPy для ее решения или каким-либо другим способом?

1 Ответ

0 голосов
/ 23 января 2019

Pulp не может формулировать или решать проблемы QP. Я предлагаю вам использовать CVXpy, Gurobi или Cplex; или переформулируйте проблему, чтобы использовать линейные ограничения

...