问题标签 [convex-optimization]

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 回答
6890 浏览

matlab - FMINCON 的替代品

除了 fmincon 之外,还有没有更快更高效的求解器?我正在使用 fmincon 来解决一个特定的问题,并且我用完了中等大小的向量变量的内存。我也没有任何超级计算机或云计算选项可供我使用。我知道任何替代解决方案仍然会耗尽内存,但我只是想看看问题出在哪里。

PS我不想要一个会改变我处理实际问题的方式的解决方案。我知道凸优化是要走的路,而且我已经做了足够的工作来爬到这里。

PPS 我看到了关于开源替代品的另一个问题。这不是我要找的。如果有人遇到同样的问题并转向更好的解决方案,我正在寻找更有效的解决方案。

0 投票
2 回答
75 浏览

optimization - 函数的凸性及其优化

函数公式在 x 和 y 中是共同凸的吗?我想要的是估计参数 x 和 y,以最小化最小二乘。如果函数在 x 和 y 上都是凸的,那么从技术上讲,我可以通过在 2 个步骤之间迭代来找到 x 和 y:在给定 y 的情况下找到最佳 x,在给定 x 的情况下找到最佳 y。

显然我知道我可能在多个层面上都错了。函数看起来是非凸的,因为有多个鞍点,即。所有 x=0 和 y=0。但是如果我有一个 y>0 的约束,这个问题就不再存在了。此外,即使函数是凸的,我也不确定迭代算法是否有效并收敛。

0 投票
1 回答
504 浏览

matlab - Matlab的凸优化

我想知道如何用matlab解决以下最小化问题:

A是半正定矩阵。(所有特征值都大于或等于 0) F=F(x_1,...,x_n,y_1,y_2) = (F_1,...,F_2n) 是一个线性函数。

我想找到 (x_1,...,x_n,y_1,y_2) 以便:

F*A*F' 是最小值。变量没有限制,但请注意,它们的长度远小于向量长度。

我正在尝试缩小统计距离。我在网上找不到要使用的功能。

提前致谢。

0 投票
2 回答
2147 浏览

c++ - 犰狳 join_cols() 编译错误

我正在尝试用犰狳做一些简单的凸编程,但我可能会迷失在语法(或安装)中。

我有以下内容:

它给了我编译错误:

我在其他地方也遇到了类似的错误。我也在尝试将 sp_mat(或 SpMat)与 inv() 或 solve() 一起使用,而无需骰子。事实上,除了元素访问和基本算术之外,似乎没有任何东西可以工作。我有安装问题还是我的语法错误?

我在 Ubuntu 12.04 上运行它。

编辑:

基于鲁道夫的回答,我似乎忽略了一些给出的错误!

似乎以下工作:

但这不会:

原因是 Armadillo 进行了内部优化,可以在预编译步骤中重新排列表达式,但正因为如此,并且 join_cols() 没有足够的原型来处理所有的胶水语句(标量 mult,向量加法)等)它在犰狳可以预处理之前就失败了。至少,这是我过于简化的观点。

0 投票
2 回答
1285 浏览

matlab - 使用matlab cvx进行最小切割

我正在尝试使用用户图上的二进制最小切割来检测社区。为此,我尝试使用本文所示的 Fiedler 方法的变。这就是他们将其正式化的方式:

在此处输入图像描述

现在,我正在尝试使用 matlab 中的 CVX 包来执行此操作。这是我的代码:

但它向我显示以下错误:

这里 A1 是一个矩阵,定义如下:

同样 A2 = A1。

并且 pi1 是一个矩阵,它是一个对角矩阵,其值等于该特定行中 A1 的所有值的总和。这样做我得到

类似地,pi1 = pi2。

并且 tou1 = pi1 - A1,并且 tou2 = pi2 - A2。

有人可以指出我到底做错了什么。这会有很大帮助。提前致谢 !

0 投票
1 回答
4823 浏览

python - python/cvxopt 中的凸优化

