Это может быть очень глупый вопрос, но я боролся с ним и не мог найти его в документации.преобразование вектора numpy в cvxopt
Я пытаюсь выполнить квадратичное программирование с помощью description given here. documentation here охватывает только преобразование 2-мерных массивов numpy в массивы cvxopt, а не одномерные массивы numpy.
Я попытался преобразовать q
из NumPy в cvxopt следующими способами:
import cvxopt as cvx
cvx_q = cvx.matrix(q) # didn't work
cvx_q = cvx.matrix(q, (n, 1)) # didn't work
cvx_q = cvx.matrix(np.array([q])) # didn't work
cvx_q = cvx.matrix(np.array([q]), (1, n)) # didn't work
cvx_q = cvx.matrix(np.array([q]), (n, 1)) # didn't work
Во всех случаях я получаю ответ TypeError: buffer format not supported
.
Однако, матрица numpy, похоже, работает нормально, например.
cvx_p = cvx.matrix(p) # works fine, p is a n x n numpy matrix
Если я пытаюсь запустить оптимизацию без преобразования Numpy вектора cvxopt формат, как это:
cvxs.qp(cvx_p, cvx_q, cvx_g, cvx_h, cvx_a, cvx_b)
Я получаю сообщение об ошибке: TypeError 'q' must be a 'd' matrix with one column
.
Что может быть правильным способом преобразования вектора numpy в матрицу cvxopt с одним столбцом?
Связанный: https://stackoverflow.com/questions/12551009/python3-conversion-between-cvxopt-matrix-and-numpy-array/45933678#45933678 –