In the rapidly expanding field of solar energy, maintaining the efficiency of photovoltaic panels is critical. Dust, bird droppings, and other contaminants can reduce the power output of solar panels by 15% to 35%. Traditional manual cleaning methods are not only labor-intensive but also economically impractical for large-scale photovoltaic farms. Automated cleaning robots have therefore become essential. However, path planning for these robots remains challenging due to complex multi-region layouts, uneven dirt distribution, and stringent energy constraints. In this work, we propose an adaptive genetic algorithm (AGA) specifically designed for photovoltaic panel cleaning robots. Our approach achieves simultaneous optimization of path length, cleaning time, and energy consumption. Through comprehensive experiments in a scenario containing 100 stain points, the proposed AGA reduces path length by 20.24%, cleaning time by 21.99%, and energy consumption by 22.52% compared to a conventional genetic algorithm. These results demonstrate the effectiveness of AGA in multi-objective balancing and scenario adaptability, providing a practical solution for efficient and sustainable cleaning of solar panels.
1. Introduction
The global deployment of solar panels has increased dramatically over the past decade. For solar panels to operate at maximum efficiency, their surfaces must be kept clean. Accumulated dust, pollen, bird excrement, and industrial pollutants create non-uniform shading layers that reduce irradiance reaching the photovoltaic cells. Studies show that even a modest layer of dirt can cause a 15% to 35% drop in power generation. In arid and semi-arid regions, this effect is even more pronounced due to frequent dust storms and low rainfall.
Conventional cleaning methods for photovoltaic panels rely on manual labor using water, brushes, and detergents. While effective in small installations, this approach becomes prohibitively expensive and time-consuming for utility-scale solar plants that may span hundreds of hectares. Moreover, manual cleaning often uses large amounts of fresh water, which is scarce in desert areas where many solar farms are located. Thus, automated robotic cleaning systems are increasingly adopted. These robots can operate continuously, avoid human safety risks, and use water more efficiently or even operate dry.
Nevertheless, the path planning of solar panel cleaning robots is far from trivial. In a typical photovoltaic farm, panels are arranged in multiple sub-arrays with different orientations and tilt angles. The robot must traverse all areas that require cleaning, while avoiding obstacles such as support structures and electrical conduits. The distribution of contaminants is rarely uniform; some regions may have heavy dust accumulation while others are relatively clean. An optimal cleaning path should visit dirtier regions first, minimize total travel distance, reduce turning maneuvers, and stay within the robot’s energy budget. This problem can be modeled as a constrained multi-traveling salesman problem with additional physical constraints related to robot dynamics and cleaning efficiency.
Many studies have applied genetic algorithms (GA) to path planning problems because GA can perform global search without requiring gradient information. However, traditional GA often suffers from premature convergence and fixed search behavior, leading to suboptimal solutions in complex environments. In the context of solar panel cleaning, conventional GA frequently produces paths that are redundant, consume excessive energy, and require long operation times. To overcome these limitations, we propose an adaptive genetic algorithm (AGA) that dynamically adjusts crossover and mutation probabilities based on real-time environmental feedback. The key contributions of our work are:
- We design a dual-layer encoding mechanism that maps spatial coordinates and contamination levels into a chromosome structure, enabling efficient representation of cleaning sequences and continuous path parameters.
- We introduce an “adjacency–contamination” heuristic rule during population initialization, which prioritizes cleaning regions that are both nearby and heavily polluted, thus improving the initial solution quality.
- We develop a multi-objective fitness function that dynamically weights path length, cleaning time, and energy consumption according to scenario complexity and battery state, allowing the algorithm to adapt to different operating conditions.
- We implement adaptive probabilities for crossover and mutation, which are functions of contamination density and panel inclination, ensuring that the search process remains explorative in complex areas and exploitative in simple ones.
- We validate our method through extensive simulations and demonstrate superior performance compared to standard GA.
The remainder of this paper is organized as follows. Section 2 describes the mechanical design of the solar panel cleaning robot. Section 3 presents the proposed AGA framework, including scenario modeling, objective functions, and adaptive strategies. Section 4 reports experimental results and discusses the comparative performance. Finally, Section 5 concludes the paper.
2. Design of the Solar Panel Cleaning Robot
The cleaning robot used in this study is designed with a modular architecture to ensure adaptability to various photovoltaic array layouts, terrain profiles, and contamination types. The overall goal is to achieve “scenario adaptation, efficiency improvement, and energy reduction.” The robot consists of five main subsystems: a mobile platform, a cleaning module, a perception system, a control unit, and an energy management module. These subsystems work collaboratively to enable autonomous navigation, precise cleaning, and efficient operation.
2.1 Mobile Platform
We select a crawler-type (tracked) mobile platform for the robot. This design offers low ground pressure and high traction, allowing the robot to move stably on photovoltaic panels with varying tilt angles and to cross gaps between panel arrays with minimal slip risk. The track system is made of wear-resistant rubber, which avoids scratching the glass surface of solar panels. The chassis integrates four independent drive motors, providing differential steering capability. This allows the robot to perform point turns and smooth curved trajectories, which are essential for navigating complex array geometries.
2.2 Cleaning Module
The cleaning module employs a three-stage hybrid process: “pre-wetting, brush stripping, and vacuum recovery.” During the pre-wetting stage, water or a cleaning solution is sprayed onto the panel surface to loosen adhered particles. The second stage uses a rotating cylindrical brush to physically dislodge contaminants. The brush speed and water pressure are adjusted dynamically based on the type and density of dirt, which is determined by the perception system. Finally, a vacuum suction mechanism collects the dirty water and debris, leaving the panel clean and dry. This approach minimizes water consumption and prevents watermarks from drying on the glass.
The cleaning module is mounted on an articulated arm that can align the brush parallel to the panel surface irrespective of the robot’s orientation. This feature is critical when the robot transitions from one panel row to another with different tilt angles. The brush pressure is regulated by a force sensor in real time, ensuring effective cleaning without applying excessive force that could damage the panel.
2.3 Perception and Control
For environment perception, the robot is equipped with a high-resolution camera, an image processing unit, and an integrated navigation system. The camera captures images of the panel surface, and computer vision algorithms identify the location and density of stains. Simultaneously, an inertial measurement unit (IMU) and wheel odometry provide position and heading information. A GPS module is used for outdoor localization, though it may be unreliable under dense panel structures; therefore, a sensor-fusion approach combines GPS, IMU, and encoder data to achieve centimeter-level accuracy.
The control unit executes the path planning algorithm and generates motor commands for the tracks, brush, and vacuum system. It also monitors battery level and adapts the cleaning strategy accordingly. For instance, when the battery is low, the robot may reduce cleaning speed or choose a shorter return path, as encoded in the adaptive weight mechanism of our AGA.

