Necesito resolver
Yo creo que es un problema de segundo grado que debe ser solucionable con CVXOPT , pero no puedo encontrar la manera.
Necesito resolver
Yo creo que es un problema de segundo grado que debe ser solucionable con CVXOPT , pero no puedo encontrar la manera.
Respuestas:
Escribí una respuesta completa (debajo de la línea) antes de descubrir CVXPY , que (como CVX para MATLAB) hace todo lo difícil por usted y tiene un ejemplo muy breve casi idéntico al suyo aquí . Solo necesita reemplazar la línea relevante con
p = program(minimize(norm2(A*x-b)),[equals(sum(x),1),geq(x,0)])
Mi vieja respuesta, haciéndolo de la manera más difícil con CVXOPT:
Siguiendo la sugerencia de Geoff para cuadrar su función objetivo da
Por supuesto, todos los términos son escalares, por lo que puede transponer el tercero y soltar el último (ya que no depende de y, por lo tanto, no cambiará qué le da un mínimo, aunque deberá volver a agregarlo) después de resolver para obtener el valor correcto de su objetivo) para obtener Esto (incluidas sus restricciones) tiene la forma de un programa cuadrático, como se indica en la documentación de CVXOPT aquí , donde también hay un código de ejemplo para resolver dicho problema.
En lugar del problema que resolvió, resuelva
Este problema es un problema de optimización diferenciable, convexo y no lineal que se puede resolver en CVXOPT, IPOPT o cualquier otro solucionador de optimización convexo.