gpt4 book ai didi

使用矩阵形式的约束的 Python Pulp 线性规划

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:09 27 4
gpt4 key购买 nike

使用 PuLP 和Python,我试图解决水平衡(类似于经典的运输问题)线性规划问题,其形式为:

最大限度地减少 c'x 的限制:

斧头=b

磅<=x<=ub

其中 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))

问题当我尝试运行该项目时,它显示消息

"File "C:\Users\stavroula\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1555, in nonzero self.class.name

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()."

为什么会发生这种情况?

使用 scipy.optimize.linprog() 例程可以成功解决该问题。

提前致谢!!

最佳答案

PuLP 不使用矩阵表示法。所以 A*x 变得像(以伪代码表示法):

sum_j A[i,j]*x[j]

如果您想使用矩阵表示法,请查看 CVXPY。

关于使用矩阵形式的约束的 Python Pulp 线性规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com