3. Adaptive Genetic Algorithm for Path Planning
To address the limitations of conventional GA in solar panel cleaning scenarios, we propose an AGA that integrates environmental feedback into the genetic search process. The algorithm dynamically adjusts its parameters based on the current state of the population and the cleaning task. This section details the algorithm’s principles, the scenario modeling, the multi-objective fitness function, and the adaptive mechanisms.
3.1 Algorithm Principle
Standard genetic algorithms mimic natural selection by iteratively applying selection, crossover, and mutation operators to a population of candidate solutions. Each candidate solution is a chromosome representing a path. The fitness function evaluates how good a path is. Over generations, the population evolves toward better solutions. However, a fixed crossover and mutation probability often leads to premature convergence (if probabilities are too high) or slow search (if probabilities are too low).
The proposed AGA overcomes this issue by making crossover and mutation probabilities adaptive to the fitness landscape. The core idea is: individuals with fitness above the population average are subjected to low perturbation to preserve their good genes, while individuals below the average receive high perturbation to encourage diversity and avoid stagnation. Moreover, we adjust the probabilities based on the contamination density and physical constraints of the environment, as described later.
3.2 Scenario Modeling
We formalize the photovoltaic cleaning task as a constrained multi-traveling salesman problem. Let the entire cleaning area be divided into \(N\) discrete regions, each representing a cluster of solar panels requiring cleaning. Within each region, there may be multiple stain points, but the robot only needs to visit the region once to cover all stains in that region. The robot starts at a depot (or a recharging station) and must visit all regions exactly once before returning to the depot, while minimizing the total weighted cost.
We define the following notation:
- \(N\): number of cleaning regions
- \(P_i = (x_i, y_i)\): the entrance coordinate of region \(i\)
- \(D_i\): contamination density in region \(i\) (stains per unit area)
- \(\theta_i\): tilt angle of solar panels in region \(i\)
- \(d_{ij} = \sqrt{(x_i – x_j)^2 + (y_i – y_j)^2}\): Euclidean distance between region \(i\) and region \(j\)
- \(v\): average moving speed of the robot
- \(t_{\text{turn},i}\): time required to turn at region \(i\)
- \(t_{\text{clean},i}\): time to perform cleaning in region \(i\)
- \(e_{\text{move}}\): energy consumption per unit distance
- \(e_{\text{turn}}\): energy consumption per unit turning angle
- \(p_{\text{clean}}\): power of the cleaning device
The total path length \(L\) is the sum of Euclidean distances between consecutive regions in the cleaning order:
$$L = \sum_{i=1}^{m-1} \sqrt{(x_{i+1} – x_i)^2 + (y_{i+1} – y_i)^2} \tag{1}$$
where \(m\) is the number of path points (including the depot if applicable).
The total cleaning time \(T\) accounts for travel time, turning time, and cleaning operation time:
$$T = \sum_{i=1}^{m-1} \left( \frac{d_i}{v} + t_{\text{turn},i} + t_{\text{clean},i} \right) \tag{2}$$
where \(d_i\) is the distance between point \(i\) and point \(i+1\).
The total energy consumption \(E\) is estimated as:
$$E = \sum_{i=1}^{m-1} \left( e_{\text{move}} \cdot d_i + e_{\text{turn}} \cdot |\theta_{i+1} – \theta_i| + p_{\text{clean}} \cdot t_{\text{clean},i} \right) \tag{3}$$
where \(\theta_i\) and \(\theta_{i+1}\) are the heading angles of the robot at points \(i\) and \(i+1\), and \(|\theta_{i+1} – \theta_i|\) represents the absolute turning angle.
3.3 Multi-Objective Fitness Function
We combine the three objectives into a single scalar fitness function using dynamic weights. The weights are updated during the optimization process to reflect the relative importance of each objective under different conditions. For example, when the battery level is low, energy consumption becomes more heavily weighted; when time is critical, cleaning time is emphasized. The adaptive fitness function is defined as:
$$f = \frac{1}{\omega_1 \cdot C_{\text{loss}} + \omega_2 \cdot E + \omega_3 \cdot T} \tag{4}$$
In Equation (4), \(C_{\text{loss}}\) is the cleaning omission rate, defined as the fraction of stain points not covered by the planned path. The weights \(\omega_1, \omega_2, \omega_3\) are dynamically calculated based on environmental complexity and battery status:
$$\omega_1 = \alpha_1 \cdot \frac{D_{\text{max}} – \bar{D}}{D_{\text{max}}}, \quad \omega_2 = \alpha_2 \cdot \frac{B_{\text{current}}}{B_{\text{max}}}, \quad \omega_3 = \alpha_3 \cdot \frac{T_{\text{limit}}}{T_{\text{limit}} – T_{\text{elapsed}}}$$
Here \(D_{\text{max}}\) is the maximum contamination density, \(\bar{D}\) is the average contamination density, \(B_{\text{current}}\) and \(B_{\text{max}}\) denote the current and maximum battery capacities, \(T_{\text{limit}}\) is the allowable operation time, and \(T_{\text{elapsed}}\) is the time already spent. The coefficients \(\alpha_1, \alpha_2, \alpha_3\) are user-defined scaling factors.
3.4 Dual-Layer Encoding Mechanism
We propose a dual-layer encoding scheme to represent both the sequence of region visits and the continuous path parameters within each region. The upper-layer chromosome is an integer string of length \(N\), representing the order of region visits. For example, the string \((3, 1, 4, 2)\) means the robot cleans region 3 first, then region 1, then region 4, and finally region 2. The lower-layer chromosome is a set of continuous-value genes encoding the entry/exit coordinates and initial heading directions for each region. For region \(i\), these genes include:
- \(x_{\text{in},i}, y_{\text{in},i}\): entry point coordinates
- \(\phi_i\): heading angle when entering the region
The heading angle \(\phi_i\) is constrained to be compatible with the panel tilt angle \(\theta_i\) to ensure the cleaning brush remains in full contact with the panel surface. Specifically, the difference between the robot’s heading and the panel’s tilt direction must be within a safe range: \(|\phi_i – \theta_i| \lt \phi_{\text{max}}\).
3.5 Population Initialization with Heuristic Rules
We initialize the population by generating feasible paths that satisfy three hard constraints: complete coverage, obstacle avoidance, and tilt-angle compatibility. To promote high-quality initial solutions, we introduce an “adjacency-contamination” heuristic rule. The rule operates as follows:
- Sort all regions by contamination density in descending order.
- Construct a graph where each region is a node, and edges connect regions that are physically adjacent or within a specified distance threshold.
- Starting from the region with the highest contamination, assign it as the first node in the path.
- At each step, select the next region among the unvisited neighbors of the current region that has the highest contamination density. If no neighbor exists, choose the nearest unvisited region.
- Repeat until all regions are visited, then connect back to the depot.
This heuristic reduces the initial path length by encouraging the robot to clean nearby highly contaminated regions consecutively. It also explicitly integrates contamination information into the initial solution, which is a major advantage over random initialization.
3.6 Adaptive Crossover and Mutation Probabilities
In standard GA, crossover probability \(p_c\) and mutation probability \(p_m\) are constant. In our AGA, these probabilities are dynamically adjusted based on two factors: the contamination density of the local region and the tilt angle of the solar panels. Intuitively, areas with higher contamination require more exploration, so we increase the crossover probability to generate more diverse paths in those regions. Similarly, steeper panel tilt angles introduce more constraints, requiring stronger mutation to escape local optima.
We define the adaptive crossover probability as:
$$p_c = p_{c,\min} + \left( p_{c,\max} – p_{c,\min} \right) \cdot \frac{D_{\text{avg}}}{D_{\max}} \tag{5}$$
where \(D_{\text{avg}}\) is the average contamination density in the current region, and \(D_{\max}\) is the maximum contamination density over the entire scene. Here \(p_{c,\min} = 0.08\) and \(p_{c,\max} = 0.80\) are the minimum and maximum crossover probabilities, respectively, matching the range used in our experiments.
The adaptive mutation probability is defined as:
$$p_m = p_{m,\min} + \left( p_{m,\max} – p_{m,\min} \right) \cdot \left( \beta \cdot \frac{\theta_{\text{avg}}}{\theta_{\max}} + (1-\beta) \cdot \frac{D_{\text{avg}}}{D_{\max}} \right) \tag{6}$$
In Equation (6), \(\theta_{\text{avg}}\) is the average tilt angle of panels in the current region, \(\theta_{\max}\) is the maximum tilt angle in the scene, and \(\beta\) is a mutation factor set to 1 in our experiments. Thus the mutation probability is primarily driven by the panel tilt angle, which is consistent with the need to adjust paths on steep surfaces. The ranges are \(p_{m,\min} = 0.02\) and \(p_{m,\max} = 0.20\).
3.7 Local Path Refinement
In addition to the global genetic search, we apply a local path refinement step after each generation. This step adjusts the turning points and heading angles for regions with high tilt angles to ensure that the robot does not deviate from safe operating conditions. Specifically, for each region \(i\), if the heading angle \(\phi_i\) violates the tilt compatibility constraint, we project it to the nearest feasible angle. Furthermore, we use a simple smoothing operation to remove sharp turns that cause unnecessary energy consumption. The smoothing is performed only if it does not introduce collisions or miss cleaning points.
3.8 Termination Criterion
We set two termination conditions: (1) the maximum number of generations (300 in our experiments), and (2) a convergence criterion where the best fitness has not improved by more than 0.1% over 30 consecutive generations. This dual criterion allows the algorithm to stop early when convergence is reached, saving computational time.
4. Experiments and Results
To validate the effectiveness of the proposed AGA, we simulate a photovoltaic array with 10 distinct sub-regions containing a total of 100 randomly distributed stain points. The cleaning robot starts from a depot located at (0, 0). The dimensions of the cleaning field are 1000 cm by 400 cm. Each sub-region has a different tilt angle (ranging from 15° to 45°) and contamination density level. We compare the performance of the AGA with that of a standard genetic algorithm (GA) under identical computational budgets.
4.1 Parameter Setting
Table 1 summarizes the main parameters used in the experiments. The population size is set to 80, the number of generations is 300, crossover probability ranges from 0.08 to 0.80, mutation probability ranges from 0.02 to 0.20, and the mutation factor \(\beta = 1\). The robot speed \(v\) is 0.5 m/s, the turning time per 90° turn is 0.5 s, and the cleaning power is 120 W. Energy consumption per meter is 0.4 J/cm (or 40 J/m), and per degree of turning is 0.05 J/°.
| Parameter | Symbol | Value |
|---|---|---|
| Population size | \(N_p\) | 80 |
| Maximum generations | \(G_{\max}\) | 300 |
| Minimum crossover probability | \(p_{c,\min}\) | 0.08 |
| Maximum crossover probability | \(p_{c,\max}\) | 0.80 |
| Minimum mutation probability | \(p_{m,\min}\) | 0.02 |
| Maximum mutation probability | \(p_{m,\max}\) | 0.20 |
| Mutation factor | \(\beta\) | 1 |
| Robot speed | \(v\) | 0.5 m/s |
| Turning time per 90° | \(t_{\text{turn}}\) | 0.5 s |
| Cleaning power | \(p_{\text{clean}}\) | 120 W |
| Moving energy per cm | \(e_{\text{move}}\) | 0.4 J/cm |
| Turning energy per degree | \(e_{\text{turn}}\) | 0.05 J/° |
4.2 Comparative Results
We executed both the standard GA and the proposed AGA on the same test scenario. The standard GA used fixed crossover probability \(p_c = 0.8\) and mutation probability \(p_m = 0.1\). The AGA employed the adaptive probabilities defined in Equations (5) and (6). Each algorithm was run 10 times with different random seeds, and the average results are reported in Table 2.
| Metric | GA | AGA | Improvement (%) |
|---|---|---|---|
| Path length (cm) | 4164.26 | 3321.31 | 20.24 |
| Cleaning time (s) | 2375.62 | 1853.24 | 21.99 |
| Energy consumption (kJ) | 17.01 | 13.18 | 22.52 |
From Table 2, it is evident that the AGA exhibits substantial improvements in all three metrics. The path length is reduced by 20.24%, meaning the robot travels over 800 cm less on average. The cleaning time is reduced by 21.99%, which directly translates to higher operational throughput. The energy consumption is reduced by 22.52%, which is critical for battery-powered robots operating in remote photovoltaic stations. It is noteworthy that the improvements are relatively balanced across the three objectives, indicating that the adaptive mechanism successfully achieves multi-objective coordination rather than sacrificing one objective for another.
4.3 Convergence Behavior
We also analyzed the convergence behavior of both algorithms. The energy consumption versus iteration is plotted in a conceptual graph; however, since we do not include figures, we describe the trend. During the first 50 generations, both GA and AGA reduce energy consumption rapidly. However, GA tends to stagnate around generation 120, with minor fluctuations, while AGA continues to improve until approximately generation 220. The adaptive mutation and crossover rates help AGA escape local optima that trap the standard GA. The convergence-based termination criterion allowed AGA to stop at an average of 246 generations, whereas GA used the full 300 generations, indicating that AGA is not only more effective but also computationally efficient.
4.4 Impact of Adaptive Weights
To understand the contribution of dynamic weights in the fitness function, we conducted an ablation study where we fixed the weights to be equal (\( \omega_1 = \omega_2 = \omega_3 = 1/3\)). The results are presented in Table 3.
| Weight scheme | Path length (cm) | Cleaning time (s) | Energy (kJ) |
|---|---|---|---|
| Fixed equal weights | 3520.47 | 1988.56 | 14.77 |
| Dynamic weights (proposed) | 3321.31 | 1853.24 | 13.18 |
The dynamic weighting scheme improves all three metrics by roughly 5% to 6% compared to fixed weights. This improvement is because dynamic weights allow the algorithm to emphasize the most critical objective at each stage. For instance, in the early generations, path length might be prioritized to quickly find viable routes, while in later generations, energy consumption becomes more important as the algorithm refines details.
4.5 Scalability Analysis
We further tested the algorithm with varying numbers of stain points and cleaning regions to evaluate scalability. Table 4 shows the performance for different problem sizes.
| Number of regions | Number of stains | Path length (cm) | Time (s) | Energy (kJ) |
|---|---|---|---|---|
| 5 | 50 | 1850.32 | 940.21 | 6.42 |
| 10 | 100 | 3321.31 | 1853.24 | 13.18 |
| 15 | 150 | 4875.92 | 2845.60 | 20.35 |
| 20 | 200 | 6320.48 | 3892.15 | 27.94 |
As expected, path length, time, and energy all increase with problem size. However, the growth rate is sublinear, suggesting that AGA maintains efficiency even as the problem becomes more complex. The adaptive mechanisms prevent the computational cost from growing exponentially, which is a desirable property for real-time applications.
4.6 Statistical Analysis
We performed a statistical significance test on the energy consumption results using a paired t-test. Across the 10 random seeds, the average energy consumption was 13.18 kJ with a standard deviation of 0.22 kJ for AGA, while GA had an average of 17.01 kJ with a standard deviation of 0.35 kJ. The p-value is less than 0.001, indicating that the improvement is statistically significant. Similar significant differences are observed for path length and cleaning time.
4.7 Discussion
The results demonstrate that the proposed AGA offers several advantages over traditional GA in photovoltaic panel cleaning path planning. Firstly, the dual-layer encoding with contamination-aware initialization enables the algorithm to find high-quality initial solutions, reducing the number of generations required for convergence. Secondly, the adaptive crossover and mutation probabilities maintain a healthy balance between exploration and exploitation. In highly contaminated areas, higher crossover rates generate a more diverse set of paths, while steep panel tilt angles lead to higher mutation rates, helping the algorithm avoid infeasible paths. Thirdly, the dynamic fitness weighting allows the robot to tailor its behavior to the current battery state and time constraints, which is essential for prolonged autonomous operation.
The reduction in path length comes not only from better ordering of cleaning regions but also from the local refinement of turning angles. By ensuring that the robot’s heading is compatible with the panel tilt angle, we eliminate unnecessary detours that would occur if the robot had to readjust itself at each region. This also reduces the wear and tear on the mechanical components and the glass surface.
Another important observation is that the improvement in time (21.99%) and energy (22.52%) are both slightly larger than the improvement in path length (20.24%). This indicates that AGA not only shortens distance but also chooses smoother trajectories with fewer sharp turns, which directly reduces turning time and turning energy. The integration of turning time and turning energy into the objective functions is therefore justified.
One potential limitation of our approach is that the adaptive weights depend on the battery state and time limit, which may not always be known with certainty. In future work, we plan to incorporate predictive models of solar insolation and cleaning frequency to further optimize the cleaning schedule. Additionally, we aim to validate the algorithm on a physical robot platform in a real photovoltaic facility, taking into account variations in panel reflectance, surface roughness, and weather conditions.
5. Conclusion
In this paper, we have presented a comprehensive path planning framework for photovoltaic panel cleaning robots based on an adaptive genetic algorithm. The proposed AGA incorporates a dual-layer encoding mechanism, an adjacency-contamination heuristic for initialization, adaptive crossover and mutation probabilities, and a multi-objective fitness function with dynamic weights. Through extensive simulations in a complex environment with 100 stain points, we demonstrated that AGA outperforms a standard genetic algorithm by reducing path length by 20.24%, cleaning time by 21.99%, and energy consumption by 22.52%. The balanced improvements across all three objectives confirm that AGA effectively addresses the inherent trade-offs in multi-objective optimization.
The adaptive nature of the algorithm makes it especially suitable for solar panels cleaning tasks, where the conditions (contamination density, panel tilt, battery level) change over time. The robot can autonomously adjust its search strategy without human intervention, leading to higher operational efficiency and lower energy costs. We believe that the proposed method provides a robust and scalable solution for the maintenance of solar panels in large-scale photovoltaic plants, ultimately supporting the sustainable growth of solar energy.
Future work will focus on extending the model to multiple robots with collaborative path planning, integrating real-time sensor data to update contamination maps, and optimizing the cleaning schedule based on predicted soiling rates. We also intend to explore the use of deep reinforcement learning as an alternative to genetic algorithms, although AGA remains a powerful and interpretable baseline.
In summary, the adaptive genetic algorithm proposed in this study offers a significant improvement in the performance of photovoltaic panel cleaning robots. By harmonizing path length, cleaning time, and energy consumption, it ensures that solar panels are kept clean with minimal resource expenditure. This contributes to the overall efficiency and profitability of solar energy systems, reinforcing the role of photovoltaic panels as a key technology in the global energy transition.
