System.err.println("Estimated total utilization: " + Utils.asPercent(totalUtil));
System.out.println("Estimated total utilization: " + Utils.asPercent(totalUtil));
    public static void printTileWork(HashMap partitions, WorkEstimate work, int numTiles) {	int[] tileWork = new int[numTiles];	String[] tileContents = new String[numTiles];	for (int i=0; i<numTiles; i++) {	    tileContents[i] = "";	}	int maxWork = -1;	for (Iterator it = partitions.keySet().iterator(); it.hasNext(); ) {	    Object node = it.next();	    int tile = ((Integer)partitions.get(node)).intValue();	    if (tile == -1) { continue; }	    tileContents[tile] += "  " + ((SIROperator)node).getName() + "\n";	    if (node instanceof SIRFilter) {		// for filter, add work estimate of filter		tileWork[tile] += work.getWork((SIRFilter)node);	    } else if (node instanceof SIRJoiner) {		// for joiners, add JOINER_WORK_ESTIMATE		tileWork[tile] += ILPPartitioner.JOINER_WORK_ESTIMATE;	    }	    // keep track of max work	    if (tileWork[tile]>maxWork) {		maxWork = tileWork[tile];	    }	}	// print each tile's work	double totalUtil = 0;	for (int i=0; i<tileWork.length; i++) {	    double util = ((double)tileWork[i]) / ((double)maxWork);	    totalUtil += util / ((double)tileWork.length);	    System.err.println("tile " + i + " has work:\t" + tileWork[i] 			       + "\t Estimated utilization:\t" + Utils.asPercent(util));	    System.err.print(tileContents[i]);	}	System.err.println("Estimated total utilization: " + Utils.asPercent(totalUtil));    }