Source code: [GitHub]

The project

Photovoltaic (PV) energy systems are receiving increasing attention, given their relative ease of installation, with 3rd generation technologies promising even simpler fabrication processes and less-intrusive installation possibilities. Therefore, methods for predicting the PV energy output are important to balance the production of other types of renewable sources and avoid wasting energy, with approaches based on machine learning models being especially studied in recent applications. In the case of new-generation cells, limited data is available to train such models, making the use of transfer learning a viable approach to increase prediction accuracy. However, no work in the literature has considered a transfer learning approach studying how much knowledge can be transferred between 2nd and 3rd generation PV technologies. In this paper, we propose the first approach in the literature based on machine learning and transfer learning for the PV energy prediction, in the case of new-generation PV technologies for which limited training data is available. We tested our method on data collected from several locations throughout the world, with results confirming the validity of the approach.

The method

Related publication

  • A. Genovese, V. Bernardoni, V. Piuri, F. Scotti, and F. Tessore, "Photovoltaic energy prediction for new-generation cells with limited data: A transfer learning approach", in Proc. of the 2022 IEEE Int. Instrumentation and Measurement Technology Conf. (I2MTC 2022), Ottawa, ON, Canada, May 16-19, 2022, pp. 1-6. ISBN: 978-1-6654-8360-5. [DOI: 10.1109/I2MTC48687.2022.9806492] [PDF] [BibTex entry]


@InProceedings {i2mtc22,
    author = {A. Genovese and V. Bernardoni and V. Piuri and F. Scotti and F. Tessore},
    booktitle = {Proc. of the 2022 IEEE Int. Instrumentation and Measurement Technology Conf. (I2MTC 2022)},
    title = {Photovoltaic energy prediction for new-generation cells with limited data: A transfer learning approach},
    address = {Ottawa, ON, Canada},
    pages = {1-6},
    month = {May},
    day = {16-19},
    year = {2022},
    note = {978-1-6654-8360-5}



Source code: [GitHub]

PVLib functions

Solar Position (11–16):
solpos = pvlib.solarposition.get_solarposition(time, latitude, longitude, altitude, temperature, pressure)

Extraterrestrial radiation (17):
dni_extra = pvlib.irradiance.get_extra_radiation(day)

Pressure features (18–20):
airmass = pvlib.atmosphere.get_relative_airmass(solpos)
pressure = pvlib.atmosphere.alt2pres(altitude)
am_abs = pvlib.atmosphere.get_absolute_airmass(airmass, pressure)

Incidence (21):
aoi = pvlib.irradiance.aoi(surface_tilt, surface_azimuth, solpos)

Irradiance (22–26):
total_irradiance = pvlib.irradiance.get_total_irradiance(surface_tilt, surface_azimuth, solpos, dni, ghi, dhi, dni_extra, model='haydavies')

Cell temperature (27):
cell_temperature = pvlib.temperature.sapm_cell(total_irradiance, temp_air, wind_speed, temperature_model_parameters)

Ground truth:
effective_irradiance = pvlib.pvsystem.sapm_effective_irradiance(total_irradiance, am_abs, aoi, module)
dc = pvlib.pvsystem.sapm(effective_irradiance, cell_temperature, module)
ac = pvlib.inverter.sandia(dc, inverter)


This work was supported in part by the Università degli Studi di Milano under project 3SUN. We thank the NVIDIA Corporation for the GPU donated.