h1. Test Eclipse

{rarr}


{rrar}

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

{code}// TODO Auto-generated method stub{code}

by

{code}System.out.println("Hello World!"){code}

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.

h1.  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 installation, it was located at

{{C:\Program Files\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|http://stackoverflow.com/questions/8486403/eclipse-ide-add-jar-add-external-jar-add-library] 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.

Open up {{KnapsackSolver}} and replace the text of the file with the following:
{code}
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));
	}
}
{code}
Run the code.  The final line of output should of course be {{\[0.0, 1.0, 1.0, 0.0\]}}, up to some precision.