为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUWWW 2022-07-19 17:03:02
使用纸浆和python,我试图以以下形式解决水平衡(类似于经典的运输问题)线性规划问题:最小化 c'x 服从:轴=b磅<=x<=ub其中 A 是 (10x18) 矩阵,c(1x18) 和 b(10x1) 是向量,U (18x2) 是分别包含 lb 和 ub 的两列矩阵。import pulp as pimport pandas as pdimport numpy as npA=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 Functionc=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\generic.py”,第1555行,非零 self.class.nameValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。"为什么会这样?可以使用 scipy.optimize.linprog() 例程成功解决该问题。提前致谢!!
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

PuLP 不使用矩阵表示法。所以A*x变成了类似的东西(在伪代码表示法中):

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

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


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 269 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号