SlideShare una empresa de Scribd logo
1 de 4
Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre
Facultad de Ciencias Físico Matemáticas Octubre 2010
1 de 4
GLPK + JAVA + WINDOWS (QUICK START GUIDE)
Con esta guía rápida pretendo ahorrar algo de tiempo a aquellos que sean nuevos a GLPK y que
quieran usarla desde JAVA ya sea para un proyecto académico (como es mi caso) o de cualquier
otra índole. Es una de las muchas maneras de echar a andar la librería, si hay otra solución más fácil
y/o sofisticada, por favorno duden en comentarla aquí.
¿QUÉ ES GLPK?
 GLPK = GNU Linear Programming Kit
 Paquete escrito en lenguaje C.
 Ideal para resolver problemas a gran escala de programación lineal (LP), programación
entera mixta (MIP)y otros tipos de problemas relacionados.
PRE-REQUISITOS
Para comenzar a utilizar esta guía se debe de cumplir conlos siguientes pre-requisitos:
 Tener un compilador de JAVA previamente instalado.
PASO 1 – BAJAR WINGLPK
WINGLPKes un paquete pre-compilado de la librería de GLPKpara Windows 32 y 64 bits. Hay que
bajar el paquete de http://sourceforge.net/projects/winglpk/
Una vez que lo bajaste, descomprime la carpeta del paquete y muévela a la ubicación que quieras en
tu sistema. Ejemplo:C:GLPKglpk-4.44
PASO 2 – CREAR PROGRAMA JAVA
Ya sea utilizando tu IDE favoritoo el blockde notas, crea tu primer programa de JAVA utilizando
GLPK. Puedes utilizar el siguiente ejemplo (tomado de la documentación del paquete de glpk:
C:...glpk-4.44docsglpk-java.pdf).
import org.gnu.glpk.GLPK;
import org.gnu.glpk.GLPKConstants;
import org.gnu.glpk.GlpkException;
import org.gnu.glpk.SWIGTYPE_p_double;
import org.gnu.glpk.SWIGTYPE_p_int;
import org.gnu.glpk.glp_prob;
import org.gnu.glpk.glp_smcp;
public class Main {
// Minimize z = (x1-x2) /2 + (1-(x1-x2)) = -.5 * x1 + .5 * x2 + 1
//
// subject to
// 0.0<= x1 - x2 <= 0.2
Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre
Facultad de Ciencias Físico Matemáticas Octubre 2010
2 de 4
// where,
// 0.0 <= x1 <= 0.5
// 0.0 <= x2 <= 0.5
public static void main(String[] args) {
glp_prob lp;
glp_smcp parm;
SWIGTYPE_p_int ind;
SWIGTYPE_p_double val;
int ret;
try {
// Create problem
lp = GLPK.glp_create_prob();
System.out.println("Problem created");
GLPK.glp_set_prob_name(lp, "myProblem");
// Define columns
GLPK.glp_add_cols(lp, 2);
GLPK.glp_set_col_name(lp, 1, "x1");
GLPK.glp_set_col_kind(lp, 1, GLPKConstants.GLP_CV);
GLPK.glp_set_col_bnds(lp, 1, GLPKConstants.GLP_DB, 0, .5);
GLPK.glp_set_col_name(lp, 2, "x2");
GLPK.glp_set_col_kind(lp, 2, GLPKConstants.GLP_CV);
GLPK.glp_set_col_bnds(lp, 2, GLPKConstants.GLP_DB, 0, .5);
// Create constraints
GLPK.glp_add_rows(lp, 1);
GLPK.glp_set_row_name(lp, 1, "c1");
GLPK.glp_set_row_bnds(lp, 1, GLPKConstants.GLP_DB, 0, 0.2);
ind = GLPK.new_intArray(3);
GLPK.intArray_setitem(ind, 1, 1);
GLPK.intArray_setitem(ind, 2, 2);
val = GLPK.new_doubleArray(3);
GLPK.doubleArray_setitem(val, 1, 1.);
GLPK.doubleArray_setitem(val, 2, -1.);
GLPK.glp_set_mat_row(lp, 1, 2, ind, val);
// Define objective
GLPK.glp_set_obj_name(lp, "z");
GLPK.glp_set_obj_dir(lp, GLPKConstants.GLP_MIN);
GLPK.glp_set_obj_coef(lp, 0, 1.);
GLPK.glp_set_obj_coef(lp, 1, -.5);
GLPK.glp_set_obj_coef(lp, 2, .5);
// Solve model
parm = new glp_smcp();
GLPK.glp_init_smcp(parm);
ret = GLPK.glp_simplex(lp, parm);
// Retrieve solution
if (ret == 0) {
write_lp_solution(lp);
} else {
System.out.println("The problem could not be solved");
}
// Free memory
GLPK.glp_delete_prob(lp);
} catch (GlpkException ex) {
Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre
Facultad de Ciencias Físico Matemáticas Octubre 2010
3 de 4
ex.printStackTrace();
}
}
/**
* write simplex solution
* @param lp problem
*/
static void write_lp_solution(glp_prob lp) {
int i;
int n;
String name;
double val;
name = GLPK.glp_get_obj_name(lp);
val = GLPK.glp_get_obj_val(lp);
System.out.print(name);
System.out.print(" = ");
System.out.println(val);
n = GLPK.glp_get_num_cols(lp);
for (i = 1; i <= n; i++) {
name = GLPK.glp_get_col_name(lp, i);
val = GLPK.glp_get_col_prim(lp, i);
System.out.print(name);
System.out.print(" = ");
System.out.println(val);
}
}
}
PASO 3 – COMPILAR PROGRAMA
Para compilar hay que hacer referencia al archivo glpk-java.jar que ya está incluido en
nuestro paquete de winglpk, se puede agregar como una librería desde el IDE que estén usando o se
puede especificar en el comando del compilador. En mi caso para compilar el programa corro el
siguiente comando:
javac -classpath C:GLPKglpk-4.44w64glpk-java.jar Main.java
PASO 4 – CORRER EL PROGRAMA
Para correr el programa se necesita hacer referencia nuevamente a la carpeta en donde se
encuentran los archivos pre-compilados de la librería GLPK, en mi caso esta carpeta es
C:GLPKglpk-4.44w64. Se pueden modificar las propiedades del proyecto en la IDE en la
que se esté trabajando o se puede especificar la ubicación en el comando de java. En mi caso para
correr el programa hago lo siguiente:
java -Djava.library.path=C:GLPKglpk-4.44w64 -classpath
C:GLPKglpk-4.44w64glpk-java.jar;. Main
Con –Djava.library.path= le especifico a la VM dónde buscar las librerías que va a cargar
dinámicamente (glpk_4_44.dll y glpk_4_44_java.dll).
Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre
Facultad de Ciencias Físico Matemáticas Octubre 2010
4 de 4
MÁS INFORMACIÓN
Consulta la documentación que viene en tu distribución de glpk. (Ejemplo C:...glpk-
4.44docsglpk-java.pdf)
Para más información, recomiendo visitar los siguientes sitios:
http://www.gnu.org/software/glpk/
http://winglpk.sourceforge.net/
http://www.ibm.com/developerworks/linux/library/l-glpk1/
http://codingtech.wordpress.com/2010/03/12/glpk-y-visual-studio-en-10-pasos/

