METHOD AND SYSTEM FOR OPTIMIZING THE CONFIGURATION OF A SOLAR POWER SYSTEM
An optimization engine determines an optimal configuration for a solar power system projected onto a target surface. The optimization engine identifies an alignment axis that passes through a vertex of a boundary associated with the target surface and then constructs horizontal or vertical spans that represent contiguous areas where solar modules may be placed. The optimization engine populates each span with solar modules and aligns the solar modules within adjacent spans to one another. The optimization engine then generates a performance estimate for a collection of populated spans. By generating different spans with different solar module types and orientations, the optimization engine is configured to identify an optimal solar power system configuration.
This application is a divisional of the U.S. patent application having Ser. No. 13/677,208, filed Nov. 14, 2012 and titled “METHOD AND SYSTEM FOR OPTIMIZING THE CONFIGURATION OF A SOLAR POWER SYSTEM.” The subject matter of this related application is hereby incorporated herein by reference.
BACKGROUND OF THE INVENTION Field of the InventionThe present invention generally relates to solar power systems and more specifically to a method and system for optimizing the configuration of a solar power system.
Description of the Related ArtSolar power systems have provided a source of renewable energy for decades. A typical solar power system includes a set of solar panels that may be installed on a variety of target surfaces, such as, e.g., the roof of a residence. Prior to installation, a designer must configure the solar power system by determining the placement and the type of solar panels to be installed on the target surface. Once the configuration of the solar power system is determined, a set of solar panels may be physically mounted to the target surface according to that configuration.
One problem with the conventional installation process described above is that typical designers may have limited knowledge of solar power systems, and, thus, may not determine a configuration that results in optimal performance of the solar power system. This problem is compounded by the fact that solar power system performance is notoriously non-linear, and, thus, very sensitive to shading. Consequently, even small changes in solar panel shading from what is expected may cause the performance of the solar power system to decrease dramatically. Furthermore, configuring solar power systems manually is both time-consuming and expensive and can be difficult given that target surfaces are often space-constrained.
Accordingly, what is needed in the art is an improved technique for configuring a solar power system.
SUMMARY OF THE INVENTIONEmbodiments of the invention include a method for determining a configuration of a solar power system projected onto a target surface, including constructing an alignment axis across the target surface, projecting a first span and a second span onto the target surface, where both the first span and the second span are parallel to the alignment axis, populating the first span with a first set of solar modules, populating the second span with a second set of solar modules, and aligning the second set of solar modules with the first set of solar modules to form a first solar module array.
Advantageously, an optimized configuration of solar modules for use within a solar power system to be installed on a given target surface can be programmatically identified, thereby greatly improving the potential performance of that solar power system. Furthermore, since the optimization engine is computer-implemented, the configuration process is significantly more expedient and less costly than traditional manually-performed techniques.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
In the following description, numerous specific details are set forth to provide a more thorough understanding of the present invention. However, it will be apparent to one of skill in the art that the present invention may be practiced without one or more of these specific details. In other instances, well-known features have not been described in order to avoid obscuring the present invention.
The invention described herein comprises a system that automatically maximizes the size and/or configuration of a solar power system. In doing so, the system of the present invention determines a placement of solar modules that is consistent with optimal construction and engineering practices and is aesthetically pleasing.
Computing device 102 and computing device 122 are configured to exchange data across network 114 via communication paths 140 and 150. Computing device 102 may also read data from or write data to database 116 across network 114 via communication paths 140 and 160. Likewise, computing device 122 may read data from or write data to database 116 across network 114 via communication paths 150 and 160 or, alternatively, directly via communication path 170. Communication paths 140, 150, 160 and 170 may each be implemented as a wireless communication path, a wired communication path, or any other technically feasible type of communication path capable of transporting data.
As further described below and in conjunction with
An “optimized” configuration refers to any configuration that maximizes or minimizes a given performance metric. For example, the performance metric could be levelized cost of electricity (LCOE), and the optimized configuration would thus be the configuration with the lowest LCOE compared to other possible configurations. In another example, the performance metric could be estimated gross annual revenue, and the optimized configuration would thus be the configuration with the highest estimated gross annual revenue compared to other possible configurations. In another example, the performance could be the Net Present Value (NPV) of the system. Persons skilled in the art will understand that any reasonable performance metric could be used to identify the optimized solar power system configuration.
When determining the optimized solar power system configuration, computing devices 102 and/or 122 access database 116 in order to extract data that describes a target installation location for the solar power system, as described in greater detail below in conjunction with
In one embodiment, computing device 102 operates as a client device and computing device 122 operates as a cloud-based device. In this embodiment, computing device 102 causes computing device 122 to perform the majority of the processing operations involved with determining the optimized configuration for the solar power system. Persons skilled in the art will recognize that computing device 102 and computing device 122 may distribute the processing tasks involved with determining the optimized configuration based on any technically feasible load-balancing algorithm. Those skilled in the art will also understand that either of computing devices 102 or 122 may perform all of the disclosed functionality of the present invention independently, i.e. without being coupled to another computing device, in a non-distributed manner. In such situations, the computing device performing the disclosed functionality may be a desktop computing device, laptop computing device, handheld computing device, and so forth.
Computing device 102 includes a processing unit 104 that is configured to perform various processing tasks and is coupled to input/output (I/O) devices 106 and to a memory 108. As shown, I/O devices 106 are also coupled to memory 108. Processing unit 104 may include one or more central processing unit (CPUs), parallel processing unit (PPUs), graphics processing unit (GPUs), application-specific integrated circuit (ASICs), field-programmable gate arrays (FPGAs), or any other type of processing unit capable of processing data. In addition, processing unit 104 may include various combinations of processing units, such as, e.g., a CPU coupled to a GPU. In on embodiment, computing device 102 is a mobile computing device, such as, e.g., a cell phone or tablet computing device.
I/O devices 106 may include input devices, such as a keyboard, a mouse, a touchpad, a microphone, a video camera, and so forth. I/O devices 106 may also include output devices, such as a screen, a speaker, a printer, and so forth. In addition, I/O devices 106 may include devices capable of performing both input and output operations, such as a touch screen, an Ethernet port, a universal serial bus (USB) port, a serial port, etc. I/O devices 106, as well as processing unit 104 described above, are both configured to read data from and write data to memory 108.
Memory 108 may include a hard disk, one or more random access memory (RAM) modules, a compact disc (CD) residing within a CD drive, a zip disk, and so forth. Persons skilled in the art will understand that memory 108 could be implemented as any technically feasible unit capable of storing data. Memory 108 includes a client-side optimization engine 110, configuration data 112, and a client-side computer-aided design (CAD) interface 114.
Client side optimization engine 110 is a software program that includes a set of program instructions capable of being executed by processing unit 104. When executed by processing unit 104, client-side optimization engine 110 configures processing unit 104 to participate in determining an optimized configuration for the solar power system to be installed on the target surface, as mentioned above. In doing so, client-side optimization engine 110 may cooperate with a corresponding software program within computing device 122, a cloud-based optimization engine 130, described below, in order to determine (i) the placement of solar modules on the target surface and (ii) a selection of solar module type to be used. Client-side optimization engine 110 cooperates with cloud-based optimization engine 130 in order to generate configuration data 112 that specifies the placement of the solar modules on the target surface and the selection of solar module type to be used.
Computing device 122 may be substantially similar to computing device 130 and includes a processing unit 124 that is configured to perform various processing tasks. Processing unit 122 is coupled to I/O devices 126 and to a memory 128. As shown, I/O devices 126 are also coupled to memory 128. Processing unit 124 may be substantially similar to processing unit 104 included within computing device 102, and, thus, may include one or more CPUs, PPUs, GPUs, ASICs, FPGAs, as well as various combinations of processing components, such as, e.g., a CPU coupled to a GPU.
I/O devices 126 may be substantially similar to I/O devices 106 included within computing device 102, and, thus, may include input devices, such as a keyboard, a mouse, a touchpad, a microphone, a video camera, and so forth, output devices, such as a screen, a speaker, a printer, and so forth, as well as devices capable of performing both input and output operations, such as a touch screen, an Ethernet port, a USB port, a serial port, etc. I/O devices 126, as well as processing unit 124 described above, are both configured to read data from and write data to memory 128.
Memory 128 may be substantially similar to memory 108 included within computing device 102, and, thus, may include a hard disk, one or more RAM modules, a CD residing within a CD drive, a zip disk, and so forth. Persons skilled in the art will understand that memory 128 could be implemented by any technically feasible unit capable of storing data. Memory 128 includes a cloud-based optimization engine 130.
Cloud-based optimization engine 130 is a software program that includes a set of program instructions capable of being executed by processing unit 124. When executed by processing unit 124, cloud-based optimization engine 130 configures processing unit 124 to cooperate with client-side optimization engine 110, described above, in determining the optimized configuration for the solar power system. In doing so, cloud-based optimization engine 130 and/or client-side optimization engine 110 are configured to extract data that describes the target installation location from database 116 and then process that data.
Database 116 may be a computer system executing a database program, such as, e.g. MySQL or postgreSQL, or may also be a cloud-based service configured to provide data based on requests transmitted by remote computer systems, such as, e.g. Google Earth®, Bing™ Maps, Pictometry® Online for geocoded RGB imagery, Digital Surface Models and Digital Elevation Models and Clean Power Research's Clean Power Estimator® for utility electricity tariffs and local, state and federal incentives. In one embodiment, database 116 is included within computing device 122 or computing device 102 or, alternatively, distributed between computing devices 102 and 122. Database 116 includes geospatial data that may describe target installation locations suitable for solar power systems to be installed. For example, database 116 could include a set of aerial or satellite photographs of three-dimensional (3D) structures, Digital Surface Models or Digital Elevation Models. Each of these could be used to identify land surfaces, structures suitable for solar power installations and to identify shading of those facilities. Database 116 may also include one or more 3D models representing 3D structures and obstructions, like trees, that might cast shadows on the solar array. In one embodiment, the 3D models are generated from a set of aerial or satellite photographs.
Client side optimization engine 110 and cloud-based optimization engine 130 are configured to extract the geospatial data from database 116 and to analyze a portion of that data corresponding to a particular physical location. The physical location could be represented by, e.g., a street address or geospatial positioning system (GPS) coordinates, among others. Based on that analysis, client side optimization engine 110 and cloud-based optimization engine 130 generate an optimized solar power system configuration, as described above. In practice, client side optimization engine 110 within computing device 102 and cloud-based optimization engine 130 within computing device 122 work in conjunction with one another when generating the optimized solar power system configuration. Accordingly, for the sake of simplicity, the remainder of this description will simply describe the optimization engine 100, which includes computing devices 102 and 122, as performing the various steps involved with generating the optimized solar power system configuration.
Each of solar module arrays 206 and 208 is comprised of one or more solar modules, such as, e.g. solar modules 214 or 216. As referred to herein, a “linear set” of solar modules is a collection of vertically- or horizontally-stacked solar modules. As shown, solar module array 206 includes linear sets 218 and 220. Linear set 218 includes vertically-stacked solar modules disposed according to a portrait orientation, while linear set 220 includes horizontally-stacked solar modules disposed according to a portrait orientation. As also shown, solar module array 208 includes linear sets 222 and 224. Linear set 222 includes vertically-stacked solar modules disposed according to a landscape orientation, while linear set 224 includes horizontally-stacked solar modules disposed according to a landscape orientation.
When generating an optimized solar power system configuration, optimization engine 100 performs an iterative procedure that involves generating a plurality of different linear sets having different orientations and including solar modules that have different orientations. In doing so, optimization engine 100 is configured to identify multiple different solar power system configurations.
A first step in the iterative procedure performed by optimization engine 100 involves stacking solar modules disposed according to a landscape orientation horizontally across the target surface similarly to linear set 224, as described in greater detail below in conjunction with
Prior to performing the iterative procedure described above, optimization engine 100 first identifies the target surface onto which the solar modules are to be placed, as described in greater detail below in conjunction with
As shown, target surface 302 includes obstructions 304, 306, and 308. In general, obstructions 304, 306, and 308 represent regions unsuitable for the placement of solar modules. In one embodiment, optimization engine 100 identifies obstructions 304, 306, and 308 based on the geospatial data extracted from database 116. In another embodiment, the geospatial data includes indications of various obstructions generated via CAD interface 114 in conjunction with client-side optimization engine 110. Once target surface 302 has been identified from within the geospatial data extracted from database 116 or constructed by a user via CAD interface 114 in conjunction with client-side optimization engine 110, optimization engine 100 identifies one or more “alignment points” and one or more “alignment axes” that pass through those alignment points. When performing steps that involve horizontally-stacked solar modules, optimization engine 100 identifies alignment points and horizontal alignment axes in the fashion described below in conjunction with
More specifically, optimization engine identifies vertices of obstructions associated with the target surface and/or vertices of a boundary of the target surface. For example, alignment points 422/424, 426/430, and 432/434 represent corners of obstructions 308, 306, and 304, respectively. Additionally, alignment points 421, 428, and 436 represent vertices of a boundary associated with target surface 302. Persons skilled in the art will recognize that additional alignment points may also be present on target surface 302. In practice, optimization engine 100 is configured to identify a set of alignment points that corresponds to a set of unique alignment axes. Once optimization engine 100 identifies the set of alignment axes, optimization engine 100 selects one such alignment axis. Based on the selected alignment axis, optimization engine 100 identifies spans of area that traverse portions of target surface 302 parallel to the selected alignment axis, as described in greater detail below in conjunction with
For a given row, optimization engine 100 identifies one or more unobstructed spans that traverse target surface 302 parallel to the selected alignment axis. For example, optimization engine 100 identifies spans 502-1 and 502-2 residing within row 502. As is shown, obstruction 308 resides partially within row 502, and so optimization engine 100 identifies spans 502-1 and 502-2 to not be obstructed by obstruction 308. Persons skilled in the art will understand that optimization engine 100 identifies the unobstructed spans residing in rows 504, 506, and 508 in similar fashion. Upon identifying a set of spans associated with target surface 302, optimization engine 100 populates those spans with solar modules in order to create a collection of linear sets projected onto target surface 302, as described in greater detail below in conjunction with
Optimization engine 100 is configured to populate each span with horizontally-stacked solar modules disposed according to a portrait orientation in order to generate the linear sets shown in
In one embodiment, optimization engine 100 identifies one or more solar module arrays that each comprises one or more contiguous linear sets. For example, optimization engine 100 could identify linear sets 602-1, 604-1, 604-2, 606-1, and 608-1 as belonging to a first array, and linear sets 602-2, 604-3, and 606-2 as belonging to a second array. Optimization engine may then perform a sequential alignment process with the linear sets included in a given array. One such alignment process involves designating an “alignment set” that includes a maximum number of solar modules compared to other linear sets in the array. Optimization engine 100 then aligns each linear set in the array sequentially, starting with the alignment set and traversing the entire array.
In the exemplary embodiment shown in
When aligning the linear sets included in the second array, optimization engine 100 designates linear set 602-2 as the alignment set and aligns linear set 604-3 to linear set 602-2. Optimization engine 100 then designates linear set 604-3 as the reference set, and determines that linear set 606-2 cannot be aligned to linear set 6043. In this situation, optimization engine 100 refrains from shifting the solar modules within linear set 606-2. In general, when optimization engine 100 aligns linear sets within a given array, optimization engine 100 identifies one or more sequences of linear sets on which to perform the alignment process.
Although the above description makes reference to the exemplary embodiments shown in
For a given row, optimization engine 100 identifies one or more unobstructed spans that traverse target surface 302 parallel to the selected alignment axis, in similar fashion as described above in conjunction with
Optimization engine 100 is configured to populate each span with horizontally-stacked solar modules disposed according to a landscape orientation in order to generate the linear sets shown in
In the embodiment shown in
When aligning solar modules residing within linear sets associated with the first sequence, optimization engine 100 first aligns linear set 912-1 to linear set 910-1 (the alignment set). Optimization engine 100 then designates linear set 912-1 as the reference set and aligns linear set 914-1 to linear set 912-1.
When aligning linear sets associated with the second sequence, optimization engine 100 aligns linear set 908-2 to linear set 910-1, and then designates linear set 908-2 as the reference set. Optimization engine 100 then determines that linear set 906-3 cannot be aligned to the current reference set, and so optimization engine 100 refrains from shifting the solar modules within linear set 906-3. Optimization engine 100 then designates linear set 906-3 as the reference set, and continues with the alignment process in like fashion as described above. In doing so, optimization engine 100 aligns linear set 904-2 to linear set 906-3, and aligns linear set 902-2 to linear set 904-2.
When aligning solar modules within linear sets associated with the third sequence, optimization engine 100 cannot align linear set 906-2 to linear set 908-2, and, thus, refrains from shifting the solar modules within linear set 906-2. Optimization engine 100 then designates linear set 906-2 as the reference set, aligns linear set 904-1 to linear set 906-2, designates linear set 904-1 as the reference set, and aligns linear set 902-1 to linear set 904-1. Since linear set 906-1 cannot be aligned to linear set 9041, optimization engine 100 refrains from shifting the solar module within linear set 906-1.
In practice, optimization engine 100 may perform the alignment process row by row, i.e. by aligning the linear sets in each row relative to the alignment set or relative to a current reference set. By performing the sequential alignment process described above, optimization engine 100 may align the solar modules residing within each linear set with the solar modules residing in adjacent linear sets.
Although the above description makes reference to the exemplary embodiments shown in
Once optimization engine 100 identifies the set of alignment axes, optimization engine 100 selects one such alignment axis. Based on the selected alignment axis, optimization engine 100 then identifies spans of area that traverse portions of target surface 302 parallel to the selected alignment axis. Optimization engine 100 may populate those spans with vertically-stacked solar modules disposed according to a portrait orientation when performing the third step in the iterative procedure, as described in greater detail below in conjunction with
Optimization engine 100 is configured to populate each span with vertically-stacked solar modules disposed according to a portrait orientation in order to generate the linear sets shown in
Optimization engine 100 then identifies one or more sequences of linear sets on which to perform an alignment process, starting with the alignment set and traversing the target surface 302. In the exemplary embodiment shown in
For each sequence of linear sets, optimization engine 100 then performs a sequential alignment process similar to that described above in conjunction with
Optimization engine 100 is configured to populate each span with vertically-stacked solar modules disposed according to a landscape orientation in order to generate the linear sets shown in
In practice, optimization engine 100 may perform the alignment process column by column, i.e. by aligning the linear sets in each column relative to the alignment set or relative to a current reference set. By performing the sequential alignment process described above, optimization engine 100 may align the solar modules residing within each linear set with the solar modules residing in adjacent linear sets.
Although the above description makes reference to the exemplary embodiments shown in
Once optimization engine 100 has generated a set of solar power system configurations by performing the different iterations described above, optimization engine 100 may generate a performance estimate for each such solar power system configuration. In one embodiment, optimization engine 100 implements Sandia National Laboratories' Photovoltaic Performance Model and estimates the performance of each solar module based on one or more of: (i) the location and/or orientation of target surface 302, (ii) the solar module type used, (iii) a utility rate corresponding to the location of target surface 302, (iv) an amount of irradiance net of shading associated with each solar module, (v) long-term average or typical weather data as well as measured weather data of arbitrary duration and frequency as well as (vi) power flow simulators that account for module electrical wiring and topology. In other embodiments, National Renewable Energy Lab's PVWatts or the University of Wisconsin 5, 6 or 7 Parameter models can be used in place of the Sandia National Laboratories' PV Performance Model.
Optimization engine 100 may also perform each step of the iterative procedure using a variety of different parameters, including different solar module types, different alignment axes, different alignment sets, and so forth. In doing so, optimization engine 100 is configured to optimize the performance estimate for the solar power system configuration produced by performing each step. Optimization engine 100 may then select the solar power system configuration having the optimal performance estimate relative to other possible solar power system configurations.
As shown, the method 1800 begins at step 1802, where optimization engine 100 receives data that represents a 3D structure. Optimization engine 100 may extract that data from a geospatial data set residing in database 116 or CAD interface 114. The data representing the 3D structure indicates a target surface, such as, e.g., target surface 302 shown in
At step 1804, optimization engine 100 identifies an alignment axis associated with the target surface. The alignment axis could be, e.g. alignment axis 402 shown in
At step 1806, optimization engine 100 projects a span onto the target surface parallel to the alignment axis. The span represents an available area onto which solar modules may be projected. At step 1808, optimization engine 100 determines whether space is available on the target surface for an additional span. At step 1808, if optimization engine 100 determines that no space is available, then the method 1800 ends. Otherwise, if optimization engine 100 determines that space is available for an additional span, then the method 1800 returns to step 1806.
By implementing the method 1800, optimization engine 100 projects spans onto the target surface. Optimization engine 100 may then populate those spans with solar modules to create linear sets, as described on greater detail below in conjunction with
As shown, the method 1900 begins at step 1902, where optimization engine 100 identifies an unpopulated span projected onto the target surface. The unpopulated span could be generated, e.g., when optimization engine 100 implements the method 1800 described above in conjunction with
At step 1904, if optimization engine 100 determines that no space is available within the identified span, then the method 1900 proceeds to step 1906, where optimization engine 100 discards the identified span. The method then proceeds to step 1910.
At step 1904, if optimization engine 100 determines that space is available within the identified span, then the method 1900 proceeds to step 1908, where optimization engine 100 generates a linear set by populating the identified span with one or more solar modules. When performing the first and second steps of the iterative procedure, described above in conjunction with
At step 1910, optimization engine 100 determines whether any unpopulated spans remain. If optimization engine 100 determines that no unpopulated spans remain, then the method 1900 ends. Otherwise, if optimization engine 100 determines that unpopulated spans remain, then the method 1900 returns to step 1902.
By implementing the method 1900, optimization engine 100 may generate linear sets by populating each span with solar modules. Optimization engine 100 may then align the solar modules within each linear set, as described in greater detail below in conjunction with
As shown, the method 2000 begins at step 2002, where optimization engine 100 designates the linear set having the most solar modules as the alignment set. At step 2004, optimization engine 100 identifies a sequence of linear sets extending from the alignment set to the edge of the target surface. In practice, optimization engine 100 may identify more than one sequence of linear sets, as described above in conjunction with
At step 2006, optimization engine 100 designates the alignment set as the reference set. At step 2008, optimization engine 100 identifies a linear set in the sequence subsequent to the reference set. The subsequent linear set resides adjacent to the reference set. At step 2010, optimization engine 100 determines whether the subsequent linear set can be aligned to the reference set, i.e. whether the solar modules within the subsequent linear set can be aligned with the solar modules within the reference set.
At step 2010, if optimization engine 100 determines that the solar modules in the subsequent linear set cannot be aligned to the reference set, then the method 2000 proceeds to step 2014. Otherwise, if optimization engine 100 determines at step 2010 that the solar modules in the subsequent linear set can be aligned to the reference set, then the method 2000 proceeds to step 2012, where optimization engine 100 aligns the subsequent linear set to the reference set. The method 2000 then proceeds to step 2014.
At step 2014, optimization engine 100 designates the subsequent linear set as the reference set. At step 2016, optimization engine 100 determines whether the sequence of linear sets includes additional linear sets. If optimization engine 100 determines that no additional linear sets remain, then the method ends. Otherwise, if optimization engine 100 determines that additional linear sets remain, then the method 2000 returns to step 2006.
By implementing the method 2000, optimization engine 100 traverses the target surface, aligning the solar modules within each linear set relative to the solar modules within an adjacent linear set. In doing so, optimization engine 100 may generate a solar power system configuration comprised of aligned solar modules. Optimization engine 100 may then generate a performance estimates for that solar power system, as described in greater detail below in conjunction with
As shown, the method begins at step 2102, where optimization engine 100 identifies one or more solar module arrays projected onto the target surface that each includes at least one linear set. A solar module array includes a set of contiguous solar modules. At step 2104, optimization engine 100 generates a performance estimate for each solar module array. The performance estimate could be based on, e.g., Sandia National Laboratories' Photovoltaic Performance Model, among other performance models.
At step 2106, optimization engine 100 modifies the solar module arrays to optimize the corresponding performance estimates. In doing so, optimization engine 100 may trim certain solar modules from the solar module arrays, change the orientation of specific solar modules, or shift the solar module array as a whole, among other modifications. At step 2108, optimization engine 100 generates a performance estimate for the solar power system based on the performance estimates generated for the different solar module arrays within the solar power system.
Optimization engine 100 may perform the methods 1800, 1900, 2000, and 2100 when performing the various steps of the iterative procedure discussed above in conjunction with
Additionally, optimization engine 100 may implement the methods 1800, 1900, 2000, and 2100 repeatedly using various different parameters, such as solar module type, alignment points, alignment axes, alignment sets, performance models, or solar module construction requirements, among others. Optimization engine 100 is configured to repeat the methods described above in order to identify the optimized configuration of solar modules to be used in a solar power system installation [00100] In sum, an optimization engine determines an optimized configuration for a solar power system projected onto a target surface. The optimization engine identifies an alignment axis that passes through a vertex of a boundary associated with the target surface and then constructs horizontal or vertical spans that represent contiguous areas where solar modules may be placed. The optimization engine populates each span with solar modules and aligns the solar modules within adjacent spans to one another. The optimization engine then generates a performance estimate for arrays of populated spans. By generating different spans with different solar module types and orientations, the optimization engine is configured to identify multiple different solar power system configurations.
Advantageously, the optimization engine is capable of programmatically identifying an optimized configuration of solar modules for use within a solar power system to be installed on a given target surface, thereby greatly improving the potential performance of that solar power system. Furthermore, since the optimization engine is computer-implemented, the configuration process is significantly more expedient and less costly than traditional manually-performed techniques.
One embodiment of the invention may be implemented as a program product for use with a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory) on which alterable information is stored.
The invention has been described above with reference to specific embodiments. Persons skilled in the art, however, will understand that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The foregoing description and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Claims
1. A computer-implemented method for determining a configuration of a solar power system projected onto a target surface, the method comprising:
- constructing an alignment axis across the target surface;
- projecting a first span and a second span onto the target surface, wherein both the first span and the second span are parallel to the alignment axis;
- populating the first span with a first set of solar modules;
- populating the second span with a second set of solar modules; and
- aligning the second set of solar modules with the first set of solar modules to form a first solar module array.
2. The computer-implemented method of claim 1, wherein constructing the alignment axis across the target surface comprises:
- identifying a vertex of a boundary associated with the target surface; and
- projecting the alignment axis across the vertex either horizontally or vertically.
3. The computer implemented method of claim 1, wherein each solar module included in the first set of solar modules and each solar module included in the second set of solar modules is disposed according to a portrait orientation or a landscape orientation.
4. The computer-implemented method of claim 1, wherein aligning the second set of solar modules with the first set of solar modules comprises:
- determining that the first set of solar modules includes a greater number of solar modules than the second set of solar modules; and
- positioning each solar module in the second set of solar modules to have at least one side collinear with one side of a different solar module in the first set of solar modules.
5. The computer-implemented method of claim 1, further comprising:
- projecting a third span onto the target surface parallel to the alignment axis;
- populating the third span with a third set of solar modules; and
- positioning each solar module in the third set of solar modules to have at least one side collinear with one side of a different solar module in the second set of solar modules.
6. The computer-implemented method of claim 1, further comprising identifying the first solar module array including the first and second sets of solar modules and generating a performance estimate for the first solar module array.
7. The computer-implemented method of claim 6, wherein the performance estimate is based on one or more of (i) a location and/or orientation of the target surface, (ii) a solar module type within the first solar module array, (iii) a utility rate corresponding to the location of the target surface, (iv) an amount of irradiance and/or net shading associated with each solar module within the first solar module array, (v) historical weather data, and (vi) one or more power flow simulators that account for solar module electrical wiring and topology.
Type: Application
Filed: Jul 11, 2022
Publication Date: Jun 8, 2023
Inventors: Gary Wayne (Berkeley, CA), Billy Hinners (San Rafael, CA)
Application Number: 17/861,948