Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/02/21 16:42:16 (3 years ago)
Author:
dpiringe
Message:

#3026

  • added a first version of a new feature called ResultCollectionPostProcessors, which should transform/process the results of an optimizer run
    • created a new interface IResultCollectionPostProcessor
    • created a new class SymRegPythonPostProcessor, which formats all ISymbolicRegressionSolution with the usage of the SymbolicDataAnalysisExpressionPythonFormatter
    • changed the generation and instantiation of templates to handle this new feature
    • the template files contains a new area PostProcessors
    • added functionality in Runner to use these new type of result processing
    • added a new tab in ExportJsonDialog to configure PostProcessors
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs

    r18045 r18046  
    2222      Task task = optimizer.StartAsync();
    2323      while (!task.IsCompleted) {
    24         WriteResultsToFile(outputFile, optimizer, configuredResultItem);
     24        WriteResultsToFile(outputFile, optimizer, configuredResultItem, instantiatorResult.PostProcessors);
    2525        Thread.Sleep(100);
    2626      }
    2727
    28       WriteResultsToFile(outputFile, optimizer, configuredResultItem);
     28      WriteResultsToFile(outputFile, optimizer, configuredResultItem, instantiatorResult.PostProcessors);
    2929    }
    3030
    31     private static void WriteResultsToFile(string file, IOptimizer optimizer, IEnumerable<IResultJsonItem> configuredResultItem) {
     31    private static void WriteResultsToFile(string file, IOptimizer optimizer, IEnumerable<IResultJsonItem> configuredResultItem, IEnumerable<IResultCollectionPostProcessor> postProcessors) {
    3232      if (optimizer.Runs.Count > 0)
    33         File.WriteAllText(file, FetchResults(optimizer, configuredResultItem));
     33        File.WriteAllText(file, FetchResults(optimizer, configuredResultItem, postProcessors));
    3434    }
    3535     
     
    4141      ResultFormatter?.Where(x => x.GetType().FullName == fullName).Last();
    4242
    43     private static string FetchResults(IOptimizer optimizer, IEnumerable<IResultJsonItem> configuredResultItems) {
     43    private static string FetchResults(IOptimizer optimizer, IEnumerable<IResultJsonItem> configuredResultItems, IEnumerable<IResultCollectionPostProcessor> postProcessors) {
    4444      JArray arr = new JArray();
    4545      IEnumerable<string> configuredResults = configuredResultItems.Select(x => x.Name);
     
    6666            obj.Add(result.Item1.Name, formatter.Format(result.Item2));
    6767        }
     68
     69        IDictionary<string, string> resultDict = new Dictionary<string, string>();
     70        foreach (var processor in postProcessors) {
     71          processor.Apply(run.Results, resultDict);
     72        }
     73        foreach(var kvp in resultDict) {
     74          obj.Add(kvp.Key, kvp.Value);
     75        }
    6876      }
    6977      return SingleLineArrayJsonWriter.Serialize(arr);
Note: See TracChangeset for help on using the changeset viewer.