Más contenido relacionado

La actualidad más candente

Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9Eudris Cabrera
 
Laboratorio de integración JFlex y CUP
Laboratorio de integración JFlex y CUPLaboratorio de integración JFlex y CUP
Laboratorio de integración JFlex y CUPEgdares Futch H.
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Jose Juan R. Zuñiga
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 

La actualidad más candente (9)

grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 
Jlex y cup en java
Jlex y cup en javaJlex y cup en java
Jlex y cup en java
 
Python gui-mvc-pyqt
Python gui-mvc-pyqtPython gui-mvc-pyqt
Python gui-mvc-pyqt
 
Laboratorio de integración JFlex y CUP
Laboratorio de integración JFlex y CUPLaboratorio de integración JFlex y CUP
Laboratorio de integración JFlex y CUP
 
J Flex Cup
J Flex CupJ Flex Cup
J Flex Cup
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 

Similar a GLPK Java guía

Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016Agencia INNN
 
Programacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILEProgramacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILEGiovanny Guillen
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Ortega sebastian 01gestorincidenciesocs
Ortega sebastian 01gestorincidenciesocsOrtega sebastian 01gestorincidenciesocs
Ortega sebastian 01gestorincidenciesocsSebastinOrtega12
 
Aprendizaje Supervisado con DauroLab
Aprendizaje Supervisado con DauroLabAprendizaje Supervisado con DauroLab
Aprendizaje Supervisado con DauroLabAlfonso E. Romero
 
Corcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocsCorcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocspablo2017
 
Yrvinmedina 01 gestorincidenciesocs
Yrvinmedina 01 gestorincidenciesocsYrvinmedina 01 gestorincidenciesocs
Yrvinmedina 01 gestorincidenciesocsyrvinmedina
 
Compilar y Debug en Android
Compilar y Debug en AndroidCompilar y Debug en Android
Compilar y Debug en AndroidBarcelona GTUG
 
