Test Eclipse

Open eclipse and select your workspace. If you start out with a blue screen with some circular buttons saying Welcome, Tutorial, etc., click Go to Workbench. Otherwise, you are already at the workbench. Go to File → New → Java Project. Name your project sandbox, then click the button Finish. You now have a new project!

In the Package Explorer (left side) right click the arrow next to sandbox to expand the project. Right click on the src folder and then go to new → class. Name the class TestClass. Under "Which method stubs would you like to create?" check the box next to public static void main(String[] args). Hit the Finish button. Then replace

// TODO Auto-generated method stub

by

System.out.println("Hello World!")

Save the file TestClass.java by hitting Ctrl+s or the save button (top left on the menu bar). To run your code, go to the top center of the menu bar and hit the run icon (its a green circle with a white arrow inside), or go to the menu bar and hit Run → Run. The Console should pop up on the bottom with the output of your program.

Test Cplex from Eclipse

Open Eclipse and expand the sandbox project we created previously. Create a new class called KnapsackSolver. Next we are going to connect to Cplex. Right click on sandbox in the package explorer and select new->folder. Give it the name lib and click Finish. Find the file cplex.jar in your Cplex installation. On my Windows installation, it was located at

Open up KnapsackSolver and replace the text of the file with the following:

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));
	}
}

Run the code.  The final line of output should of course be {{\[0.0, 1.0, 1.0, 0.0\]}}, up to some precision.  If you get the error

Cannot find cplex...

then your PATH was not set properly. The easiest way to deal with this is to add a virtual machine argument to the Run Configuration. Starting from the menu bar at the top, select Run → Run Configurations... and then on the left, make sure Java Application → KnapsackSolver is selected. In the center panel, pick the (error)=Arguments tab. In the second box, titled VM Arguments, add the line:

this is a VM argument

Finally, hit Run on the bottom.