private static void readTaskSet()
	{	
		try 
		{
			BufferedReader br = new BufferedReader(new FileReader(inputFile));
			
			String line = "";
			
			/*Skip first line*/
			br.readLine();
			
			while((line = br.readLine()) != null)
			{
				/*split line on spaces*/
				String[] tokens = line.split("[ \t]+");
				
				if(tokens.length < 5)
					throw new IOException();
				
				int taskId = Integer.parseInt(tokens[0]);
				
				int arrivalTime = Integer.parseInt(tokens[1]);
				int execTime = Integer.parseInt(tokens[2]);
				int deadline = Integer.parseInt(tokens[3]);
				int period = Integer.parseInt(tokens[4]);
				
				Task t = new Task(taskId, arrivalTime, execTime, deadline, period);
				
				inputTaskSet.add(t);
				
				/*get precedence*/
				for(int i = 5; i < tokens.length; i++)
					t.setPrecedence(Integer.parseInt(tokens[i]));
					
			}
			
			Collections.sort(inputTaskSet, new Comparator<Task>(){
				public int compare(Task t1, Task t2)
				{
					return t1.getArrivalTime() - t2.getArrivalTime();
				}
			});
			
			br.close();
		} 
		
		catch (FileNotFoundException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		catch (IOException e) 
		{
			// TODO Auto-generated catch block
			System.out.println("Invalid input");
			e.printStackTrace();
		}
		
		/*check if periodic and generate task set for a hyperperiod*/
		if(inputTaskSet.get(0).getPeriod() > 0)
		{
			int hyperPeriod = calculateHyperPeriod();
			
			LinkedList<Task> tempTaskSet = new LinkedList<Task>();
			
			int firstArrivalTime = inputTaskSet.peek().getArrivalTime();
			
			for(int i = 0; i < inputTaskSet.size(); i++)
			{
				Task t = inputTaskSet.get(i);
				int taskPeriod = t.getPeriod();
				int nextArrTime = t.getArrivalTime();
				int nextDeadline = t.getDeadline();
				int instance = 0;
				
				while(nextArrTime < hyperPeriod + firstArrivalTime)
				{
					Task newInstance = new Task(t);
					
					newInstance.setName(t.getName() + " instance " + instance);
					newInstance.setArrivalTime(nextArrTime);
					newInstance.setDeadline(nextDeadline);
					tempTaskSet.add(newInstance);
					
					nextArrTime += taskPeriod;
					nextDeadline += taskPeriod;
					instance++;
				}
			}
			
			Collections.sort(tempTaskSet, new Comparator<Task>(){
				public int compare(Task t1, Task t2)
				{
					return t1.getArrivalTime() - t2.getArrivalTime();
				}
			});
			
			inputTaskSet = tempTaskSet;
		}
	}