public void runExperiments(String controller) {
        speedOutput = new StringBuffer();
        
        for (int i = 0; i < 40; i+=10) {
            obstaclePercentage = i;
            
            for (int j = 0; j < numCourses; ++j) {
                if (i != 0) {
                    p.obstaclePath = inputPath + "course_" + i + "_" + j + ".txt";
                } else {
                    p.obstaclePath = null;
                }
                
                System.out.println(p.obstaclePath);
                long startTime = System.currentTimeMillis();
                for (int k = 0; k < numRuns; ++k) {
                    System.out.println("Course " + i + " Run " + j + " Seed " + seed);
                    
                    p.seed = seed++;
                    if (controller.equals("KTRobot")) {
                        KTRobot.wall = speed;
                    }
                    
                    String prefix = controller + " WallSpeed " + speed + " Pct " + i + " Course " + j + " Run " + k + " ";
                    runExperiment(prefix);
                }
                long endTime = System.currentTimeMillis();
                
                double runningTime = endTime - startTime;
                System.out.println("ExperimentTime " + (runningTime / (double) (numCourses*numRuns)));
                writeResults(controller, i);
            }
        }
    }