python中的cvxopt.solvers.qp导致内核死掉

时间:2017-01-26 18:10:50

标签: python linux anaconda cvxopt

当我尝试使用python中cvxopt包中的solvers.qp解决二次规划问题时,它会在几秒后杀死我的内核。

该软件包的文档位于http://cvxopt.org/userguide/coneprog.html#cvxopt.solvers.qp。如果我从该页面运行示例代码:

from math import sqrt
from cvxopt import matrix
from cvxopt.solvers import qp

# Problem data.
n = 4
S = matrix([[ 4e-2,  6e-3, -4e-3,    0.0 ],
        [ 6e-3,  1e-2,  0.0,     0.0 ],
        [-4e-3,  0.0,   2.5e-3,  0.0 ],
        [ 0.0,   0.0,   0.0,     0.0 ]])
pbar = matrix([.12, .10, .07, .03])
G = matrix(0.0, (n,n))
G[::n+1] = -1.0 
h = matrix(0.0, (n,1))
A = matrix(1.0, (1,n))
b = matrix(1.0)

# Compute trade-off.
N = 100
mus = [ 10**(5.0*t/N-1.0) for t in range(N) ]

portfolios = [ qp(mu*S, -pbar, G, h, A, b)['x'] for mu in mus ]

大约2秒钟后,我从python收到以下回复:

  

内核似乎意外死亡。使用'重启内核'继续使用此控制台。

     

内核似乎意外死亡。使用'重启内核'继续使用此控制台。

     

内核似乎意外死亡。使用'重启内核'继续使用此控制台。

     

...

我也不明白这个[' x']选项是什么。但即使我离开它,它也会给我带来意想不到的'内核的死亡。我也试过qp问题肯定有解决方案。像没有约束或非负性约束的x ^ 2 + y ^ 2 ...我做什么,它杀死了我的内核。可能是什么问题?

也许重要的是,

  • 我使用的是Ubuntu 16
  • 我使用的是Python 3.5
  • 我使用cvxopt 1.1.9
  • 包cvxopt也使用C文件。

1 个答案:

答案 0 :(得分:0)

您可以从终端运行脚本以解决此错误。

当我收到此错误时,原因是Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so。 我使用conda这是我的解决方案:

conda config --add channels conda-forge
conda install -f cvxopt