Pregunta

¿Alguien sabe de una biblioteca de este tipo que realiza optimización matemática (programación lineal, optimización convexa o tipos de problemas más generales)? Estoy buscando algo como MATLAB, pero con la capacidad de manejar problemas más grandes. ¿Tengo que escribir mis propias implementaciones o comprar uno de esos productos comerciales (CPLEX y similares)?

¿Fue útil?

Solución

Una buena respuesta depende de lo que quiere decir con " convexo " y " más general " Si está tratando de resolver problemas de optimización grandes o desafiantes de optimización lineal o convexa-cuadrática (especialmente con un componente discreto para ellos), entonces es difícil superar a los principales solucionadores comerciales, gurobi , cplex y Dash a menos que el dinero sea un gran problema para usted. Todos tienen interfaces JNI limpias y están disponibles en la mayoría de las plataformas principales.

El proyecto coin-or tiene varios optimizadores y un proyecto para la interfaz JNI. Es una licencia totalmente gratuita ( EPL ), pero requerirá más trabajo para configurarlo y probablemente no te dará el mismo rendimiento.

Otros consejos

Hay una herramienta de optimización lineal llamada lpsolve . Está escrito en C (creo) pero viene con un envoltorio Java / JNI (la API no es muy OO pero hace el trabajo). Es bastante fácil de usar y lo he ejecutado de forma bastante feliz y estable en un sistema en vivo durante el último año.

Puede probar JOptimizer , código abierto y adecuado para problemas generales de optimización convexos (programación lineal, programación cuadrática, qcqp , programación de cono, programación semidefinida, ect

OptaPlanner (Java, código abierto, ASL) puede manejar grandes problemas y no tiene limitaciones de tipo de restricción (como lineal contra convexo).

Es posible que desee ver JScience , se ve bastante completo. (Estructuras matemáticas, resolución de álgebra lineal, etc.)

IPOPT tiene una interfaz para Java . También puede adaptar el lenguaje de modelado APMonitor para Java. Yo desarrollo esta plataforma, así que me alegraré de trabajar con alguien si les gustaría crear una nueva interfaz para Java. Ya tiene una API de Python y la interfaz MATLAB e incluye solucionadores como IPOPT, APOPT , BPOPT y otros que pueden manejar sistemas a gran escala.

Busque en AMPL . La edición básica es gratuita, pero cuesta dinero para problemas más grandes. No pagas por el idioma; pagas por solucionadores También es posible cargar su código y ejecutarlo en sus servidores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top