pvfit5 — estimate SDM parameters at Standard Conditions from datasheet data using DEAP + pvlib #2738
Replies: 3 comments 5 replies
-
|
Hi Valerio, thanks for sharing information about this resource. To clarify, you write "the five parameters of the single-diode model" but a single-diode model (e.g., CEC) usually has more parameters than the five reference values for photocurrent, saturation current, shunt resistance, series resistance and diode quality factor. For the CEC model, there's also bandgap and its temperature coefficient, and a factor that is combined with the short-circuit temperature coefficient. It appears to me that users supply these other parameters and they are imposed on the estimation of the five reference parameters. Is that accurate? |
Beta Was this translation helpful? Give feedback.
-
|
Hi Valerio, Thanks for publishing and starting the discussion! Maybe the answer to my question is in your paper (which I intend to read later) but I was a bit puzzled by your objective function: It seems you are not trying to aim for the correct Vmp and Imp, but only their product. Why is that? Hopefully they match of course, but I don't think they always will. On your graphical output it might be a good idea to show both points, datasheet and fitted. That way the user can be alerted to any discrepancies. |
Beta Was this translation helpful? Give feedback.
-
|
Hi. The objective function shown in the paper is a simplified description
of the earlier version. The current implementation in pvfit5 actually uses
a weighted multi-objective that includes Vmp and Imp separately:
E = 5·e_Voc + e_Isc + e_Vmp + 15·e_Imp + 0.3·stationarity_residual
So Vmp and Imp are individually targeted — not just their product. The
heavy weight on Imp (15×) reflects the fact that Imp is typically the
hardest parameter to match precisely with the single-diode model.
On top of that, there's a stationarity constraint that checks dP/dV ≈ 0 at
the datasheet Vmp. This is a physically meaningful condition: at the true
maximum power point, the power derivative must vanish. It acts as an
additional anchor ensuring the fitted MPP lands at the right voltage. The
output summary already reports Vmp(sim) vs Vmp* and Imp(sim) vs Imp*
individually, so the user can immediately spot any discrepancy.
Regarding the plot — that's a really good suggestion! Icould add the
fitted (Vmp_sim, Imp_sim) point alongside the datasheet point on Graph 2,
so any mismatch is immediately visible.
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi everyone,
I'd like to share pvfit5, a Python package I developed for estimating the five parameters of the single-diode model at STC,
using only commercial datasheet values (Voc, Isc, Pmax, Vmp, Imp).
The approach uses a genetic algorithm (DEAP) to minimise the sum of relative errors on Voc, Isc, and Pmp. The I–V curve is
reconstructed via pvlib.pvsystem.calcparams_cec and the Lambert W single-diode solver.
I validated the tool against 13,000+ modules from the CEC database — the method and results are described in an Open Access
paper on Energy Reports: 10.1016/j.egyr.2026.109280
pip install pvfit5
pvfit5 --voc 36.3 --isc 8.19 --pmax 218.95 --vmp 29.0 --imp 7.55
It also works as a library:
from pvfit5.find_pv_parameters import fit_parameters, PVModuleData, STC, GAConfig
results, summary = fit_parameters(
PVModuleData(voc=36.3, isc=8.19, pmax=218.95, vmp=29.0, imp=7.55),
STC(), GAConfig()
)
Batch tools included: pvfit5-batch runs the algorithm on CEC modules, pvfit5-analysis and pvfit5-parametric produce
statistical analysis and per-technology breakdowns.
Would love to hear feedback from the pvlib community. BSD-3-Clause licensed.
Beta Was this translation helpful? Give feedback.
All reactions