public double calculateEnergyConsumptionEP(SoftwareSystem system, FunctionalRequirement functionalRequirement, SequenceAlternative sequenceAlternative) {
		double consumption = 0;
		system.getActuallyUsedHardwareSets().clear();
		for (Message message : sequenceAlternative.getMessages()) {
			double componentConsumption = calculateComponentConsumptionEP(message.getReceiver());
			consumption += componentConsumption;
			if (usesNetwork(message, system)) {
				double networkConsumption = calculateNetworkConsumptionEP(message);
				consumption += networkConsumption;
			}
		}
		for (HardwareSetAlternative hardwareSetAlternative : system.getHardwareSystem().getHardwareSetAlternatives())
			if (system.getActuallyUsedHardwareSets().contains(hardwareSetAlternative.getHardwareSet())) {
				double consumptionOther = ((Other) hardwareSetAlternative.getOtherAlternative().getHardwareComponents().toArray()[0]).getEnergyPoints();
				double consumptionPlatform = ((Platform) hardwareSetAlternative.getPlatformAlternative().getHardwareComponents().toArray()[0]).getEnergyPoints();
				consumption += consumptionOther + consumptionPlatform;
			}
		consumption *= functionalRequirement.getCoefficient();
		return consumption;
	}