The present disclosure relates to systems and methods for optimizing an energy storage device charging/discharging schedule based on predetermined criteria.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Electricity Markets are temporal by nature. Over time, their characteristics vary. A host of parameters define the current state of an electricity grid and its associated market including, but not limited to, energy prices ($/kWh), marginal emissions (i.e., the amount of carbon emissions for a battery per unit power delivered (gCO2/kWh), demand (MW), and the power plants contributing.
Recent advances in battery storage technology and improving economics have introduced the possibility of storing power during more favorable times/states of a market, and discharging it later, during less favorable times on the market. However, identifying the optimal times to charge and discharge a battery to match a customer's requirements presents significant challenges.
In a feature, a system is provided. The system may include a processor, memory, and a charge adjustment application that is stored in the memory and executed by the processor. The charge adjustment application may be configured to calculate a merit value for a current time frame based on current data concerning one or more predetermined criteria. The charge adjustment application may further calculate respective merit values for one or more future time frames based on the current data and historical data concerning the one or more predetermined criteria. The charge adjustment application may identify, from among the current time frame and the one or more future time frames, a plurality of candidate charge adjustment time frames. The plurality of candidate charge adjustment time frames may include a plurality of sequential time frames associated with respective merit values satisfying a threshold merit value. Further, the charge adjustment application may assign, from among the plurality of candidate charge adjustment time frames, one or more charge adjustment time frames during which to adjust a charge level of an energy storage device based on at least the merit values associated with the plurality of candidate charge adjustment time frames.
In another feature, the charge adjustment application is further configured to generate an instruction to adjust the charge level of the energy storage device during the one or more charge adjustment time frames. In one example of this feature, the instruction to adjust the charge level includes an instruction to charge the energy storage device. In another example of this feature, the instruction to adjust the charge level includes an instruction to discharge the energy storage device. In still another example of this feature, the system further includes the energy storage device. In this example, the energy storage device is configured to adjust its charge level in response to receiving the instruction.
In one feature, the charge adjustment application is configured to assign the one or more charge adjustment time frames by calculating a charge capacity for each of the plurality of candidate charge adjustment time frames based on a length of time associated with each of the plurality of candidate charge adjustment time frames and a charge adjustment speed associated with the energy storage device.
In a feature, the charge adjustment application is configured to assign the one or more charge adjustment time frames by ranking the plurality of candidate charge adjustment time frames according to their respective merit values.
In another feature, the charge adjustment application is further configured to generate an instruction to maintain the charge level of the energy storage device during the current time frame.
In one feature, the one or more predetermined criteria include a plurality of criterion, each criterion being associated with a different weight.
In still another feature, the one or more predetermined criteria include at least two of the following criteria: energy cost; carbon emissions; and payment for grid services.
In a feature, a method for optimizing an energy storage device charging/discharging schedule based on predetermined criteria is provided. The method may include calculating a merit value for a current time frame based on current data concerning one or more predetermined criteria. Respective merit values for one or more future time frames may be calculated based on the current data and historical data concerning the one or more predetermined criteria. Further, a plurality of candidate charge adjustment time frames may be identified from among the current time frame and the one or more future time frames. The plurality of candidate charge adjustment time frames includes a plurality of sequential time frames associated with respective merit values satisfying a threshold merit value. One or more charge adjustment time frames during which to adjust a charge level of an energy storage device may be assigned from among the plurality of candidate charge adjustment time frames. The assignment may be based on at least the merit values associated with the plurality of candidate charge adjustment time frames. In addition, the method may include generating an instruction to adjust the charge level of the energy storage device during the one or more charge adjustment time frames.
In one feature, generating the instruction to adjust the charge level may include generating an instruction to charge the energy storage device.
In another feature, generating the instruction to adjust the charge level may include generating an instruction to discharge the energy storage device.
In a feature, the method may further include adjusting the charge level of the energy storage device during the one or more charge adjustment time frames.
In still another feature, assigning the one or more charge adjustment time frames may include calculating a charge capacity for each of the one or more charge adjustment time frames based on a length of time associated with each of the plurality of candidate charge adjustment time frames and a charge adjustment speed associated with the energy storage device.
In one feature, assigning the one or more charge adjustment time frames may include ranking the plurality of candidate charge adjustment time frames according to their respective merit values.
In another feature, the method may further include generating an instruction to maintain the charge level of the energy storage device during the current time frame.
In a feature, the predetermined criteria may include a plurality of criterion, each criterion being associated with a different weight.
In still another feature, the predetermined criteria may include at least two of the following criteria: energy cost; carbon emissions; and payment for grid services.
In one feature, a data center is provided. The data center may include a charging window identification module, a charge adjustment time frame assignment module, and an energy storage device operatively connected to the charge adjustment time frame assignment module. The charging window identification module may be configured to identify, from among a current time frame associated with a merit value and one or more future time frames associated with respective one or more merit values, a plurality of candidate charge adjustment time frames. The plurality of candidate charge adjustment time frames may include a plurality of sequential time frames associated with respective merit values satisfying a threshold merit value. The charge adjustment time frame assignment module may be configured to assign, from among the plurality of candidate charge adjustment time frames, one or more charge adjustment time frames during which to adjust a charge level of an energy storage device based on at least the merit values associated with the plurality of candidate charge adjustment time frames. In addition, the charge adjustment time frame assignment module may be configured to generate an instruction to adjust the charge level of the energy storage device during the one or more charge adjustment time frames. The energy storage device may be configured to adjust its charge level in response to receiving the instruction.
Further areas of applicability of the present disclosure will become apparent from the detailed description, the claims and the drawings. The detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure.
In the drawings, reference numbers may be reused to identify similar and/or identical elements.
Below are simplistic examples of a distributed computing environment in which the systems and methods of the present disclosure can be implemented. Throughout the description, references to terms such as servers, client devices, applications and so on are for illustrative purposes only. The terms servers and client devices are to be understood broadly as representing computing devices comprising one or more processors and memory configured to execute machine readable instructions. The terms applications and computer programs are to be understood broadly as representing machine readable instructions executable by the computing devices.
The network 104 may include a local area network (LAN), a wide area network (WAN) such as the Internet, or other type of network (collectively shown as the network 104). While only one computing device 102 is shown, the distributed network system 100 may include multiple computing devices. For example, the computing device(s) 102 may be located at different geographical locations. The energy storage device(s) 106 communicate with the computing device(s) 102 via the network 104. The energy storage device(s) 106 and the computing device(s) 102 may connect to the network 104 using wireless and/or wired connections.
In operation, and as discussed in additional detail below, the computing device(s) 102 calculate optimal time frames for charging and discharging the energy storage device(s) 106 utilizing machine learning techniques and customizable, predefined criteria. The computing device(s) 102 generate instructions instructing the energy storage device(s) 106 when to charge and discharge. The instructions are communicated over the network 104. In accordance with the received instructions, the energy storage device(s) 106 obtain charge from one or more charge sources 110, or discharge to the load(s) 112. In one example, the computing device(s) 102 are utilized to control energy storage devices 106 in a high energy use facility, such as a data center.
In some examples, the charge source(s) 110 may include a utility company, generator(s), solar panel(s), wind turbine(s), or the like that supply electric charge to the energy storage devices 106. In some examples, the load(s) may include computers (e.g., server computers), cooling systems, pumps, fans, routing systems, heat exchange systems, etc. that receive electric charge from the energy storage devices 106.
The network interface 178 connects the computing device 102 to the distributed network system 100 via the network 104. For example, the network interface 178 may include a wired interface (e.g., an Ethernet interface) and/or a wireless interface (e.g., a Wi-Fi, Bluetooth, near field communication (NFC), or other wireless interface). The memory 180 may include volatile or nonvolatile memory, cache, or other type of memory. The bulk storage 182 may include flash memory, one or more hard disk drives (HDDs), or other bulk storage device.
The processor 170 of the computing device 102 executes an operating system (OS) 184 and a charge adjustment application 186 configured to assign one or more charge adjustment time frames to one or more energy storage devices as discussed in additional detail below. The bulk storage 182 may store one or more databases 188 that store data structures used by the charge adjustment application 186 to perform respective functions. In one example, the computing device 102 may be utilized to control energy storage devices (e.g., the energy storage devices 106 illustrated in
Referring now to
The charge adjustment device 300 includes a merit value calculation module 302, a charging window identification module 304, and a charge adjustment time frame assignment module 306. The charge adjustment device 300 is configured to operate as follows.
The merit value calculation module 302 is configured to obtain (i.e., fetch or receive) current data 308 concerning one or more predetermined criteria and historical data 310 concerning the one or more predetermined criteria. The current data 308 reflects current (i.e., present time) values for the predetermined criteria, while the historical data 310 reflects historical (i.e., past) values for the predetermined criteria. The merit value calculation module 302 is configured to calculate (i) a merit value for a current time frame based on the current data 308 and (ii) respective merit values for one or more future time frames based on the current data 308 and the historical data 310. In some examples, a polynomial regression predictive machine learning model is utilized to calculate merit values associated with future time frames based on the historical data 310 and current data 308. In some examples, the polynomial regression predictive machine learning model may utilize weather forecasts and associated time of day/year values to calculate the respective merit values for one or more future time frames.
The merit values 312 describe the desirability of making a charge adjustment to one or more energy storage devices during a particular time frame. For example, a merit value may indicate that one or more energy storage devices should be charged during a given time frame. Alternatively, a merit value may indicate that the one or more energy storage devices should be discharged during a given time frame. Further still, a merit value may indicate that the one or more energy storage devices should maintain a charge level (i.e., neither charge nor discharge) during a given time frame.
The merit value calculation module 302 is configured to calculate the merit values 312 based on predetermined—and in some examples weighted—criteria. The criteria relied upon, and the weighting of those criterion (if any), is customizable based on user preference. Example criteria that may be relied upon in calculating the merit values 312 can include, but is not limited to, energy prices ($/kWh), marginal emissions (i.e., the amount of carbon emissions for an energy storage device per unit power delivered (gCO2/kWh)), demand (MW), and/or payment for grid services (i.e., the current value or predicted value payments tied to the utilization of energy storages devices to provide grid services at the wholesale or distribution level). In addition, each criterion of the predetermined criteria may be associated with a weight. In this manner, the merit value calculation module 302 is configured to take into account both the type(s) of predetermined criteria being relied upon, as well as the weight given to each criterion, in calculating the merit values 312 for the time frames.
The charging window identification module 304 is configured to obtain the merit values 312 and identify a charging window therefrom. More specifically, the charging window identification module 304 is configured to identify a charging window by identifying, from among the current time frame and one or more future time frames, a plurality of candidate charge adjustment time frames 314 based on the merit values 312. The plurality of candidate charge adjustment time frames 314 includes a plurality of sequential time frames associated with respective merit values satisfying a threshold merit value. Additional details concerning identification of the charging window by the charging window identification module 314 are set forth with regard to
The charge adjustment time frame assignment module 306 is configured to obtain the plurality of candidate charge adjustment time frames 314, along with the respective merit values 315 associated with the plurality of candidate charge adjustment time frames 314, from the charging window identification module 304 and assign one or more charge adjustment time frames 316 therefrom. The assigned one or more charge adjustment time frames 322 specify the time frame(s) during which a charge level of the energy storage device 106 should be adjusted.
More specifically, the charge adjustment time frame assignment module 306 is configured to assign the one or more charge adjustment time frames 316 from among the candidate charge adjustment time frames 314. The assignment of the one or more charge adjustment time frames 316 from the candidate charge adjustment time frames 314 may be based on at least the merit values 315 associated with the plurality of candidate charge adjustment time frames 314, as discussed in greater detail with regard to
In one example, the charge adjustment time frame assignment module 306 is configured to assign the one or more charge adjustment time frames 316 based on calculated charge capacities 318. In this example, the charge adjustment time frame assignment module 306 is configured to calculate a charge capacity for each of the candidate charge adjustment time frames 314 based on a length of time associated with each of the plurality of candidate charge adjustment time frames 314 and a charge adjustment speed associated with the energy storage device 106. The charge adjustment speed indicates how fast a given energy storage device may be charged or discharged.
In another example, the charge adjustment time frame assignment module 306 is configured to assign the one or more charge adjustment time frames 316 based on ranked charge adjustment time frames 320. In this example, the charge adjustment time frame assignment module 306 is configured to rank the plurality of candidate charge adjustment time frames 314 according to their respective merit values.
The charge adjustment time frame assignment module 306 is further configured to generate an instruction 322 to adjust the charge level of the energy storage device 106 during the one or more assigned charge adjustment time frames 316. In one example, the instruction 322 includes an instruction to charge the energy storage device 106. In another example, the instruction includes an instruction to discharge the energy storage device 106. In still another example, the instruction 322 includes an instruction to maintain the charge level of the energy storage device (e.g., during a current time frame). The energy storage device 106 is configured to adjust its charge level in response to receiving the instruction 322.
Turning now to
While the time frames of
In particular,
The charging window 406 is identified from among the current time frame 400 and the future time frames 404, and encompasses a plurality of candidate charge adjustment time frames from which the actual charge adjustment time frames may be assigned. The plurality of candidate charge adjustment time frames (which, collectively, constitute the charging window 406) may be identified by identifying sequential future time frames following the current charge frame 400 that satisfy a threshold merit value 408.
In the example shown in
The one or more charge adjustment time frames may be assigned from among the plurality of candidate charge adjustment time frames encompassed within the charging window 406 according to the following method. Recognizing that in some examples the merit values may be calculated based on a plurality of weighted criterion, for simplicity, the following example assumes the merit values reflect one criterion: energy price. Accordingly, the goal of the method illustrated in
The method begins by ranking the time frames within the charging window 406 according to their respective merit values. Future time frame 412a is identified as the best frame because it is associated with the lowest merit value (correlating to the lowest price for energy in this example). Time frame 412b is identified as the second best, time frame 412c as the third best, time frame 412d as the fourth best, time frame 412e as the fifth best, etc. until all time frames within the charging window 406 are ranked according to their respective merit values.
Next, the method assigns time frames during which to charge the energy storage device based on the merit values associated with the times frames, the length of the time frames, the energy storage capacity of the energy storage device, and the charge adjustment speed of the energy storage device (i.e., the rate at which the energy storage device may be charged or discharged, as the case may be).
For example, the method may include calculating a charge capacity for time frame 412a. The charge capacity reflects how much of the energy storage device's charge capacity can be filled during the time frame at issue (e.g., time frame 412a). The charge capacity for a given time frame is the product of the length of the time frame and the charge adjustment speed associated with the energy storage device. Thus, in an example where the time frame 412a is 30 minutes in length and the charge adjustment speed of the energy storage device is 2 MW, 1 MWh may be assigned to time frame 412a.
Further assume, for purposes of this example, that (1) the energy storage device sought to be charged is presently completely devoid of charge (i.e., empty) and (2) the total capacity for the energy storage device is 5 MWh. Accordingly, after assigning 1 MWh to time frame 412a, the energy storage device includes 4 MWh of unassigned storage capacity. Thus, the method continues assigning time frames from within the charging window 406 until the full charge capacity of the energy storage device has been assigned.
In this example, where all of the candidate charge adjustment time frames are presented as having equal lengths, and the charge adjustment speed of the energy storage device is a constant 2 MW, the following time frames may be assigned in the following order to ensure that all of the charge capacity for the energy storage device has been assigned from within the charging window so as to minimize cost: (1) 412a; (2) 412b; (3) 412c; (4) 412d; and (5) 412e.
Notably, the current time frame 400 is not assigned as a charge adjustment time frame according to this example because the full charge capacity of the energy storage device was assigned utilizing time frames associated with superior merit values than the current time frame 400. As discussed with regard to
Recall that in the example set forth in
More specifically, the method of assigning, from among the plurality of candidate charge adjustment time frames encompassed within the charging window 506, the one or more charge adjustment time frames continues in accordance with the procedure described with regard to
The key distinction between
Thus, and keeping with the process described above with regard to
Consequently, the following charge adjustment time frames are assigned according to the following order: (1) 612a; (2) 612b; (3) 612c; (4) 612d; and (5) 612e. Yet again, this assumes that the energy storage device has 5 MWh of charge to discharge, and 1 MWh of charge may be discharged during each of the foregoing time frames. Notably, current frame 600 is not assigned as a charge adjustment time frame according to this example because it reflects an inferior time frame as compared to frames 612a, 612b, 612c, 612d, and 612e. As with the process for identifying optimal time frames during which to charge the energy storage device (see
Referring now to
At 704, a plurality of candidate charge adjustment time frames are identified from among the current time frame and the one or more future time frames. The plurality of candidate charge adjustment time frames includes a plurality of sequential time frames associated with respective merit values satisfying a threshold merit value.
At 706, one or more charge adjustment time frames are assigned from among the plurality of candidate charge adjustment time frames. The one or more charge adjustment time frames reflect time frames during which to adjust a charge level of an energy storage device. The one or more charge adjustment time frames may be assigned based on at least the merit values associated with the plurality of candidate charge adjustment time frames.
At 708, an instruction is generated to adjust the charge level of the energy storage device. In one example, the instruction may include an instruction to charge the energy storage device. In another example, the instruction may include an instruction to discharge the energy storage device.
At optional 710, a charge level of the energy storage device is adjusted. The charge level may be adjusted based on, or in response to, the instruction generated at 708. Following 710, the method 700 concludes.
Referring now to
At 808, the historic time window, current time window, and future time windows are unified into a single, arbitrarily large time window of frames stretching from the past into the future. At 810, average values are calculated for each criterion of the predefined criteria. At 812, each criterion is weighted based on the importance of a given criterion relative to the importance of other criteria. The weight given to each criterion may be defined as:
At 814, relative differences to the average are calculated, for the current and future time frames, for each criterion to be included as part of a blended optimization. More specifically, the relative differences to the average is a measure of (1) whether the value of a given criterion is “better” or “worse” than average, and how much “better” or “worse” it is, as reflected by the following formula:
ΔCriterian=μ(Criteria1..n)−Criterian (2)
At 816, a blended relative merit value is calculated for each future time frame. The blended relative merit value for a given future time frame may be calculated by adding the individual criterion relative ratings, weighted by their normalized criterion weighting as defined by:
φframe=Σk=1n(Weightn×ΔCriterian) (3)
Continuing to
Total Usable Storage Capacity=TotalStorage×StorageHealth as a function of 100%:
StorageCapacityUsable=StorageCapacitytotal×AvailableHealthyStoragePercentage (4)
Predict the Underlying Load (for illustration here, a Data Center Load):
LoadDataCenter_Predicted=Pred(DataCenterLoadIndicatorVariables) (5)
Reserve Storage Capacity=Predicted DataCenter Load×Generator Start and Sync Time:
StorageCapacityReserve=StartTimeGenerator×LoadDataCenter_Predicted (6)
Storage Capacity available for monitisation=Usable Storage Capacity−Reserve Storage Capacity:
StorageCapacittyAvailable=StorageCapacityUsable−StorageCapacityReserve (7)
StorageCapacityMinimumDischargeDepth=StorageCapacityUsable−StorageCapacityAvailable (8)
If there is no critical demand powered by the energy storage device, then:
StorageCapacityAvailable=StorageCapacityUsable (9)
StorageCapacityMinimumDischargeDepth=0 (10)
Returning to
At 822, the time frame under consideration is identified as a candidate charging frame based on its negative blended relative merit value:
Because of the negative blended relative merit value, the time frame under consideration is determined to be “better” than average. However, there may be even “better” time frames in the future during which the energy storage device could be charged (e.g., prices may fall further before they increase above average, in an example where the only predetermined criterion is energy price).
At 824, all time frames following the time frame under consideration having negative blended relative merit values are identified. At 826, the identified time frames are ranked according to their blended relative merit values (e.g., best, second best, etc.) and the lengths of time for the identified time frames are calculated. At 828, an amount of power that can be charged during each identified time frame is assigned (time in hours of the time frame window * (i.e., multiplied by) maximum charging rate of the energy storage device).
At 830, respective charge instructions are assigned to at least some of the identified time frames based on the rankings associated with the identified times frames until the storage capacity of the energy storage device has been fully assigned. In one example, 830 may entail, starting with the lowest (e.g., “best”) blended relative merit value, assigning a charge instruction to that time frame until the available capacity of the energy storage device has been accounted for.
At 832, a determination is made as to whether the current time frame is within the charging assignment frame list (i.e., among the list of time frames assigned charge instructions). If so, the method 800 proceeds to 834 and the energy storage device is instructed to begin charging with the calculated charging rate according to the following:
If the current time frame is not within the charging assignment frame list, the method 800 concludes. In some examples, upon a determination that the current time frame is not within the charging assignment frame list, the energy storage device may remain idle (i.e., neither charge nor discharge) during the current time frame.
Upon a determination at 820 of
Because of the positive blended relative merit value, the time frame under consideration is determined to be “worse” than average. However, there may be even “worse” time frames in the future during which the energy storage device could be discharged (e.g., prices may increase further before they decrease below average, in an example where the only predetermined criterion is energy price).
At 838, all time frames following the time frame under consideration having positive blended relative merit values are identified. At 840, the identified time frames are ranked according to their blended relative merit values (e.g., worst, second worst, etc.) and the lengths of time for the identified time frames are calculated. At 842, an amount of power that can be discharged during each identified time frame is assigned (time in hours of the time frame window * (i.e., multiplied by) maximum discharging rate of the energy storage device).
At 844, respective discharge instructions are assigned to at least some of the identified time frames based on the rankings associated with the identified times frames until any remaining stored energy of the energy storage device has been fully assigned. In one example, 844 may entail, starting with the highest (e.g., “worst”) blended relative merit value, assigning a discharge instruction to that time frame until the available capacity of the energy storage device has been accounted for.
At 846, a determination is made as to whether the current time frame is within the discharging assignment frame list (i.e., among the list of time frames assigned discharge instructions). If so, the method 800 proceeds to 848 and the energy storage device is instructed to begin discharging with the calculated discharging rate according to the following:
If the current time frame is not within the discharging assignment frame list, the method 800 concludes. In some examples, upon a determination that the current time frame is not within the discharging assignment frame list, the energy storage device may remain idle (i.e., neither charge nor discharge) during the current time frame.
In one example, the present disclosure also provides a method for calculating energy storage device capacity availability in Data Centers or other devices. In this example, a method is provided for calculating how much energy storage device capacity is available for charge/discharge monitization or optimization for financial arbitrage, ancillary services, carbon minimization, etc. with respect to the predicted Data Center load, the backup energy storage device capacity availability and it's health, and the amount of time the generators take to provide usable power in the event of a blackout or other power issue
The Data Center load for each upcoming storage window is predicted using a polynomial regression predictive machine learning model trained on historical data, which is used to predict future values using present conditions for this training data. Data Center load is rarely, if ever, 100% of capacity and varies throughout the day and year relatively predictably. Using a predicted Data Center load, rather than simply provisioning for the maximum possible demand liberates the maximum possible capacity for utilization from the energy storage device. The overall aim is identify the exact amount of energy storage device capacity that is surplus to this backup need, to fully optimize it's value.
Utilizing example values for certain variables, the storage capacity available for optimization may be calculated according to the following method:
According to the foregoing, the output of a sample run produces the following results: (1) 1.65 MWh is assigned for charge/discharge monitisisatin or optimsiation through Ancillary Services and (2) Minimum Discharge Level set to 1.14 MWh.
The foregoing description is merely illustrative in nature and is in no way intended to limit the disclosure, its application, or uses. The broad teachings of the disclosure can be implemented in a variety of forms. Therefore, while this disclosure includes particular examples, the true scope of the disclosure should not be so limited since other modifications will become apparent upon a study of the drawings, the specification, and the following claims. It should be understood that one or more steps within a method may be executed in different order (or concurrently) without altering the principles of the present disclosure. Further, although each of the embodiments is described above as having certain features, any one or more of those features described with respect to any embodiment of the disclosure can be implemented in and/or combined with features of any of the other embodiments, even if that combination is not explicitly described. In other words, the described embodiments are not mutually exclusive, and permutations of one or more embodiments with one another remain within the scope of this disclosure.
Spatial and functional relationships between elements (for example, between modules, circuit elements, semiconductor layers, etc.) are described using various terms, including “connected,” “engaged,” “coupled,” “adjacent,” “next to,” “on top of,” “above,” “below,” and “disposed.” Unless explicitly described as being “direct,” when a relationship between first and second elements is described in the above disclosure, that relationship can be a direct relationship where no other intervening elements are present between the first and second elements, but can also be an indirect relationship where one or more intervening elements are present (either spatially or functionally) between the first and second elements. As used herein, the phrase at least one of A, B, and C should be construed to mean a logical (A OR B OR C), using a non-exclusive logical OR, and should not be construed to mean “at least one of A, at least one of B, and at least one of C.”
In the figures, the direction of an arrow, as indicated by the arrowhead, generally demonstrates the flow of information (such as data or instructions) that is of interest to the illustration. For example, when element A and element B exchange a variety of information but information transmitted from element A to element B is relevant to the illustration, the arrow may point from element A to element B. This unidirectional arrow does not imply that no other information is transmitted from element B to element A. Further, for information sent from element A to element B, element B may send requests for, or receipt acknowledgements of, the information to element A.
The term memory is a subset of the term computer-readable medium or machine-readable medium. The term computer-readable medium or machine-readable medium, as used herein, does not encompass transitory electrical or electromagnetic signals propagating through a medium (such as on a carrier wave); the term computer-readable medium or machine-readable medium may therefore be considered tangible and non-transitory. Non-limiting examples of a non-transitory, tangible computer-readable medium or machine-readable medium are nonvolatile memory circuits (such as a flash memory circuit, an erasable programmable read-only memory circuit, or a mask read-only memory circuit), volatile memory circuits (such as a static random access memory circuit or a dynamic random access memory circuit), magnetic storage media (such as an analog or digital magnetic tape or a hard disk drive), and optical storage media (such as a CD, a DVD, or a Blu-ray Disc).
In this application, apparatus elements described as having particular attributes or performing particular operations are specifically configured to have those particular attributes and perform those particular operations. Specifically, a description of an element to perform an action means that the element is configured to perform the action. The configuration of an element may include programming of the element, such as by encoding instructions on a non-transitory, tangible computer-readable medium associated with the element.
The apparatuses and methods described in this application may be partially or fully implemented by a special purpose computer created by configuring a general purpose computer to execute one or more particular functions embodied in computer programs. The functional blocks, flowchart components, and other elements described above serve as software specifications, which can be translated into the computer programs by the routine work of a skilled technician or programmer.
The computer programs include processor-executable instructions that are stored on at least one non-transitory, tangible computer-readable medium. The computer programs may also include or rely on stored data. The computer programs may encompass a basic input/output system (BIOS) that interacts with hardware of the special purpose computer, device drivers that interact with particular devices of the special purpose computer, one or more operating systems, user applications, background services, background applications, etc.
The computer programs may include: (i) descriptive text to be parsed, such as HTML (hypertext markup language), XML (extensible markup language), or JSON (JavaScript Object Notation) (ii) assembly code, (iii) object code generated from source code by a compiler, (iv) source code for execution by an interpreter, (v) source code for compilation and execution by a just-in-time compiler, etc. As examples only, source code may be written using syntax from languages including C, C++, C#, Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, Javascript®, HTMLS (Hypertext Markup Language 5th revision), Ada, ASP (Active Server Pages), PHP (PHP: Hypertext Preprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, SIMULINK, and Python®.
None of the elements recited in the claims are intended to be a means-plus-function element within the meaning of 35 U.S.C. § 112(f) unless an element is expressly recited using the phrase “means for,” or in the case of a method claim using the phrases “operation for” or “step for.”