public double[] calculateEnergyConsumptionW(SoftwareSystem system, FunctionalRequirement functionalRequirement, SequenceAlternative sequenceAlternative) {
		double consumption[] = { 0, 0 };
		for (HardwareSet hardwareSet : system.getActuallyUsedHardwareSets())
			system.initializeTime(hardwareSet);
		system.getActuallyUsedHardwareSets().clear();

		for (Message message : sequenceAlternative.getMessages()) {
			double[] componentConsumption = calculateComponentConsumptionW(message.getReceiver(), system);
			if (componentConsumption[1] != -1) {
				consumption[1] += componentConsumption[1];
				consumption[0] += componentConsumption[0];
			}

			if (usesNetwork(message, system)) {
				double[] networkConsumption = calculateNetworkConsumptionW(message, system);
				if (networkConsumption[1] != -1) {
					consumption[1] += networkConsumption[1];
					consumption[0] += networkConsumption[0];
				} else
					project.setWReliable(false);
			}
		}
		consumption[1] += calculatePlatformAndOtherConsuptionsW(system);

		consumption[0] *= functionalRequirement.getCoefficient();
		consumption[1] *= functionalRequirement.getCoefficient();
		return consumption;
	}