Commit 648a3509 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Добавлена возможность паралельного исполнения.

parent 99ae99fe
...@@ -56,12 +56,31 @@ public class Solver { ...@@ -56,12 +56,31 @@ public class Solver {
directory.mkdir(); directory.mkdir();
} }
tempDir = tempDir + "/"; File candidate = new File(tempDir + "/1/");
final int limitOfDirectories = 1000000;
int i = 1;
while (i < limitOfDirectories) {
candidate = new File(tempDir + "/" + i + "/");
if (candidate.mkdir()) {
break;
}
i++;
}
if (i == limitOfDirectories) {
return "Impossible to create files from " + tempDir + "/1/ to " + tempDir + "/" + (limitOfDirectories - 1) + "/ .";
}
tempDir = tempDir + "/" + i + "/";
String minizincData = tempDir + "minizinc_data.dzn"; String minizincData = tempDir + "minizinc_data.dzn";
String solverResults = tempDir + "solver_results.txt"; String solverResults = tempDir + "solver_results.txt";
String constraints = tempDir + "constraints.mzn"; String constraints = tempDir + "constraints.mzn";
String flatZincConstraints = tempDir + "model.fzn"; String flatZincConstraints = tempDir + "model.fzn";
new File(solverResults).delete();
try { try {
try (FileWriter res = new FileWriter(constraints)) { try (FileWriter res = new FileWriter(constraints)) {
BufferedReader reader = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("/constraints/" + constraintName))); BufferedReader reader = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("/constraints/" + constraintName)));
...@@ -133,6 +152,9 @@ public class Solver { ...@@ -133,6 +152,9 @@ public class Solver {
} }
}); });
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
// BufferedReader br2 = new BufferedReader(new InputStreamReader(process.getErrorStream()));
killer.start(); killer.start();
int exitCode = process.waitFor(); int exitCode = process.waitFor();
...@@ -156,20 +178,16 @@ public class Solver { ...@@ -156,20 +178,16 @@ public class Solver {
if (isResultsInOutput) { if (isResultsInOutput) {
try (FileWriter res = new FileWriter(solverResults)) { try (FileWriter res = new FileWriter(solverResults)) {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
res.write(br.lines().collect(Collectors.joining("\n"))); res.write(br.lines().collect(Collectors.joining("\n")));
} }
interpreter.accept(task, solverResults); interpreter.accept(task, solverResults);
} else { } else {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String output = br.lines().collect(Collectors.joining("\n")); String output = br.lines().collect(Collectors.joining("\n"));
// String errors = br.lines().collect(Collectors.joining("\n"));
// BufferedReader br2 = new BufferedReader(new InputStreamReader(process.getErrorStream())); //
// String errors = br.lines().collect(Collectors.joining("\n")); // System.out.println("output : " + output);
// System.out.println("errors : " + errors);
// System.out.println("output : " + output);
// System.out.println("errors : " + errors);
if (output.trim().equals("=====UNSATISFIABLE=====")) { if (output.trim().equals("=====UNSATISFIABLE=====")) {
task.setSolution(new ArrayList<>()); task.setSolution(new ArrayList<>());
...@@ -181,7 +199,7 @@ public class Solver { ...@@ -181,7 +199,7 @@ public class Solver {
} catch (UncheckedIOException | IOException | InterruptedException | ParserException ex) { } catch (UncheckedIOException | IOException | InterruptedException | ParserException ex) {
return ex.getMessage(); return ex.getMessage();
} finally { } finally {
// removeDirectory(directory); removeDirectory(candidate);
} }
return ""; return "";
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment