public void generateAggregatedReport()
	{
	
		long start,end;
		
		start = System.currentTimeMillis();
		
		File reportFile = new File(reportFileName);
		PrintWriter reportOut=null;
		
		boolean once= true;
		try 
		{
			reportOut = new PrintWriter(reportFile);
		} 
		catch (FileNotFoundException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//System.out.println(timeStamp );
		reportOut.println("Report Generation Time , "+timeStamp);
		
		for(int instanceNo=0;instanceNo<instanceFiles.length;instanceNo++)
		{
			ProblemInstance problemInstance = createProblemInstance(instanceFiles[instanceNo], singleOutputFileName);
			
			Scheme6 ga = new Scheme6(problemInstance);
			
			if(once)
			{
				once=false;
				reportOut.format("Number Of Generation, Population Size, Offspring Population Size, LoadPenalty, RouteTime Penalty\n");
				reportOut.format("%d, %d, %d, %f, %f\n",ga.NUMBER_OF_GENERATION,ga.POPULATION_SIZE,ga.NUMBER_OF_OFFSPRING,loadPenaltyFactor,routeTimePenaltyFactor);
				reportOut.println();
				
				reportOut.println();
				reportOut.format("Instance Name, Min, Avg, Max, Feasible \n");

			}
			
			double min = 0xFFFFFF;
			double max = -1;
			double sum = 0;
			double avg;
			int feasibleCount=0;
	
			for(int i=0; i<runSize; i++)
			{			
				Individual sol = ga.run();
				
				if(sol.isFeasible==true)
				{
					feasibleCount++;
				}
				sum += sol.costWithPenalty;
				if(sol.costWithPenalty>max) max = sol.costWithPenalty;
				if(sol.costWithPenalty<min) min = sol.costWithPenalty;
				
					
			}
			avg = sum/runSize;
		
			reportOut.format("%s, %f, %f, %f, %d \n",instanceFiles[instanceNo],min,avg,max,feasibleCount);
			reportOut.flush();
			System.out.format("%s, %f, %f, %f, %d \n",instanceFiles[instanceNo],min,avg,max,feasibleCount);
		}
		
		end= System.currentTimeMillis();
		
		long duration = (end-start) / 1000;
		long minute =  duration/ 60;
		long seconds = duration % 60;
		
		reportOut.println("\nELAPSED TIME : " + minute+ " minutes "+seconds+" seconds");
		reportOut.flush();
		reportOut.close();
	}