private void refreshMonLocsSepPopSickmons() {
		double numSickMons = this.getAlpha()*this.numMonitors;
		double numPopMons = this.numMonitors - numSickMons;
		monitoredLocs = new HashSet<Integer>(this.numMonitors);
		boolean allAtMin = this.calcWeights();
		
		// Add Sick monitors
		if (!allAtMin) {
			WeightedRandPerm perm = new WeightedRandPerm(rand, this.sickEdgeWeight);
			perm.reset(this.sickEdgeWeight.length);
			for (int i = 0; perm.hasNext() && i < numSickMons;) {
				int index = perm.next();
				if (this.sickEdgeWeight[index] != Double.MIN_VALUE 
						&& !this.isClosed(trackLocsByIndex[index], this.mySim.curTime)) {
					monitoredLocs.add(trackLocsByIndex[index]);
					i++;
				}
			}
		}
		
		// Add pop monitors
		WeightedRandPerm perm = new WeightedRandPerm(rand, this.popWeight);
		perm.reset(this.popWeight.length);
		for (int i = 0; perm.hasNext() && i < numPopMons;) {
			int index = perm.next();
			if (!monitoredLocs.contains(trackLocsByIndex[index]) 
					&& !this.isClosed(trackLocsByIndex[index], this.mySim.curTime)) {
				monitoredLocs.add(trackLocsByIndex[index]);
				i++;
			}
		}
	}