Я не могу получить мой ответ LpProblem в целочисленной форме - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю над «Проблемой диеты» и пытаюсь получить ответы в целочисленной форме, а не непрерывно. Я использовал LpVaraible для объявления переменных в задаче и указал категорию в виде целого числа. Тем не менее, ответы, которые я получил после запуска кода, были в непрерывной форме. Мне интересно, что я делаю не так? Пожалуйста помоги.

#Import the necessary libraries
import pandas as pd
from pulp import *
#Import the necessary liberaries
import pandas as pd
from pulp import *
#Create LpProblem 
prob = LpProblem("Simple Diet Problem",LpMinimize)
#Read the file
df = pd.read_csv("The Diet Problem.csv")
#Creat a list of food items
food_items = list(df['Foods'])
#Create a dictionary of cost for all foods
cost = dict(zip(food_items,df['price']))
#Create a dictionary of A for all foods
A = dict(zip(food_items,df['A']))
#Create a dictionary of C for all foods
C = dict(zip(food_items,df['C']))
#Create a dictionary of B1 for all foods
B1 = dict(zip(food_items,df['B1']))
#Create a dictionary of B2 for all foods
B2 = dict(zip(food_items,df['B2']))
I
#Create food variable with a lower bound = 0
food_vars = LpVariable.dicts("Food",food_items,lowBound=0, cat='Integer')
#Building the LpProblem by adding the main objective function
prob += lpSum([cost[i]*food_vars[i] for i in food_items])
=
#Add the constraints to the model
prob += lpSum([A[f] * food_vars[f] for f in food_items]) == 700
prob += lpSum([C[f] * food_vars[f] for f in food_items]) ==700
prob += lpSum([B1[f] * food_vars[f] for f in food_items]) == 700
prob += lpSum([B2[f] * food_vars[f] for f in food_items]) ==700
#Solve the problem and display the status
prob.solve()
print ("Status:", LpStatus[prob.status])
Status: Infeasible
#Display the full solution
for v in prob.variables():
    if v.varValue>=0:
        print(v.name, "=", v.varValue)
Food_Beef = 0.0
Food_CHK = 19.543147
Food_FISH = 0.0
Food_HAM = 0.0
Food_MCH = 16.345178
Food_MTL = 4.2639594
Food_SPG = 0.0
Food_TUR = 0.0

1 Ответ

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

Статус: невыполнимый

Это говорит о том, что из-за правых констант, установленных вами в вашем случае, не было найдено возможного решения.
Как Как следствие, вы не должны учитывать значение ваших переменных.

...