我正在尝试使用 python 中的 cvxopt 库对线性目标函数和凸约束进行约束优化(最大化)问题。目前,约束是二次的,但我想最终用一个通用的凸多项式来做。问题基本上是:最大化 c_1*x_1 + c_2*x_2 + c_3*x_3 受约束 k_1*x_1^(alpha+1) + k_2*x_2^(alpha+1) + k_3*x_3^(alpha+1) <= 预算,并且 x_i 非负数。我的代码:

我的输出是:

关于出了什么问题的任何提示?

0 投票
1 回答
1968 浏览

matlab - YALMIP 返回一个程序不可行时不可行

我在尝试使用YALMIP时遇到问题;我怀疑我在做一些愚蠢的事情,如果有人指出它是什么,我将不胜感激。

我正在尝试解决一些 SDP。当我没有定义目标时,YALMIP 会返回一个解决方案(暗示该问题是可行的)。然而,当我给它附加一个目标时,YALMIP 会返回这个问题是不可行的,这让我有点困惑。

这是我可以在其中发生上述情况的最简单 SDP 的代码。声明变量并设置约束如下:

现在,如果我只是要求 YALMIP 找到一个可行的解决方案

它返回

和一些可行的 M 和 y (我已经检查过它们确实是)。但是,如果我将目标“最小化 y(3)”(或者实际上是 y 条目的任何线性组合)附加到

它返回问题是不可行的:

并且 y 和 M 充满了“NaN”标记。

提前谢谢了。

0 投票
0 回答
366 浏览

matlab - 允许函数句柄的 Matlab 二阶锥求解器

我需要在 Matlab 中解决以下 SOCP:

argmin_x ||R*x||_2 st s^H * x = 1 和 ||x||_2 < d,

其中 x 是 Nx1 向量,R 是 MxN 矩阵。

CVX 可以解决此类问题。但是,CVX 要求我提供 R 并且不允许我改为提供将返回 R*x 的函数句柄。这对我来说是个问题,因为一旦 R 变大,直接计算 R*x 需要很长时间。存在一种计算 R*x 的有效算法,我想利用它,所以我希望有另一个我可以使用的 SOCP 求解器。

0 投票
1 回答
76 浏览

python - 定义变量:程序逻辑流的问题

我目前正在尝试实现以下算法来查找最大边距决策边界(用于 SVM):

我们关心的唯一变量是 w*,它应该是一个矩阵(来自 CVXOPT 包,而不是 numpy 数组——尽管 CVXOPT 矩阵可以从 numpy 数组创建)。当我检查是否定义了 w* 时,主要问题发生了。

如果我在第 4 行将它初始化为 None,那么它对于第 9 行的“w* is undefined”比较工作正常,但第二个比较“|w| < |w*|”,它比较 w 和 w 的范数*, 失败,因为您不能只在 None 变量上运行 np.linalg.norm() 。

如果我将 w* 初始化为某个垃圾矩阵(例如 [40,40])并记住它作为我未定义的占位符值,在我需要检查 w* 是否未定义的行下替换该垃圾矩阵,那么我也运行遇到问题——CVXOPT 不允许直接比较矩阵来查看它们是否相等。我可以循环浏览并比较每个元素,但这会严重影响性能(尤其是因为我可能将它用于大型数据集)。

这是我的错误代码的要点:http: //tinyurl.com/pr5j44w

请注意,wopt 是有问题的变量 w*。

0 投票
1 回答
2167 浏览

r - 在 linprog 包中设置的 R 线性编程使用solveLP忽略约束(小于或等于)

我在 linprog R 包中使用 solveLP 来解决一个简单的线性规划问题:

它具有双重等价物:

如果我以原始形式陈述问题,我会得到正确的结果 (5,2,0,0)。但是当以对偶形式陈述问题时,前两个约束就被忽略了。我得到的结果 (0,0) 明显违反(2*y1+y2 <= -1 和 y1+2*y2 <= -1),我是否缺少额外的设置或参数?请看看下面的代码,让我知道你的想法:

在正空间中,对偶问题确实给出了正确答案(1/3,1/3):