}
public static void runOne(NSData data, BranchingStrategy strategy, NSCPModelConstrained.ConstraintOptions basisOptions, NSCPModelConstrained.ConstraintOptions patternOptions) {
System.out.println(strategy.name() + "\t " + patternOptions.name() + "\t " + basisOptions.name());
Solver solver = new Solver();
NurseSchedulingProblem m = new NSCPModelConstrained(data, basisOptions, patternOptions, solver);
SearchMonitorFactory.limitTime(solver, 180000);
IntVar[] vars = ArrayUtils.flatten(ArrayUtils.transpose(m.getShifts()));
solver.set(strategy.getGoal(solver, vars));
String solved = "0";
if (Boolean.TRUE == solver.findSolution()) {
m.printSolution(solver);
NSChecker checker = new NSChecker(data);
if (checker.checkSolution(m.getSolution(solver)))
System.out.println("Solution checked.");
solved = "1";
}
String content =
solved + ",\t" + solver.getMeasures().getTimeCount() + " ms,\t "
+ solver.getMeasures().getNodeCount() + " nodes,\t "
+ solver.getMeasures().getBackTrackCount() + " bks,\t "
+ strategy.name() + "\t " + patternOptions.name() + "\t " + basisOptions.name() + "\t "
+ m.getDescription() + "\n";
String contentCSV =
solved + "," + solver.getMeasures().getTimeCount() + ","
+ solver.getMeasures().getNodeCount() + ","
+ solver.getMeasures().getBackTrackCount() + ","
+ strategy.name() + "," + patternOptions.name() + "," + basisOptions.name() + ","
+ m.getDescription() + "\n";
System.out.println(content);
BufferedWriter writer = null;
try {