python - Scipy.Optimize Linprog 中的 ValueError
问题描述
我正在尝试使用 scipy 的 linprog 函数解决问题,但运行程序时出现以下错误:
File "C:\...\anaconda3\lib\site-packages\scipy\optimize\_linprog_util.py", line 339, in _clean_inputs elif (len(bounds) == 2 and np.isreal(bounds[0])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我的疑问是,对于我在 MATLAB 中的矩阵配置,我确实得到了结果,所以我不知道这个错误的根源。
我调用 linprog 函数的代码行如下所示:
from scipy.optimize import linprog
res = linprog(c=f,A_ub=Aineq,b_ub=Bineq,A_eq=Aeq,b_eq=Beq,bounds=[lb,ub],method='interior-point')
如果您能提供有关错误可能原因的任何信息,我将不胜感激。
优化问题的所有矩阵如下所示:
f= matrix([[7.8, 7.8, 6.4, 6.4, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])
Aineq= matrix([[ 0. , 0. , 0. , 0. ,-6.66666667, 6.66666667, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,-5. , 0. , 5. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , -4. , 4. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,0. , 0. , 0. , -6.66666667, 6.66666667, 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , -5. ,0. , 5. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,0. , 0. , 0. , 0. , -4. , 4. , 0. , 0. ,0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , -13.33333333, 0. , 0. , 0. , 13.33333333, 0. , 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,0. , 0. , 0. , 0. ,0. , -13.33333333, 0. , 13.33333333,0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,0. , 0. , -13.33333333, 0. ,13.33333333, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,0. , 0. , 0. , 0. , 0. , 0. , 0. , -13.33333333, 0. , 13.33333333, 0. , 0. ],
[ 0. , 0. , 0. , 0. ,0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , -15.98721023, 15.98721023],
[ 0. , 0. , 0. , 0. ,6.66666667, -6.66666667, -0. , -0. ,-0. , -0. , -0. , -0. ,-0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. ,5. , -0. , -5. , -0. ,-0. , -0. , -0. , -0. ,-0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. , -0. , 4. , -4. , -0. ,-0. , -0. , -0. , -0. ,-0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , 6.66666667,-6.66666667, -0. , -0. , -0. ,-0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , 5. ,-0. , -5. , -0. , -0. , -0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , -0. , 4. , -4. , -0. , -0. , -0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , 13.33333333, -0. , -0. , -0. , -13.33333333, -0. , -0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. , -0. , -0. , -0. , -0. , -0. , 13.33333333, -0. , -13.33333333, -0. , -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , -0. ,-0. , -0. , 13.33333333, -0. ,-13.33333333, -0. , -0. , -0. ],
[ 0. , 0. , 0. , 0. , -0. , -0. , -0. , -0. ,-0. , -0. , -0. , 13.33333333, -0. , -13.33333333, -0. , -0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , -0. ,-0. , -0. , -0. , -0. ,-0. , -0. , 15.98721023, -15.98721023]])
Bineq= matrix([[2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5,2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]])
Aeq= matrix([[ 1. , 0. , 0. , 0. , 11.66666667, -6.66666667, -5. , -0. ,-0. , -0. , -0. , -0. , -0. , -0. , 0. , 0. ],
[ 0. , 1. , 0. , 0. , -6.66666667, 10.66666667, -4. , -0. , -0. , -0. , -0. , -0. , -0. , -0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , -5. , -4. , 22.33333333, -0. , -0. , -0. , -13.33333333, -0. , -0. , -0. , 0. , 0. ],
[ 0. , 0. , 1. , 0. , -0. , -0. , -0. , 11.66666667, -6.66666667, -5. , -0. , -0. , -0. , -0. , 0. , 0. ],
[ 0. , 0. , 0. , 1. , -0. , -0. , -0. , -6.66666667, 10.66666667, -4. , -0. , -0. , -0. , -0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , -5. , -4. , 22.33333333, -0. , -13.33333333, -0. , -0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , -0. , -0. , -13.33333333, -0. , -0. , -0. , 26.66666667, -0. , -13.33333333, -0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , -0. , -0. , -0. , -0. , -0. , -13.33333333, -0. , 26.66666667, -0. , -13.33333333, 0. , 0. ],
[ 0. , 0. , 0. , 0. , -0. , -0. , -0. , -0. , -0. , -0. , -13.33333333, -0. , 13.33333333, -0. , 15.98721023, -15.98721023],
[ 0. , 0. , 0. , 0. ,-0. , -0. , -0. , -0. , -0. , -0. , -0. , -13.33333333, -0. , 13.33333333, -15.98721023, 15.98721023],
[ 0. , 0. , 0. , 0. ,0. , 0. , 0. , 0. , 0. , 0. , 0. , 13.33333333, 0. , -13.33333333, 0. , 0. ]])
Beq= matrix([[ 0. , 0. , 1.5, 0. , 0. , 1.5, 0. , 0. , 0. , 0. ,-1. ]])
lb= matrix([[ 0.1 , 0.1 , 0.1 , 0.1 , 0. ,-6.28318531, -6.28318531, 0. , -6.28318531, -6.28318531, -6.28318531, -6.28318531, -6.28318531, -6.28318531, 2. ,0. ]]
ub= matrix([[2.5 , 2.5 , 2.5 , 2.5 , 0. ,6.28318531, 6.28318531, 0. , 6.28318531, 6.28318531, 6.28318531, 6.28318531, 6.28318531, 6.28318531, 2. ,inf]])
解决方案
推荐阅读
- php - Laravel 和 Vue:映射值从 Vue 发送到 Laravel 后端
- python - 调度 Python - 重叠函数
- jquery - 从另一个页面重定向到一个页面并在那里显示隐藏的 div
- c - 无法正确排序字符串数组
- azure - 加载资源、提取数据并将数据通过 Azure Data Facory V2 发送到 Azure Function App
- ruby-on-rails - 如何检索/迭代并将用户位置保存到带有 LinkedIn 的模型中?omniauth-linkedin-oauth2 Rails 5.2
- node.js - ioredis - ClusterAllFailedError:刷新插槽缓存失败
- python - 我应该如何在格式列表中申请“for”?
- javascript - NodeJS 请求对象什么时候发出事件?
- apache - Apache:IP 地址与用户