Example #1
0
    def average_carbon_intensity(self, pred_time_dur=None):
        if pred_time_dur is not None or not self.carbon_intensities:
            ci = intensity.carbon_intensity(self.logger,
                                            time_dur=pred_time_dur)
            if not ci.success:
                # Unable to retrieve forecasted CO2, fallback on current.
                ci.carbon_intensity = self.carbon_intensities[
                    -1].carbon_intensity
        else:
            location = self.carbon_intensities[0].g_location.address
            intensities = [
                ci.carbon_intensity for ci in self.carbon_intensities
            ]
            avg_ci = np.mean(intensities)
            msg = (f"Average carbon intensity during training was {avg_ci:.2f}"
                   f" gCO2/kWh at detected location: {location}.")
            self.logger.info(
                "Carbon intensities (gCO2/kWh) fetched every "
                f"{self.update_interval} s at detected location {location}: "
                f"{intensities}")
            ci = intensity.CarbonIntensity(carbon_intensity=avg_ci,
                                           message=msg,
                                           success=True)

        self.logger.info(ci.message)
        self.logger.output(ci.message, verbose_level=2)
        return ci
Example #2
0
    def average_carbon_intensity(self):
        if not self.carbon_intensities:
            ci = intensity.carbon_intensity(self.logger)
            self.carbon_intensities.append(ci)

        # Ensure that we have some carbon intensities.
        assert (self.carbon_intensities)

        location = self.carbon_intensities[-1].address
        intensities = [ci.carbon_intensity for ci in self.carbon_intensities]
        avg_intensity = np.mean(intensities)
        msg = (
            f"Average carbon intensity during training was {avg_intensity:.2f}"
            f" gCO2/kWh at detected location: {location}.")
        avg_ci = intensity.CarbonIntensity(carbon_intensity=avg_intensity,
                                           message=msg,
                                           success=True)

        self.logger.info(
            "Carbon intensities (gCO2/kWh) fetched every "
            f"{self.update_interval} s at detected location {location}: "
            f"{intensities}")
        self.logger.info(avg_ci.message)
        self.logger.output(avg_ci.message, verbose_level=2)

        return avg_ci
Example #3
0
    def carbon_intensity(self, g_location, time_dur=None):
        carbon_intensity = intensity.CarbonIntensity(g_location=g_location)

        if time_dur is None:
            ci = self._emission_current()
        else:
            ci = self._emission_prognosis(time_dur=time_dur)
            carbon_intensity.is_prediction = True

        carbon_intensity.carbon_intensity = ci

        return carbon_intensity
Example #4
0
    def carbon_intensity(self, g_location, time_dur=None):
        carbon_intensity = intensity.CarbonIntensity(g_location=g_location)

        try:
            ci = self._carbon_intensity_by_location(lon=g_location.lng,
                                                    lat=g_location.lat)
        except:
            ci = self._carbon_intensity_by_location(
                country_code=g_location.country)

        carbon_intensity.carbon_intensity = ci

        return carbon_intensity
Example #5
0
    def carbon_intensity(self, g_location, time_dur=None):
        carbon_intensity = intensity.CarbonIntensity(g_location=g_location)

        if time_dur is not None:
            carbon_intensity.is_prediction = True

        try:
            postcode = g_location.postal
            ci = self._carbon_intensity_gb_regional(postcode,
                                                    time_dur=time_dur)
        except:
            ci = self._carbon_intensity_gb_national(time_dur=time_dur)

        carbon_intensity.carbon_intensity = ci

        return carbon_intensity