private void runExperiment(String prefix) {
        Environment.inst().init(p);
        
        int t;
        boolean running = true;
        for (t = 0; t < 150000 && running; ++t) {
            Environment.inst().timeStep();
            if (!Environment.inst().continueGoing()) {
                running = false;
            }
            
            //v.update();
            //if (t%1000 == 0) {
            //    pctOutput.append(prefix + " Time " + t + " PctFinished " + Environment.inst().pctRobotsDone() + "\n");
            //}
        }
        //pctOutput.append(prefix + " Time " + t + " PctFinished " + 1.0);
        if (t == 150000) {
            BufferedImage bi = ImageSaver.inst().getPlainImage(1000, 5000);
            ImageSaver.inst().saveImage(bi, outputPath + p.robotType + "_" + seed + "_" + p.n + ".jpeg");
        }
        
        Coverage c = Environment.inst().getCoverage();

        output.append(prefix);

        if (c.getBehindCount() == 0) {
            pctObstacle.append("0");
            output.append("Behind 0 ");
        } else {
            pctObstacle.append(c.getBehindPct()*100.0 + " ");
            output.append("Behind " + c.getBehindPct()*100.0 + " ");
        }
        

        pctTotal.append(c.getCoveredPct()*100 + " ");
        output.append("Total " + c.getCoveredPct()*100 + " ");
        
        time.append(t + " ");
        output.append("Time " + t + "\n");
    }