gpt4 book ai didi

python - 如何在 numpy 中对 cvxopt 矩阵执行运算?

转载 作者:行者123 更新时间:2023-12-01 06:42:11 34 4
gpt4 key购买 nike

我正在使用 cvxopt 矩阵,以便在 picos 库中使用它们。一般来说,我想要一个矩阵,在某个向量上评估它,减去一些东西,然后取其条目的最大绝对值

import picos as pic
import cvxopt as cvx
import numpy as np

(...)

P = pic.Problem()
theta = P.add_variable('theta', size=k, vtype='continuous', lower=-10, upper=10)
theta

P.add_constraint(max(abs(M*theta - b)) <= 5)
P.minimize(theta)

(这里 b 是一些被视为 cvxopt 矩阵的向量。)但是,我得到的错误如下:

TypeError                                 Traceback (most recent call last)
<ipython-input-11-8884e5cb14dc> in <module>
3 theta
4
----> 5 P.add_constraint(max(abs(M*theta - b.T)) < 45)
6 P.minimize(theta)
7

TypeError: 'Norm' object is not iterable

我想知道是否有其他方法可以让 cvxopt 接受这些计算?

最佳答案

(除了多年前的小型实验之外,从未真正使用过这个库)

这看起来罪魁祸首是那些高度复杂的自动转换建模系统工具中隐藏魔法的经典案例。

  • picos 重载 abs in abs(M*theta - b)
    • 参见:doc
    • 这会产生 Norm 类型(基于 picos 的类型)
  • picos 可能不会重载 max(abs(M*theta - b.T)) 中的 max
    • 将使用 python 的 max-operator(不是从 picos 定制的东西!),它基于某些可迭代的线性搜索
    • 这里的可迭代对象是 Norm 对象;但它不可迭代,如错误所示

另请参阅:list of overloaded operators

在我看来,这个功能 max 缺失了。您可以手动将其线性化,但是……这很烦人。

如果你不需要 picos 的特殊功能,cvxpy非常相似,也支持 absmax (并且基于 scipy 的稀疏矩阵 + numpy-arrays;感谢上帝!)。

关于python - 如何在 numpy 中对 cvxopt 矩阵执行运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59398822/

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