So here is what we did, we invented a pv power plant at a location in Arizona and created some clear sky irradiance for three days in 2016. Then we use pvlib to simulate our imaginary plant using this irradiance data. Our goal is to use the result of the simulation and pretend it's measurement data. Then we forget our power plant parameters and try to find them again by using genetic optimization, specifically we use the deap python package.
Plotting data in more than three dimensions is tricky. Our power plants are defined by four variables (module, inverter, surface tilt angle and surface azimuth angle), which is why we choose radar charts as a way to plot them.
We also hoped to plot entire populations of possible pv plants in a single radar chart and then use multiple charts as a way to visualize the genetic optimization process. We choose 100 possible module and inverter types and 100 tilt and azimuth angles. The tilt angles range from 15° to 45° and for the azimuth angle we assumed to know that the plant is oriented south-ish, therefore we discretized the range from 160° to 200° into 100 parts. We did this so our radar charts can share the same axis (having 100 discrete states). Here is what our imaginary ground truth power plant looks like:
After running the optimization we have 10 generations that converged to an optimum. Since genetic optimization does not guarantee a global optimum even for convex problems, we don't know if it is the best possible solution.
We can look at both how the best possible solution and the population as a whole has evolved over time using line/loss plots and our radar charts (here the generations 0, 2, 4, 6 and 9).
We did everything in a jupyter notebook where we also explain a bit the implementation details regarding the deap library.







Keine Kommentare:
Kommentar veröffentlichen