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