问题标签 [cvxr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 在 CVXR 中为目标函数传递一个字符串
我正在尝试围绕 CVXR 编写一个包装函数,以便函数可以传递“目标”和“约束”。我使用以下示例:
例子:
到目前为止我的尝试:
问题:
目标变量的计算结果不是 x1^2 + x2^2,而是带有引号。我试过 as.formula、eval、substitute 等。
r - 我可以使用 for 循环在使用 cvxr 的线性问题中指定约束吗?
假设我有一个 LP 问题,其中:
w 是维数为 r 的常数列向量
a 是维数为 r 的常数列向量
p 是维数为 T 的常数列向量
d 是维度 (r,T) 的矩阵变量
我必须在 LP 问题中插入以下约束:
我一直在使用 R 和 CVXR 很短的时间,所以我不知道如何插入那个双重求和。有人知道如何帮助我吗?
r - 子矩阵的最大行列式
假设我们有一个方阵M
,例如,
我想知道是否有一种有效的方法来找到一个子矩阵,使其行列式是所有子矩阵中的最大值。矩阵的大小应大于1x1
但小于或等于5x5
。一些子矩阵示例如下
我可以以蛮力的方式做到这一点,即遍历所有可能的子矩阵,但我相信必须有一些优化方法可以让它更容易。
我更喜欢看到解决方案,CVXR
但不确定这个优化问题是否可以用凸的方式来表述。有人可以帮忙吗?否则,也欢迎其他优化包!
r - 如何解决在CVXR中具有不同基数的指数项的目标函数?
我CVXR
用来解决凹目标函数。决策变量 ( x
) 是一维的,目标函数是 2 个对数项的总和,其中第二项是具有不同基数的“<code>a 和b
”(例如 , a^x
)的指数b^x
;“<code>a 和b
”是常量。
我的完整目标函数是:
其中y
是给定的一维数据向量。
a^x
当我将具有 (和)的第二项添加b^x
到目标函数时,我不断得到
有没有CVXR
可以用来编码的原子函数constant^x
?这是我的代码:
请告诉我我做错了什么。我提前感谢您的帮助。
r - 使用多个约束在 R 中使用 CVXR 解决优化问题
我正在尝试用 R 中的 CVXR 解决混合整数问题。以下代码用于解决它:
这给出了以下错误:
当我将代码更改为以下代码时:
它有效,但这些不是我想要的限制。
有谁知道如何解决这个问题?
r - 在 CVXR 中,如何使用外部 c++ 函数?
我正在使用 CVXR 来编写惩罚线性回归。我的全局损失由 4 个元素组成:两个不同的 SSE 损失 loss_u、两个不同数据集上的 loss_b、岭惩罚和特定距离 D。如果我使用“距离 ==“MM””,则代码有效。但是,'distance == "MMD"' 存在错误。我使用内核“kernlab::kmmd”中的外部 rcpp 函数。问题是“Xb %*% beta”是一个 MulExpression。我不知道是否应该将其转换为数字(但如何?)或者是否无法使用 rcpp 函数。
python - CVXR 中 DCP 规则的问题
我正在使用CVXR
建模包来解决凸优化问题。我确定问题是凸的并且它遵循 DCP 规则,但是如果我使用CVXR
它检查 DCP 规则,则返回False
. 但是,如果我遇到完全相同的问题并使用它检查CVXPY
它返回True
(如预期的那样)
这里发生了什么?我附上了 R 和 Python 中这种行为的最小可重现示例:
R代码使用CVXR
Python代码使用CVXPY
有人可以解释这里发生了什么以及如何解决它以便我可以使用 CVXR 吗?
r - 使用 cvxr 将目标函数中的两个变量相乘
我想最小化以下目标函数
有一些限制
另一个用户(我认为是G. Grothendieck)建议使用CVXR
R 的包。
所以我按照A Gentle Introduction to CVXR的说明来制作我的代码
关于如何将二次程序转换为线性程序? 我找到了有助于解决双线性公式部分问题的McCormick 信封的提示。尤其是那部分。
在josliber的回答结束时,他评论说,所有变量都应该有一个界限。在我的约束中没有上限,因此我插入了一个上限。这是一个随意的选择。如果解决方案在边界上,您必须重新计算新的边界......
这里的解决方案不是我所期望的......当我用solve.QP()
then 解决相同的目标函数时,我得到和。为了建立代码看看我的另一个问题......
让我们检查一下代码:
问题:
- 为什么两个结果不同?
- 在哪些解决方案中我犯了错误?可以指出它们吗?
- 当我从结果中输入 x 和 y 时,我没有得到
$value
替代solve.QP()
方案- 做数学的时候
- 正如你所看到的结果并不重合
- 我在这里做错了吗?!
提前谢谢了!
r - 目标函数中双线性项的松弛 - 使用 CVXR 和 McCormick 包络
我有一个目标函数
有一些限制
我想最小化。
我想使用 R 包CVXR
和McCormick 信封。
让我们检查一下代码:
但遗憾的是,这是一个缺点:
- 和的值只是近似值,因为 McCormick 是约束的松弛。
- 这些是真正的价值观:
为了克服这个缺点,您可以使用这种方法(请参阅 josliber 的答案),在其中将间隔拆分为一个变量。就像josliber我在 x 变量上分开了......
在以下部分中,我的问题出现了 - 但首先看看我的代码:
问题:
- 为什么josliber只使用四个不等式中的两个?
- 因此,我也在代码中尝试了第二个约束替代方案
- 你能帮我解决我的问题吗?!
- 我想我必须使用第二个约束替代方案,但这里的值
solution_OF$getValue(x'ses)
是如此之高,以至于像josliber提到的那样总结它们不会让我得到预期的结果x=2
。 - 在这两种选择中,都有两个约束
x+2*y <= 10
和x+y <= 6
。由于我将 x 范围分成五个子部分,我必须转换它们吗?
- 我想我必须使用第二个约束替代方案,但这里的值
- 是否也可以拆分多个变量?参考josliber的回答。