Мне нужно решить
Я думаю, что это квадратичная проблема, которая должна быть решена с помощью CVXOPT , но я не могу понять, как.
Мне нужно решить
Я думаю, что это квадратичная проблема, которая должна быть решена с помощью CVXOPT , но я не могу понять, как.
Ответы:
Я написал полный ответ (ниже строки), прежде чем обнаружил CVXPY , который (как и CVX для MATLAB) делает всю сложную работу за вас и имеет очень короткий пример, почти идентичный вашему здесь . Вам нужно только заменить соответствующую строку на
p = program(minimize(norm2(A*x-b)),[equals(sum(x),1),geq(x,0)])
Мой старый ответ, делать это сложнее с CVXOPT:
Следуя предложению Джеффа возвести в квадрат вашу целевую функцию,
Конечно, все термины являются скалярами, так что вы можете транспонировать третий и отбросить последний (так как он не зависит от и, следовательно, не изменится, какой дает вам минимум, хотя вам нужно будет добавить его обратно в после решения, чтобы получить правильное значение вашей цели), чтобы получить Это (включая ваши ограничения) имеет форму квадратичной программы, как указано в документация CVXOPT здесь , где также есть пример кода для решения такой проблемы.
Вместо того, чтобы решить проблему, решите
Эта проблема представляет собой дифференцируемую выпуклую нелинейную задачу оптимизации, которая может быть решена в CVXOPT, IPOPT или любом другом решении выпуклой оптимизации.