Предоставленные QP решатель CVXOPT решает задачи вида (см http://cvxopt.org/userguide/coneprog.html#quadratic-programming):CVXOPT интерфейс квадратичного программирования
Minimize
(1/2)*x.t*P*x + q.T*x
Subject to
G*x <= h
A*x = b
Это прекрасно работает, но это становится немного неловко, когда хочет решить проблему ограничение неравенства с двух сторон:
Minimize
(1/2)*x.t*P*x + q.T*x
Subject to
G1*x <= h1
G2*x >= h2
A*x = b
я могу переопределить вторую проблему, как и первый, за счет удвоения числа измерений и требующих new_x
быть old_x
уложены поверх себя:
new_x = [old_x]
[old_x]
Я думаю, что могу обеспечить выполнение вышеуказанного условия, найдя подходящую форму для A
. Я могу затем кодировать оба h1
и h2
неравенства в new_G * new_x <= new_h
с установкой new_h
быть h1
уложены на h2
и new_G
быть диагональная матрица с последовательными n
1
с последующим n
последовательных -1
с по диагонали.
В любом случае, это очень неуклюже, это удваивает размерность моей проблемы, и это может даже не работать.
Есть ли лучший способ выразить вторую проблему в CVXOPT?