View Javadoc
1   package net.bmahe.genetics4j.samples;
2   
3   import java.io.BufferedReader;
4   import java.io.FileReader;
5   import java.io.IOException;
6   import java.nio.charset.StandardCharsets;
7   import java.util.ArrayList;
8   import java.util.HashMap;
9   import java.util.List;
10  import java.util.Map;
11  
12  public class TSPLIBParser {
13  
14  	public TSPLIBParser() {
15  	}
16  
17  	TSPLIBProblem parse(final String filename) throws IOException {
18  
19  		final FileReader fileReader = new FileReader(filename, StandardCharsets.UTF_8);
20  
21  		final Map<String, String> attributes = new HashMap<String, String>();
22  		final List<Position> cities = new ArrayList<Position>();
23  
24  		try (final BufferedReader bufferReader = new BufferedReader(fileReader)) {
25  
26  			boolean parsingHeaders = true;
27  			String line;
28  			while ((line = bufferReader.readLine()) != null) {
29  				System.out.println(line);
30  
31  				if ("NODE_COORD_SECTION".equals(line)) {
32  					parsingHeaders = false;
33  				} else if ("EOF".equals(line)) {
34  
35  				} else if (parsingHeaders) {
36  					final String[] strings = line.split(": ", 2);
37  					attributes.put(strings[0], strings[1]);
38  				} else {
39  					final String[] strings = line.split("\\s");
40  					cities.add(new Position(Double.parseDouble(strings[1]), Double.parseDouble(strings[2])));
41  				}
42  
43  			}
44  		}
45  		return new TSPLIBProblem(attributes, cities);
46  	}
47  }