Commit c6b43534 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Возможность запуска решателя из кода.

parent dcc68822
package inport;
import java.io.IOException;
import java.io.*;
public class Main {
private static void removeDirectory(File dir) {
if (dir.isDirectory()) {
File[] files = dir.listFiles();
if (files != null && files.length > 0) {
for (File aFile : files) {
removeDirectory(aFile);
}
}
}
dir.delete();
}
public static void main(String[] args) {
if (args.length < 1) {
if (args.length == 0) {
System.out.println("To few arguments.");
return;
}
String type = args[0];
switch (type) {
case "solve" : {
String fileName = args[1];
File directory = new File("temp_data");
if (!directory.exists()) {
directory.mkdir();
}
String tempDir = "temp_data/";
String minizincData = tempDir + "minizinc_data.dzn";
String solverResults = tempDir + "solver_results.txt";
String constraints = tempDir + "constraints.mzn";
TaskCase task = new TaskCase();
try {
try (FileWriter res = new FileWriter(constraints)) {
BufferedReader reader = new BufferedReader(new InputStreamReader(Main.class.getResourceAsStream("/constraints/conversion_1.mzn")));
String line;
while ((line = reader.readLine()) != null) {
res.write(line + "\n");
}
}
task.deserialize(fileName);
ConversionUtil.portToMiniZinc_1(task, minizincData);
long start = System.currentTimeMillis();
Process p = Runtime.getRuntime().exec("minizinc --solver Chuffed " + constraints + " " + minizincData);
p.waitFor();
long finish = System.currentTimeMillis();
System.out.println((finish - start) + " milliseconds");
try (FileWriter res = new FileWriter(solverResults)) {
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
res.write(line + "\n");
}
}
ConversionUtil.resolveMiniZincResults(task, solverResults);
task.serialize(fileName);
} catch (IOException | InterruptedException ex) {
System.out.println(ex.getMessage());
} catch (ParserException ex) {
if (ex.getMessage().equals("No solution.")) {
System.out.println(ex.getMessage());
} else {
System.out.println("ParserException : " + ex.getMessage());
}
}
removeDirectory(directory);
break;
}
case "to_MiniZinc_0" : {
String input = args[1];
String output = args[2];
......
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