问题标签 [cvx]
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.
matlab - 如何在 CVX 中平方一个范数?
在 Matlab 的 CVX 包中,我想最小化像 $|Ax-b|_2^2$ 这样的函数。表示 2 范数的平方。我如何在 CVX 中编码?我都试过了:
和
但两者都抛出了错误。是否有我应该使用的内置函数?
(注意,实际上我正在尝试最小化该范数平方加上另一个范数的总和,这minimize (norm(A*x-b,2)^2 + norm(x,1));
就是为什么我试图指定范数平方,而不仅仅是满足于找到未平方范数的最小值。)
python - 将半定程序从 CVX 转换为 CVXPY
我想将以下 SDP(仅验证约束的可行性)从 CVX(MATLAB)转换为 CVXPY(Python):
下面是我的 Python 代码,
运行程序时有几个错误。1.当我打印Mblk时,它显示
回溯(最近一次通话最后):
文件“/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.py”,第 2820 行,在 run_code
Out[1]: exec code_obj in self.user_global_ns, self.user_ns
文件“”,第 1 行,在
mblk
文件“/usr/lib/python2.7/dist-packages/IPython/core/displayhook.py”,第 247 行,调用中
format_dict, md_dict = self.compute_format_data(结果)
文件“/usr/lib/python2.7/dist-packages/IPython/core/displayhook.py”,第 157 行,compute_format_data
返回 self.shell.display_formatter.format(结果)
文件“/usr/lib/python2.7/dist-packages/IPython/core/formatters.py”,第 152 行,格式
数据 = 格式化程序(obj)
文件“/usr/lib/python2.7/dist-packages/IPython/core/formatters.py”,第 481 行,调用中
打印机.漂亮(obj)
文件“/usr/lib/python2.7/dist-packages/IPython/lib/pretty.py”,第 362 行,漂亮
return _default_pprint(obj, self, cycle)
_default_pprint 中的文件“/usr/lib/python2.7/dist-packages/IPython/lib/pretty.py”,第 482 行
p.text(repr(obj))
array_repr 中的文件“/usr/lib/python2.7/dist-packages/numpy/core/numeric.py”,第 1553 行
', ', “大批(”)
文件“/usr/lib/python2.7/dist-packages/numpy/core/arrayprint.py”,第 454 行,在 array2string 中
分隔符,前缀,格式化程序=格式化程序)
_array2string 中的文件“/usr/lib/python2.7/dist-packages/numpy/core/arrayprint.py”,第 256 行
'int':整数格式(数据),
文件“/usr/lib/python2.7/dist-packages/numpy/core/arrayprint.py”,第 641 行,在init
max_str_len = max(len(str(maximum.reduce(data))),
文件“/usr/local/lib/python2.7/dist-packages/cvxpy/constraints/leq_constraint.py”,第 67 行,非零
引发异常(“无法评估约束的真值。”)
例外:无法评估约束的真值。
当我踏上这条线时,
表明
Traceback(最近一次通话最后一次):文件
“.../sdp.py”,第 22 行,在
ValueError:使用序列设置数组元素。
如何解决这些问题?
matlab - 关于 CVX 优化的错误
我正在尝试使用 cvx 模型来解决优化问题;这是我的代码:
R 是可变的,其他的已经设置好了。错误消息是:
未定义的函数或变量“op”。
cvx/power>power_p 中的错误(第 104 行)cvx_dcp_error(errs, op);
cvx_binary_op 中的错误(第 107 行)z = p.funcs{vu(1)}(vec(x), vec(y), varargin{:});
cvx/power 中的错误(第 31 行)z = cvx_binary_op(BP, x, y);
cvx/mpower 错误(第 11 行) z = power( x, y, '^' );
test_1 中的错误(第 75 行) f(eth)=3*(sum(u))^3;
那么,谁能说出我的代码中有什么问题?
matlab - 如何将 MATLAB 符号/符号传递给 cvx sdp 求解器?
我有一个 3D 矩阵At
、n x n x nvar
和nvar
变量y1...y25
。我很容易将变量输入 cvx:
但是,最后一行的相等性给了我这个错误:
我试图用几种不同的方式来建立这种平等:
使用我最初创建的相同for
循环At
(使用Cfun
双精度矩阵):
这给出了这个错误:
我真的没想到它会起作用,但认为它值得一试。
我也尝试使用bsxfun
在 cvx 中创建矩阵,但我不相信 bsxfun 能够处理符号。repmat
是我现在正在研究的“bsxfun”(有人告诉我)的替代品。
The reason I am trying to do the problem in this way is to create a routine that can use cvx to solve an optimal power flow for any number/combination of buses, without have to create variable individually each time.
matlab - 使用 CVX 的简单线性约束 MatLab 的高效二次优化
(对不起格式化,我会尽力的)我想解决的:
其中A
是一个NxH
逻辑矩阵(大约一半是零,一半是一),b
是一个Hx1
常数向量,其中每个条目都是相同的(例如,b = (0.1,0.1,0.1,...)
. 是概率p
的常数向量,所以所有条目都在 中。最优也是一个分布,所以所有其条目的个数应该在 中。请注意,在实践中,例如非常大,例如相对较小,例如。Nx1
[0,1]
x
[0,1]
H
2 million
N
150
我目前正在使用 CVX 来解决这个问题。明确地说,我的代码是:
这会产生正确的结果。但是,当它很大时,它相当慢H
。鉴于我的优化程序的结构(逻辑 A、恒定约束、如果没有约束,则具有解析解的问题等),有没有更好的方法来解决这个问题?这里推荐CVX吗?
谢谢您的帮助。
matlab - l1 魔术错误 - matlab
我正在尝试使用比信号维度更少的观察来重建图像(压缩感知)。我正在尝试运行以下代码 -
但是在运行代码时出现以下错误。
当感知矩阵是 dct 矩阵而不是 dft 矩阵时,上面的代码恢复了解决方案。有人可以指出错误所在吗?这是 l1-magic 固有的问题吗?使用不同的求解器对我有用吗?
注意:l1qc_logbarrier 是库 l1 魔术中的一个函数。http://users.ece.gatech.edu/justin/l1magic/index.html
l1qc_logbarrier 解决 -
matlab - 使用 MATLAB 和 CVX 进行 Frobenius 范数最小化
我有以下形式的 SVM 问题:
其中Q
是方阵,x_i
是训练样例, 是训练样例l_i
的标签。
有没有办法使用现有的 MATLAB 优化工具使用内置优化例程或 CVX、libsvm 或其他优化包来解决这个问题?
matlab - 2D 融合 Lasso 与 Matlab CVX
我在这里写了一个二维融合套索代码。
奇怪的是,节目报道,
在 cvxprob(第 28 行)中 在 cvx_begin(第 41 行)使用 cvxprob/newcnstr 时出错(第 192 行)有纪律的凸编程错误:
无效约束:{convex} == {constant}== 中的错误(第 12 行) b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '==' );
在我删除abs()
约束后,程序可以运行,但这不是我期望的约束。
matlab - 在 Matlab 中并行运行 CVX
我正在并行运行具有不同参数的 CVX。串行运行时,我没有收到任何警告,但并行运行(使用 parfor),我得到以下信息:
我以前没有见过这个,我不知道如何解决它。任何帮助表示赞赏。
matlab - CVXGEN 程序的任意尺寸
我想解决MatLab
使用CVXGEN
. 我偏爱CVXGEN
over CVX
,因为CVXGEN
它要快得多。特别想解决
其中f(x)
是二次形式,并且X
是紧凑的、凸的,并且由线性函数定义。问题的大小因运行而异。我想尽可能地自动化这个过程。为了说明,一个 CVXGEN
代码示例是:
此代码输入于cvxgen.com
。然后,在这个网站上,我可以生成给我一个唯一编号的 C 代码。然后我可以使用唯一编号将其编译成 MEX 代码。csolve
最后,我可以通过运行以下代码从 MatLab调用此 MEX 代码 ( )
但是,此过程需要针对n
我要运行的问题的每个维度,我需要转到cvxgen.com
、更改n
、编译代码,然后运行我的MatLab
代码。是否可以让n
输入作为参数?这样,我只需要编译一次代码,然后在我的MatLab
代码集中params.n = n
和params.Q = eye(n,n)
,然后调用[vars, status] = csolve(params);
.