201595533 maestrosdelweb-curso-django-1-pdf
201595533 maestrosdelweb-curso-django-1-pdf201595533 maestrosdelweb-curso-django-1-pdf
201595533 maestrosdelweb-curso-django-1-pdfGalvi Yanez
 
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP Finanzas
 
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableCursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableAlex Rayón Jerez
 
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalaciónIvan Dragogear
 
Manual ganttproject
Manual ganttprojectManual ganttproject
Manual ganttprojectreamari
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 

Similar a GLPK Java guía (20)

Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
 
Programacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILEProgramacion RPG: Conceptos ILE
Programacion RPG: Conceptos ILE
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Ortega sebastian 01gestorincidenciesocs
Ortega sebastian 01gestorincidenciesocsOrtega sebastian 01gestorincidenciesocs
Ortega sebastian 01gestorincidenciesocs
 
Aprendizaje Supervisado con DauroLab
Aprendizaje Supervisado con DauroLabAprendizaje Supervisado con DauroLab
Aprendizaje Supervisado con DauroLab
 
Corcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocsCorcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocs
 
7 curso
7 curso7 curso
7 curso
 
Yrvinmedina 01 gestorincidenciesocs
Yrvinmedina 01 gestorincidenciesocsYrvinmedina 01 gestorincidenciesocs
Yrvinmedina 01 gestorincidenciesocs
 
Morales javier
Morales javierMorales javier
Morales javier
 
Compilar y Debug en Android
Compilar y Debug en AndroidCompilar y Debug en Android
Compilar y Debug en Android
 
Clase8 (consola linux)
Clase8 (consola linux)Clase8 (consola linux)
Clase8 (consola linux)
 
201595533 maestrosdelweb-curso-django-1-pdf
201595533 maestrosdelweb-curso-django-1-pdf201595533 maestrosdelweb-curso-django-1-pdf
201595533 maestrosdelweb-curso-django-1-pdf
 
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
 
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableCursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
 
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
 
Workshop Técnicas Replicacion I
Workshop Técnicas Replicacion IWorkshop Técnicas Replicacion I
Workshop Técnicas Replicacion I
 
PLC Alternativo
PLC AlternativoPLC Alternativo
PLC Alternativo
 
Manual ganttproject
Manual ganttprojectManual ganttproject
Manual ganttproject
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 

Último (10)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 

