public static ExchangeUnitAuxiliaryInputStatistics getAuxiliaryStatisticsWithVPra(KepProblemData<ExchangeUnit,DonorEdge> kepProblemData){
		AuxiliaryInputStatistics<ExchangeUnit,DonorEdge> regular = getAuxiliaryStatistics(kepProblemData);
		List<Donor> donors = new ArrayList<Donor>();
		List<Receiver> receivers = new ArrayList<Receiver>();
		for(ExchangeUnit unit: kepProblemData.getGraph().getVertices()){
			for(Donor donor: unit.getDonor()){
				donors.add(donor);
			}
			if(!kepProblemData.getRootNodes().contains(unit)){
				receivers.add(unit.getReceiver());
			}
		}		
		ImmutableMap.Builder<Receiver,Double> builder = ImmutableMap.<Receiver,Double>builder();
		for(Receiver receiver: receivers){
			int count = 0;
			for(Donor donor: donors){
				if(!receiver.getTissueTypeSensitivity().isCompatible(donor.getTissueType())){
					count++;
				}
			}
			builder.put(receiver, 100*count/(double)donors.size());
		}
		return new ExchangeUnitAuxiliaryInputStatistics(
				regular.getDonorPowerPostPreference(), 
				regular.getReceiverPowerPostPreference(),
				builder.build()) ;
	}
public static ExchangeUnitAuxiliaryInputStatistics getAuxiliaryStatisticsWithVPra(KepProblemData<ExchangeUnit,DonorEdge> kepProblemData){
		AuxiliaryInputStatistics<ExchangeUnit,DonorEdge> regular = getAuxiliaryStatistics(kepProblemData);
		List<Donor> donors = new ArrayList<Donor>();
		List<Receiver> receivers = new ArrayList<Receiver>();
		for(ExchangeUnit unit: kepProblemData.getGraph().getVertices()){
			for(Donor donor: unit.getDonor()){
				donors.add(donor);
			}
			if(!kepProblemData.getRootNodes().contains(unit)){
				receivers.add(unit.getReceiver());
			}
		}		
		ImmutableMap.Builder<Receiver,Double> builder = ImmutableMap.<Receiver,Double>builder();
		for(Receiver receiver: receivers){
			int count = 0;
			for(Donor donor: donors){
				if(!receiver.getTissueTypeSensitivity().isCompatible(donor.getTissueType())){
					count++;
				}
			}
			builder.put(receiver, 100*count/(double)donors.size());
		}
		return new ExchangeUnitAuxiliaryInputStatistics(
				regular.getDonorPowerPostPreference(), 
				regular.getReceiverPowerPostPreference(),
				builder.build()) ;
	}
public static exchangeunitauxiliaryinputstatistics getauxiliarystatisticswithvpra(kepproblemdata<exchangeunit,donoredge> kepproblemdata){ auxiliaryinputstatistics<exchangeunit,donoredge> regular = getauxiliarystatistics(kepproblemdata); list<donor> donors = new arraylist<donor>(); list<receiver> receivers = new arraylist<receiver>(); for(exchangeunit unit: kepproblemdata.getgraph().getvertices()){ for(donor donor: unit.getdonor()){ donors.add(donor); } if(!kepproblemdata.getrootnodes().contains(unit)){ receivers.add(unit.getreceiver()); } } immutablemap.builder<receiver,double> builder = immutablemap.<receiver,double>builder(); for(receiver receiver: receivers){ int count = 0; for(donor donor: donors){ if(!receiver.gettissuetypesensitivity().iscompatible(donor.gettissuetype())){ count++; } } builder.put(receiver, 100*count/(double)donors.size()); } return new exchangeunitauxiliaryinputstatistics( regular.getdonorpowerpostpreference(), regular.getreceiverpowerpostpreference(), builder.build()) ; }