help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-glpk] sample Java code for ILP


From: KAKAR, RATIKA
Subject: [Help-glpk] sample Java code for ILP
Date: Sun, 17 Aug 2008 21:25:15 -0400

Hi All,
 
I thought this might be useful to people who might be starting out
coding for an ILP problem in Java.
 
ILP problem:
 
Max z = 10x1 + 6x2+ 4x3
s.t
x1 + x2 + x3 <= 100
10x1 + 4x2 + 5x3 <= 600
2x1 + 2x2 + 6x3 <= 300
and x1 >= 0, x2 >= 0, x3 > = 0
 
Here is the Java code for this ILP problem.
 
import org.gnu.glpk.*;
public class Final_ILP_GlpkSolverDemo
{
 public static void main(String args[])
 {
  //Setting the classpath
  //javac -classpath .;glpk.jar GlpkSolverDemo.java
  //java -classpath .;glpk.jar GlpkSolverDemo
  // . refers to current directory
  int[] ia = new int[1+1000];
  int[] ja = new int[1+1000];
  double[] ar= new double[1+1000];
  double z;
  double x1;
  double x2;
  double x3;
  GlpkSolver solver = new GlpkSolver();
  solver.setClss(GlpkSolver.LPX_MIP);
  solver.setObjName("sample");
  solver.setObjDir(GlpkSolver.LPX_MAX);
  solver.addRows(3);
  solver.setRowName(1,"p");
  solver.setRowBnds(1,GlpkSolver.LPX_UP,0.0,100.0);
  solver.setRowName(1,"q");
  solver.setRowBnds(2,GlpkSolver.LPX_UP,0.0,600.0);
  solver.setRowName(1,"r");
  solver.setRowBnds(3,GlpkSolver.LPX_UP,0.0,300.0);
  solver.addCols(3);
  solver.setColName(1,"x1");
  solver.setColBnds(1,GlpkSolver.LPX_LO,0.0,0.0);
  solver.setObjCoef(1,10.0);
  solver.setColName(2,"x2");
  solver.setColBnds(2,GlpkSolver.LPX_LO,0.0,0.0);
  solver.setObjCoef(2,6.0);
  solver.setColName(3,"x3");
  solver.setColBnds(3,GlpkSolver.LPX_LO,0.0,0.0);
  solver.setObjCoef(3,4.0);
  solver.setColKind(1, GlpkSolver.LPX_IV);
  solver.setColKind(2, GlpkSolver.LPX_IV);
  solver.setColKind(1, GlpkSolver.LPX_IV);
  ia[1]=1; ja[1]=1; ar[1]=1.0;
  ia[2]=1; ja[2]=2; ar[2]=1.0;
  ia[3]=1; ja[3]=3; ar[3]=1.0;
  ia[4]=2; ja[4]=1; ar[4]=10.0;
  ia[5]=3; ja[5]=1; ar[5]=2.0;
  ia[6]=2; ja[6]=2; ar[6]=4.0;
  ia[7]=3; ja[7]=2; ar[7]=2.0;
  ia[8]=2; ja[8]=3; ar[8]=5.0;
  ia[9]=3; ja[9]=3; ar[9]=6.0;
  solver.loadMatrix(9,ia,ja,ar);
  solver.simplex();
  // These values give LP sol. Thats why, I am not printing them.
  z=solver.getObjVal();
  x1=solver.getColPrim(1);
  x2=solver.getColPrim(2);
  x3=solver.getColPrim(3);
  solver.integer();
  solver.printMip("sol_ilp.txt");
  solver.deleteProb();
 }
}
 
Thanks.
 
Ratika




reply via email to

[Prev in Thread] Current Thread [Next in Thread]