qclp

语法

qclp(r, V, k, [A], [b], [Aeq], [beq], [x0], [c], [eps], [alpha])

参数

VAAeq 是列数相同的矩阵。

rbbeq 是向量。

k 是一个正标量。

New in version 1.30.22: 新增参数

x0 向量绝对值不等式约束的系数向量。

c 一个非负数字,表示绝对值不等式约束的右侧常量系数。

eps 正浮点数,表示求解的精度。默认值为1e-6,范围为 [1e-4, 1e-9]。通过减小该参数值以获得更高精度的解。如果该参数设置值超过规定范围,则会自动调整为默认值。

alpha 正浮点数,表示松弛参数。默认值为1.5,范围为 (0, 2)。通过增加 alpha 的值来加快求解速度。如果该参数设置值超过规定范围,则会自动调整为默认值。

详情

用一个线性目标函数和一组包含二次约束的约束条件求解下列优化问题。

\(\min\limits_xr^T * x\text{ such that}\begin{cases}x^T * V * x\le k\\A * x \le b\\Aeq * x=beq\\norm(x-x_0) \le c\end{cases}\)

结果是一个包含2个元素的元组。第一个元素是目标函数的最小值。第二个元素是目标函数的最小时的x值。

例子

根据每只股票的预期收益与收益率协方差矩阵,以及如下限制 (1) 投资组合的收益率波动率不超过11% (2) 每只股票的权重在10%到50%之间,以决定最优投资组合。

$ r = 0.18 0.25 0.36
$ V= 0.0225 -0.003 -0.01125 -0.003 0.04 0.025 -0.01125 0.025 0.0625 $ 3:3
$ k = pow(0.11, 2)
$ A = (eye(3) join (-1*eye(3))).transpose()
$ b = 0.5 0.5 0.5 -0.1 -0.1 -0.1
$ Aeq = (1 1 1)$1:3
$ beq = [1]

$ x = qclp(-r, V, k, A, b, Aeq, beq);

$ x[1];
[0.5,0.380842,0.119158]

在上例的基础上,添加绝对值约束:| x1 - 0.35| + | x2 - 0.35 | + | x3 - 0.35 | ≤ 0.3:

$ x0 = [0.35, 0.35, 0.35];
$ c = 0.3;
$ y = qclp(-r, V, k, A, b, Aeq, beq, x0, c);
$ y[1]
[0.475000051441985,0.349999992722491,0.17499995583436]