Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/12/17 21:02:01 (7 years ago)
Author:
abeham
Message:

#2666, #2706, #2730, #2736: merged revisions 14412, 14475, 14476, 14659, 14660, 14663, 14779, 14780, 14912, 15050, 15067, 15069, 15079, 15162, 15166, 15172, 15173 to stable

Location:
stable
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.Instances.DIMACS/3.3/GcolInstanceProvider.cs

    r15050 r15217  
    6969
    7070        using (var stream = entry.Open()) {
    71           var parser = new Parser();
     71          var parser = new GcolParser();
    7272          parser.Parse(stream);
    7373          var instance = Load(parser);
    7474          instance.Name = id.Name;
    75           instance.Description = id.Description;
     75          instance.Description += Environment.NewLine + id.Description;
    7676          int bestknown;
    7777          if (bkq.TryGetValue(instance.Name, out bestknown))
     
    8686    }
    8787    public override GCPData ImportData(string path) {
    88       var parser = new Parser();
     88      var parser = new GcolParser();
    8989      parser.Parse(path);
    9090      var instance = Load(parser);
    9191      instance.Name = Path.GetFileName(path);
    92       instance.Description = "Loaded from file \"" + path + "\" on " + DateTime.Now.ToString();
     92      instance.Description += Environment.NewLine + "Loaded from file \"" + path + "\" on " + DateTime.Now.ToString();
    9393      return instance;
    9494    }
    9595
    96     private GCPData Load(Parser parser) {
     96    private GCPData Load(GcolParser parser) {
    9797      var instance = new GCPData();
     98      instance.Description = parser.Comments;
    9899      instance.Nodes = parser.Nodes;
    99100      var adjacencies = new int[parser.Edges, 2];
    100101      var i = 0;
    101102      foreach (var a in parser.AdjacencyList) {
    102         adjacencies[i, 0] = a.Item1 - 1;
    103         adjacencies[i, 1] = a.Item2 - 1;
     103        adjacencies[i, 0] = a.Item1;
     104        adjacencies[i, 1] = a.Item2;
    104105        i++;
    105106      }
    106107      instance.Adjacencies = adjacencies;
    107108      return instance;
     109    }
     110
     111    public override bool CanExportData { get { return true; } }
     112    public override void ExportData(GCPData instance, string path) {
     113      using (var stream = new StreamWriter(File.Create(path)) { AutoFlush = true }) {
     114        stream.WriteLine("c " + instance.Name);
     115        foreach (var comment in instance.Description.Split(new[] { Environment.NewLine }, StringSplitOptions.None)) {
     116          var c = comment;
     117          if (!c.StartsWith("c ")) c = "c " + comment;
     118          stream.WriteLine(c);
     119        }
     120        var edges = instance.Adjacencies.GetLength(0);
     121        stream.WriteLine("p edge " + instance.Nodes + " " + edges);
     122        for (var i = 0; i < edges; i++) {
     123          stream.WriteLine("e " + (instance.Adjacencies[i, 0] + 1) + " " + (instance.Adjacencies[i, 1] + 1));
     124        }
     125      }
    108126    }
    109127
Note: See TracChangeset for help on using the changeset viewer.