Marco de optimización de Java

Estoy buscando un marco Java, que sea adecuado para tareas de optimización. En el mejor de los casos, se realiza con Java 8. Sé que hay mejores lenguajes para tareas de optimización, pero actualmente estoy restringido a Java.

Debería hacer:

public class OptimizationProblem {

    // Given: Any function, which returns a value for a combination of A and B.
    public int value (A a, B b);
    List<A> as;
    List<B> bs;

    // This function should be part of the framework
    // It should map each A to one B (if both are of same length), so that the value
    // in sum is max (not an easy task, at all).
    Map<A, B> map = findBestCombinations (as, bs, OptimizationProblem::value);

Espero que el marco maneje los problemas de minimización y maximización. No tiene que encontrar la solución "óptima" a problemas dados. Si no es posible encontrar la solución en un tiempo adecuado, se permite devolver una solución "buena".

"otros métodos útiles como ese" es un poco genérico. ¿Podría editar su pregunta e indicar explícitamente sus requisitos (imprescindibles/deseables)? Lo más probable es que mejore significativamente sus posibilidades de obtener buenas respuestas, ya que a menudo "las palabras clave desencadenan cosas" en la mente de los lectores :)

Respuestas (1)

Como estoy buscando una biblioteca Java para programación cuadrática ( Resolver un pequeño problema de programación cuadrática con restricciones de desigualdad en Java o C/C++ ), me he encontrado con algunos elementos. Creo que esta pregunta general sobre los paquetes de optimización para Java será útil para otros, así que aquí están mis notas sobre algunos elementos que miré. Estos deben entenderse como relativos únicamente a la versión del software en el momento actual (septiembre de 2018). Esta lista no es exhaustiva.