- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在解决 cvxpy 中的优化问题时,是否有一种很好的方法可以通过将优化变量替换为实际值来检查约束是否有效?
我有一个复杂的优化问题(100 多个约束),但我知道最优解应该是什么。但是,cvxpy 失败并显示错误消息 ValueError: Rank(A) < p or Rank([G; A]) < n
我认为这是因为我在其中一个约束中有错字,使它们不一致。有没有一种很好的方法可以用实际值代替变量,看看违反了哪些约束(因为它们可能有拼写错误)?
我的实际问题比较复杂,所以我做了一个简单的例子:
from cvxpy import *
x = variable(name='x')
y = variable(name='y')
c1 = greater_equals(x, 1.)
c2 = greater_equals(y, 1.)
c3 = less_equals(x + y, -4.) # typo: -4 should be +4
p = program(maximize(2. * x + y), [c1, c2, c3])
p.solve()
-4
在约束中c3
应该是 +4
.这失败并显示错误消息:Certificate of primal infeasibility found.
如果我输入 p.show()
我得到:
maximize 2.0*x + y
subject to
x >= 1.0
y >= 1.0
x + y <= -4.0
是否有一个值可以替代正确的解决方案 ( x == 3., y == 1.
) 以便看到违反了第三个约束?我试过弄乱 x.value
等,但还没找到办法
最佳答案
我找到了一个好的方法,使用约束的 left
属性,它确实有一个 value
属性:
x.value = 3.
y.value = 1.
for c in [c1, c2, c3]:
constraint_text = '%s %s %s' % (c.left.value, c.type, c.right)
print '%s becomes %s which is %s' % (c, constraint_text, eval(constraint_text))
打印:
x >= 1.0 becomes 3.0 >= 1.0 which is True
y >= 1.0 becomes 1.0 >= 1.0 which is True
x + y <= -4.0 becomes 4.0 <= -4.0 which is False
如果有人知道更好的方法,请随时分享。
关于python - 在具有实际值的 cvxpy 中检查约束是可以的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16974122/
我有一个目标函数,它取决于外积的总和。如果我可以使用 Numpy 函数,我会这样写: A = np.ones(m, n) U = Variable(m, n) objective = np.trace
目的:我试图在 python 中使用 cvxpy 来最大化 dual_func,但是我得到下面的 SolverError,我相信它可能是 Variable 具有不同的维度,但似乎无法弄清楚这个问题。我
可能有某个地方漂浮的答案,但我找不到。 我想最小化具有变量 X >= 0 和一阶导数矩阵 D,因此 X 在列方向上是平滑的并且具有相对大的数据。 过去我使用过各种方法来解决这个问题(例如使用 scip
背景:我是 PyPortfolioOpt 的开发者,一个 python 投资组合优化库,我试图允许用户向最大夏普比率问题添加约束。 目前,用户可以将他们的约束作为 lambda 函数传递,例如使所有权
我正在使用以下代码: import sys, numpy as np import cvxpy as cvx if __name__ == '__main__': sims = np.rand
我正在尝试编写一个搜索时钟频率和除数的程序来生成目标频率。然而,一个限制是除数必须是偶数(由于硬件限制),我找不到一种方法来对此进行建模。 我没有得到模运算符支持 "TypeError: unsupp
我正在尝试在 CVXPY 中实现此 LP: 但我正在努力寻找一种有效的方法来实现这里的第一个约束。我发现有效的唯一方法是将每个总和作为其自己的约束添加,但随着问题的规模变大,其规模会迅速扩大。有没有更
我正在使用 CVXPY(1.0 版)。我不明白是什么导致了 ZERO 表达式和 NONNEGATIVE 表达式之间的差异,如以下代码所示: >>> import cvxpy as cv >>> a =
我试图在 Python 中使用 cvxpy 强制变量为整数(整数约束),但结果仍然是 float : from cvxpy import * Fi = Int() Or = Int() constr
我在 CVXPY modelling language 中定义了一个大问题.我想解决一系列这样的问题 - 仍然是相同的格式但具有不同的参数(常量)。 我发现在调用 problem.solve() 之后
我正在尝试在目标函数的 CVXPY 中进行逐元素乘法。这是否允许作为凸问题的一部分? X 是一个 n x 1 变量。V 是一个 n x n 常数。 我想执行与 np.multiply(X, V*X)
这个问题在这里已经有了答案: How to convert quadratic to linear program? (1 个回答) 关闭 7 年前。 我需要一个可以将两个非常数相乘的 LP。这是我
这是一个边界 super 用户问题。我一直在使用 pip install 从 Windows 10 上的 powershell 将软件包添加到我的 3.6.2 安装中。我正在努力安装 CVXPY。具体
我正在尝试使用 CVXPY 解决 Python 中的投资组合优化问题,但收到错误 sum_entries 未定义。我正在使用 Anaconda 2.7 和 Jupyter 笔记本。我已经使用 cond
我正在尝试使用 cvxpy 进行优化。 w=cvxpy.Variable((10,1)) cvxpy.kron(w,w) 这不起作用说第一个参数应该是常量, 然后我尝试使用 numpy numpy.k
我正在尝试使用 CVXPY 包(使用 ECOS 求解器)解决 Python 中的优化问题。该问题涉及最小化受多个约束的线性变量。问题本身是拟凸的,所以我实现了二分算法来找到最优解。 问题在于,当二分越
在解决 cvxpy 中的优化问题时,是否有一种很好的方法可以通过将优化变量替换为实际值来检查约束是否有效? 我有一个复杂的优化问题(100 多个约束),但我知道最优解应该是什么。但是,cvxpy 失败
假设我的约束条件是矩阵变量的第一列和第三列的乘积大于 1。我如何在 CVXPY 中实现?示例: w = Variable(4,3) 在 Matlab 中,我的约束是: w(:,1)'*w(:,3)>1
使用 CVXPY 时,我经常遇到“SolverError”。他们的doc只是说这是由数值问题引起的,但没有提供有关如何避免这些问题的更多信息。 下面的代码片段是一个例子,问题很简单,但是 'CVXOP
如何在 cvxpy 中反转变量矩阵? 我有一个问题变量矩阵,定义如下: import cvxpy as cp A = cp.Variable(2,2) 我想求解一个目标函数涉及该矩阵的逆的程序。我几乎
我是一名优秀的程序员,十分优秀!