public static void main(String[] args) throws Exception {
		StaticDynamicUncertaintyULHSolver solver = new StaticDynamicUncertaintyULHSolver();
		StaticDynamicUncertaintyWithADIULHSolver solverADI = new StaticDynamicUncertaintyWithADIULHSolver();
		
		PrintStream filePrintStream = new PrintStream(new File("results/SetupPatternExperiment6.csv"));
		PrintStream[] printStreams = new PrintStream[2];
		printStreams[0] = System.out;
		printStreams[1] = filePrintStream;
		MultiPrintStreamWrapper out = new MultiPrintStreamWrapper(printStreams);
		
		out.println("s;Lagerkosten ohne ADI; Rüstkosten ohne ADI; #Rüstoperationen ohne ADI; Lagerkosten mit ADI; Rüstkosten mit ADI; #Rüstoperationen mit ADI; Rüstmuster gleich?");
		
		AbstractStochasticLotSizingProblem problem;
		AbstractStochasticLotSizingSolution solution;
		AbstractStochasticLotSizingSolution solutionADI;
		DecimalFormat oneDecimal = new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.US));
		
		//Fixed problem parameters
		int T = 20;
		double cv = 0.8;
		float alpha = .95f;
		TriangleDivisionNormalDistributedOrdersGenerator orderGenerator = new TriangleDivisionNormalDistributedOrdersGenerator(8, 0);		
		
		for(double setupCost = 10; setupCost < 13000; setupCost += 10){
			
			out.print(setupCost);
			
			//Constant 100
			problem = ConstantNormalDistributedProblemGenerator.generate(T, 100, cv, setupCost, alpha, orderGenerator);
			solution = solver.solve(problem);
			solutionADI = solverADI.solve(problem);
			out.print(";"+solution.getTotalInventoryCosts(problem)+";"+solution.getTotalSetupCosts(problem)+";"+solution.getNumberOfSetupPeriods());
			out.print(";"+solutionADI.getTotalInventoryCosts(problem)+";"+solutionADI.getTotalSetupCosts(problem)+";"+solutionADI.getNumberOfSetupPeriods());
			out.print(";"+ArraysUtils.deepEquals(solution.getSetupPattern(), solutionADI.getSetupPattern()));
						
			out.println();
		}
		
		filePrintStream.flush();
		out.close();
	}