cuáles serían buenos métodos (y / o paquetes de software) para intentar resolver un problema minimizando una función cuadrática , st 0 ≤ x i ≤ 1 , y hay más restricciones, algunas de las cuales son no lineales (y no diferenciables), por ejemplo, ∑ i x i 1 x i > a < b ?
Estoy pensando en . FWIW, Matlab aparentemente está utilizando un "método de conjunto activo, similar al de Gill et al.", Que tiene un rendimiento algo desigual.
Respuestas:
Si tiene restricciones no suaves, no ayuda que tenga un objetivo cuadrático convexo. Necesita un solucionador no liso restringido.
Consulte mi página web
http://www.mat.univie.ac.at/~neum/glopt/software_l.html#nonsm
para obtener el software adecuado.
fuente
Usted dice en el comentario que no puede hacer que funcione, ya que no es lo suficientemente cuadrático. No veo ninguna razón para eso. El problema se codifica fácilmente como un programa cuadrático de enteros mixtos.
Si entiendo la definición de su problema, desea restringir la suma de los valores más grandes que un umbral. Introduzca una variable binaria que indique si x es mayor que a, e introduzca otra variable z que debería ser igual a x cuando esto se mantenga, y cero en caso contrario, y use la suma de las nuevas variables.
Usando la caja de herramientas MATLAB YALMIP para interactuar con CPLEX (o Gurobi o cualquier otro solucionador MIQP), el problema se resuelve trivialmente en fracciones de segundo. Aquí, un ejemplo aleatorio, implementado utilizando un modelo derivado manualmente y un modelo que explota las capacidades de modelado de alto nivel en YALMIP
fuente