GLPK Java guía

  • 1. Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre Facultad de Ciencias Físico Matemáticas Octubre 2010 1 de 4 GLPK + JAVA + WINDOWS (QUICK START GUIDE) Con esta guía rápida pretendo ahorrar algo de tiempo a aquellos que sean nuevos a GLPK y que quieran usarla desde JAVA ya sea para un proyecto académico (como es mi caso) o de cualquier otra índole. Es una de las muchas maneras de echar a andar la librería, si hay otra solución más fácil y/o sofisticada, por favorno duden en comentarla aquí. ¿QUÉ ES GLPK?  GLPK = GNU Linear Programming Kit  Paquete escrito en lenguaje C.  Ideal para resolver problemas a gran escala de programación lineal (LP), programación entera mixta (MIP)y otros tipos de problemas relacionados. PRE-REQUISITOS Para comenzar a utilizar esta guía se debe de cumplir conlos siguientes pre-requisitos:  Tener un compilador de JAVA previamente instalado. PASO 1 – BAJAR WINGLPK WINGLPKes un paquete pre-compilado de la librería de GLPKpara Windows 32 y 64 bits. Hay que bajar el paquete de http://sourceforge.net/projects/winglpk/ Una vez que lo bajaste, descomprime la carpeta del paquete y muévela a la ubicación que quieras en tu sistema. Ejemplo:C:GLPKglpk-4.44 PASO 2 – CREAR PROGRAMA JAVA Ya sea utilizando tu IDE favoritoo el blockde notas, crea tu primer programa de JAVA utilizando GLPK. Puedes utilizar el siguiente ejemplo (tomado de la documentación del paquete de glpk: C:...glpk-4.44docsglpk-java.pdf). import org.gnu.glpk.GLPK; import org.gnu.glpk.GLPKConstants; import org.gnu.glpk.GlpkException; import org.gnu.glpk.SWIGTYPE_p_double; import org.gnu.glpk.SWIGTYPE_p_int; import org.gnu.glpk.glp_prob; import org.gnu.glpk.glp_smcp; public class Main { // Minimize z = (x1-x2) /2 + (1-(x1-x2)) = -.5 * x1 + .5 * x2 + 1 // // subject to // 0.0<= x1 - x2 <= 0.2
  • 2. Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre Facultad de Ciencias Físico Matemáticas Octubre 2010 2 de 4 // where, // 0.0 <= x1 <= 0.5 // 0.0 <= x2 <= 0.5 public static void main(String[] args) { glp_prob lp; glp_smcp parm; SWIGTYPE_p_int ind; SWIGTYPE_p_double val; int ret; try { // Create problem lp = GLPK.glp_create_prob(); System.out.println("Problem created"); GLPK.glp_set_prob_name(lp, "myProblem"); // Define columns GLPK.glp_add_cols(lp, 2); GLPK.glp_set_col_name(lp, 1, "x1"); GLPK.glp_set_col_kind(lp, 1, GLPKConstants.GLP_CV); GLPK.glp_set_col_bnds(lp, 1, GLPKConstants.GLP_DB, 0, .5); GLPK.glp_set_col_name(lp, 2, "x2"); GLPK.glp_set_col_kind(lp, 2, GLPKConstants.GLP_CV); GLPK.glp_set_col_bnds(lp, 2, GLPKConstants.GLP_DB, 0, .5); // Create constraints GLPK.glp_add_rows(lp, 1); GLPK.glp_set_row_name(lp, 1, "c1"); GLPK.glp_set_row_bnds(lp, 1, GLPKConstants.GLP_DB, 0, 0.2); ind = GLPK.new_intArray(3); GLPK.intArray_setitem(ind, 1, 1); GLPK.intArray_setitem(ind, 2, 2); val = GLPK.new_doubleArray(3); GLPK.doubleArray_setitem(val, 1, 1.); GLPK.doubleArray_setitem(val, 2, -1.); GLPK.glp_set_mat_row(lp, 1, 2, ind, val); // Define objective GLPK.glp_set_obj_name(lp, "z"); GLPK.glp_set_obj_dir(lp, GLPKConstants.GLP_MIN); GLPK.glp_set_obj_coef(lp, 0, 1.); GLPK.glp_set_obj_coef(lp, 1, -.5); GLPK.glp_set_obj_coef(lp, 2, .5); // Solve model parm = new glp_smcp(); GLPK.glp_init_smcp(parm); ret = GLPK.glp_simplex(lp, parm); // Retrieve solution if (ret == 0) { write_lp_solution(lp); } else { System.out.println("The problem could not be solved"); } // Free memory GLPK.glp_delete_prob(lp); } catch (GlpkException ex) {
  • 3. Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre Facultad de Ciencias Físico Matemáticas Octubre 2010 3 de 4 ex.printStackTrace(); } } /** * write simplex solution * @param lp problem */ static void write_lp_solution(glp_prob lp) { int i; int n; String name; double val; name = GLPK.glp_get_obj_name(lp); val = GLPK.glp_get_obj_val(lp); System.out.print(name); System.out.print(" = "); System.out.println(val); n = GLPK.glp_get_num_cols(lp); for (i = 1; i <= n; i++) { name = GLPK.glp_get_col_name(lp, i); val = GLPK.glp_get_col_prim(lp, i); System.out.print(name); System.out.print(" = "); System.out.println(val); } } } PASO 3 – COMPILAR PROGRAMA Para compilar hay que hacer referencia al archivo glpk-java.jar que ya está incluido en nuestro paquete de winglpk, se puede agregar como una librería desde el IDE que estén usando o se puede especificar en el comando del compilador. En mi caso para compilar el programa corro el siguiente comando: javac -classpath C:GLPKglpk-4.44w64glpk-java.jar Main.java PASO 4 – CORRER EL PROGRAMA Para correr el programa se necesita hacer referencia nuevamente a la carpeta en donde se encuentran los archivos pre-compilados de la librería GLPK, en mi caso esta carpeta es C:GLPKglpk-4.44w64. Se pueden modificar las propiedades del proyecto en la IDE en la que se esté trabajando o se puede especificar la ubicación en el comando de java. En mi caso para correr el programa hago lo siguiente: java -Djava.library.path=C:GLPKglpk-4.44w64 -classpath C:GLPKglpk-4.44w64glpk-java.jar;. Main Con –Djava.library.path= le especifico a la VM dónde buscar las librerías que va a cargar dinámicamente (glpk_4_44.dll y glpk_4_44_java.dll).
  • 4. Universidad Autónoma de Nuevo Léon JosuéZarzosadela Torre Facultad de Ciencias Físico Matemáticas Octubre 2010 4 de 4 MÁS INFORMACIÓN Consulta la documentación que viene en tu distribución de glpk. (Ejemplo C:...glpk- 4.44docsglpk-java.pdf) Para más información, recomiendo visitar los siguientes sitios: http://www.gnu.org/software/glpk/ http://winglpk.sourceforge.net/ http://www.ibm.com/developerworks/linux/library/l-glpk1/ http://codingtech.wordpress.com/2010/03/12/glpk-y-visual-studio-en-10-pasos/