Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/17/20 17:29:52 (4 years ago)
Author:
dpiringe
Message:

#3026:

  • added new CLI argument StringArgument
  • removed unnecessary check in StartArgument
  • changed output format from simple .txt to .json in HeuristicLab.JsonInterface.App.Runner
  • user has to enter output path now when executing JsonInterface on console
Location:
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App
Files:
3 edited

Legend:

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

    r17439 r17442  
    3838  </PropertyGroup>
    3939  <ItemGroup>
     40    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
     41      <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
     42    </Reference>
    4043    <Reference Include="System" />
    4144    <Reference Include="System.Core" />
     
    4952  <ItemGroup>
    5053    <None Include="HeuristicLab.snk" />
     54    <None Include="packages.config" />
    5155    <None Include="Plugin.cs.frame" />
    5256    <Compile Include="Runner.cs" />
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Plugin.cs.frame

    r17330 r17442  
    3838  public class HeuristicLabJsonInterfaceAppApplication : ApplicationBase {
    3939    public override void Run(ICommandLineArgument[] args) {
    40       if(args.Length == 3 && args[1] is OpenArgument && args[2] is OpenArgument) {
    41         Runner.Run(args[1].Value.ToString(), args[2].Value.ToString());
     40      if(args.Length == 4 && args[1] is OpenArgument && args[2] is OpenArgument && (args[3] is StringArgument || args[3] is OpenArgument)) {
     41        Runner.Run(args[1].Value.ToString(), args[2].Value.ToString(), args[3].Value.ToString());
    4242      }
    4343    }
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs

    r17439 r17442  
    88using HeuristicLab.Optimization;
    99using HeuristicLab.SequentialEngine;
     10using Newtonsoft.Json.Linq;
    1011
    1112namespace HeuristicLab.JsonInterface.App {
    1213  internal static class Runner {
    13     internal static void Run(string template, string config, string outputFile = @"C:\Workspace\test.txt") {
    14       IOptimizer optimizer = JsonTemplateInstantiator.Instantiate(template, config);
     14    internal static void Run(string template, string config, string outputFile) {
     15      IOptimizer optimizer = JsonTemplateInstantiator.Instantiate(template, config, out IEnumerable<string> allowedResultNames);
    1516      if(optimizer is EngineAlgorithm e)
    1617        e.Engine = new SequentialEngine.SequentialEngine();
     
    1819      Task task = optimizer.StartAsync();
    1920      while(!task.IsCompleted) {
    20         WriteResultsToFile(outputFile, optimizer);
     21        WriteResultsToFile(outputFile, optimizer, allowedResultNames);
    2122        Thread.Sleep(100);
    2223      }
    23       WriteResultsToFile(outputFile, optimizer);
     24      WriteResultsToFile(outputFile, optimizer, allowedResultNames);
    2425    }
    2526
    26     private static void WriteResultsToFile(string file, IOptimizer optimizer) =>
    27       File.WriteAllText(file, FetchResults(optimizer));
     27    private static void WriteResultsToFile(string file, IOptimizer optimizer, IEnumerable<string> allowedResultNames) =>
     28      File.WriteAllText(file, FetchResults(optimizer, allowedResultNames));
    2829
    29     private static string FetchResults(IOptimizer optimizer) {
    30       StringBuilder sb = new StringBuilder();
     30    private static string FetchResults(IOptimizer optimizer, IEnumerable<string> allowedResultNames) {
     31      JArray arr = new JArray();
     32     
    3133      foreach (var run in optimizer.Runs) {
    32         sb.AppendLine($"--- {run.ToString()} ---");
     34        JObject obj = new JObject();
     35        arr.Add(obj);
     36        obj.Add("Run", JToken.FromObject(run.ToString()));
    3337        foreach (var res in run.Results) {
    34           sb.AppendLine($"{res.Key}: {res.Value}");
     38          if (allowedResultNames.Contains(res.Key))
     39            obj.Add(res.Key, JToken.FromObject(res.Value.ToString()));
    3540        }
    3641      }
    37       return sb.ToString();
     42      return SingleLineArrayJsonWriter.Serialize(arr);
    3843    }
    3944  }
Note: See TracChangeset for help on using the changeset viewer.