问题标签 [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.

0 投票
1 回答
42 浏览

r - 在 CVXR 中为目标函数传递一个字符串

我正在尝试围绕 CVXR 编写一个包装函数,以便函数可以传递“目标”和“约束”。我使用以下示例:

例子:

到目前为止我的尝试:

问题:

目标变量的计算结果不是 x1^2 + x2^2,而是带有引号。我试过 as.formula、eval、substitute 等。

0 投票
0 回答
105 浏览

r - 我可以使用 for 循环在使用 cvxr 的线性问题中指定约束吗?

假设我有一个 LP 问题,其中:

  • w 是维数为 r 的常数列向量

  • a 是维数为 r 的常数列向量

  • p 是维数为 T 的常数列向量

  • d 是维度 (r,T) 的矩阵变量

我必须在 LP 问题中插入以下约束:

约束

我一直在使用 R 和 CVXR 很短的时间,所以我不知道如何插入那个双重求和。有人知道如何帮助我吗?

0 投票
2 回答
531 浏览

r - 子矩阵的最大行列式

假设我们有一个方阵M,例如,

我想知道是否有一种有效的方法来找到一个子矩阵,使其行列式是所有子矩阵中的最大值。矩阵的大小应大于1x1但小于或等于5x5。一些子矩阵示例如下

我可以以蛮力的方式做到这一点,即遍历所有可能的子矩阵,但我相信必须有一些优化方法可以让它更容易。

我更喜欢看到解决方案,CVXR但不确定这个优化问题是否可以用凸的方式来表述。有人可以帮忙吗?否则,也欢迎其他优化包!

0 投票
0 回答
43 浏览

r - 用 R 求解系统方程

这是 Markowitz 的有效投资组合问题,但是是“原始的”。我需要在一定风险水平下最大化投资组合的回报。

我有一个返回向量 mu:

方差协方差矩阵:

我想解决以下最大化问题:

优化问题

其中 mu_p 是投资组合收益(加权平均),sigma_p**2 是投资组合的方差,SIGMA 是 varcov 矩阵,1 是 1 的向量,x 是权重

加上一个约束,使 x 的所有值都大于或等于 cero

我真的不知道如何在 R 中做到这一点,我已经查看了一些包,如 ROI 和 CVXR,但我不明白如何解决这个问题。

0 投票
0 回答
82 浏览

r - 如何解决在CVXR中具有不同基数的指数项的目标函数?

CVXR用来解决凹目标函数。决策变量 ( x) 是一维的,目标函数是 2 个对数项的总和,其中第二项是具有不同基数的“<code>a 和b”(例如 , a^x)的指数b^x;“<code>a 和b”是常量。

我的完整目标函数是:

其中y是给定的一维数据向量。

a^x当我将具有 (和)的第二项添加b^x到目标函数时,我不断得到

有没有CVXR可以用来编码的原子函数constant^x?这是我的代码:

请告诉我我做错了什么。我提前感谢您的帮助。

0 投票
1 回答
170 浏览

r - 使用多个约束在 R 中使用 CVXR 解决优化问题

我正在尝试用 R 中的 CVXR 解决混合整数问题。以下代码用于解决它:

这给出了以下错误:

当我将代码更改为以下代码时:

它有效,但这些不是我想要的限制。

有谁知道如何解决这个问题?

0 投票
0 回答
41 浏览

r - 在 CVXR 中,如何使用外部 c++ 函数?

我正在使用 CVXR 来编写惩罚线性回归。我的全局损失由 4 个元素组成:两个不同的 SSE 损失 loss_u、两个不同数据集上的 loss_b、岭惩罚和特定距离 D。如果我使用“距离 ==“MM””,则代码有效。但是,'distance == "MMD"' 存在错误。我使用内核“kernlab::kmmd”中的外部 rcpp 函数。问题是“Xb %*% beta”是一个 MulExpression。我不知道是否应该将其转换为数字(但如何?)或者是否无法使用 rcpp 函数。

0 投票
2 回答
109 浏览

python - CVXR 中 DCP 规则的问题

我正在使用CVXR建模包来解决凸优化问题。我确定问题是凸的并且它遵循 DCP 规则,但是如果我使用CVXR它检查 DCP 规则,则返回False. 但是,如果我遇到完全相同的问题并使用它检查CVXPY它返回True(如预期的那样)

这里发生了什么?我附上了 R 和 Python 中这种行为的最小可重现示例:

R代码使用CVXR

Python代码使用CVXPY

有人可以解释这里发生了什么以及如何解决它以便我可以使用 CVXR 吗?

0 投票
1 回答
196 浏览

r - 使用 cvxr 将目标函数中的两个变量相乘

我想最小化以下目标函数

目标函数

有一些限制

约束

另一个用户(我认为是G. Grothendieck)建议使用CVXRR 的包。

所以我按照A Gentle Introduction to CVXR的说明来制作我的代码

关于如何将二次程序转换为线性程序? 我找到了有助于解决双线性公式部分问题的McCormick 信封part_of_OF的提示。尤其是那part_of_OF部分。

josliber的回答结束时,他评论说,所有变量都应该有一个界限。在我的约束中没有上限,因此我插入了一个上限。这是一个随意的选择。如果解决方案在边界上,您必须重新计算新的边界......

这里的解决方案不是我所期望的......当我用solve.QP()then 解决相同的目标函数时,我得到结果_x结果_y。为了建立代码看看我的另一个问题......

让我们检查一下代码:

问题

  • 为什么两个结果不同?
    • 在哪些解决方案中我犯了错误?可以指出它们吗?
  • 当我从结果中输入 x 和 y 时,我没有得到$value替代solve.QP()方案
    • 做数学的时候公式问题
    • 正如你所看到的结果并不重合
    • 我在这里做错了吗?!

提前谢谢了!

0 投票
1 回答
117 浏览

r - 目标函数中双线性项的松弛 - 使用 CVXR 和 McCormick 包络

我有一个目标函数

目标函数

有一些限制

约束

我想最小化。

我想使用 R 包CVXRMcCormick 信封

让我们检查一下代码:

但遗憾的是,这是一个缺点

  • x 值和的值y 值只是近似值,因为 McCormick 是约束的松弛。
  • 这些是真正的价值观:
    • true_xy

为了克服这个缺点,您可以使用这种方法(请参阅 josliber 的答案),在其中将间隔拆分为一个变量。就像josliber我在 x 变量上分开了......

在以下部分中,我的问题出现了 - 但首先看看我的代码:

问题

  1. 为什么josliber只使用四个不等式中的两个?
    • 因此,我也在代码中尝试了第二个约束替代方案

在此处输入图像描述

  1. 你能帮我解决我的问题吗?!
    • 我想我必须使用第二个约束替代方案,但这里的值solution_OF$getValue(x'ses)是如此之高,以至于像josliber提到的那样总结它们不会让我得到预期的结果x=2
    • 在这两种选择中,都有两个约束x+2*y <= 10x+y <= 6。由于我将 x 范围分成五个子部分,我必须转换它们吗?
  2. 是否也可以拆分多个变量?参考josliber回答