【问题标题】:TypeError: argument of type 'ValueError' is not iterable in qpsolvers in pythonTypeError:“ValueError”类型的参数在 python 的 qpsolvers 中不可迭代
【发布时间】:2020-11-16 03:27:05
【问题描述】:

我是使用 qpsolvers 进行 python 优化的新手,但运行以下代码时遇到问题:

import numpy as np
from qpsolvers import solve_qp

P = np.array([4.,5.,5.,8.]).reshape(2,2)
q = np.array([-3.,2.]).reshape(1,2)[0]
G = np.array([1,1,-2,-3,1,0,0,1,-1,0,0,-1]).reshape(6,2)
h = np.array([2400.,-1100.,1200.,1500.,-300.,0.])
A = None
b = None

sol = solve_qp(P,q,G,h,A,b,solver='quadprog')

我收到了这个错误:

sol = solve_qp(P,q,G,h,A,b,solver='quadprog')
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/qpsolvers/__init__.py", line 262, in solve_qp
    return quadprog_solve_qp(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/qpsolvers/quadprog_.py", line 90, in quadprog_solve_qp
    if "matrix G is not positive definite" in e:
TypeError: argument of type 'ValueError' is not iterable

我真的不确定是什么导致了问题。对此的任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: python numpy mathematical-optimization quadratic-programming


    【解决方案1】:

    您好,我认为这是qpsolvers 代码和您的示例的问题。

    qpsolvers 错误在于它有if "matrix G is not positive definite" in e: 而不是if "matrix G is not positive definite" in str(e):

    如果您更正此问题,则错误 ValueError: Buffer dtype mismatch, expected 'double' but got 'long' 仍然存在。这是因为除了G,所有输入都是浮点数。如果您将其替换为G = np.array([1., 1., -2., 3., 1., 0., 0., 1., -1., 0., 0., -1.]).reshape(6,2),那么我认为这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多