Modelado matemático en java utilizando Gurobi

Resumen

De forma muy breve, pero práctica se exponen en este documento como modelar los problemas de programación matemática desde la programación en Java  para utilizar Gurobi como Solver. Básicamente consiste en llenar el Tableau Simplex que recibe el Solver GUROBI. Para crear el tableau hay que tener claro los coeficientes de la función objetivo y cada uno de los coeficientes tecnológicos que acompañan las restricciones. Es importante que cuando se declaran todas las variables de acuerdo a su rango y tipo (int, >=0, ect.) siempre se declara el coeficiente de la función de costes de todas las variables; significa esto que cada vez que se desee declarar una variable se debe colocar su coeficiente de costes así sea "0". La declaración de una variable libre ("free") no está por defecto y este debe realizarse con un rango desde -infinito a el infinito. Después de creadas las variables se actualiza el modelo, es importante, de lo contrario no funciona. Las restricciones se declaran por trozos que se van agregando uno a uno, a un objeto que se llaman expresiones. Yo considero que la forma más práctica es crear una para el lado izquierdo y otra para el lado derecho de cada ecuación. Después de creadas estas expresiones se crea la restricción añadiendo obviamente el lado izquierdo, el (>=,= , <=), el lado derecho, y el nombre de la ecuación. El nombre de la ecuación es muy importante aunque no afecte la resolución; lo digo porque cuando pasas el modelo a CPLEX ("*.lp"), este nombre es el que se escribe(lo he probado) dentro del modelo *.lp. Así que escribirlas como en AMPL cuando se declare. Finalizado lo anterior se procede a seleccionar el método de resolución que es opcional, si un Simplex-Dual, etc. Una vez seleccionado o no el método de resolución (opcional, repito), se da la instrucción de resolver el problema (obligatorio).

Descargas

La descarga de datos todavía no está disponible.
Publicado
2021-02-12
Cómo citar
Coronado Hernández, J. (2021). Modelado matemático en java utilizando Gurobi. Boletín De Innovación, Logística Y Operaciones, 2(2). https://doi.org/10.17981/bilo.2.2.2020.07
Sección
Artículos