From 3c2cbd3dac9345c10fce90edb701869f1820e7ff Mon Sep 17 00:00:00 2001 From: J-morag Date: Sun, 22 Jan 2023 17:18:21 +0200 Subject: [PATCH] better human-readable InstanceReport toString --- .../Environment/Metrics/InstanceReport.java | 25 ++++++++++++++++--- .../java/Environment/Metrics/S_Metrics.java | 11 ++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/main/java/Environment/Metrics/InstanceReport.java b/src/main/java/Environment/Metrics/InstanceReport.java index a9b41d5b..71ed3adf 100644 --- a/src/main/java/Environment/Metrics/InstanceReport.java +++ b/src/main/java/Environment/Metrics/InstanceReport.java @@ -269,11 +269,28 @@ String getValue(String fieldName){ @Override public String toString() { + return this.toString(stringFields, integerFields, floatFields); + } + + public String toString(Set skipFields) { + if (skipFields.isEmpty()){ + return this.toString(); + } + HashMap strings = new HashMap<>(stringFields); + strings.keySet().removeAll(skipFields); + HashMap integers = new HashMap<>(integerFields); + integers.keySet().removeAll(skipFields); + HashMap floats = new HashMap<>(floatFields); + floats.keySet().removeAll(skipFields); + return this.toString(strings, integers, floats); + } + + public String toString(Map strings, Map integers, Map floats){ return "InstanceReport{" + - "stringFields=" + stringFields + - ", integerFields=" + integerFields + - ", floatFields=" + floatFields + - '}'; + "\nstringFields=" + strings + + "\nintegerFields=" + integers + + "\nfloatFields=" + floats + + "\n}"; } /** diff --git a/src/main/java/Environment/Metrics/S_Metrics.java b/src/main/java/Environment/Metrics/S_Metrics.java index 570c25da..f8d21fd7 100644 --- a/src/main/java/Environment/Metrics/S_Metrics.java +++ b/src/main/java/Environment/Metrics/S_Metrics.java @@ -291,6 +291,17 @@ public static String instanceReportToHumanReadableString(InstanceReport instance return instanceReport.toString() + '\n'; } + /** + * Returns a string representation of the information in an instanceReport, in a format that is suitable for easy + * reading. Useful for outputing to a console to monitor the experiment. + * Skips outputting the solutions because they are long. + * @param instanceReport the InstanceReport to convert to a string. @NotNull. + * @return a string representation of the information in an instanceReport, in a format readable format. + */ + public static String instanceReportToHumanReadableStringSkipSolutions(InstanceReport instanceReport){ + return instanceReport.toString(Set.of(InstanceReport.StandardFields.solution)) + '\n'; + } + // nicetohave tosrting json //// outputing to the streams ////