public static void main(String[] args) {
    // Read out command line arguments
    processInputArguments(args);

    switch (mode) {
      case All:
        // Runs the given algorithms on all test sets in the given folder (recursively)
        TestRunner runner = new TestRunner(dataFilename, "output.txt", 10, toRun);
        runner.runTests();
        break;
      case Single:
        // From the dataset file, read out the Graph object
        IGraph G = GraphReader.readGraphFromFile(dataFilename);
        // Run the algorithm
        if (algorithm == Algorithm.Optimal) runOptimal(G);
        else runAlgorithm(G);
        break;
      case Generate:
        // Generates "instanceCount" new datasets with "n" vertices with average degree "avgDegree"
        String resultDir = dataDirectory + "generated" + File.separator;
        ProblemInstanceGenerator.generateWeightedInstances(
            instanceCount, resultDir, n, avgDegree, minWeight, maxWeight);
        break;
    }
    System.out.println("Done!");
  }