...
- 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)); } } |
Run the code. The final line of output should of course be {{\ Wiki Markup [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 | ||
---|---|---|
| ||
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.