@Override
	public void checkRequirements() throws WrongConfigurationException {
		// Devo utilizar as estratégias indicadas
		// pelo arquivo xml de conf.

		this.statistic = new Statistics(this.ID);

		if (!(reliabilityModel instanceof ReliableDelivery)) {
			// os nodos devem iniciar com entrega confiável

			this.reliabilityModel = new ReliableDelivery();
		}

		try {
			// Set o protocolo utilizado no algoritmo
			// caso o protocolo informado não esteja implementado
			// será utilizado o protocolo sinkBetweenness por default

			String protocolPraram = "";
			protocolPraram = Configuration
					.getStringParameter("ConfSimulation/Protocol");

			boolean activeAggregation = false;
			activeAggregation = Configuration
					.getBooleanParameter("ConfSimulation/Protocol/ActiveAggregation");

			double timeInAgreggation = 0.001;
			timeInAgreggation = Configuration
					.getDoubleParameter("ConfSimulation/Protocol/timeInAggregation");

			protocol = chosenProtocol(protocolPraram, activeAggregation,
					timeInAgreggation);

		} catch (CorruptConfigurationEntryException e1) {
			e1.printStackTrace();
		}

		try {
			// Set a metrica utilizada no algoritmo
			// se a métrica não foi implementada será utilizada
			// a métrica hop por default

			String metricParam = "";
			metricParam = Configuration
					.getStringParameter("ConfSimulation/Metric/strategy");

			strategy = chosenStrategy(metricParam);
		} catch (CorruptConfigurationEntryException e) {
			e.printStackTrace();
		}

	}