From 2e554245ebf9ee74b5939872128475722398cc4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=81=D0=B5=D0=BB=D1=91=D0=B2=20=D0=92=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2?= Date: Thu, 28 Mar 2019 23:02:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B8=D0=BF=D0=B8=D0=B7=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B2,=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inport/Berth.java | 2 +- src/inport/Cargo.java | 2 +- src/inport/CargoFlow.java | 2 +- src/inport/ConversionUtil.java | 8 ----- src/inport/LoadingEquipment.java | 4 +-- src/inport/LoadingTemplate.java | 2 +- src/inport/Main.java | 6 ++-- src/inport/MovingObjectState.java | 2 +- src/inport/Storage.java | 2 +- src/inport/StorageState.java | 4 +-- src/inport/TaskCase.java | 50 ++++++++++++++++++------------- src/inport/Testing.java | 27 +++++++++++------ 12 files changed, 59 insertions(+), 52 deletions(-) diff --git a/src/inport/Berth.java b/src/inport/Berth.java index 2e56e49..009db9f 100644 --- a/src/inport/Berth.java +++ b/src/inport/Berth.java @@ -69,7 +69,7 @@ public class Berth { @Override public String toString() { - return id + ";" + name; + return id + "; " + name; } public Berth(String s) { diff --git a/src/inport/Cargo.java b/src/inport/Cargo.java index 3b8b563..6578a6f 100644 --- a/src/inport/Cargo.java +++ b/src/inport/Cargo.java @@ -79,7 +79,7 @@ public class Cargo { @Override public String toString() { - return id + ";" + name + ";" + cost; + return id + "; " + name + "; " + cost; } public Cargo(String s) { diff --git a/src/inport/CargoFlow.java b/src/inport/CargoFlow.java index f3cd6d0..d7a25fe 100644 --- a/src/inport/CargoFlow.java +++ b/src/inport/CargoFlow.java @@ -117,7 +117,7 @@ public class CargoFlow { res += s + ":" + flow.get(s); first = false; } - return storage.getId() + ";[" + res +"]"; + return storage.getId() + "; [" + res +"]"; } public CargoFlow(String s, Map mp, Map cp) { diff --git a/src/inport/ConversionUtil.java b/src/inport/ConversionUtil.java index 003418a..9caf1d6 100644 --- a/src/inport/ConversionUtil.java +++ b/src/inport/ConversionUtil.java @@ -1175,12 +1175,6 @@ public class ConversionUtil { } } - private static class OperationsComparator implements Comparator { - public int compare(Operation op1, Operation op2) { - return Double.compare(op1.getStart(), op2.getStart()); - } - } - public static void resolveMiniZincResults(TaskCase task, String fileName) { ArrayList operations = null; Integer result = null; @@ -1330,8 +1324,6 @@ public class ConversionUtil { } } } - - operations.sort(new OperationsComparator()); task.setSolution(operations); task.setSolution_result(result); } catch (IOException e) { diff --git a/src/inport/LoadingEquipment.java b/src/inport/LoadingEquipment.java index 231e2ec..37b9fa0 100644 --- a/src/inport/LoadingEquipment.java +++ b/src/inport/LoadingEquipment.java @@ -32,8 +32,8 @@ public class LoadingEquipment extends MovingObject{ public LoadingEquipment(String s) { super(s); String[] tokens = s.split(";"); - if (tokens.length >= 4) { - setType(OptionalInt.of(Integer.parseInt(tokens[3].trim()))); + if (tokens.length >= 3) { + setType(OptionalInt.of(Integer.parseInt(tokens[2].trim()))); } } diff --git a/src/inport/LoadingTemplate.java b/src/inport/LoadingTemplate.java index 80dc58f..1196afd 100644 --- a/src/inport/LoadingTemplate.java +++ b/src/inport/LoadingTemplate.java @@ -125,7 +125,7 @@ public class LoadingTemplate extends OperationTemplate { } for (Integer t : getResourcesTypes()) { if (!first) - res += "," + t; + res += ", " + t; else res += t; first = false; diff --git a/src/inport/Main.java b/src/inport/Main.java index e086396..3261788 100644 --- a/src/inport/Main.java +++ b/src/inport/Main.java @@ -5,9 +5,7 @@ import java.util.ArrayList; import java.util.Map; import java.util.TreeMap; -import static inport.Testing.solveTask_1; -import static inport.Testing.solveTask_2; -import static inport.Testing.test_1; +import static inport.Testing.*; import inport.ConversionUtil.*; public class Main { @@ -117,7 +115,7 @@ public class Main { break; } case "testing" : - test_1(); + test_2(); break; default: System.out.println("Unknown type \"" + type + "\""); diff --git a/src/inport/MovingObjectState.java b/src/inport/MovingObjectState.java index ebaeb3b..3e40553 100644 --- a/src/inport/MovingObjectState.java +++ b/src/inport/MovingObjectState.java @@ -64,7 +64,7 @@ public class MovingObjectState { @Override public String toString() { - return getVessel().getId() + ";" + getLocation().getId(); + return getVessel().getId() + "; " + getLocation().getId(); } diff --git a/src/inport/Storage.java b/src/inport/Storage.java index 0ceed25..134139e 100644 --- a/src/inport/Storage.java +++ b/src/inport/Storage.java @@ -101,7 +101,7 @@ public class Storage { @Override public String toString() { - return id + ";" + name + ";" + cargo.getId() + ";" +volume; + return id + "; " + name + "; " + cargo.getId() + "; " +volume; } public Storage(String s, Map cargoes) { diff --git a/src/inport/StorageState.java b/src/inport/StorageState.java index d2f9650..6a9d57c 100644 --- a/src/inport/StorageState.java +++ b/src/inport/StorageState.java @@ -76,9 +76,9 @@ public class StorageState { @Override public String toString() { if (storage instanceof Storage) - return cargo.getId() + ";" + ((Storage)storage).getId() + ";" + cargoState; + return cargo.getId() + "; " + ((Storage)storage).getId() + "; " + cargoState; if (storage instanceof TransportShip) - return cargo.getId() + ";" + ((TransportShip)storage).getId() + ";" + cargoState; + return cargo.getId() + "; " + ((TransportShip)storage).getId() + "; " + cargoState; return ""; } diff --git a/src/inport/TaskCase.java b/src/inport/TaskCase.java index 56242d4..4156232 100644 --- a/src/inport/TaskCase.java +++ b/src/inport/TaskCase.java @@ -662,7 +662,13 @@ public class TaskCase { Logger.getLogger(TaskCase.class.getName()).log(Level.SEVERE, null, ex); } } - + + private static class OperationsComparator implements Comparator { + public int compare(Operation op1, Operation op2) { + return Double.compare(op1.getStart(), op2.getStart()); + } + } + public void serialize(String fileName) { try(FileWriter writer = new FileWriter(fileName, false)) @@ -670,67 +676,69 @@ public class TaskCase { // запись всего writer.write(Tag.Typified.text + "\n" + (isTypified()? "1" : "0") + "\n"); - writer.write("Cargoes"+"\n"); + writer.write("\nCargoes"+"\n"); for (Cargo c : cargoes) writer.write(c.toString()+"\n"); - writer.write("Berths"+"\n"); + writer.write("\nBerths"+"\n"); for (Berth c : berths) writer.write(c.toString()+"\n"); - writer.write("Storages"+"\n"); + writer.write("\nStorages"+"\n"); for (Storage c : storages) { writer.write(c.toString() + "\n"); } if (isTypified()) { - writer.write(Tag.Vessel_Types.text + "\n"); + writer.write("\n" + Tag.Vessel_Types.text + "\n"); for (Map.Entry e : vesselTypes.entrySet()) { writer.write(e.getKey() + "; " + e.getValue() + "\n"); } } - writer.write("Bunkers"+"\n"); + writer.write("\nBunkers"+"\n"); for (Bunker c : bunkers) writer.write(c.toString()+"\n"); - writer.write("Tows"+"\n"); + writer.write("\nTows"+"\n"); for (Tow c : tows) { writer.write(c.toString() + "\n"); } if (isTypified()) { - writer.write(Tag.Loading_Equipment_Types.text + "\n"); + writer.write("\n" + Tag.Loading_Equipment_Types.text + "\n"); for (Map.Entry e : equipmentTypes.entrySet()) { writer.write(e.getKey() + "; " + e.getValue() + "\n"); } } - writer.write("Loading Equipments"+"\n"); + writer.write("\nLoading Equipments"+"\n"); for (LoadingEquipment c : equipments) writer.write(c.toString()+"\n"); - writer.write("Transport Ships"+"\n"); + writer.write("\nTransport Ships"+"\n"); for (TransportShip c : ships) writer.write(c.toString()+"\n"); - writer.write("\n"); - writer.write("Templates"+"\n"); + writer.write("\nTemplates"+"\n"); for (OperationTemplate c : templates) writer.write(c.toString()+"\n"); - writer.write("\n"); - writer.write("Cargo Flows"+"\n"); + + writer.write("\nCargo Flows"+"\n"); for (CargoFlow c : cargoFlows) writer.write(c.toString()+"\n"); - writer.write("Initial Vessel State"+"\n"); + writer.write("\nInitial Vessel State"+"\n"); for (MovingObjectState c : vesselInitialState) writer.write(c.toString()+"\n"); - writer.write("Initial Storage State"+"\n"); + writer.write("\nInitial Storage State"+"\n"); for (StorageState c : storageInitialState) writer.write(c.toString()+"\n"); - writer.write("Final Vessel State"+"\n"); + writer.write("\nFinal Vessel State"+"\n"); for (MovingObjectState c : vesselEndState) writer.write(c.toString()+"\n"); - writer.write("Final Storage State"+"\n"); + writer.write("\nFinal Storage State"+"\n"); for (StorageState c : storageEndState) writer.write(c.toString()+"\n"); writer.write("\n"); - writer.write("Task Properties"+"\n"); - writer.write(planningInterval+";"+criterionType+"\n"); + writer.write("\nTask Properties"+"\n"); + writer.write(planningInterval+"; "+criterionType+"\n"); writer.write("\n"); - writer.write("Solution"+"\n"); + writer.write("\nSolution"+"\n"); writer.write(solution_result+"\n"); + + solution.sort(new OperationsComparator()); + for (Operation c : solution) writer.write(c.toString()+"\n"); writer.flush(); diff --git a/src/inport/Testing.java b/src/inport/Testing.java index 5a0d745..9f545bc 100644 --- a/src/inport/Testing.java +++ b/src/inport/Testing.java @@ -3,6 +3,7 @@ package inport; import java.io.*; import java.util.ArrayList; import java.util.function.BiConsumer; +import java.util.function.Function; import java.util.stream.Collectors; public class Testing { @@ -71,12 +72,12 @@ public class Testing { BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); String output = br.lines().collect(Collectors.joining("\n")); - BufferedReader br2 = new BufferedReader(new InputStreamReader(process.getErrorStream())); - 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=====")) { task.setSolution(new ArrayList<>()); @@ -92,7 +93,7 @@ public class Testing { return ""; } - public static String testCase(String file) { + private static String testCase(String file, Function solver) { TaskCase task = new TaskCase(); try { task.deserialize(file); @@ -100,7 +101,7 @@ public class Testing { return "Error : " + e.getMessage(); } double expected_result = task.getSolution_result(); - String error = solveTask_1(task); + String error = solver.apply(task); double result = task.getSolution_result(); if (!error.isEmpty()) { return "Error : " + error; @@ -111,8 +112,8 @@ public class Testing { return "OK"; } - public static void test_1() { - File testDir = new File("tests/without_typing/"); + public static void testGroup(String group, Function solver) { + File testDir = new File("tests/" + group + "/"); System.out.println(testDir.toString() + " :"); int nPassedTests = 0; @@ -122,7 +123,7 @@ public class Testing { long start = System.currentTimeMillis(); - String res = testCase(testDir.toString() + "/" + file.getName()); + String res = testCase(testDir.toString() + "/" + file.getName(), solver); long finish = System.currentTimeMillis(); System.out.println(" " + res + ", " + (finish - start) + " ms"); @@ -132,4 +133,12 @@ public class Testing { } System.out.println("Passed tests : " + nPassedTests + "/" + testDir.listFiles().length); } + + public static void test_1() { + testGroup("without_typing", Testing::solveTask_1); + } + + public static void test_2() { + testGroup("with_typing", Testing::solveTask_2); + } } -- GitLab