Используя целлюлозу и python Я пытаюсь решить водный баланс (аналогично классической проблеме транспорта * 1034). Задача линейного программирования в виде:
свести к минимуму c 'x зависит от :
Ax = b
фунт <= x <= ub </p>
, где A - матрица (10x18), c (1x18) и b (10x1) - векторы и U (18x2) - это матрица из двух столбцов, включающая соответственно lb и ub.
import pulp as p
import pandas as pd
import numpy as np
A=pd.read_csv(r"C:\...\A.csv",delimiter=',',dtype='int8',header=None)
A=A.to_numpy()
c=pd.read_csv(r"C:\...\c.csv",delimiter=',',dtype='float64',header=None)
c=c.to_numpy()
U=pd.read_csv(r"C:\...\U.csv",delimiter=',',dtype='float64',header=None)
b=pd.read_csv(r"C:\...\b.csv",delimiter=',',dtype='float64',header=None)
b=b.to_numpy()
# Create a LP Minimization problem
Lp_prob = p.LpProblem('Problem', p.LpMinimize)
# Create problem Variables
x = p.LpVariable("x", lowBound = U[0], upBound = U[1]) # Create a variable x
# Objective Function
c=np.transpose(c)
Lp_prob+= p.lpSum(c*x)
# Constraints:
Lp_prob += p.lpSum(A*x) == b
# Display the problem
print(Lp_prob)
status = Lp_prob.solve() # Solver
print(p.LpStatus[status]) # The solution status
# Printing the final solution
print(p.value(x), p.value(Lp_prob.objective))
Вопрос Когда я пытаюсь запустить проект, отображается сообщение
"Файл" C: \ Users \ stavroula \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generi c .py ", строка 1555, в ненулевое self . class . name
ValueError: Значение истинности Series неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). "
Почему это происходит?
Проблема может быть успешно решена с помощью процедуры scipy.optimize.linprog ().
Заранее спасибо !!