【问题标题】:Extract numbers from CVXPY array从 CVXPY 数组中提取数字
【发布时间】:2020-12-09 02:42:46
【问题描述】:
我正在使用 Python 的 CVXPY 包解决优化问题。我创建了一个名为 x 的 CVXPY 变量(包含 10 个值的数组)。我需要施加一个约束,即x 中的第二个最大值小于 0.03。我尝试将其转换为 NumPy 数组无济于事。如何从x 数组中提取值?
import cvxpy as cp
x = cp.Variable(10)
【问题讨论】:
标签:
python
optimization
cvxpy
【解决方案1】:
不,您必须留在 CVXPY 中,即直接使用变量 x。
“第二大 x 应该 ”的问题并非完全无关紧要。
“最大的 x 应该 ”很简单。它与“all x should be ”或
相同
x[i] <= 0.03 for all i
或以 CVXPY 表示法:
x <= 0.03
第二大条件意味着:所有 x 必须
x[i] <= 0.03 + δ[i]*(XUP-0.03) for all i
sum(δ[i]) = 1 (one exception)
x[i] <= XUP (the constant XUP is an upper bound on x)
δ[i] ∈ {0,1} (binary variable)
我会让你把它转录成 CVXPY 符号。