public static void Worker()
	{	
		try{ 
			long 		checkedSchedule = 0;
			// The loop beginning time.
			final long BeginTime = System.currentTimeMillis();
			while(true){
				//wait for getting schedule data to vote
				final ObjectItemBuf<Range> rangeBuf = ObjectBuf.buffer();
				world.receive(0, rangeBuf);
				final Range range = rangeBuf.item;
				if(range == null) break;

				// Local schedule Generator 
				final Generator scheduleGenerator = Generator.create(range.lb(),range.ub());

				while(scheduleGenerator.hasNext())
				{
					final long CurrentTime = System.currentTimeMillis();
					if((CurrentTime - BeginTime) > TIME_LIMIT )
					{
						final Long lastData = checkedSchedule;
						world.send(0, WORK_DONE, ObjectBuf.buffer(lastData));
						return;
					}
					++checkedSchedule;
					final Schedule curSchedule = scheduleGenerator.next();
					Ranker.rank(curSchedule);
					if(popularSchedule == null){
						popularSchedule = curSchedule;
						continue;
					}
					if(curSchedule.getRank() < popularSchedule.getRank()){
						popularSchedule = curSchedule;
					}
				}	
				final Long tag = FINISH_PIECE;
				world.send(0, WORK_DONE, ObjectBuf.buffer(tag));
			}
		}
		catch(final IOException e)
		{

		}
	}