Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

  • Windows: C:\Program Files\IBM\ILOG\CPLEX_Studio125\cplex\lib\cplex.jar
  • Linux: /opt/IBM/ILOG/CPLEX_Studio125/cplex/lib/cplex.jar
  • Mac: Unknown. /Users/<yourusername>/Applications/IBM/ILOG/CPLEX_Studio125/cplex/lib/cplex.jar

Copy the file cplex.jar and paste it in the newly created lib folder in our project. Right click on sandbox in the package explorer, then select Build Path → Configure Build Path... Select the Libraries tab, then hit the Add JARs button (see here for an explanation of what all these buttons do). Select the file sandbox/lib/cplex.jar, then hit OK until we have exited all the menus.

...

Code Block
import java.util.Arrays;
import ilog.concert.IloException;
import ilog.concert.IloIntVar;
import ilog.cplex.IloCplex;

public class KnapsackSolver {
	
	public static double[] solveKnapsack(double[] values, double[] weights, double capacity){		
		if(weights.length != values.length){
			throw new RuntimeException("values.length was " + values.length 
					+ " and weights.length was" +  weights.length 
					+ " but they must be the same");
		}
		try {
			IloCplex cplex = new IloCplex();
			IloIntVar[] x = cplex.boolVarArray(values.length);
			cplex.addLe(cplex.scalProd(x, weights), capacity);
			cplex.addMaximize(cplex.scalProd(x, values));
			cplex.solve();
			return cplex.getValues(x);			
		} catch (IloException e) {
			throw new RuntimeException();
		}
	}
		
	public static void main(String[] args){
		double[] values = new double[]{2,4,5,6};
		double[] weights= new double[]{2,3,4,7};
		double capacity = 8;
		double[] solution = solveKnapsack(values,weights,capacity);
		System.out.println(Arrays.toString(solution));
	}
}

Wiki MarkupRun the code. The final line of output should of course be {{\[0.0, 1.0, 1.0, 0.0\]}}, up to some precision. Upload the output of the program as your assignment [here|https://stellar-mit-edu.ezproxyberklee.flo.org/S/course/15/ia13/15.S60/homework/assignment4/] If you get the error

Exception in thread "main" java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I)J

...

  • Linux: -Djava.library.path=/opt/ibm/ILOG/CPLEX_Studio125/cplex/bin/x86-64_sles10_4.1
  • Windows: ?? -Djava.library.path="C:\Program Files\IBM\ILOG\CPLEX_Studio125\cplex\bin\x64_win64"
  • Mac: -Djava.library.path=/Users/<yourusername>/optApplications/ibmIBM/ILOG/CPLEX_Studio125/cplex/bin/x86-64_darwin

As you can see, the VM argument is telling java the directory that the c code of cplex is located in.

Warning
titleWarning

If your VM argument would have a space, you need to put quotes around it, as in the Windows example above.

Finally, hit Run on the bottom.