import static choco.Choco.*; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.kernel.model.Model; import choco.cp.solver.search.integer.varselector.*; import choco.kernel.solver.Solver; import choco.kernel.model.variables.integer.IntegerVariable; import java.io.*; import java.util.*; public class KE2 { IntegerVariable value; // the value of the solution, maximise IntegerVariable A[][]; // adjacency matrix IntegerVariable next[]; // single successor IntegerVariable flatA[]; // A[][] flattened int w[][]; // weight int edge[][]; // inputted adjacency matrix (edges may have 0 weight) int flatW[]; // w[][] flattened Model modl; Solver sol; int n,sumW; public KE2(int n,String fname) throws Exception { MyIo fin = new MyIo(fname); value = makeIntVar("value",0,9999999); A = new IntegerVariable[n][n]; flatA = new IntegerVariable[n*n]; next = new IntegerVariable[n]; w = new int[n][n]; flatW = new int[n*n]; modl = new CPModel(); sol = new CPSolver(); edge = new int[n][n]; this.n = n; for (int i=0;i "+ (j+1) +" = "+ w[i][j] + "\n"; //System.out.println(i+1 +" -> "+ (sol.getVar(next[i]).getVal()+1)); } } s = s + "\n" + sol.getVar(value).pretty(); return s; } public static void main(String[] args) throws Exception { int n = Integer.parseInt(args[0]); // number of vertices KE2 ke = new KE2(n,args[1]); ke.init(); ke.maximize(); //ke.solveAll(); System.out.println(ke); ke.stats(); } }