问题标签 [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.
python - CVXOPT L1 范数逼近 - ldB 的非法值
按照此处给出的 L1 范数近似示例,使用以下代码,
一切正常。
但是,当我将m更改为小于n时,
我收到以下错误:
我可以看到该错误是由 L1.py:180 中的以下语句引起的:
并进一步深入到 lapack.c:3651,以下语句会引发错误:
但是,当我阅读有关cvxopt.lapack.gels 的 CVXOPT 的 LAPACK 接口的文档时,它特别指出,当m小于n时,它解决了最小范数问题。
谁能解释为什么m小于n不起作用?
python - 具有 N 个变量的 CVXPY 约束
试图找出一种方法来编写一个带有 N 变量的约束,以在适合此的CVXPY上使用:
所有变量对象都被实例化并存储在一个列表中。
python - 在具有复系数的python中使用cvxopt进行凸优化
我正在尝试解决一个凸优化问题,其中系数可能很复杂。cvxopt QP 中的本机实现似乎不支持这一点。我总是收到以下错误:
TypeError: 'q' 必须是一列的 'd' 矩阵
这是示例代码。
有没有办法解决这个问题?谢谢
python - 解决 SVM 对偶时出现 CVXPY 错误“不能将两个非常数相乘”
我正在尝试用 CVXPY 解决 SVM 对偶问题。
下面是 Python 代码:
我收到错误:
似乎 cvxpy 不能支持内核矩阵的二次形式优化。但是,我看到有人在 Matlab 中使用 cvx 解决了本演示文稿第 13(35) 页上的相同问题:
http://users.isy.liu.se/en/rt/schon/CourseMLlund/le5.pdf
我对 cvx 很陌生。请帮我纠正这个。谢谢。
matlab - 在 MATLAB 中使用可变数量的输入函数进行优化
我从以下简单的优化问题开始:
F=@(L) max(-[log(L(1)/(L(1)+1)) log(L(2)/(L(2)+1))+log(1-L(1)) log(L(3)/(L(3)+1))+log(1-L(1))+log(1-L(2))]);
[L,fval]=fmincon(F,[0.5 0.5 0.5],[],[],[],[],[0;0;0],[1;1;1])
这给出了答案:L = 0.2554 0.3759 0.7785
和fval = 1.5925
但是,我需要可变数量的输入函数Obj
in max(-[Obj])
。在上面的例子中,我有三个功能,即
Obj=log(L(1)/(L(1)+1)) log(L(2)/(L(2)+1))+log(1-L(1)) log(L(3)/(L(3)+1))+log(1-L(1))+log(1-L(2))
我使用以下代码生成Obj
其中函数数量取决于M
.
这与上面的示例完全相同Obj
,但是当我将其传递Obj
给以下优化函数时,它不支持。
有人可以帮我解决这个问题吗?因为M
可以变化超过20个。很难手动输入所有功能。
r - 最小化受范数不等式约束的二次函数
我正在尝试解决以下不等式约束:
给定 N 个股票的时间序列数据,我试图构建一个投资组合权重向量以最小化收益的方差。
目标函数:
其中w
是权重向量,\sum
是协方差矩阵,e_{n}^{T}
是 1 的向量,C
是常数。其中第二个约束 ( \left \| w \right \|
) 是不等式约束(权重的 2 范数)。
我尝试使用该nloptr()
函数,但它给了我一个错误:提供的算法不正确。我不确定如何选择正确的算法,也不确定这是否是解决此不等式约束的正确方法。
只要能解决这个限制,我也愿意使用其他功能。
这是我尝试的解决方案:
java - 凸包优化 Java
我最近阅读了PEG Wiki上关于凸包技巧的文章。令人惊讶的是,在文章的最后,我读到如果我们将这些行存储在 std::set 中,我们可以实现该技巧的完全动态变体(意味着没有适用条件)。虽然我已经理解了提到的方法,但是当我尝试实现它时总是失败。
换句话说,有一个大小为 n 的数组 A,其中每个数组元素包含两个正整数 ai 和 bi。
有 Q 查询,其中每个查询可以是以下两种类型之一:
1) 给定一个正整数 x,找出max (aix + bi)
从 1 到 n 的所有 i
2) 更新一些 i 的 ai 和 bi 的值。
要更新的值将按非递减顺序,即ai1>=ai2 and bi1>=bi2 for Q >= i1 > i2 >= 1
.
可以通过删除前一行并添加新行来执行更新部分。我正在寻找更新和查询部分以了解 Java 中的摊销(log n)复杂性
apache-spark - Spark中具有任意约束的线性程序?
我有一个问题可以表述为具有线性目标函数和线性等式和不等式约束的凸优化问题,但具有大量参数。我可以在合理的时间内在一台机器上解决这个问题,但需要几十万个参数,但不是我需要的几百万。
我看到 Aaron Staple/Databricks 已经在 Spark 中实现了 Matlab TFOCS 库的某些部分,但我看到的唯一示例解决了具有规范约束的无约束凸优化或线性程序(Ax = b,x >= 0,对于标量矩阵 A,标量向量 b,x 是要优化的参数向量)。但我需要解决具有任意线性等式和线性不等式约束的线性程序。
有人知道我缺少的 Spark TFOCS 中是否有可以解决我的问题的功能吗?使用可用的 Spark 工具解决此问题的其他方法?