El paquete org.apache.commons.math3.optim.linear
en Apache Commons Math Library permite la optimización lineal , pero los valores devueltos son el doble. ¿Hay alguna forma de realizar la programación lineal entera usando esta biblioteca? Intenté buscar en Google, pero parece que no hay ninguna mención de ILP en ninguna parte.
Alternativamente, ¿hay alguna otra biblioteca de Java que pueda hacer ILP? tenga en cuenta que necesito ejecutar esto en Android, así que SCPSolver, GLPK, Or-tools. etc. no son posibles.
Gracias por adelantado.
Como esta pregunta y la 'Programación lineal en Android' en general es un tema poco discutido, pensé que publicaría mis hallazgos aquí para cualquiera que busque en el futuro.
Por cierto, terminé usando un puerto de Ojalgo, que se muestra a continuación.
Estos son los LP Libs que encontré que se pueden importar fácilmente a un proyecto de Android:
Quizás la biblioteca mejor mantenida, esta admite la optimización lineal pero no tiene LP "Integer" .
Las siguientes dos bibliotecas admiten Integer LP y/o Mixed Integer LP.
Aunque la última versión de Choco (4.0) se basa en Java 8, existe una variante de Java 7 de la versión 3.3.3. Puedes encontrarlo aquí . Esto se importa a Android Studio sin ningún problema.
Otro problema con el que te puedes encontrar es que, aunque hay guías y tutoriales en su sitio web para la versión 4, no podrás encontrar ninguna guía para Choco 3 excepto los Javadocs. Pero, afortunadamente, alguien había hecho un PDF de las guías más antiguas que puede obtener buscando en Google "Manual de usuario de Choco3" .
También tenga en cuenta que Choco tiene una licencia Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . Entonces, si desea utilizar LP en un proyecto comercial, considere la siguiente opción.
Ojalgo es otra gran biblioteca que tiene una licencia MIT y es compatible con Java 7. Pero como descubrí, usa un par de llamadas de Java que no están disponibles en Android.
Afortunadamente, un MVP ha portado la biblioteca para que funcione en Android: KIC/ojAlgoAndroid
Este puerto se ejecutó sin problemas. He bifurcado y creado un lanzamiento en Jitpack: shahimclt/ojAlgoAndroid .
Solo para arreglar la respuesta de ShahiM:
La licencia de Choco Solver es BSD-4, por lo que puede usarla en un proyecto comercial: https://github.com/chocoteam/choco-solver/blob/master/LICENSE
En cuanto a la documentación, bueno, si desea acceder a la guía de usuario de una versión anterior, simplemente debe buscar una versión anterior, por ejemplo, https://github.com/chocoteam/choco-solver/releases?after=choco-3.3. 2