import choco.kernel.solver.search.integer.AbstractIntVarSelector; import choco.kernel.solver.variables.integer.IntDomainVar; import choco.kernel.solver.variables.AbstractVar; import choco.kernel.memory.IStateInt; public class MaxDegreeHeuristic extends AbstractIntVarSelector { private IntDomainVar[] vars; // 0/1 decision variables private int n; // number of decision variables private IStateInt[] deg; // number of vertices adjacent to v[i] in candidate set, reversible private ReversibleVector candidateSet; // the uninstantiated variables private MonitorObject monitor; public MaxDegreeHeuristic(IntDomainVar[] vars,IStateInt[] deg,ReversibleVector candidateSet){ this.vars = vars; n = vars.length; this.deg = deg; this.candidateSet = candidateSet; monitor = null; } public MaxDegreeHeuristic(IntDomainVar[] vars,IStateInt[] deg,ReversibleVector candidateSet,MonitorObject monitor){ this.vars = vars; n = vars.length; this.deg = deg; this.candidateSet = candidateSet; this.monitor = monitor; } public IntDomainVar selectIntVar(){ if (monitor != null) monitor.monitor(); int maxDegree = Integer.MIN_VALUE; IntDomainVar maxDegreeVar = null; int degree = 0; int i = 0; for (int k=0;k maxDegree){maxDegreeVar = vars[i]; maxDegree = degree;} } //System.out.println("selected: "+ minDegreeVar); return maxDegreeVar; } // // select the uninstantiated variable with maximum degree // }