void chooseMaxMinMakespan() {
		/* Find the min makespan in one class, and then find the max one */
		double tmpMinMakespan = Double.MAX_VALUE;
		double tmpMaxMinMakespan = -1;

		int iTmpMinClass = -1;
		int iTmpMinSite = -1;
		int iTmpMinCPU = -1;

		iMinClass = -1;
		iMinSite = -1;
		iMinCPU = -1;

		for (int i = 0; i < iClass; i++) {
			for (int j = 0; j < iSite; j++) {
				for (int k = 0; k < iaCPU[j]; k++) {
					if (tmpMinMakespan > dmMinMakespan[i][j][k]	
							&& getAvailableStorage(j, dmMinminTime[j][k]) >= daStorageInput[i] + daStorageOutput[i]) {
						iTmpMinClass = i;
						iTmpMinSite = j;
						iTmpMinCPU = k;
						tmpMinMakespan = dmMinMakespan[i][j][k];
					}
				}
			}
			if (tmpMaxMinMakespan < tmpMinMakespan) {
				iMinClass = i;
				iMinSite = iTmpMinSite;
				iMinCPU = iTmpMinCPU;
				tmpMaxMinMakespan = tmpMinMakespan;
			}
			tmpMinMakespan = Double.MAX_VALUE;
			iTmpMinClass = -1;
			iTmpMinSite = -1;
			iTmpMinCPU = -1;

		}

		if (iMinCPU < 0 & iMinSite < 0) {
			System.out.println("Fail!");
			return;
		}
		updateStorage(tmpMinMakespan,iMinSite);
	}