Ignore:
Timestamp:
09/21/12 10:11:15 (8 years ago)
Author:
abeham
Message:

#1955:

  • Added disposing of StreamReader to prevent file locking after parsing
  • Fixed regular expression pattern to match double values (hacky)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DynamicVehicleRouting/HeuristicLab.PDPSimulation/3.3/Parsers/DefaultDynPDPParser.cs

    r8670 r8675  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    2422using System.IO;
    2523using System.Text.RegularExpressions;
    2624
    2725namespace HeuristicLab.PDPSimulation {
    28   class DefaultDynPDPParser: DynPDPParser {
    29     public DefaultDynPDPParser(string file): base(file) {
     26  class DefaultDynPDPParser : DynPDPParser {
     27    public DefaultDynPDPParser(string file)
     28      : base(file) {
    3029    }
    3130
    3231    public override void Parse() {
    3332      string line;
    34       Regex reg = new Regex(@"-?\d+");
     33      Regex reg = new Regex(@"-?(\d+\.\d+|\d+)");
    3534      MatchCollection m;
    3635
    37       StreamReader reader = new StreamReader(file);
     36      using (var reader = new StreamReader(file)) {
    3837
    39       line = reader.ReadLine();
    40       problemName = line;
     38        line = reader.ReadLine();
     39        problemName = line;
    4140
    42       line = reader.ReadLine();
    43       int vehicleCount = int.Parse(line);
     41        line = reader.ReadLine();
     42        int vehicleCount = int.Parse(line);
    4443
    45       for (int i = 0; i < vehicleCount; i++) {
     44        for (int i = 0; i < vehicleCount; i++) {
     45          line = reader.ReadLine();
     46          m = reg.Matches(line);
     47          Vehicle v = new Vehicle();
     48
     49          v.xCoord = double.Parse(m[0].Value);
     50          v.yCoord = double.Parse(m[1].Value);
     51          v.capacity = double.Parse(m[2].Value);
     52          v.readyTime = double.Parse(m[3].Value);
     53          v.dueTime = double.Parse(m[4].Value);
     54
     55          vehicles.Add(v);
     56        }
     57
    4658        line = reader.ReadLine();
     59        int orderCount = int.Parse(line);
    4760        m = reg.Matches(line);
    48         Vehicle v = new Vehicle();
     61        for (int i = 0; i < orderCount; i++) {
     62          line = reader.ReadLine();
     63          m = reg.Matches(line);
     64          Order o = new Order();
    4965
    50         v.xCoord = double.Parse(m[0].Value);
    51         v.yCoord = double.Parse(m[1].Value);
    52         v.capacity = double.Parse(m[2].Value);
    53         v.readyTime = double.Parse(m[3].Value);
    54         v.dueTime = double.Parse(m[4].Value);
     66          o.revealedTime = double.Parse(m[0].Value);
     67          o.pickupXCoord = double.Parse(m[1].Value);
     68          o.pickupYCoord = double.Parse(m[2].Value);
     69          o.deliveryXCoord = double.Parse(m[3].Value);
     70          o.deliveryYCoord = double.Parse(m[4].Value);
     71          o.demand = double.Parse(m[5].Value);
     72          o.pickupServiceTime = double.Parse(m[6].Value);
     73          o.pickupReadyTime = double.Parse(m[7].Value);
     74          o.pickupDueTime = double.Parse(m[8].Value);
     75          o.deliveryServiceTime = double.Parse(m[9].Value);
     76          o.deliveryReadyTime = double.Parse(m[10].Value);
     77          o.deliveryDueTime = double.Parse(m[11].Value);
    5578
    56         vehicles.Add(v);
    57       }
    58 
    59       line = reader.ReadLine();
    60       int orderCount = int.Parse(line);
    61       m = reg.Matches(line);
    62       for (int i = 0; i < orderCount; i++) {
    63         line = reader.ReadLine();
    64         m = reg.Matches(line);
    65         Order o = new Order();
    66 
    67         o.revealedTime = double.Parse(m[0].Value);
    68         o.pickupXCoord = double.Parse(m[1].Value);
    69         o.pickupYCoord = double.Parse(m[2].Value);
    70         o.deliveryXCoord = double.Parse(m[3].Value);
    71         o.deliveryYCoord = double.Parse(m[4].Value);
    72         o.demand = double.Parse(m[5].Value);
    73         o.pickupServiceTime = double.Parse(m[6].Value);
    74         o.pickupReadyTime = double.Parse(m[7].Value);
    75         o.pickupDueTime = double.Parse(m[8].Value);
    76         o.deliveryServiceTime = double.Parse(m[9].Value);
    77         o.deliveryReadyTime = double.Parse(m[10].Value);
    78         o.deliveryDueTime = double.Parse(m[11].Value);
    79 
    80         orders.Add(o);
     79          orders.Add(o);
     80        }
    8181      }
    8282    }
Note: See TracChangeset for help on using the changeset viewer.