Patent Publication Number: US-2022214656-A1

Title: Systems and methods for maintaining occupant comfort for various environmental conditions

Description:
CROSS-REFERENCE TO RELATED PATENT APPLICATION 
     This application is a continuation of U.S. patent application Ser. No. 16/703,514 filed Dec. 4, 2019, which is incorporated herein by reference in its entirety. 
    
    
     BACKGROUND 
     The present disclosure relates generally to a building system in a building. The present disclosure relates more particularly to maintaining occupant comfort in a building through environmental control. 
     Maintaining occupant comfort in a building requires building equipment (e.g., HVAC equipment) to be operated to change environmental conditions in the building. In some systems, occupants are required to make any desired changes to the environmental conditions themselves if they are not comfortable. When operating building equipment to change specific environmental conditions, other environmental conditions may be affected as a result. Maintaining occupant comfort can be expensive if not performed correctly. Thus, systems and methods are needed to maintain occupant comfort for multiple environmental conditions while reducing expenses related to maintaining occupant comfort. 
     SUMMARY 
     One implementation of the present disclosure is an environmental control system of a building, according to some embodiments. The system includes a first building device operable to affect environmental conditions of a zone of the building by providing a first input to the zone, according to some embodiments. The system includes a second building device operable to independently affect a subset of the environmental conditions by providing a second input to the zone, according to some embodiments. The system includes a controller including a processing circuit, according to some embodiments. The processing circuit is configured to perform an optimization to generate control decisions for the first building device and the second building device, according to some embodiments. The optimization is performed subject to environmental condition constraints for the environmental conditions and using a predictive model that predicts an effect of the control decisions on the environmental conditions, according to some embodiments. The processing circuit is configured to operate the first building device and the second building device in accordance with the control decisions to affect the environmental conditions of the zone, according to some embodiments. 
     In some embodiments, the environmental conditions include at least one of a temperature, a humidity, a particular matter concentration, or a carbon dioxide concentration. 
     In some embodiments, the environmental condition constraints for the environmental conditions include at least one of an upper bound or a lower bound that indicate a maximum allowable value and a minimum allowable value of an associated environmental condition. 
     In some embodiments, the first building device is a ventilator operable to affect the environmental conditions by providing an airflow to the zone of the building. The airflow contains a portion of outdoor air, according to some embodiments. 
     In some embodiments, the predictive model is a zone model for the zone. The zone model defines a first relationship between a first environmental condition of the environmental conditions and the first input provided to the zone by the first building device, according to some embodiments. The zone model defines a second relationship between a second environmental condition of the environmental conditions, the first input provided to the zone by the first building device, and the second input provided to the zone by the second building device, according to some embodiments. 
     In some embodiments, the optimization is performed based on asset models describing the first building device and the second building device. Each of the assets models indicate inputs and outputs of the first building device or the second building device, according to some embodiments. The optimization is performed further based on a forecast of outdoor conditions that indicates environmental conditions of an external space, according to some embodiments. 
     In some embodiments, operating the first building device affects the environmental conditions. Operating the second building device affects the subset of the environmental conditions, according to some embodiments. Performing the optimization coordinates operation of the first building device and the second building device such that the environmental conditions are maintained at setpoints or within predetermined ranges, according to some embodiments. 
     Another implementation of the present disclosure is a method for maintaining occupant comfort in a zone of a building, according to some embodiments. The method includes receiving, at a cloud computing system via a communications network, measurements of environmental conditions within the zone, according to some embodiments. The method includes performing an optimization at the cloud computing system to generate control decisions for a first building device operable to affect the environmental conditions by providing a first input to the zone and a second building device operable to independently affect a subset of the environmental conditions by providing a second input to the zone, according to some embodiments. The optimization is performed subject to environmental condition constraints for the environmental conditions and using a predictive model that predicts an effect of the control decisions on the environmental conditions, according to some embodiments. The method includes providing the control decisions for the first building device and the second building device from the cloud computing system to a local control device within the building via the communications network, according to some embodiments. The local control device uses the control decisions to operate the first building device and the second building device to affect the environmental conditions of the zone, according to some embodiments. 
     In some embodiments, the optimization is performed based on asset models describing the first building device and the second building device. Each of the asset models indicate inputs and outputs of the first building device or the second building device, according to some embodiments. The optimization is performed further based on a forecast of outdoor conditions that indicates environmental conditions of an external space, according to some embodiments. 
     In some embodiments, the first building device is a ventilator operable to affect the environmental conditions by providing an airflow to the zone of the building. The airflow includes a portion of outdoor air, according to some embodiments. 
     In some embodiments, the predictive model is a zone model for the zone. The zone model defines a first relationship between a first environmental condition of the environmental conditions and the first input provided to the zone by the first building device, according to some embodiments. The zone model defines a second relationship between a second environmental condition of the environmental conditions, the first input provided to the zone by the first building device, and the second input provided to the zone by the second building device, according to some embodiments. 
     In some embodiments, the environmental conditions include at least one of a temperature, a humidity, a particular matter concentration, or a carbon dioxide concentration. 
     In some embodiments, the environmental condition constraints for the environmental conditions include at least one of an upper bound or a lower bound that indicate a maximum allowable value and a minimum allowable value of an associated environmental condition. 
     In some embodiments, the local control device is a thermostat configured to measure the environmental conditions in the zone. 
     Another implementation of the present disclosure is a controller for maintaining occupant comfort in a zone of a building, according to some embodiments. The controller includes one or more processors, according to some embodiments. The controller includes one or more non-transitory computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations, according to some embodiments. The operations include performing an optimization to generate control decisions for a ventilator operable to affect environmental conditions of the zone by providing a first input to the zone and a second building device operable to independently affect a subset of the environmental conditions by providing a second input to the zone, according to some embodiments. The optimization is performed subject to environmental condition constraints for the environmental conditions and using a predictive model that predicts an effect of the control decisions on the environmental conditions, according to some embodiments. The operations include operating the ventilator and the second building device in accordance with the control decisions to affect the environmental conditions of the zone, according to some embodiments. 
     In some embodiments, the environmental conditions include at least one of a temperature, a humidity, a particulate matter concentration, or a carbon dioxide concentration. 
     In some embodiments, the ventilator is operable to affect the environmental conditions by providing an airflow to the zone of the building. The airflow contains a portion of outdoor air, according to some embodiments. 
     In some embodiments, the predictive model is a zone model for the zone. The zone model defines a first relationship between a first environmental condition of the environmental conditions and the first input provided to the zone by the ventilator, according to some embodiments. The zone model defines a second relationship between a second environmental condition of the environmental conditions, the first input provided to the zone by the ventilator, and the second input provided to the zone by the second building device, according to some embodiments. 
     In some embodiments, the optimization is performed based on asset models describing the ventilator and the second building device. Each of the asset models indicate inputs and outputs of the ventilator or the second building device, according to some embodiments. The optimization is performed further based on a forecast of outdoor conditions that indicates environmental conditions of an external space, according to some embodiments. 
     In some embodiments, operating the ventilator affects the environmental conditions. Operating the second building device affects the subset of the environmental conditions, according to some embodiments. Performing the optimization coordinates operation of the ventilator and the second building device such that the environmental conditions are maintained at setpoints or within predetermined ranges, according to some embodiments. 
     Those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the devices and/or processes described herein, as defined solely by the claims, will become apparent in the detailed description set forth herein and taken in conjunction with the accompanying drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a drawing of a building equipped with a HVAC system, according to some embodiments. 
         FIG. 2  is a block diagram of a central plant which can be used to serve the energy loads of the building of  FIG. 1 , according to some embodiments. 
         FIG. 3  is a block diagram of an airside system which can be implemented in the building of  FIG. 1 , according to some embodiments. 
         FIG. 4  is a block diagram of an asset allocation system including sources, subplants, storage, sinks, and an asset allocator configured to optimize the allocation of these assets, according to some embodiments. 
         FIG. 5A  is a plant resource diagram illustrating the elements of a central plant and the connections between such elements, according to some embodiments. 
         FIG. 5B  is another plant resource diagram illustrating the elements of a central plant and the connections between such elements, according to some embodiments. 
         FIG. 6  is a block diagram of a central plant controller in which the asset allocator of  FIG. 4  can be implemented, according to some embodiments. 
         FIG. 7  is a block diagram of a planning tool in which the asset allocator of  FIG. 4  can be implemented, according to some embodiments. 
         FIG. 8  is a flow diagram illustrating an optimization process which can be performed by the planning tool of  FIG. 7 , according to some embodiments. 
         FIG. 9  is a block diagram illustrating the asset allocator of  FIG. 4  in greater detail, according to some embodiments. 
         FIG. 10  is a graph of a progressive rate structure which can be imposed by some utilities, according to some embodiments. 
         FIG. 11  is a graph of an operational domain for a storage device of a central plant, according to some embodiments. 
         FIG. 12  is a block diagram illustrating the operational domain module of  FIG. 9  in greater detail, according to some embodiments. 
         FIG. 13  is a graph of a subplant curve for a chiller subplant illustrating a relationship between chilled water production and electricity use, according to some embodiments. 
         FIG. 14  is a flowchart of a process for generating optimization constraints based on samples of data points associated with an operational domain of a subplant, according to some embodiments. 
         FIG. 15A  is a graph illustrating a result of sampling the operational domain defined by the subplant curve of  FIG. 13 , according to some embodiments. 
         FIG. 15B  is a graph illustrating a result of applying a convex hull algorithm to the sampled data points shown in  FIG. 15A , according to some embodiments. 
         FIG. 16  is a graph of an operational domain for a chiller subplant which can be generated based on the sampled data points shown in  FIG. 15A , according to some embodiments. 
         FIG. 17A  is a graph illustrating a technique for identifying intervals of an operational domain for a subplant, which can be performed by the operational domain module of  FIG. 12 , according to some embodiments. 
         FIG. 17B  is another graph illustrating the technique for identifying intervals of an operational domain for a subplant, which can be performed by the operational domain module of  FIG. 12 , according to some embodiments. 
         FIG. 18A  is a graph of an operational domain for a chiller subplant with a portion that extends beyond the operational range of the subplant, according to some embodiments. 
         FIG. 18B  is a graph of the operational domain shown in  FIG. 18A  after the operational domain has been sliced to remove the portion that extends beyond the operational range, according to some embodiments. 
         FIG. 19A  is a graph of an operational domain for a chiller subplant with a middle portion that lies between two disjoined operational ranges of the subplant, according to some embodiments. 
         FIG. 19B  is a graph of the operational domain shown in  FIG. 19A  after the operational domain has been split to remove the portion that lies between the two disjoined operational ranges, according to some embodiments. 
         FIGS. 20A-20D  are graphs illustrating a technique which can be used by the operational domain module of  FIG. 12  to detect and remove redundant constraints, according to some embodiments. 
         FIG. 21A  is a graph of a three-dimensional operational domain with a cross-section defined by a fixed parameter, according to some embodiments. 
         FIG. 21B  is a graph of a two-dimensional operational domain which can be generated based on the cross-section shown in the graph of  FIG. 21A , according to some embodiments. 
         FIG. 22  is a block diagram of an environmental control system including a comfort controller, according to some embodiments. 
         FIG. 23  is a block diagram of the comfort controller of  FIG. 22  in greater detail, according to some embodiments. 
         FIG. 24  is a block diagram of the asset allocator of  FIG. 9  in greater detail, according to some embodiments. 
         FIG. 25  is a block diagram of a resource diagram affecting various environmental conditions in a zone group, according to some embodiments. 
         FIG. 26  is a block diagram of a resource diagram affecting various environmental conditions in a zone group, according to some embodiments 
         FIG. 27A  is a graph of a three-dimensional bilinear mapping that can be used by a mixed integer linear program to determine environmental condition constraints, according to some embodiments. 
         FIG. 27B  is a graph of the three-dimensional bilinear mapping of  FIG. 21A  in courser detail, according to some embodiments. 
         FIG. 28  is a graph of a psychometric chart illustrating a comfort zone based on humidity and temperature, according to some embodiments. 
         FIG. 29  is a flow diagram of a process for operating building equipment to maintain occupant comfort in a zone for multiple environmental conditions, according to some embodiments. 
         FIG. 30  is a block diagram of an environmental control system with a cloud computing system, according to some embodiments. 
         FIG. 31  is a block diagram of an environmental control system that includes a smart thermostat for generating control schedules, according to some embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     Overview 
     Referring generally to the FIGURES, systems and methods for maintaining occupant comfort for various environmental conditions is shown, according to various exemplary embodiments. To maintain occupant comfort, a central plant with an asset allocator and components can be utilized. The asset allocator can be configured to manage energy assets such as central plant equipment, battery storage, and other types of equipment configured to serve the energy loads of a building. The asset allocator can determine an optimal distribution of heating, cooling, electricity, and energy loads across different subplants (i.e., equipment groups) of the central plant capable of producing that type of energy. 
     In some embodiments, the asset allocator is configured to control the distribution, production, storage, and usage of resources in the central plant. The asset allocator can be configured to minimize the economic cost (or maximize the economic value) of operating the central plant over a duration of an optimization period. The economic cost may be defined by a cost function J(x) that expresses economic cost as a function of the control decisions made by the asset allocator. The cost function J(x) may account for the cost of resources purchased from various sources, as well as the revenue generated by selling resources (e.g., to an energy grid) or participating in incentive programs. 
     The asset allocator can be configured to define various sources, subplants, storage, and sinks. These four categories of objects define the assets of a central plant and their interaction with the outside world. Sources may include commodity markets or other suppliers from which resources such as electricity, water, natural gas, and other resources can be purchased or obtained. Sinks may include the requested loads of a building or campus as well as other types of resource consumers. Subplants are the main assets of a central plant. Subplants can be configured to convert resource types, making it possible to balance requested loads from a building or campus using resources purchased from the sources. Storage can be configured to store energy or other types of resources for later use. 
     In some embodiments, the asset allocator performs an optimization process determine an optimal set of control decisions for each time step within the optimization period. The control decisions may include, for example, an optimal amount of each resource to purchase from the sources, an optimal amount of each resource to produce or convert using the subplants, an optimal amount of each resource to store or remove from storage, an optimal amount of each resource to sell to resources purchasers, and/or an optimal amount of each resource to provide to other sinks. In some embodiments, the asset allocator is configured to optimally dispatch all campus energy assets (i.e., the central plant equipment) in order to meet the requested heating, cooling, and electrical loads of the campus for each time step within the optimization period. 
     In some embodiments, the asset allocator considers multiple environmental conditions when determining the optimal set of control decisions for each time step within the optimization period. To properly manage each environmental condition, various building equipment may be able to adjust one or more of the environmental conditions. As such, the asset allocator may need to account for how each device affects various environmental conditions in order to maintain occupant comfort and reduce costs. These and other features of the asset allocator are described in greater detail below. 
     Building and HVAC System 
     Referring now to  FIG. 1 , a perspective view of a building  10  is shown. Building  10  can be served by a building management system (BMS). A BMS is, in general, a system of devices configured to control, monitor, and manage equipment in or around a building or building area. A BMS can include, for example, a HVAC system, a security system, a lighting system, a fire alerting system, any other system that is capable of managing building functions or devices, or any combination thereof. An example of a BMS which can be used to monitor and control building  10  is described in U.S. patent application Ser. No. 14/717,593 filed May 20, 2015, the entire disclosure of which is incorporated by reference herein. 
     The BMS that serves building  10  may include a HVAC system  100 . HVAC system  100  can include a plurality of HVAC devices (e.g., heaters, chillers, air handling units, pumps, fans, thermal energy storage, etc.) configured to provide heating, cooling, ventilation, or other services for building  10 . For example, HVAC system  100  is shown to include a waterside system  120  and an airside system  130 . Waterside system  120  may provide a heated or chilled fluid to an air handling unit of airside system  130 . Airside system  130  may use the heated or chilled fluid to heat or cool an airflow provided to building  10 . In some embodiments, waterside system  120  can be replaced with or supplemented by a central plant or central energy facility (described in greater detail with reference to  FIG. 2 ). An example of an airside system which can be used in HVAC system  100  is described in greater detail with reference to  FIG. 3 . 
     HVAC system  100  is shown to include a chiller  102 , a boiler  104 , and a rooftop air handling unit (AHU)  106 . Waterside system  120  may use boiler  104  and chiller  102  to heat or cool a working fluid (e.g., water, glycol, etc.) and may circulate the working fluid to AHU  106 . In various embodiments, the HVAC devices of waterside system  120  can be located in or around building  10  (as shown in  FIG. 1 ) or at an offsite location such as a central plant (e.g., a chiller plant, a steam plant, a heat plant, etc.). The working fluid can be heated in boiler  104  or cooled in chiller  102 , depending on whether heating or cooling is required in building  10 . Boiler  104  may add heat to the circulated fluid, for example, by burning a combustible material (e.g., natural gas) or using an electric heating element. Chiller  102  may place the circulated fluid in a heat exchange relationship with another fluid (e.g., a refrigerant) in a heat exchanger (e.g., an evaporator) to absorb heat from the circulated fluid. The working fluid from chiller  102  and/or boiler  104  can be transported to AHU  106  via piping  108 . 
     AHU  106  may place the working fluid in a heat exchange relationship with an airflow passing through AHU  106  (e.g., via one or more stages of cooling coils and/or heating coils). The airflow can be, for example, outside air, return air from within building  10 , or a combination of both. AHU  106  may transfer heat between the airflow and the working fluid to provide heating or cooling for the airflow. For example, AHU  106  can include one or more fans or blowers configured to pass the airflow over or through a heat exchanger containing the working fluid. The working fluid may then return to chiller  102  or boiler  104  via piping  110 . 
     Airside system  130  may deliver the airflow supplied by AHU  106  (i.e., the supply airflow) to building  10  via air supply ducts  112  and may provide return air from building  10  to AHU  106  via air return ducts  114 . In some embodiments, airside system  130  includes multiple variable air volume (VAV) units  116 . For example, airside system  130  is shown to include a separate VAV unit  116  on each floor or zone of building  10 . VAV units  116  can include dampers or other flow control elements that can be operated to control an amount of the supply airflow provided to individual zones of building  10 . In other embodiments, airside system  130  delivers the supply airflow into one or more zones of building  10  (e.g., via supply ducts  112 ) without using intermediate VAV units  116  or other flow control elements. AHU  106  can include various sensors (e.g., temperature sensors, pressure sensors, etc.) configured to measure attributes of the supply airflow. AHU  106  may receive input from sensors located within AHU  106  and/or within the building zone and may adjust the flow rate, temperature, or other attributes of the supply airflow through AHU  106  to achieve setpoint conditions for the building zone. 
     Central Plant 
     Referring now to  FIG. 2 , a block diagram of a central plant  200  is shown, according to some embodiments. In various embodiments, central plant  200  can supplement or replace waterside system  120  in HVAC system  100  or can be implemented separate from HVAC system  100 . When implemented in HVAC system  100 , central plant  200  can include a subset of the HVAC devices in HVAC system  100  (e.g., boiler  104 , chiller  102 , pumps, valves, etc.) and may operate to supply a heated or chilled fluid to AHU  106 . The HVAC devices of central plant  200  can be located within building  10  (e.g., as components of waterside system  120 ) or at an offsite location such as a central energy facility that serves multiple buildings. 
     Central plant  200  is shown to include a plurality of subplants  202 - 208 . Subplants  202 - 208  can be configured to convert energy or resource types (e.g., water, natural gas, electricity, etc.). For example, subplants  202 - 208  are shown to include a heater subplant  202 , a heat recovery chiller subplant  204 , a chiller subplant  206 , and a cooling tower subplant  208 . In some embodiments, subplants  202 - 208  consume resources purchased from utilities to serve the energy loads (e.g., hot water, cold water, electricity, etc.) of a building or campus. For example, heater subplant  202  can be configured to heat water in a hot water loop  214  that circulates the hot water between heater subplant  202  and building  10 . Similarly, chiller subplant  206  can be configured to chill water in a cold water loop  216  that circulates the cold water between chiller subplant  206  building  10 . 
     Heat recovery chiller subplant  204  can be configured to transfer heat from cold water loop  216  to hot water loop  214  to provide additional heating for the hot water and additional cooling for the cold water. Condenser water loop  218  may absorb heat from the cold water in chiller subplant  206  and reject the absorbed heat in cooling tower subplant  208  or transfer the absorbed heat to hot water loop  214 . In various embodiments, central plant  200  can include an electricity subplant (e.g., one or more electric generators) configured to generate electricity or any other type of subplant configured to convert energy or resource types. 
     Hot water loop  214  and cold water loop  216  may deliver the heated and/or chilled water to air handlers located on the rooftop of building  10  (e.g., AHU  106 ) or to individual floors or zones of building  10  (e.g., VAV units  116 ). The air handlers push air past heat exchangers (e.g., heating coils or cooling coils) through which the water flows to provide heating or cooling for the air. The heated or cooled air can be delivered to individual zones of building  10  to serve thermal energy loads of building  10 . The water then returns to subplants  202 - 208  to receive further heating or cooling. 
     Although subplants  202 - 208  are shown and described as heating and cooling water for circulation to a building, it is understood that any other type of working fluid (e.g., glycol, CO 2 , etc.) can be used in place of or in addition to water to serve thermal energy loads. In other embodiments, subplants  202 - 208  may provide heating and/or cooling directly to the building or campus without requiring an intermediate heat transfer fluid. These and other variations to central plant  200  are within the teachings of the present disclosure. 
     Each of subplants  202 - 208  can include a variety of equipment configured to facilitate the functions of the subplant. For example, heater subplant  202  is shown to include a plurality of heating elements  220  (e.g., boilers, electric heaters, etc.) configured to add heat to the hot water in hot water loop  214 . Heater subplant  202  is also shown to include several pumps  222  and  224  configured to circulate the hot water in hot water loop  214  and to control the flow rate of the hot water through individual heating elements  220 . Chiller subplant  206  is shown to include a plurality of chillers  232  configured to remove heat from the cold water in cold water loop  216 . Chiller subplant  206  is also shown to include several pumps  234  and  236  configured to circulate the cold water in cold water loop  216  and to control the flow rate of the cold water through individual chillers  232 . 
     Heat recovery chiller subplant  204  is shown to include a plurality of heat recovery heat exchangers  226  (e.g., refrigeration circuits) configured to transfer heat from cold water loop  216  to hot water loop  214 . Heat recovery chiller subplant  204  is also shown to include several pumps  228  and  230  configured to circulate the hot water and/or cold water through heat recovery heat exchangers  226  and to control the flow rate of the water through individual heat recovery heat exchangers  226 . Cooling tower subplant  208  is shown to include a plurality of cooling towers  238  configured to remove heat from the condenser water in condenser water loop  218 . Cooling tower subplant  208  is also shown to include several pumps  240  configured to circulate the condenser water in condenser water loop  218  and to control the flow rate of the condenser water through individual cooling towers  238 . 
     In some embodiments, one or more of the pumps in central plant  200  (e.g., pumps  222 ,  224 ,  228 ,  230 ,  234 ,  236 , and/or  240 ) or pipelines in central plant  200  include an isolation valve associated therewith. Isolation valves can be integrated with the pumps or positioned upstream or downstream of the pumps to control the fluid flows in central plant  200 . In various embodiments, central plant  200  can include more, fewer, or different types of devices and/or subplants based on the particular configuration of central plant  200  and the types of loads served by central plant  200 . 
     Still referring to  FIG. 2 , central plant  200  is shown to include hot thermal energy storage (TES)  210  and cold thermal energy storage (TES)  212 . Hot TES  210  and cold TES  212  can be configured to store hot and cold thermal energy for subsequent use. For example, hot TES  210  can include one or more hot water storage tanks  242  configured to store the hot water generated by heater subplant  202  or heat recovery chiller subplant  204 . Hot TES  210  may also include one or more pumps or valves configured to control the flow rate of the hot water into or out of hot TES tank  242 . 
     Similarly, cold TES  212  can include one or more cold water storage tanks  244  configured to store the cold water generated by chiller subplant  206  or heat recovery chiller subplant  204 . Cold TES  212  may also include one or more pumps or valves configured to control the flow rate of the cold water into or out of cold TES tanks  244 . In some embodiments, central plant  200  includes electrical energy storage (e.g., one or more batteries) or any other type of device configured to store resources. The stored resources can be purchased from utilities, generated by central plant  200 , or otherwise obtained from any source. 
     Airside System 
     Referring now to  FIG. 3 , a block diagram of an airside system  300  is shown, according to some embodiments. In various embodiments, airside system  300  may supplement or replace airside system  130  in HVAC system  100  or can be implemented separate from HVAC system  100 . When implemented in HVAC system  100 , airside system  300  can include a subset of the HVAC devices in HVAC system  100  (e.g., AHU  106 , VAV units  116 , ducts  112 - 114 , fans, dampers, etc.) and can be located in or around building  10 . Airside system  300  may operate to heat or cool an airflow provided to building  10  using a heated or chilled fluid provided by central plant  200 . 
     Airside system  300  is shown to include an economizer-type air handling unit (AHU)  302 . Economizer-type AHUs vary the amount of outside air and return air used by the air handling unit for heating or cooling. For example, AHU  302  may receive return air  304  from building zone  306  via return air duct  308  and may deliver supply air  310  to building zone  306  via supply air duct  312 . In some embodiments, AHU  302  is a rooftop unit located on the roof of building  10  (e.g., AHU  106  as shown in  FIG. 1 ) or otherwise positioned to receive both return air  304  and outside air  314 . AHU  302  can be configured to operate exhaust air damper  316 , mixing damper  318 , and outside air damper  320  to control an amount of outside air  314  and return air  304  that combine to form supply air  310 . Any return air  304  that does not pass through mixing damper  318  can be exhausted from AHU  302  through exhaust damper  316  as exhaust air  322 . 
     Each of dampers  316 - 320  can be operated by an actuator. For example, exhaust air damper  316  can be operated by actuator  324 , mixing damper  318  can be operated by actuator  326 , and outside air damper  320  can be operated by actuator  328 . Actuators  324 - 328  may communicate with an AHU controller  330  via a communications link  332 . Actuators  324 - 328  may receive control signals from AHU controller  330  and may provide feedback signals to AHU controller  330 . Feedback signals can include, for example, an indication of a current actuator or damper position, an amount of torque or force exerted by the actuator, diagnostic information (e.g., results of diagnostic tests performed by actuators  324 - 328 ), status information, commissioning information, configuration settings, calibration data, and/or other types of information or data that can be collected, stored, or used by actuators  324 - 328 . AHU controller  330  can be an economizer controller configured to use one or more control algorithms (e.g., state-based algorithms, extremum seeking control (ESC) algorithms, proportional-integral (PI) control algorithms, proportional-integral-derivative (PID) control algorithms, model predictive control (MPC) algorithms, feedback control algorithms, etc.) to control actuators  324 - 328 . 
     Still referring to  FIG. 3 , AHU  302  is shown to include a cooling coil  334 , a heating coil  336 , and a fan  338  positioned within supply air duct  312 . Fan  338  can be configured to force supply air  310  through cooling coil  334  and/or heating coil  336  and provide supply air  310  to building zone  306 . AHU controller  330  may communicate with fan  338  via communications link  340  to control a flow rate of supply air  310 . In some embodiments, AHU controller  330  controls an amount of heating or cooling applied to supply air  310  by modulating a speed of fan  338 . 
     Cooling coil  334  may receive a chilled fluid from central plant  200  (e.g., from cold water loop  216 ) via piping  342  and may return the chilled fluid to central plant  200  via piping  344 . Valve  346  can be positioned along piping  342  or piping  344  to control a flow rate of the chilled fluid through cooling coil  334 . In some embodiments, cooling coil  334  includes multiple stages of cooling coils that can be independently activated and deactivated (e.g., by AHU controller  330 , by BMS controller  366 , etc.) to modulate an amount of cooling applied to supply air  310 . 
     Heating coil  336  may receive a heated fluid from central plant  200  (e.g., from hot water loop  214 ) via piping  348  and may return the heated fluid to central plant  200  via piping  350 . Valve  352  can be positioned along piping  348  or piping  350  to control a flow rate of the heated fluid through heating coil  336 . In some embodiments, heating coil  336  includes multiple stages of heating coils that can be independently activated and deactivated (e.g., by AHU controller  330 , by BMS controller  366 , etc.) to modulate an amount of heating applied to supply air  310 . 
     Each of valves  346  and  352  can be controlled by an actuator. For example, valve  346  can be controlled by actuator  354  and valve  352  can be controlled by actuator  356 . Actuators  354 - 356  may communicate with AHU controller  330  via communications links  358 - 360 . Actuators  354 - 356  may receive control signals from AHU controller  330  and may provide feedback signals to controller  330 . In some embodiments, AHU controller  330  receives a measurement of the supply air temperature from a temperature sensor  362  positioned in supply air duct  312  (e.g., downstream of cooling coil  334  and/or heating coil  336 ). AHU controller  330  may also receive a measurement of the temperature of building zone  306  from a temperature sensor  364  located in building zone  306 . 
     In some embodiments, AHU controller  330  operates valves  346  and  352  via actuators  354 - 356  to modulate an amount of heating or cooling provided to supply air  310  (e.g., to achieve a setpoint temperature for supply air  310  or to maintain the temperature of supply air  310  within a setpoint temperature range). The positions of valves  346  and  352  affect the amount of heating or cooling provided to supply air  310  by cooling coil  334  or heating coil  336  and may correlate with the amount of energy consumed to achieve a desired supply air temperature. AHU  330  may control the temperature of supply air  310  and/or building zone  306  by activating or deactivating coils  334 - 336 , adjusting a speed of fan  338 , or a combination of both. 
     Still referring to  FIG. 3 , airside system  300  is shown to include a building management system (BMS) controller  366  and a client device  368 . BMS controller  366  can include one or more computer systems (e.g., servers, supervisory controllers, subsystem controllers, etc.) that serve as system level controllers, application or data servers, head nodes, or master controllers for airside system  300 , central plant  200 , HVAC system  100 , and/or other controllable systems that serve building  10 . BMS controller  366  may communicate with multiple downstream building systems or subsystems (e.g., HVAC system  100 , a security system, a lighting system, central plant  200 , etc.) via a communications link  370  according to like or disparate protocols (e.g., LON, BACnet, etc.). In various embodiments, AHU controller  330  and BMS controller  366  can be separate (as shown in  FIG. 3 ) or integrated. In an integrated implementation, AHU controller  330  can be a software module configured for execution by a processor of BMS controller  366 . 
     In some embodiments, AHU controller  330  receives information from BMS controller  366  (e.g., commands, setpoints, operating boundaries, etc.) and provides information to BMS controller  366  (e.g., temperature measurements, valve or actuator positions, operating statuses, diagnostics, etc.). For example, AHU controller  330  may provide BMS controller  366  with temperature measurements from temperature sensors  362 - 364 , equipment on/off states, equipment operating capacities, and/or any other information that can be used by BMS controller  366  to monitor or control a variable state or condition within building zone  306 . 
     Client device  368  can include one or more human-machine interfaces or client interfaces (e.g., graphical user interfaces, reporting interfaces, text-based computer interfaces, client-facing web services, web servers that provide pages to web clients, etc.) for controlling, viewing, or otherwise interacting with HVAC system  100 , its subsystems, and/or devices. Client device  368  can be a computer workstation, a client terminal, a remote or local interface, or any other type of user interface device. Client device  368  can be a stationary terminal or a mobile device. For example, client device  368  can be a desktop computer, a computer server with a user interface, a laptop computer, a tablet, a smartphone, a PDA, or any other type of mobile or non-mobile device. Client device  368  may communicate with BMS controller  366  and/or AHU controller  330  via communications link  372 . 
     Asset Allocation System 
     Referring now to  FIG. 4 , a block diagram of an asset allocation system  400  is shown, according to an exemplary embodiment. Asset allocation system  400  can be configured to manage energy assets such as central plant equipment, battery storage, and other types of equipment configured to serve the energy loads of a building. Asset allocation system  400  can determine an optimal distribution of heating, cooling, electricity, and energy loads across different subplants (i.e., equipment groups) capable of producing that type of energy. In some embodiments, asset allocation system  400  is implemented as a component of central plant  200  and interacts with the equipment of central plant  200  in an online operational environment (e.g., performing real-time control of the central plant equipment). In other embodiments, asset allocation system  400  can be implemented as a component of a planning tool (described with reference to  FIGS. 7-8 ) and can be configured to simulate the operation of a central plant over a predetermined time period for planning, budgeting, and/or design considerations. 
     Asset allocation system  400  is shown to include sources  410 , subplants  420 , storage  430 , and sinks  440 . These four categories of objects define the assets of a central plant and their interaction with the outside world. Sources  410  may include commodity markets or other suppliers from which resources such as electricity, water, natural gas, and other resources can be purchased or obtained. Sources  410  may provide resources that can be used by asset allocation system  400  to satisfy the demand of a building or campus. For example, sources  410  are shown to include an electric utility  411 , a water utility  412 , a natural gas utility  413 , a photovoltaic (PV) field (e.g., a collection of solar panels), an energy market  415 , and source M  416 , where M is the total number of sources  410 . Resources purchased from sources  410  can be used by subplants  420  to produce generated resources (e.g., hot water, cold water, electricity, steam, etc.), stored in storage  430  for later use, or provided directly to sinks  440 . 
     Subplants  420  are the main assets of a central plant. Subplants  420  are shown to include a heater subplant  421 , a chiller subplant  422 , a heat recovery chiller subplant  423 , a steam subplant  424 , an electricity subplant  425 , and subplant N, where N is the total number of subplants  420 . In some embodiments, subplants  420  include some or all of the subplants of central plant  200 , as described with reference to  FIG. 2 . For example, subplants  420  can include heater subplant  202 , heat recovery chiller subplant  204 , chiller subplant  206 , and/or cooling tower subplant  208 . 
     Subplants  420  can be configured to convert resource types, making it possible to balance requested loads from the building or campus using resources purchased from sources  410 . For example, heater subplant  421  may be configured to generate hot thermal energy (e.g., hot water) by heating water using electricity or natural gas. Chiller subplant  422  may be configured to generate cold thermal energy (e.g., cold water) by chilling water using electricity. Heat recovery chiller subplant  423  may be configured to generate hot thermal energy and cold thermal energy by removing heat from one water supply and adding the heat to another water supply. Steam subplant  424  may be configured to generate steam by boiling water using electricity or natural gas. Electricity subplant  425  may be configured to generate electricity using mechanical generators (e.g., a steam turbine, a gas-powered generator, etc.) or other types of electricity-generating equipment (e.g., photovoltaic equipment, hydroelectric equipment, etc.). 
     The input resources used by subplants  420  may be provided by sources  410 , retrieved from storage  430 , and/or generated by other subplants  420 . For example, steam subplant  424  may produce steam as an output resource. Electricity subplant  425  may include a steam turbine that uses the steam generated by steam subplant  424  as an input resource to generate electricity. The output resources produced by subplants  420  may be stored in storage  430 , provided to sinks  440 , and/or used by other subplants  420 . For example, the electricity generated by electricity subplant  425  may be stored in electrical energy storage  433 , used by chiller subplant  422  to generate cold thermal energy, used to satisfy the electric load  445  of a building, or sold to resource purchasers  441 . 
     Storage  430  can be configured to store energy or other types of resources for later use. Each type of storage within storage  430  may be configured to store a different type of resource. For example, storage  430  is shown to include hot thermal energy storage  431  (e.g., one or more hot water storage tanks), cold thermal energy storage  432  (e.g., one or more cold thermal energy storage tanks), electrical energy storage  433  (e.g., one or more batteries), and resource type P storage  434 , where P is the total number of storage  430 . In some embodiments, storage  430  include some or all of the storage of central plant  200 , as described with reference to  FIG. 2 . In some embodiments, storage  430  includes the heat capacity of the building served by the central plant. The resources stored in storage  430  may be purchased directly from sources or generated by subplants  420 . 
     In some embodiments, storage  430  is used by asset allocation system  400  to take advantage of price-based demand response (PBDR) programs. PBDR programs encourage consumers to reduce consumption when generation, transmission, and distribution costs are high. PBDR programs are typically implemented (e.g., by sources  410 ) in the form of energy prices that vary as a function of time. For example, some utilities may increase the price per unit of electricity during peak usage hours to encourage customers to reduce electricity consumption during peak times. Some utilities also charge consumers a separate demand charge based on the maximum rate of electricity consumption at any time during a predetermined demand charge period. 
     Advantageously, storing energy and other types of resources in storage  430  allows for the resources to be purchased at times when the resources are relatively less expensive (e.g., during non-peak electricity hours) and stored for use at times when the resources are relatively more expensive (e.g., during peak electricity hours). Storing resources in storage  430  also allows the resource demand of the building or campus to be shifted in time. For example, resources can be purchased from sources  410  at times when the demand for heating or cooling is low and immediately converted into hot or cold thermal energy by subplants  420 . The thermal energy can be stored in storage  430  and retrieved at times when the demand for heating or cooling is high. This allows asset allocation system  400  to smooth the resource demand of the building or campus and reduces the maximum required capacity of subplants  420 . Smoothing the demand also asset allocation system  400  to reduce the peak electricity consumption, which results in a lower demand charge. 
     In some embodiments, storage  430  is used by asset allocation system  400  to take advantage of incentive-based demand response (IBDR) programs. IBDR programs provide incentives to customers who have the capability to store energy, generate energy, or curtail energy usage upon request. Incentives are typically provided in the form of monetary revenue paid by sources  410  or by an independent service operator (ISO). IBDR programs supplement traditional utility-owned generation, transmission, and distribution assets with additional options for modifying demand load curves. For example, stored energy can be sold to resource purchasers  441  or an energy grid  442  to supplement the energy generated by sources  410 . In some instances, incentives for participating in an IBDR program vary based on how quickly a system can respond to a request to change power output/consumption. Faster responses may be compensated at a higher level. Advantageously, electrical energy storage  433  allows system  400  to quickly respond to a request for electric power by rapidly discharging stored electrical energy to energy grid  442 . 
     Sinks  440  may include the requested loads of a building or campus as well as other types of resource consumers. For example, sinks  440  are shown to include resource purchasers  441 , an energy grid  442 , a hot water load  443 , a cold water load  444 , an electric load  445 , and sink Q, where Q is the total number of sinks  440 . A building may consume various resources including, for example, hot thermal energy (e.g., hot water), cold thermal energy (e.g., cold water), and/or electrical energy. In some embodiments, the resources are consumed by equipment or subsystems within the building (e.g., HVAC equipment, lighting, computers and other electronics, etc.). The consumption of each sink  440  over the optimization period can be supplied as an input to asset allocation system  400  or predicted by asset allocation system  400 . Sinks  440  can receive resources directly from sources  410 , from subplants  420 , and/or from storage  430 . 
     Still referring to  FIG. 4 , asset allocation system  400  is shown to include an asset allocator  402 . Asset allocator  402  may be configured to control the distribution, production, storage, and usage of resources in asset allocation system  400 . In some embodiments, asset allocator  402  performs an optimization process determine an optimal set of control decisions for each time step within an optimization period. The control decisions may include, for example, an optimal amount of each resource to purchase from sources  410 , an optimal amount of each resource to produce or convert using subplants  420 , an optimal amount of each resource to store or remove from storage  430 , an optimal amount of each resource to sell to resources purchasers  441  or energy grid  440 , and/or an optimal amount of each resource to provide to other sinks  440 . In some embodiments, the control decisions include an optimal amount of each input resource and output resource for each of subplants  420 . 
     In some embodiments, asset allocator  402  is configured to optimally dispatch all campus energy assets in order to meet the requested heating, cooling, and electrical loads of the campus for each time step within an optimization horizon or optimization period of duration h. Instead of focusing on only the typical HVAC energy loads, the concept is extended to the concept of resource. Throughout this disclosure, the term “resource” is used to describe any type of commodity purchased from sources  410 , used or produced by subplants  420 , stored or discharged by storage  430 , or consumed by sinks  440 . For example, water may be considered a resource that is consumed by chillers, heaters, or cooling towers during operation. This general concept of a resource can be extended to chemical processing plants where one of the resources is the product that is being produced by the chemical processing plat. 
     Asset allocator  402  can be configured to operate the equipment of asset allocation system  400  to ensure that a resource balance is maintained at each time step of the optimization period. This resource balance is shown in the following equation: 
       Σ x   time =0 ∀resources,∀time∈horizon
 
     where the sum is taken over all producers and consumers of a given resource (i.e., all of sources  410 , subplants  420 , storage  430 , and sinks  440 ) and time is the time index. Each time element represents a period of time during which the resource productions, requests, purchases, etc. are assumed constant. Asset allocator  402  may ensure that this equation is satisfied for all resources regardless of whether that resource is required by the building or campus. For example, some of the resources produced by subplants  420  may be intermediate resources that function only as inputs to other subplants  420 . 
     In some embodiments, the resources balanced by asset allocator  402  include multiple resources of the same type (e.g., multiple chilled water resources, multiple electricity resources, etc.). Defining multiple resources of the same type may allow asset allocator  402  to satisfy the resource balance given the physical constraints and connections of the central plant equipment. For example, suppose a central plant has multiple chillers and multiple cold water storage tanks, with each chiller physically connected to a different cold water storage tank (i.e., chiller A is connected to cold water storage tank A, chiller B is connected to cold water storage tank B, etc.). Given that only one chiller can supply cold water to each cold water storage tank, a different cold water resource can be defined for the output of each chiller. This allows asset allocator  402  to ensure that the resource balance is satisfied for each cold water resource without attempting to allocate resources in a way that is physically impossible (e.g., storing the output of chiller A in cold water storage tank B, etc.). 
     Asset allocator  402  may be configured to minimize the economic cost (or maximize the economic value) of operating asset allocation system  400  over the duration of the optimization period. The economic cost may be defined by a cost function J(x) that expresses economic cost as a function of the control decisions made by asset allocator  402 . The cost function J(x) may account for the cost of resources purchased from sources  410 , as well as the revenue generated by selling resources to resource purchasers  441  or energy grid  442  or participating in incentive programs. The cost optimization performed by asset allocator  402  can be expressed as: 
     
       
         
           
             
               
                 arg 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 min 
               
               x 
             
             ⁢ 
             
                 
             
             ⁢ 
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
           
         
       
     
     where J(x) is defined as follows: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               
                 
                   ∑ 
                   sources 
                 
                 ⁢ 
                 
                   
                     ∑ 
                     horizon 
                   
                   ⁢ 
                   
                     cost 
                     ⁡ 
                     
                       ( 
                       
                         
                           purchase 
                           
                             resource 
                             , 
                             time 
                           
                         
                         , 
                         time 
                       
                       ) 
                     
                   
                 
               
               - 
               
                 
                   ∑ 
                   incentives 
                 
                 ⁢ 
                 
                   
                     ∑ 
                     horizon 
                   
                   ⁢ 
                   
                     revenue 
                     ⁡ 
                     
                       ( 
                       ReservationAmount 
                       ) 
                     
                   
                 
               
             
           
         
       
     
     The first term in the cost function J(x) represents the total cost of all resources purchased over the optimization horizon. Resources can include, for example, water, electricity, natural gas, or other types of resources purchased from a utility or other source  410 . The second term in the cost function J(x) represents the total revenue generated by participating in incentive programs (e.g., IBDR programs) over the optimization horizon. The revenue may be based on the amount of power reserved for participating in the incentive programs. Accordingly, the total cost function represents the total cost of resources purchased minus any revenue generated from participating in incentive programs. 
     Each of subplants  420  and storage  430  may include equipment that can be controlled by asset allocator  402  to optimize the performance of asset allocation system  400 . Subplant equipment may include, for example, heating devices, chillers, heat recovery heat exchangers, cooling towers, energy storage devices, pumps, valves, and/or other devices of subplants  420  and storage  430 . Individual devices of subplants  420  can be turned on or off to adjust the resource production of each subplant  420 . In some embodiments, individual devices of subplants  420  can be operated at variable capacities (e.g., operating a chiller at 10% capacity or 60% capacity) according to an operating setpoint received from asset allocator  402 . Asset allocator  402  can control the equipment of subplants  420  and storage  430  to adjust the amount of each resource purchased, consumed, and/or produced by system  400 . 
     In some embodiments, asset allocator  402  minimizes the cost function while participating in PBDR programs, IBDR programs, or simultaneously in both PBDR and IBDR programs. For the IBDR programs, asset allocator  402  may use statistical estimates of past clearing prices, mileage ratios, and event probabilities to determine the revenue generation potential of selling stored energy to resource purchasers  441  or energy grid  442 . For the PBDR programs, asset allocator  402  may use predictions of ambient conditions, facility thermal loads, and thermodynamic models of installed equipment to estimate the resource consumption of subplants  420 . Asset allocator  402  may use predictions of the resource consumption to monetize the costs of running the equipment. 
     Asset allocator  402  may automatically determine (e.g., without human intervention) a combination of PBDR and/or IBDR programs in which to participate over the optimization horizon in order to maximize economic value. For example, asset allocator  402  may consider the revenue generation potential of IBDR programs, the cost reduction potential of PBDR programs, and the equipment maintenance/replacement costs that would result from participating in various combinations of the IBDR programs and PBDR programs. Asset allocator  402  may weigh the benefits of participation against the costs of participation to determine an optimal combination of programs in which to participate. Advantageously, this allows asset allocator  402  to determine an optimal set of control decisions that maximize the overall value of operating asset allocation system  400 . 
     In some embodiments, asset allocator  402  optimizes the cost function J(x) subject to the following constraint, which guarantees the balance between resources purchased, produced, discharged, consumed, and requested over the optimization horizon: 
     
       
         
           
             
               
                 
                   
                     ∑ 
                     sources 
                   
                   ⁢ 
                   
                     purchase 
                     
                       resource 
                       , 
                       time 
                     
                   
                 
                 + 
                 
                   
                     ∑ 
                     subplants 
                   
                   ⁢ 
                   
                     produces 
                     ⁡ 
                     
                       ( 
                       
                         
                           x 
                           
                             internal 
                             , 
                             time 
                           
                         
                         , 
                         
                           x 
                           
                             external 
                             , 
                             time 
                           
                         
                         , 
                         
                           v 
                           
                             uncontrolled 
                             , 
                             time 
                           
                         
                       
                       ) 
                     
                   
                 
                 - 
                 
                   
                     ∑ 
                     subplants 
                   
                   ⁢ 
                   
                     consumes 
                     ⁡ 
                     
                       ( 
                       
                         
                           x 
                           
                             internal 
                             , 
                             time 
                           
                         
                         , 
                         
                           x 
                           
                             external 
                             , 
                             time 
                           
                         
                         , 
                         
                           v 
                           
                             uncontrolled 
                             , 
                             time 
                           
                         
                       
                       ) 
                     
                   
                 
                 + 
                 
                   
                     ∑ 
                     storages 
                   
                   ⁢ 
                   
                     
                       discharges 
                       resource 
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           x 
                           
                             internal 
                             , 
                             time 
                           
                         
                         , 
                         
                           x 
                           
                             external 
                             , 
                             time 
                           
                         
                       
                       ) 
                     
                   
                 
                 - 
                 
                   
                     ∑ 
                     sinks 
                   
                   ⁢ 
                   
                     requests 
                     resource 
                   
                 
               
               = 
               
                 0 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   ∀ 
                   resources 
                 
               
             
             , 
             
               ∀ 
               
                 time 
                 ∈ 
                 horizon 
               
             
           
         
       
     
     where x internal,time  includes internal decision variables (e.g., load allocated to each component of asset allocation system  400 ), x external,time  includes external decision variables (e.g., condenser water return temperature or other shared variables across subplants  420 ), and v uncontrolled,time  includes uncontrolled variables (e.g., weather conditions). 
     The first term in the previous equation represents the total amount of each resource (e.g., electricity, water, natural gas, etc.) purchased from each source  410  over the optimization horizon. The second and third terms represent the total production and consumption of each resource by subplants  420  over the optimization horizon. The fourth term represents the total amount of each resource discharged from storage  430  over the optimization horizon. Positive values indicate that the resource is discharged from storage  430 , whereas negative values indicate that the resource is charged or stored. The fifth term represents the total amount of each resource requested by sinks  440  over the optimization horizon. Accordingly, this constraint ensures that the total amount of each resource purchased, produced, or discharged from storage  430  is equal to the amount of each resource consumed, stored, or provided to sinks  440 . 
     In some embodiments, additional constraints exist on the regions in which subplants  420  can operate. Examples of such additional constraints include the acceptable space (i.e., the feasible region) for the decision variables given the uncontrolled conditions, the maximum amount of a resource that can be purchased from a given source  410 , and any number of plant-specific constraints that result from the mechanical design of the plant. These additional constraints can be generated and imposed by operational domain module  904  (described in greater detail with reference to  FIGS. 9 and 12 ). 
     Asset allocator  402  may include a variety of features that enable the application of asset allocator  402  to nearly any central plant, central energy facility, combined heating and cooling facility, or combined heat and power facility. These features include broadly applicable definitions for subplants  420 , sinks  440 , storage  430 , and sources  410 ; multiples of the same type of subplant  420  or sink  440 ; subplant resource connections that describe which subplants  420  can send resources to which sinks  440  and at what efficiency; subplant minimum turndown into the asset allocation optimization; treating electrical energy as any other resource that must be balanced; constraints that can be commissioned during runtime; different levels of accuracy at different points in the horizon; setpoints (or other decisions) that are shared between multiple subplants included in the decision vector; disjoint subplant operation regions; incentive based electrical energy programs; and high level airside models. Incorporation of these features may allow asset allocator  402  to support a majority of the central energy facilities that will be seen in the future. Additionally, it will be possible to rapidly adapt to the inclusion of new subplant types. Some of these features are described in greater detail below. 
     Broadly applicable definitions for subplants  420 , sinks  440 , storage  430 , and sources  410  allow each of these components to be described by the mapping from decision variables to resources consume and resources produced. Resources and other components of system  400  do not need to be “typed,” but rather can be defined generally. The mapping from decision variables to resource consumption and production can change based on extrinsic conditions. Asset allocator  420  can solve the optimization problem by simply balancing resource use and can be configured to solve in terms of consumed resource  1 , consumed resource  2 , produced resource  1 , etc., rather than electricity consumed, water consumed, and chilled water produced. Such an interface at the high level allows for the mappings to be injected into asset allocation system  400  rather than needing them hard coded. Of course, “typed” resources and other components of system  400  can still exist in order to generate the mapping at run time, based on equipment out of service. 
     Incorporating multiple subplants  420  or sinks  440  of the same type allows for modeling the interconnections between subplants  420 , sources  410 , storage  430 , and sinks  440 . This type of modeling describes which subplants  420  can use resource from which sources  410  and which subplants  420  can send resources to which sinks  440 . This can be visualized as a resource connection matrix (i.e., a directed graph) between the subplants  420 , sources  410 , sinks  440 , and storage  430 . Examples of such directed graphs are described in greater detail with reference to  FIGS. 5A-5B . Extending this concept, it is possible to include costs for delivering the resource along a connection and also, efficiencies of the transmission (e.g., amount of energy that makes it to the other side of the connection). 
     In some instances, constraints arise due to mechanical problems after an energy facility has been built. Accordingly, these constraints are site specific and are often not incorporated into the main code for any of subplants  420  or the high level problem itself. Commissioned constraints allow for such constraints to be added without software updates during the commissioning phase of the project. Furthermore, if these additional constraints are known prior to the plant build, they can be added to the design tool run. This would allow the user to determine the cost of making certain design decisions. 
     Incorporating minimum turndown and allowing disjoint operating regions may greatly enhance the accuracy of the asset allocation problem solution as well as decrease the number of modifications to solution of the asset allocation by the low level optimization or another post-processing technique. It may be beneficial to allow for certain features to change as a function of time into the horizon. One could use the full disjoint range (most accurate) for the first four hours, then switch to only incorporating the minimum turndown for the next two days, and finally using to the linear relaxation with no binary constraints for the rest of the horizon. For example, asset allocator  402  can be given the operational domain that correctly allocates three chillers with a range of 1800 to 2500 tons. The true subplant range is then the union of [1800, 2500], [3600, 5000], and [5400, 7500]. If the range were approximated as [1800, 7500] the low level optimization or other post-processing technique would have to rebalance any solution between 2500 and 3600 or between 5000 and 5400 tons. Rebalancing is typically done heuristically and is unlikely to be optimal. Incorporating these disjoint operational domains adds binary variables to the optimization problem (described in greater detail below). 
     Some decisions made by asset allocator  402  may be shared by multiple elements of system  400 . The condenser water setpoint of cooling towers is an example. It is possible to assume that this variable is fixed and allow the low level optimization to decide on its value. However, this does not allow one to make a trade-off between the chiller&#39;s electrical use and the tower&#39;s electrical use, nor does it allow the optimization to exceed the chiller&#39;s design load by feeding it cooler condenser water. Incorporating these extrinsic decisions into asset allocator  402  allows for a more accurate solution at the cost of computational time. 
     Incentive programs often require the reservation of one or more assets for a period of time. In traditional systems, these assets are typically turned over to alternative control, different than the typical resource price based optimization. Advantageously, asset allocator  402  can be configured to add revenue to the cost function per amount of resource reserved. Asset allocator  402  can then make the reserved portion of the resource unavailable for typical price based cost optimization. For example, asset allocator  402  can reserve a portion of a battery asset for frequency response. In this case, the battery can be used to move the load or shave the peak demand, but can also be reserved to participate in the frequency response program. 
     Plant Resource Diagrams 
     Referring now to  FIG. 5A , a plant resource diagram  500  is shown, according to an exemplary embodiment. Plant resource diagram  500  represents a particular implementation of a central plant and indicates how the equipment of the central plant are connected to each other and to external systems or devices. Asset allocator  402  can use plant resource diagram  500  to identify the interconnections between various sources  410 , subplants  420 , storage  430 , and sinks  440  in the central plant. In some instances, the interconnections defined by diagram  500  are not capable of being inferred based on the type of resource produced. For this reason, plant resource diagram  500  may provide asset allocator  402  with new information that can be used to establish constraints on the asset allocation problem. 
     Plant resource diagram  500  is shown to include an electric utility  502 , a water utility  504 , and a natural gas utility  506 . Utilities  502 - 506  are examples of sources  410  that provide resources to the central plant. For example, electric utility  502  may provide an electricity resource  508 , water utility  504  may provide a water resource  510 , and natural gas utility  506  may provide a natural gas resource  512 . The lines connecting utilities  502 - 506  to resources  508 - 512  along with the directions of the lines (i.e., pointing toward resources  508 - 512 ) indicate that resources purchased from utilities  502 - 506  add to resources  508 - 512 . 
     Plant resource diagram  500  is shown to include a chiller subplant  520 , a heat recovery (HR) chiller subplant  522 , a hot water generator subplant  524 , and a cooling tower subplant  526 . Subplants  520 - 526  are examples of subplants  420  that convert resource types (i.e., convert input resources to output resources). For example, the lines connecting electricity resource  508  and water resource  510  to chiller subplant  520  indicate that chiller subplant  520  receives electricity resource  508  and water resource  510  as input resources. The lines connecting chiller subplant  520  to chilled water resource  514  and condenser water resource  516  indicate that chiller subplant  520  produces chilled water resource  514  and condenser water resource  516 . Similarly, the lines connecting electricity resource  508  and water resource  510  to HR chiller subplant  522  indicate that HR chiller subplant  522  receives electricity resource  508  and water resource  510  as input resources. The lines connecting HR chiller subplant  522  to chilled water resource  514  and hot water resource  518  indicate that HR chiller subplant  522  produces chilled water resource  514  and hot water resource  518 . 
     Plant resource diagram  500  is shown to include water TES  528  and  530 . Water TES  528 - 530  are examples of storage  530  that can be used to store and discharge resources. The line connecting chilled water resource  514  to water TES  528  indicates that water TES  528  stores and discharges chilled water resource  514 . Similarly, the line connecting hot water resource  518  to water TES  530  indicates that water TES  530  stores and discharges hot water resource  518 . In diagram  500 , water TES  528  is connected to only chilled water resource  514  and not to any of the other water resources  516  or  518 . This indicates that water TES  528  can be used by asset allocator  402  to store and discharge only chilled water resource  514  and not the other water resources  516  or  518 . Similarly, water TES  530  is connected to only hot water resource  518  and not to any of the other water resources  514  or  516 . This indicates that water TES  530  can be used by asset allocator  402  to store and discharge only hot water resource  518  and not the other water resources  514  or  516 . 
     Plant resource diagram  500  is shown to include a chilled water load  532  and a hot water load  534 . Loads  532 - 534  are examples of sinks  440  that consume resources. The line connecting chilled water load  532  to chilled water resource  514  indicates that chilled water resource  514  can be used to satisfy chilled water load  532 . Similarly, the line connecting hot water load  534  to hot water resource  518  indicates that hot water resource  518  can be used to satisfy hot water load  534 . Asset allocator  402  can use the interconnections and limitations defined by plant resource diagram  500  to establish appropriate constraints on the optimization problem. 
     Referring now to  FIG. 5B , another plant resource diagram  550  is shown, according to an exemplary embodiment. Plant resource diagram  550  represents another implementation of a central plant and indicates how the equipment of the central plant are connected to each other and to external systems or devices. Asset allocator  402  can use plant resource diagram  550  to identify the interconnections between various sources  410 , subplants  420 , storage  430 , and sinks  440  in the central plant. In some instances, the interconnections defined by diagram  550  are not capable of being inferred based on the type of resource produced. For this reason, plant resource diagram  550  may provide asset allocator  402  with new information that can be used to establish constraints on the asset allocation problem. 
     Plant resource diagram  550  is shown to include an electric utility  552 , a water utility  554 , and a natural gas utility  556 . Utilities  552 - 556  are examples of sources  410  that provide resources to the central plant. For example, electric utility  552  may provide an electricity resource  558 , water utility  554  may provide a water resource  560 , and natural gas utility  556  may provide a natural gas resource  562 . The lines connecting utilities  552 - 556  to resources  558 - 562  along with the directions of the lines (i.e., pointing toward resources  558 - 562 ) indicate that resources purchased from utilities  552 - 556  add to resources  558 - 562 . The line connecting electricity resource  558  to electrical storage  551  indicates that electrical storage  551  can store and discharge electricity resource  558 . 
     Plant resource diagram  550  is shown to include a boiler subplant  572 , a cogeneration subplant  574 , several steam chiller subplants  576 - 580 , several chiller subplants  582 - 586 , and several cooling tower subplants  588 - 592 . Subplants  572 - 592  are examples of subplants  420  that convert resource types (i.e., convert input resources to output resources). For example, the lines connecting boiler subplant  572  and cogeneration subplant  574  to natural gas resource  562 , electricity resource  558 , and steam resource  564  indicate that both boiler subplant  572  and cogeneration subplant  574  consume natural gas resource  562  and electricity resource  558  to produce steam resource  564 . 
     The lines connecting steam resource  564  and electricity resource  558  to steam chiller subplants  576 - 580  indicate that each of steam chiller subplants  576 - 580  receives steam resource  564  and electricity resource  558  as input resources. However, each of steam chiller subplants  576 - 580  produces a different output resource. For example, steam chiller subplant  576  produces chilled water resource  566 , steam chiller subplant  578  produces chilled water resource  568 , and steam chiller subplant  580  produces chilled water resource  570 . Similarly, the lines connecting electricity resource  558  to chiller subplants  582 - 586  indicate that each of chiller subplants  582 - 586  receives electricity resource  558  as an input. However, each of chiller subplants  582 - 586  produces a different output resource. For example, chiller subplant  582  produces chilled water resource  566 , chiller subplant  584  produces chilled water resource  568 , and chiller subplant  586  produces chilled water resource  570 . 
     Chilled water resources  566 - 570  have the same general type (i.e., chilled water) but can be defined as separate resources by asset allocator  402 . The lines connecting chilled water resources  566 - 570  to subplants  576 - 586  indicate which of subplants  576 - 586  can produce each chilled water resource  566 - 570 . For example, plant resource diagram  550  indicates that chilled water resource  566  can only be produced by steam chiller subplant  576  and chiller subplant  582 . Similarly, chilled water resource  568  can only be produced by steam chiller subplant  578  and chiller subplant  584 , and chilled water resource  570  can only be produced by steam chiller subplant  580  and chiller subplant  586 . 
     Plant resource diagram  550  is shown to include a hot water load  599  and several cold water loads  594 - 598 . Loads  594 - 599  are examples of sinks  440  that consume resources. The line connecting hot water load  599  to steam resource  564  indicates that steam resource  564  can be used to satisfy hot water load  599 . Similarly, the lines connecting chilled water resources  566 - 570  to cold water loads  594 - 598  indicate which of chilled water resources  566 - 570  can be used to satisfy each of cold water loads  594 - 598 . For example, only chilled water resource  566  can be used to satisfy cold water load  594 , only chilled water resource  568  can be used to satisfy cold water load  596 , and only chilled water resource  570  can be used to satisfy cold water load  598 . Asset allocator  402  can use the interconnections and limitations defined by plant resource diagram  550  to establish appropriate constraints on the optimization problem. 
     Central Plant Controller 
     Referring now to  FIG. 6 , a block diagram of a central plant controller  600  in which asset allocator  402  can be implemented is shown, according to an exemplary embodiment. In various embodiments, central plant controller  600  can be configured to monitor and control central plant  200 , asset allocation system  400 , and various components thereof (e.g., sources  410 , subplants  420 , storage  430 , sinks  440 , etc.). Central plant controller  600  is shown providing control decisions to a building management system (BMS)  606 . The control decisions provided to BMS  606  may include resource purchase amounts for sources  410 , setpoints for subplants  420 , and/or charge/discharge rates for storage  430 . 
     In some embodiments, BMS  606  is the same or similar to the BMS described with reference to  FIG. 1 . BMS  606  may be configured to monitor conditions within a controlled building or building zone. For example, BMS  606  may receive input from various sensors (e.g., temperature sensors, humidity sensors, airflow sensors, voltage sensors, etc.) distributed throughout the building and may report building conditions to central plant controller  600 . Building conditions may include, for example, a temperature of the building or a zone of the building, a power consumption (e.g., electric load) of the building, a state of one or more actuators configured to affect a controlled state within the building, or other types of information relating to the controlled building. BMS  606  may operate subplants  420  and storage  430  to affect the monitored conditions within the building and to serve the thermal energy loads of the building. 
     BMS  606  may receive control signals from central plant controller  600  specifying on/off states, charge/discharge rates, and/or setpoints for the subplant equipment. BMS  606  may control the equipment (e.g., via actuators, power relays, etc.) in accordance with the control signals provided by central plant controller  600 . For example, BMS  606  may operate the equipment using closed loop control to achieve the setpoints specified by central plant controller  600 . In various embodiments, BMS  606  may be combined with central plant controller  600  or may be part of a separate building management system. According to an exemplary embodiment, BMS  606  is a METASYS® brand building management system, as sold by Johnson Controls, Inc. 
     Central plant controller  600  may monitor the status of the controlled building using information received from BMS  606 . Central plant controller  600  may be configured to predict the thermal energy loads (e.g., heating loads, cooling loads, etc.) of the building for plurality of time steps in an optimization period (e.g., using weather forecasts from a weather service  604 ). Central plant controller  600  may also predict the revenue generation potential of incentive based demand response (IBDR) programs using an incentive event history (e.g., past clearing prices, mileage ratios, event probabilities, etc.) from incentive programs  602 . Central plant controller  600  may generate control decisions that optimize the economic value of operating central plant  200  over the duration of the optimization period subject to constraints on the optimization process (e.g., energy balance constraints, load satisfaction constraints, etc.). The optimization process performed by central plant controller  600  is described in greater detail below. 
     In some embodiments, central plant controller  600  is integrated within a single computer (e.g., one server, one housing, etc.). In various other exemplary embodiments, central plant controller  600  can be distributed across multiple servers or computers (e.g., that can exist in distributed locations). In another exemplary embodiment, central plant controller  600  may integrated with a smart building manager that manages multiple building systems and/or combined with BMS  606 . 
     Central plant controller  600  is shown to include a communications interface  636  and a processing circuit  607 . Communications interface  636  may include wired or wireless interfaces (e.g., jacks, antennas, transmitters, receivers, transceivers, wire terminals, etc.) for conducting data communications with various systems, devices, or networks. For example, communications interface  636  may include an Ethernet card and port for sending and receiving data via an Ethernet-based communications network and/or a WiFi transceiver for communicating via a wireless communications network. Communications interface  636  may be configured to communicate via local area networks or wide area networks (e.g., the Internet, a building WAN, etc.) and may use a variety of communications protocols (e.g., BACnet, IP, LON, etc.). 
     Communications interface  636  may be a network interface configured to facilitate electronic data communications between central plant controller  600  and various external systems or devices (e.g., BMS  606 , subplants  420 , storage  430 , sources  410 , etc.). For example, central plant controller  600  may receive information from BMS  606  indicating one or more measured states of the controlled building (e.g., temperature, humidity, electric loads, etc.) and one or more states of subplants  420  and/or storage  430  (e.g., equipment status, power consumption, equipment availability, etc.). Communications interface  636  may receive inputs from BMS  606 , subplants  420 , and/or storage  430  and may provide operating parameters (e.g., on/off decisions, setpoints, etc.) to subplants  420  and storage  430  via BMS  606 . The operating parameters may cause subplants  420  and storage  430  to activate, deactivate, or adjust a setpoint for various devices thereof. 
     Still referring to  FIG. 6 , processing circuit  607  is shown to include a processor  608  and memory  610 . Processor  608  may be a general purpose or specific purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a group of processing components, or other suitable processing components. Processor  608  may be configured to execute computer code or instructions stored in memory  610  or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.). 
     Memory  610  may include one or more devices (e.g., memory units, memory devices, storage devices, etc.) for storing data and/or computer code for completing and/or facilitating the various processes described in the present disclosure. Memory  610  may include random access memory (RAM), read-only memory (ROM), hard drive storage, temporary storage, non-volatile memory, flash memory, optical memory, or any other suitable memory for storing software objects and/or computer instructions. Memory  610  may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present disclosure. Memory  610  may be communicably connected to processor  608  via processing circuit  607  and may include computer code for executing (e.g., by processor  608 ) one or more processes described herein. 
     Memory  610  is shown to include a building status monitor  624 . Central plant controller  600  may receive data regarding the overall building or building space to be heated or cooled by system  400  via building status monitor  624 . In an exemplary embodiment, building status monitor  624  may include a graphical user interface component configured to provide graphical user interfaces to a user for selecting building requirements (e.g., overall temperature parameters, selecting schedules for the building, selecting different temperature levels for different building zones, etc.). 
     Central plant controller  600  may determine on/off configurations and operating setpoints to satisfy the building requirements received from building status monitor  624 . In some embodiments, building status monitor  624  receives, collects, stores, and/or transmits cooling load requirements, building temperature setpoints, occupancy data, weather data, energy data, schedule data, and other building parameters. In some embodiments, building status monitor  624  stores data regarding energy costs, such as pricing information available from sources  410  (energy charge, demand charge, etc.). 
     Still referring to  FIG. 6 , memory  610  is shown to include a load/rate predictor  622 . Load/rate predictor  622  may be configured to predict the thermal energy loads (   k ) of the building or campus for each time step k (e.g., k=1 . . . n) of an optimization period. Load/rate predictor  622  is shown receiving weather forecasts from a weather service  604 . In  some embodiments, load/rate predictor  622  predicts the thermal energy loads e as a function of the weather forecasts. In some embodiments, load/rate predictor  622  uses feedback from BMS  606  to predict loads    k . Feedback from BMS  606  may include various types of sensory inputs (e.g., temperature, flow, humidity, enthalpy, etc.) or other data relating to the controlled building (e.g., inputs from a HVAC system, a lighting control system, a security system, a water system, etc.). 
     In some embodiments, load/rate predictor  622  receives a measured electric load and/or previous measured load data from BMS  606  (e.g., via building status monitor  624 ). Load/rate predictor  622  may predict loads    k  as a function of a given weather forecast ({circumflex over (ϕ)} w ), a day type (day), the time of day (t), and previous measured load data (Y k−1 ). Such a relationship is expressed in the following equation: 
           k   =f ({circumflex over (ϕ)} w ,day, t|Y   k−1 )
 
     In some embodiments, load/rate predictor  622  uses a deterministic plus stochastic model trained from historical load data to predict loads    k . Load/rate predictor  622  may use any of a variety of prediction methods to predict loads    k  (e.g., linear regression for the deterministic portion and an AR model for the stochastic portion). Load/rate predictor  622  may predict one or more different types of loads for the building or campus. For example, load/rate predictor  622  may predict a hot water load    Hot,k  and a cold water load    cold,k  for each time step k within the prediction window. In some embodiments, load/rate predictor  622  makes load/rate predictions using the techniques described in U.S. patent application Ser. No. 14/717,593. 
     Load/rate predictor  622  is shown receiving utility rates from sources  410 . Utility rates may indicate a cost or price per unit of a resource (e.g., electricity, natural gas, water, etc.) provided by sources  410  at each time step k in the prediction window. In some embodiments, the utility rates are time-variable rates. For example, the price of electricity may be higher at certain times of day or days of the week (e.g., during high demand periods) and lower at other times of day or days of the week (e.g., during low demand periods). The utility rates may define various time periods and a cost per unit of a resource during each time period. Utility rates may be actual rates received from sources  410  or predicted utility rates estimated by load/rate predictor  622 . 
     In some embodiments, the utility rates include demand charges for one or more resources provided by sources  410 . A demand charge may define a separate cost imposed by sources  410  based on the maximum usage of a particular resource (e.g., maximum energy consumption) during a demand charge period. The utility rates may define various demand charge periods and one or more demand charges associated with each demand charge period. In some instances, demand charge periods may overlap partially or completely with each other and/or with the prediction window. Advantageously, demand response optimizer  630  may be configured to account for demand charges in the high level optimization process performed by asset allocator  402 . Sources  410  may be defined by time-variable (e.g., hourly) prices, a maximum service level (e.g., a maximum rate of consumption allowed by the physical infrastructure or by contract) and, in the case of electricity, a demand charge or a charge for the peak rate of consumption within a certain period. Load/rate predictor  622  may store the predicted loads    k  and the utility rates in memory  610  and/or provide the predicted loads    k  and the utility rates to demand response optimizer  630 . 
     Still referring to  FIG. 6 , memory  610  is shown to include an incentive estimator  620 . Incentive estimator  620  may be configured to estimate the revenue generation potential of participating in various incentive-based demand response (IBDR) programs. In some embodiments, incentive estimator  620  receives an incentive event history from incentive programs  602 . The incentive event history may include a history of past IBDR events from incentive programs  602 . An IBDR event may include an invitation from incentive programs  602  to participate in an IBDR program in exchange for a monetary incentive. The incentive event history may indicate the times at which the past IBDR events occurred and attributes describing the IBDR events (e.g., clearing prices, mileage ratios, participation requirements, etc.). Incentive estimator  620  may use the incentive event history to estimate IBDR event probabilities during the optimization period. 
     Incentive estimator  620  is shown providing incentive predictions to demand response optimizer  630 . The incentive predictions may include the estimated IBDR probabilities, estimated participation requirements, an estimated amount of revenue from participating in the estimated IBDR events, and/or any other attributes of the predicted IBDR events. Demand response optimizer  630  may use the incentive predictions along with the predicted loads    k  and utility rates from load/rate predictor  622  to determine an optimal set of control decisions for each time step within the optimization period. 
     Still referring to  FIG. 6 , memory  610  is shown to include a demand response optimizer  630 . Demand response optimizer  630  may perform a cascaded optimization process to optimize the performance of asset allocation system  400 . For example, demand response optimizer  630  is shown to include asset allocator  402  and a low level optimizer  634 . Asset allocator  402  may control an outer (e.g., subplant level) loop of the cascaded optimization. Asset allocator  402  may determine an optimal set of control decisions for each time step in the prediction window in order to optimize (e.g., maximize) the value of operating asset allocation system  400 . Control decisions made by asset allocator  402  may include, for example, load setpoints for each of subplants  420 , charge/discharge rates for each of storage  430 , resource purchase amounts for each type of resource purchased from sources  410 , and/or an amount of each resource sold to energy purchasers  504 . In other words, the control decisions may define resource allocation at each time step. The control decisions made by asset allocator  402  are based on the statistical estimates of incentive event probabilities and revenue generation potential for various IBDR events as well as the load and rate predictions. 
     Low level optimizer  634  may control an inner (e.g., equipment level) loop of the cascaded optimization. Low level optimizer  634  may determine how to best run each subplant at the load setpoint determined by asset allocator  402 . For example, low level optimizer  634  may determine on/off states and/or operating setpoints for various devices of the subplant equipment in order to optimize (e.g., minimize) the energy consumption of each subplant while meeting the resource allocation setpoint for the subplant. In some embodiments, low level optimizer  634  receives actual incentive events from incentive programs  602 . Low level optimizer  634  may determine whether to participate in the incentive events based on the resource allocation set by asset allocator  402 . For example, if insufficient resources have been allocated to a particular IBDR program by asset allocator  402  or if the allocated resources have already been used, low level optimizer  634  may determine that asset allocation system  400  will not participate in the IBDR program and may ignore the IBDR event. However, if the required resources have been allocated to the IBDR program and are available in storage  430 , low level optimizer  634  may determine that system  400  will participate in the IBDR program in response to the IBDR event. The cascaded optimization process performed by demand response optimizer  630  is described in greater detail in U.S. patent application Ser. No. 15/247,885. 
     In some embodiments, low level optimizer  634  generates and provides subplant curves to asset allocator  402 . Each subplant curve may indicate an amount of resource consumption by a particular subplant (e.g., electricity use measured in kW, water use measured in L/s, etc.) as a function of the subplant load. In some embodiments, low level optimizer  634  generates the subplant curves by running the low level optimization process for various combinations of subplant loads and weather conditions to generate multiple data points. Low level optimizer  634  may fit a curve to the data points to generate the subplant curves. In other embodiments, low level optimizer  634  provides the data points asset allocator  402  and asset allocator  402  generates the subplant curves using the data points. Asset allocator  402  may store the subplant curves in memory for use in the high level (i.e., asset allocation) optimization process. 
     In some embodiments, the subplant curves are generated by combining efficiency curves for individual devices of a subplant. A device efficiency curve may indicate the amount of resource consumption by the device as a function of load. The device efficiency curves may be provided by a device manufacturer or generated using experimental data. In some embodiments, the device efficiency curves are based on an initial efficiency curve provided by a device manufacturer and updated using experimental data. The device efficiency curves may be stored in equipment models  618 . For some devices, the device efficiency curves may indicate that resource consumption is a U-shaped function of load. Accordingly, when multiple device efficiency curves are combined into a subplant curve for the entire subplant, the resultant subplant curve may be a wavy curve. The waves are caused by a single device loading up before it is more efficient to turn on another device to satisfy the subplant load. An example of such a subplant curve is shown in  FIG. 13 . 
     Still referring to  FIG. 6 , memory  610  is shown to include a subplant control module  628 . Subplant control module  628  may store historical data regarding past operating statuses, past operating setpoints, and instructions for calculating and/or implementing control parameters for subplants  420  and storage  430 . Subplant control module  628  may also receive, store, and/or transmit data regarding the conditions of individual devices of the subplant equipment, such as operating efficiency, equipment degradation, a date since last service, a lifespan parameter, a condition grade, or other device-specific data. Subplant control module  628  may receive data from subplants  420 , storage  430 , and/or BMS  606  via communications interface  636 . Subplant control module  628  may also receive and store on/off statuses and operating setpoints from low level optimizer  634 . 
     Data and processing results from demand response optimizer  630 , subplant control module  628 , or other modules of central plant controller  600  may be accessed by (or pushed to) monitoring and reporting applications  626 . Monitoring and reporting applications  626  may be configured to generate real time “system health” dashboards that can be viewed and navigated by a user (e.g., a system engineer). For example, monitoring and reporting applications  626  may include a web-based monitoring application with several graphical user interface (GUI) elements (e.g., widgets, dashboard controls, windows, etc.) for displaying key performance indicators (KPI) or other information to users of a GUI. In addition, the GUI elements may summarize relative energy use and intensity across energy storage systems in different buildings (real or modeled), different campuses, or the like. Other GUI elements or reports may be generated and shown based on available data that allow users to assess performance across one or more energy storage systems from one screen. The user interface or report (or underlying data engine) may be configured to aggregate and categorize operating conditions by building, building type, equipment type, and the like. The GUI elements may include charts or histograms that allow the user to visually analyze the operating parameters and power consumption for the devices of the energy storage system. 
     Still referring to  FIG. 6 , central plant controller  600  may include one or more GUI servers, web services  612 , or GUI engines  614  to support monitoring and reporting applications  626 . In various embodiments, applications  626 , web services  612 , and GUI engine  614  may be provided as separate components outside of central plant controller  600  (e.g., as part of a smart building manager). Central plant controller  600  may be configured to maintain detailed historical databases (e.g., relational databases, XML databases, etc.) of relevant data and includes computer code modules that continuously, frequently, or infrequently query, aggregate, transform, search, or otherwise process the data maintained in the detailed databases. Central plant controller  600  may be configured to provide the results of any such processing to other databases, tables, XML files, or other data structures for further querying, calculation, or access by, for example, external monitoring and reporting applications. 
     Central plant controller  600  is shown to include configuration tools  616 . Configuration tools  616  can allow a user to define (e.g., via graphical user interfaces, via prompt-driven “wizards,” etc.) how central plant controller  600  should react to changing conditions in the energy storage subsystems. In an exemplary embodiment, configuration tools  616  allow a user to build and store condition-response scenarios that can cross multiple energy storage system devices, multiple building systems, and multiple enterprise control applications (e.g., work order management system applications, entity resource planning applications, etc.). For example, configuration tools  616  can provide the user with the ability to combine data (e.g., from subsystems, from event histories) using a variety of conditional logic. In varying exemplary embodiments, the conditional logic can range from simple logical operators between conditions (e.g., AND, OR, XOR, etc.) to pseudo-code constructs or complex programming language functions (allowing for more complex interactions, conditional statements, loops, etc.). Configuration tools  616  can present user interfaces for building such conditional logic. The user interfaces may allow users to define policies and responses graphically. In some embodiments, the user interfaces may allow a user to select a pre-stored or pre-constructed policy and adapt it or enable it for use with their system. 
     Planning Tool 
     Referring now to  FIG. 7 , a block diagram of a planning tool  700  in which asset allocator  402  can be implemented is shown, according to an exemplary embodiment. Planning tool  700  may be configured to use demand response optimizer  630  to simulate the operation of a central plant over a predetermined time period (e.g., a day, a month, a week, a year, etc.) for planning, budgeting, and/or design considerations. When implemented in planning tool  700 , demand response optimizer  630  may operate in a similar manner as described with reference to  FIG. 6 . For example, demand response optimizer  630  may use building loads and utility rates to determine an optimal resource allocation to minimize cost over a simulation period. However, planning tool  700  may not be responsible for real-time control of a building management system or central plant. 
     Planning tool  700  can be configured to determine the benefits of investing in a battery asset and the financial metrics associated with the investment. Such financial metrics can include, for example, the internal rate of return (IRR), net present value (NPV), and/or simple payback period (SPP). Planning tool  700  can also assist a user in determining the size of the battery which yields optimal financial metrics such as maximum NPV or a minimum SPP. In some embodiments, planning tool  700  allows a user to specify a battery size and automatically determines the benefits of the battery asset from participating in selected IBDR programs while performing PBDR. In some embodiments, planning tool  700  is configured to determine the battery size that minimizes SPP given the IBDR programs selected and the requirement of performing PBDR. In some embodiments, planning tool  700  is configured to determine the battery size that maximizes NPV given the IBDR programs selected and the requirement of performing PBDR. 
     In planning tool  700 , asset allocator  402  may receive planned loads and utility rates for the entire simulation period. The planned loads and utility rates may be defined by input received from a user via a client device  722  (e.g., user-defined, user selected, etc.) and/or retrieved from a plan information database  726 . Asset allocator  402  uses the planned loads and utility rates in conjunction with subplant curves from low level optimizer  634  to determine an optimal resource allocation (i.e., an optimal dispatch schedule) for a portion of the simulation period. 
     The portion of the simulation period over which asset allocator  402  optimizes the resource allocation may be defined by a prediction window ending at a time horizon. With each iteration of the optimization, the prediction window is shifted forward and the portion of the dispatch schedule no longer in the prediction window is accepted (e.g., stored or output as results of the simulation). Load and rate predictions may be predefined for the entire simulation and may not be subject to adjustments in each iteration. However, shifting the prediction window forward in time may introduce additional plan information (e.g., planned loads and/or utility rates) for the newly-added time slice at the end of the prediction window. The new plan information may not have a significant effect on the optimal dispatch schedule since only a small portion of the prediction window changes with each iteration. 
     In some embodiments, asset allocator  402  requests all of the subplant curves used in the simulation from low level optimizer  634  at the beginning of the simulation. Since the planned loads and environmental conditions are known for the entire simulation period, asset allocator  402  may retrieve all of the relevant subplant curves at the beginning of the simulation. In some embodiments, low level optimizer  634  generates functions that map subplant production to equipment level production and resource use when the subplant curves are provided to asset allocator  402 . These subplant to equipment functions may be used to calculate the individual equipment production and resource use (e.g., in a post-processing module) based on the results of the simulation. 
     Still referring to  FIG. 7 , planning tool  700  is shown to include a communications interface  704  and a processing circuit  706 . Communications interface  704  may include wired or wireless interfaces (e.g., jacks, antennas, transmitters, receivers, transceivers, wire terminals, etc.) for conducting data communications with various systems, devices, or networks. For example, communications interface  704  may include an Ethernet card and port for sending and receiving data via an Ethernet-based communications network and/or a WiFi transceiver for communicating via a wireless communications network. Communications interface  704  may be configured to communicate via local area networks or wide area networks (e.g., the Internet, a building WAN, etc.) and may use a variety of communications protocols (e.g., BACnet, IP, LON, etc.). 
     Communications interface  704  may be a network interface configured to facilitate electronic data communications between planning tool  700  and various external systems or devices (e.g., client device  722 , results database  728 , plan information database  726 , etc.). For example, planning tool  700  may receive planned loads and utility rates from client device  722  and/or plan information database  726  via communications interface  704 . Planning tool  700  may use communications interface  704  to output results of the simulation to client device  722  and/or to store the results in results database  728 . 
     Still referring to  FIG. 7 , processing circuit  706  is shown to include a processor  710  and memory  712 . Processor  710  may be a general purpose or specific purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a group of processing components, or other suitable processing components. Processor  710  may be configured to execute computer code or instructions stored in memory  712  or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.). 
     Memory  712  may include one or more devices (e.g., memory units, memory devices, storage devices, etc.) for storing data and/or computer code for completing and/or facilitating the various processes described in the present disclosure. Memory  712  may include random access memory (RAM), read-only memory (ROM), hard drive storage, temporary storage, non-volatile memory, flash memory, optical memory, or any other suitable memory for storing software objects and/or computer instructions. Memory  712  may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present disclosure. Memory  712  may be communicably connected to processor  710  via processing circuit  706  and may include computer code for executing (e.g., by processor  710 ) one or more processes described herein. 
     Still referring to  FIG. 7 , memory  712  is shown to include a GUI engine  716 , web services  714 , and configuration tools  718 . In an exemplary embodiment, GUI engine  716  includes a graphical user interface component configured to provide graphical user interfaces to a user for selecting or defining plan information for the simulation (e.g., planned loads, utility rates, environmental conditions, etc.). Web services  714  may allow a user to interact with planning tool  700  via a web portal and/or from a remote system or device (e.g., an enterprise control application). 
     Configuration tools  718  can allow a user to define (e.g., via graphical user interfaces, via prompt-driven “wizards,” etc.) various parameters of the simulation such as the number and type of subplants, the devices within each subplant, the subplant curves, device-specific efficiency curves, the duration of the simulation, the duration of the prediction window, the duration of each time step, and/or various other types of plan information related to the simulation. Configuration tools  718  can present user interfaces for building the simulation. The user interfaces may allow users to define simulation parameters graphically. In some embodiments, the user interfaces allow a user to select a pre-stored or pre-constructed simulated plant and/or plan information (e.g., from plan information database  726 ) and adapt it or enable it for use in the simulation. 
     Still referring to  FIG. 7 , memory  712  is shown to include demand response optimizer  630 . Demand response optimizer  630  may use the planned loads and utility rates to determine an optimal resource allocation over a prediction window. The operation of demand response optimizer  630  may be the same or similar as previously described with reference to  FIG. 6 . With each iteration of the optimization process, demand response optimizer  630  may shift the prediction window forward and apply the optimal resource allocation for the portion of the simulation period no longer in the prediction window. Demand response optimizer  630  may use the new plan information at the end of the prediction window to perform the next iteration of the optimization process. Demand response optimizer  630  may output the applied resource allocation to reporting applications  730  for presentation to a client device  722  (e.g., via user interface  724 ) or storage in results database  728 . 
     Still referring to  FIG. 7 , memory  712  is shown to include reporting applications  730 . Reporting applications  730  may receive the optimized resource allocations from demand response optimizer  630  and, in some embodiments, costs associated with the optimized resource allocations. Reporting applications  730  may include a web-based reporting application with several graphical user interface (GUI) elements (e.g., widgets, dashboard controls, windows, etc.) for displaying key performance indicators (KPI) or other information to users of a GUI. In addition, the GUI elements may summarize relative energy use and intensity across various plants, subplants, or the like. Other GUI elements or reports may be generated and shown based on available data that allow users to assess the results of the simulation. The user interface or report (or underlying data engine) may be configured to aggregate and categorize resource allocation and the costs associated therewith and provide the results to a user via a GUI. The GUI elements may include charts or histograms that allow the user to visually analyze the results of the simulation. An exemplary output that may be generated by reporting applications  730  is shown in  FIG. 8 . 
     Referring now to  FIG. 8 , several graphs  800  illustrating the operation of planning tool  700  are shown, according to an exemplary embodiment. With each iteration of the optimization process, planning tool  700  selects an optimization period (i.e., a portion of the simulation period) over which the optimization is performed. For example, planning tool  700  may select optimization period  802  for use in the first iteration. Once the optimal resource allocation  810  has been determined, planning tool  700  may select a portion  818  of resource allocation  810  to send to plant dispatch  830 . Portion  818  may be the first b time steps of resource allocation  810 . Planning tool  700  may shift the optimization period  802  forward in time, resulting in optimization period  804 . The amount by which the prediction window is shifted may correspond to the duration of time steps b. 
     Planning tool  700  may repeat the optimization process for optimization period  804  to determine the optimal resource allocation  812 . Planning tool  700  may select a portion  820  of resource allocation  812  to send to plant dispatch  830 . Portion  820  may be the first b time steps of resource allocation  812 . Planning tool  700  may then shift the prediction window forward in time, resulting in optimization period  806 . This process may be repeated for each subsequent optimization period (e.g., optimization periods  806 ,  808 , etc.) to generate updated resource allocations (e.g., resource allocations  814 ,  816 , etc.) and to select portions of each resource allocation (e.g., portions  822 ,  824 ) to send to plant dispatch  830 . Plant dispatch  830  includes the first b time steps  818 - 824  from each of optimization periods  802 - 808 . Once the optimal resource allocation is compiled for the entire simulation period, the results may be sent to reporting applications  730 , results database  728 , and/or client device  722 , as described with reference to  FIG. 7 . 
     Asset Allocator 
     Referring now to  FIG. 9 , a block diagram illustrating asset allocator  402  in greater detail is shown, according to an exemplary embodiment. Asset allocator  402  may be configured to control the distribution, production, storage, and usage of resources in a central plant. As discussed above, asset allocator  402  can be configured to minimize the economic cost (or maximize the economic value) of operating a central plant over the duration of the optimization period. The economic cost may be defined by a cost function J(x) that expresses economic cost as a function of the control decisions made by asset allocator  402 . The cost function J(x) may account for the cost of resources purchased from sources  410 , as well as the revenue generated by selling resources to resource purchasers  441  or energy grid  442  or participating in incentive programs. 
     In some embodiments, asset allocator  402  performs an optimization process determine an optimal set of control decisions for each time step within an optimization period. The control decisions may include, for example, an optimal amount of each resource to purchase from sources  410 , an optimal amount of each resource to produce or convert using subplants  420 , an optimal amount of each resource to store or remove from storage  430 , an optimal amount of each resource to sell to resources purchasers  441  or energy grid  440 , and/or an optimal amount of each resource to provide to other sinks  440 . In some embodiments, asset allocator  402  is configured to optimally dispatch all campus energy assets in order to meet the requested heating, cooling, and electrical loads of the campus for each time step within the optimization period. 
     Throughout this disclosure, asset allocator  402  is described as actively identifying or defining various items (e.g., sources  410 , subplants  420 , storage  430 , sinks  440 , operational domains, etc.). However, it should be understood that asset allocator  402  can also, or alternatively, receive such items as inputs. For example, the existence of such items can be defined by a user (e.g., via a user interface) or any other data source (e.g., another algorithm, an external system or process, etc.). Asset allocator  402  can be configured to identify which of these items have been defined or identified and can generate an appropriate cost function and optimization constraints based on the existence of these items. It should be understood that the acts of identifying or defining these items can include asset allocator  402  identifying, detecting, receiving, or otherwise obtaining a predefined item an input. 
     Optimization Framework 
     Asset allocator  402  is shown to include an optimization framework module  902 . Optimization framework module  902  can be configured to define an optimization framework for the optimization problem solved by asset allocator  402 . In some embodiments, optimization framework module  902  defines the optimization problem as a mixed integer linear program (MILP). The MILP framework provides several advantages over the linear programming framework used in previous systems. For example, the MILP framework can account for minimum turndowns on equipment, can ensure that the high level optimization problem computes a point on the subplant curve for heat recovery chillers, and can impose logical constraints on the optimization problem to compensate for poor mechanical design and/or design inefficiencies. 
     In some embodiments, the MILP created by optimization framework module  902  has the following form: 
     
       
         
           
             
               
                 min 
                 
                   x 
                   , 
                   z 
                 
               
               ⁢ 
               
                   
               
               ⁢ 
               
                 
                   c 
                   x 
                   T 
                 
                 ⁢ 
                 x 
               
             
             + 
             
               
                 c 
                 z 
                 T 
               
               ⁢ 
               z 
             
           
         
       
     
     subject to the following constraints: 
     
       
      
       A 
       x 
       x+A 
       z 
       z≤b  
      
     
     
       
      
       H 
       x 
       x+H 
       z 
       z=g  
      
     
         z =integer 
     where x∈   N     x    is a vector of the continuous decision variables, z∈   n     z    is a vector of the integer decision variables, c x  and c z  are the respective cost vectors for the continuous decision variables and integer decision variables, A x , A z , and b are the matrices and vector that describe the inequality constraints, and H x , H z , and g are the matrices and vector that describe the equality constraints. 
     Optimization Problem Construction 
     Still referring to  FIG. 9 , asset allocator  402  is shown to include an optimization problem constructor  910 . Optimization problem constructor  910  can be configured to construct the high level (i.e., asset allocation) optimization problem solved by asset allocator  402 . In some embodiments, the high level optimization problem includes one or more of the elements of asset allocation system  400 . For example, the optimization problem can include sinks  440 , sources  410 , subplants  420 , and storage  430 , as described with reference to  FIG. 4 . In some embodiments, the high level optimization problem includes airside units, which can be considered a type of energy storage in the mass of the building. The optimization problem may include site-specific constraints that can be added to compensate for mechanical design deficiencies. 
     In some embodiments, the optimization problem generated by optimization problem constructor  910  includes a set of links between sources  410 , subplants  420 , storage  430 , sinks  440 , or other elements of the optimization problem. For example, the high level optimization problem can be viewed as a directed graph, as shown in  FIGS. 5A-5B . The nodes of the directed graph can include sources  410 , subplants  420 , storage  430 , and sinks  440 . The set of links can define the connections between the nodes, the cost of the connections between nodes (e.g., distribution costs), the efficiency of each connection, and the connections between site-specific constraints. 
     In some embodiments, the optimization problem generated by optimization problem constructor  910  includes an objective function. The objective function can include the sum of predicted utility usage costs over the horizon (i.e., the optimization period), the predicted demand charges, the total predicted incentive revenue over the prediction horizon, the sum of the predicted distribution costs, the sum of penalties on unmet and overmet loads over the prediction horizon, and/or the sum of the rate of change penalties over the prediction horizon (i.e., delta load penalties). All of these terms may add to the total cost, with the exception of the total predicted incentive revenue. The predicted incentive revenue may subtract from the total cost. For example, the objective function generated by optimization problem constructor  910  may have the following form: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   h 
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Source 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Usage 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Cost 
                     
                     ) 
                   
                   k 
                 
               
               + 
               
                 ( 
                 
                   Total 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   Demand 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   Charges 
                 
                 ) 
               
               - 
               
                 ( 
                 
                   Total 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   Incentives 
                 
                 ) 
               
               + 
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   h 
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Distribution 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Cost 
                     
                     ) 
                   
                   k 
                 
               
               + 
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   h 
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Unmet 
                       ⁢ 
                       
                         / 
                       
                       ⁢ 
                       Overmet 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Load 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Penalties 
                     
                     ) 
                   
                   k 
                 
               
               + 
               
                 
                   ∑ 
                   
                     k 
                     = 
                     1 
                   
                   h 
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Rate 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       of 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Change 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Penalties 
                     
                     ) 
                   
                   k 
                 
               
             
           
         
       
     
     where the index k denotes a time step in the optimization period and h is the total number of time steps in the optimization period. 
     In some embodiments, the optimization problem generated by optimization problem constructor  910  includes a set of constraints. The set of constraints can include resource balance constraints (e.g., hot water balance, chilled water balance, electricity balance, etc.), operational domain constraints for each of subplants  420 , state of charge (SOC) and storage capacity constraints for each of storage  430 , decision variable constraints (e.g., subplant capacity constraints, charge and discharge of storage constraints, and storage capacity constraints), demand/peak usage constraints, auxiliary constraints, and any site specific or commissioned constraints. In some embodiments, the operational domain constraints are generalized versions of the subplant curves. The operational domain constraints can be generated by operational domain module  904  (described in greater detail below). The decision variable constraints may be box constraints of the form x lb ≤x≤x ub , where x is a decision variable and x lb  and x ub  are the lower and upper bound for the decision variable x. 
     The optimization problem generated by optimization problem constructor  910  can be considered a finite-horizon optimal control problem. The optimization problem may take the form: 
       minimize  J ( x ) 
     subject to resource balances, operational domains for subplants  420  (e.g., subplant curves), constraints to predict the SOC of storage  430 , storage capacity constraints, subplant/storage box constraints (e.g., capacity constraints and discharge/charge rate constraints), demand/peak usage constraints, auxiliary constraints for rate of change variables, auxiliary constraints for demand charges, and site specific constraints. 
     In some embodiments, optimization problem constructor  910  applies an inventory balance constraint to each resource. One side of the inventory balance constraint for a given resource may include the total amount of the resource purchased from all sources  410 , the total amount of the resource produced by all of subplants  420 , the total amount of the resource discharged from storage  430  (negative values indicate charging storage  430 ), and unmet load. The other side of the inventory balance for the resource may include the total amount of the resource requested/predicted (uncontrolled load), carryover from the previous time step, the total amount of the resource consumed by all subplants  420  and airside units, overmet load, and the total amount of the resource sold. For example, the inventory balance for a resource may have the form: 
     
       
         
           
             
               
                 
                   ∑ 
                   
                     i 
                     ∈ 
                     
                       { 
                       Sources 
                       } 
                     
                   
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Purchased 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Resource 
                     
                     ) 
                   
                   i 
                 
               
               + 
               
                 
                   ∑ 
                   
                     j 
                     ∈ 
                     
                       { 
                       Subplants 
                       } 
                     
                   
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Produced 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Resource 
                     
                     ) 
                   
                   j 
                 
               
               + 
               
                 
                   ∑ 
                   
                     k 
                     ∈ 
                     
                       { 
                       Storage 
                       } 
                     
                   
                 
                 ⁢ 
                 
                   
                     ( 
                     
                       Discharged 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       Storage 
                     
                     ) 
                   
                   k 
                 
               
               + 
               
                 Unmet 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Load 
               
             
             = 
             
               
                 Requested 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Load 
               
               + 
               Carryover 
               + 
               
                 
                   ∑ 
                   
                     j 
                     ∈ 
                     
                       { 
                       Subplants 
                       } 
                     
                   
                 
                 ⁢ 
                 
                   
                     
                       ( 
                       
                         Consumed 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         Resource 
                       
                       ) 
                     
                     j 
                   
                   ⁢ 
                   
                     
                       ∑ 
                       
                         l 
                         ∈ 
                         
                           { 
                           
                             Airside 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             Units 
                           
                           } 
                         
                       
                     
                     ⁢ 
                     
                       
                         ( 
                         
                           Consumed 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           Resource 
                         
                         ) 
                       
                       l 
                     
                   
                 
               
               + 
               
                 Overmet 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Load 
               
               + 
               
                 Resource 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 Sold 
               
             
           
         
       
     
     Optimization problem constructor  910  may require this resource balance to be satisfied for each resource at each time step of the optimization period. Together the unmet and overmet load capture the accumulation of a resource. Negative accumulation (unmet load) are distinguished from positive accumulation (overmet load) because typically, overmet loads are not included in the resource balance. Even though unmet and overmet loads are listed separately, at most one of the two may be non-zero. The amount of carryover may be the amount of unmet/overmet load from the previous time step (described in greater detail below). The requested load may be determined by load/rate predictor  622  and provided as an input to the high level optimization problem. 
     Throughout this disclosure, the high level/asset allocator optimization problem or high level/asset allocator problem refers to the general optimization problem constructed by optimization problem constructor  910 . A high level problem instance refers to a realization of the high level problem provided the input data and parameters. The high level optimization/asset allocation algorithm refers to the entire set of steps needed to solve a high level problem instance (i.e., encapsulates both the set of mathematical operations and the implementation or software design required to setup and solve a high level problem instance. Finally, a high level problem element or high level element refers to any of the elements of the high level problem including sinks  440 , sources  410 , subplants  420 , storage  430 , or airside unit. 
     Element Models 
     Still referring to  FIG. 9 , asset allocator  402  is shown to include element models  930 . Element models  930  may store definitions and/or models for various elements of the high level optimization problem. For example, element models  930  are shown to include sink models  932 , source models  934 , subplant models  936 , storage models  938 , and element links  940 . In some embodiments, element models  930  include data objects that define various attributes or properties of sinks  440 , sources  410 , subplants  420 , and storage  430  (e.g., using object-oriented programming). 
     For example, source models  934  may define the type of resource provided by each of sources  410 , a cost of each resource, demand charges associated with the consumption of the resource, a maximum rate at which the resource can be purchased from each of sources  410 , and other attributes of sources  410 . Similarly, subplant models  936  may define the input resources of each subplant  420 , the output resources of each subplant  420 , relationships between the input and output variables of each subplant  420  (i.e., the operational domain of each subplant  420 ), and optimization constraints associated with each of subplants  420 . Each of element models  930  are described in greater detail below. 
     Sink Models 
     Element models  930  are shown to include sink models  932 . Sink models  932  may store models for each of sinks  440 . As described above, sinks  440  may include resource consumers or requested loads. Some examples are the campus thermal loads and campus electricity usage. The predicted consumption of a sink  440  over the optimization period can be supplied as an input to asset allocator  402  and/or computed by load/rate predictor  622 . Sink models  932  may store the predicted consumption over the optimization period for each of sinks  440 . Sink models  932  may also store any unmet/overmet load for each of sinks  440 , carryover from the previous time steps, and any incentives earned by supplying each of sinks  440  (e.g., for sinks such as an energy purchasers or an energy grid). 
     Carryover can be defined as the amount of unmet or overmet load for a particular resource from the previous time step. In some embodiments, asset allocator  402  determines the carryover by adding the entire unmet load for a particular resource in one time step to the requested load for the resource at the next time step. However, calculating the carryover in this manner may not always be appropriate since the carryover may grow over time. As an example, consider an unmet chilled water load. If there are several time steps where the chilled water load is not met, the buildings supplied by the load will heat up. Due to this increase in building temperature, the amount of chilled water load required to decrease the building temperature to the set-point is not a linearly increasing function of the sum of the unmet load over the past time steps because the building temperature will begin approaching the ambient temperature. 
     In some embodiments, asset allocator  402  adds a forgetting factor to the carryover. For example, asset allocator  402  can calculate the carryover for each time step using the following equation: 
       carryover j+1 =γ j ·unmet/overmet j  
 
     where unmet/overmet j  is the amount of unmet and/or overmet load at time step j, carryover j+1  is the carryover added to the right-hand side of the inventory balance at the next time step j+1, and γ j ∈[0,1] is the forgetting factor. Selecting γ j =0 corresponds to case where no unmet/overmet load is carried over to the next time step, whereas selecting γ j =1 corresponds to case where all unmet/overmet load is carried over to the next time step. An intermediate selection of γ j (i.e., 0≤γ j ≤1) corresponds to the case where some, but not all, of the unmet/overmet load is carried over. For the case of a chilled water system, the choice of γ j  may depend on the plant itself and can be determined using the amount of unmet load that actually stored in the water (temperature would increase above the setpoint) when an unmet load occurs. 
     Source Models 
     Still referring to  FIG. 9 , element models  930  are shown to include source models  934 . Source models  934  may store models for each of sources  410 . As described above, sources  410  may include utilities or markets where resources may be purchased. Source models  934  may store a price per unit of a resource purchased from each of sources  410  (e.g., $/kWh of electricity, $/liter of water, etc.). This cost can be included as a direct cost associated with resource usage in the cost function. In some embodiments, source models  934  store costs associated with demand charges and demand constraints, incentive programs (e.g., frequency response and economic demand response) and/or sell back programs for one or more of sources  410 . 
     In some embodiments, the cost function J(x) includes a demand charge based on peak electrical usage during a demand charge period (e.g., during a month). This demand charge may be based on the maximum rate of electricity usage at any time in the demand charge period. There are several other types of demand charges besides the anytime monthly demand charge for electricity including, for example, time-of-day monthly and yearlong ratchets. Some or all of these demand charges can be added to the cost function depending on the particular types of demand charges imposed by sources  410 . In some embodiments, demand charges are defined as follows: 
     
       
         
           
             wc 
             ⁢ 
             
                 
             
             ⁢ 
             
               
                 max 
                 
                   i 
                   ∈ 
                   
                     T 
                     demand 
                   
                 
               
               ⁢ 
               
                   
               
               ⁢ 
               
                 { 
                 
                   x 
                   i 
                 
                 } 
               
             
           
         
       
     
     where x i  represents the resource purchase at time step i of the optimization period, c&gt;0 is the demand charge rate, w is a (potentially time-varying) weight applied to the demand charge term to address any discrepancies between the optimization period and the time window over which the demand charge is applied, and T demand ⊆{1, . . . , h} is the subinterval of the optimization period to which the demand charge is applied. Source models  934  can store values for some or all of the parameters that define the demand charges and the demand charge periods. 
     In some embodiments, asset allocator  402  accounts for demand charges within a linear programming framework by introducing an auxiliary continuous variable. This technique is described in greater detail with reference to demand charge module  906 . While this type of term may readily be cast into a linear programming framework, it can be difficult to determine the weighting coefficient w when the demand charge period is different from the optimization period. Nevertheless, through a judicious choice of the two adjustable parameters for demand charges (i.e., the weighting coefficient w and the initial value of the auxiliary demand variable), other types of demand charges may be included in the high level optimization problem. 
     In some embodiments, source models  934  store parameters of various incentive programs offered by sources  410 . For example, the source definition  934  for an electric utility may define a capability clearing price, a performance clearing price, a regulation award, or other parameters that define the benefits (e.g., potential revenue) of participating in a frequency regulation program. In some embodiments, source models  934  define a decision variable in the optimization problem that accounts for the capacity of a battery reserved for frequency regulation. This variable effectively reduces the capacity of the battery that is available for priced-based demand response. Depending on the complexity of the decision, source models  934  may also define a decision variable that indicates whether to participate in the incentive program. In asset allocator  402 , storage capacity may be reserved for participation in incentive programs. Low level optimizer  634  can then be used to control the reserved capacity that is charged/discharged for the incentive program (e.g., frequency response control). 
     In some embodiments, source models  934  store pricing information for the resources sold by sources  410 . The pricing information can include time-varying pricing information, progressive or regressive resource prices (e.g., prices that depend on the amount of the resource purchased), or other types of pricing structures. Progressive and regressive resource prices may readily be incorporated into the optimization problem by leveraging the set of computational operations introduced by the operational domain. In the case of either a progressive rate that is a discontinuous function of the usage or for any regressive rate, additional binary variables can be introduced into the optimization problem to properly describe both of these rates. For progressive rates that are continuous functions of the usage, no binary variables are needed because one may apply a similar technique as that used for imposing demand charges. 
     Referring now to  FIG. 10 , a graph  1000  depicting a progressive rate structure for a resource is shown, according to an exemplary embodiment. The cost per unit of the resource purchased can be described by the following continuous function: 
     
       
         
           
             Cost 
             = 
             
               { 
               
                 
                   
                     
                       
                         
                           
                             p 
                             1 
                           
                           ⁢ 
                           u 
                         
                         + 
                         
                           b 
                           1 
                         
                       
                       , 
                     
                   
                   
                     
                       
                         
                           if 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           u 
                         
                         ∈ 
                         
                           [ 
                           
                             0 
                             , 
                             
                               u 
                               1 
                             
                           
                           ] 
                         
                       
                       ⁢ 
                       
                           
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           
                             p 
                             2 
                           
                           ⁢ 
                           u 
                         
                         + 
                         
                           b 
                           2 
                         
                       
                       , 
                     
                   
                   
                     
                       
                         if 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         u 
                       
                       ∈ 
                       
                         [ 
                         
                           
                             u 
                             1 
                           
                           , 
                           
                             u 
                             2 
                           
                         
                         ] 
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           
                             p 
                             3 
                           
                           ⁢ 
                           u 
                         
                         + 
                         
                           b 
                           3 
                         
                       
                       , 
                     
                   
                   
                     
                       
                         if 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         u 
                       
                       ∈ 
                       
                         [ 
                         
                           
                             u 
                             2 
                           
                           , 
                           
                             u 
                             3 
                           
                         
                         ] 
                       
                     
                   
                 
               
             
           
         
       
     
     where p i  is the price of the ith interval, b i  is the offset of the ith interval, u is the amount of the resource purchased, and p i u i +b i =p i+1 u i +b i  for i=1, 2. Although the rate depicted in graph  1000  represents a cost, negative prices may be used to account for profits earned by selling back resources. Source models  934  can store values for some of all of these parameters in order to fully define the cost of resource purchases and/or the revenue generated from resource sales. 
     In the cost function J(x), the following term can be used to describe progressive rates: 
     
       
         
           
             
               max 
               
                 i 
                 ∈ 
                 
                   { 
                   
                     1 
                     , 
                     2 
                     , 
                     3 
                   
                   } 
                 
               
             
             ⁢ 
             
                 
             
             ⁢ 
             
               { 
               
                 
                   
                     p 
                     i 
                   
                   ⁢ 
                   u 
                 
                 + 
                 
                   b 
                   i 
                 
               
               } 
             
           
         
       
     
     Since the goal is to minimize cost, this term can be equivalently described in the optimization problem by introducing an auxiliary continuous variable C and the following constraints: 
         C≥ 0 
     
       
      
       p 
       1 
       u+b 
       1 
       ≤C  
      
     
     
       
      
       p 
       2 
       u+b 
       2 
       ≤C  
      
     
     
       
      
       p 
       2 
       u+b 
       2 
       ≤C  
      
     
     where C is the auxiliary variable that is equal to the cost of the resource. Source models  934  can define these constraints in order to enable progressive rate structures in the optimization problem. 
     In some embodiments, source models  934  stores definitions of any fixed costs associated with resource purchases from each of sources  410 . These costs can be captured within the MILP framework. For example, let v∈{0,1} represent whether a source  410  is being utilized (v=0 means the source  410  is not used and v=1 means the source  410  is used) and let u∈[0, u max ] be the source usage where u max  represents the maximum usage. If the maximum usage is not known, u max  may be any arbitrarily large number that satisfies u&lt;u max . Then, the following two constraints ensure that the binary variable v is zero when u=1 and is one when u&gt;0: 
         u−u   max   v≤ 0 
         u≥ 0 
     Asset allocator  402  can add the term c fixed v to the cost function to account for fixed costs associated with each of sources  410 , where c fixed  is the fixed cost. Source models  934  can define these constraints and terms in order to account for fixed costs associated with sources  410 . 
     Subplant Models 
     Referring again to  FIG. 9 , element models  930  are shown to include subplant models  936 . Subplant models  936  may store models for each of subplants  420 . As discussed above, subplants  420  are the main assets of a central plant. Subplants  420  can be configured to convert resource types, making it possible to balance requested loads from the building or campus using resources purchased from sources  410 . This general definition allows for a diverse set of central plant configurations and equipment types as well as varying degrees of subplant modeling fidelity and resolution. 
     In some embodiments, subplant models  936  identify each of subplants  420  as well as the optimization variables associated with each subplant. The optimization variables of a subplant can include the resources consumed, the resources produced, intrinsic variables, and extrinsic variables. Intrinsic variables may be internal to the optimization formulation and can include any auxiliary variables used to formulate the optimization problem. Extrinsic variables may be variables that are shared among subplants (e.g., condenser water temperature). 
     In some embodiments, subplant models  936  describe the relationships between the optimization variables of each subplant. For example, subplant models  936  can include subplant curves that define the output resource production of a subplant as a function of one or more input resources provided to the subplant. In some embodiments, operational domains are used to describe the relationship between the subplant variables. Mathematically, an operational domain is a union of a collection of polytopes in an n-dimensional (real) space that describe the admissible set of variables of a high level element. Operational domains are described in greater detail below. 
     In some embodiments, subplant models  936  store subplant constraints for each of subplants  420 . Subplant constraints may be written in the following general form: 
     
       
      
       A 
       x,j 
       x 
       j 
       +A 
       z,j 
       z 
       j 
       ≤b 
       j  
      
     
     
       
      
       H 
       x,j 
       x 
       j 
       +H 
       z,j 
       z 
       j 
       =g 
       j  
      
     
     
       
      
       x 
       lb,j 
       ≤x 
       j 
       &lt;x 
       ub,j  
      
     
     
       
      
       z 
       lb,j 
       &lt;z 
       j 
       ≤z 
       ub,j  
      
     
         z   j =integer 
     for all j where j is an index representing the jth subplant, x j  denotes the continuous variables associated with the jth subplant (e.g., resource variables and auxiliary optimization variables), and z j  denotes the integer variables associated with the jth subplant (e.g., auxiliary binary optimization variables). The vectors x lb,j , x ub,j , z lb,j , and z ub,j  represent the box (bound) constraints on the decision variables. The matrices A x,j , A z,j , H x,j , and H z,j  and the vectors b j  and g j  are associated with the inequality constraints and the equality constraints for the jth subplant. 
     In some embodiments, subplant models  936  store the input data used to generate the subplant constraints. Such input data may include sampled data points of the high level subplant curve/operational domain. For example, for chiller subplant  422 , this data may include several points sampled from the subplant curve  1300  (shown in  FIG. 13 ). When implemented as part of an online operational tool (shown in  FIG. 6 ), the high level subplant operational domain can be sampled by querying low level optimizer  634  at several requested production amounts. When implemented as part of an offline planning tool (shown in  FIG. 7 ), the sampled data may be user-specified efficiency and capacity data. 
     Storage Models 
     Referring again to  FIG. 9 , element models  930  are shown to include storage models  938 . Storage models  938  may store models for each of storage  430 . Storage models  938  can define the types of resources stored by each of storage  430 , as well as storage constraints that limit the state-of-charge (e.g., maximum charge level) and/or the rates at which each storage  430  can be charged or discharged. In some embodiments, the current level or capacity of storage  430  is quantified by the state-of-charge (SOC), which can be denoted by ϕ where ϕ=0 corresponds to empty and ϕ=1 corresponds to full. To describe the SOC as a function of the charge rate or discharge rate, a dynamic model can be stored as part of storage models  938 . The dynamic model may have the form: 
       ϕ( k+ 1)= A ϕ( k )+ Bu ( k )
 
     where ϕ(k) is the predicted state of charge at time step k of the optimization period, u(k) is the charge/discharge rate at time step k, and A and B are coefficients that account for dissipation of energy from storage  430 . In some embodiments, A and B are time-varying coefficients. Accordingly, the dynamic model may have the form: 
       ϕ( k+ 1)= A ( k )ϕ( k )+ B ( k ) u ( k )
 
     where A(k) and B(k) are coefficients that vary as a function of the time step k. 
     Asset allocator  402  can be configured to add constraints based on the operational domain of storage  430 . In some embodiments, the constraints link decision variables adjacent in time as defined by the dynamic model. For example, the constraints may link the decision variables ϕ(k+1) at time step k+1 to the decision variables ϕ(k) and u(k) at time step k. In some embodiments, the constraints link the SOC of storage  430  to the charge/discharge rate. Some or all of these constraints may be defined by the dynamic model and may depend on the operational domain of storage  430 . 
     In some embodiments, storage models  938  store optimization constraints for each of storage  430 . Storage constraints may be written in the following general form: 
     
       
      
       A 
       x,k 
       x 
       k 
       +A 
       z,k 
       z 
       k 
       ≤b 
       k  
      
     
     
       
      
       H 
       x,k 
       x 
       k 
       +H 
       z,k 
       z 
       k 
       =g 
       k  
      
     
     
       
      
       x 
       lb,k 
       ≤x 
       k 
       ≤x 
       ub,k  
      
     
     
       
      
       z 
       lb,k 
       ≤z 
       k 
       ≤z 
       ub,k  
      
     
         z   k =integer 
     for all k where k is an index representing the kth storage device, x k  denotes the continuous variables associated with the kth storage device (e.g., resource variables and auxiliary optimization variables), and z k  denotes the integer variables associated with the kth storage device (e.g., auxiliary binary optimization variables). The vectors x lb,k , x ub,k , z lb,k , and z ub,k  represent the box (bound) constraints on the decision variables. The matrices A x,k , A z,k , H x,k , and H z,k  and the vectors b k  and g k  are associated with the inequality constraints and the equality constraints for the kth storage device. 
     The optimization constraints may ensure that the predicted SOC for each of storage  430  is maintained between a minimum SOC Q min  and a maximum SOC Q max . The optimization constraints may also ensure that the charge/discharge rate is maintained between a minimum charge rate Q min  and maximum charge rate Q max . In some embodiments, the optimization constraints include terminal constraints imposed on the SOC at the end of the optimization period. For example, the optimization constraints can ensure that one or more of storage  430  are full at the end of the optimization period (i.e., “tank forced full” constraints). 
     In some embodiments, storage models  938  store mixed constraints for each of storage  430 . Mixed constraints may be needed in the case that the operational domain of storage  430  is similar to that shown in  FIG. 11 .  FIG. 11  is a graph  1100  of an example operational domain for a thermal energy storage tank or thermal energy storage subplant (e.g., TES subplants  431 - 432 ). Graph  1100  illustrates a scenario in which the discharge rate is limited to less than a maximum discharge rate at low SOCs, whereas the charge rate is limited to less than a maximum charge rate at high SOCs. In a thermal energy storage tank, the constraints on the discharge rate at low SOCs may be due to mixing between layers of the tank. For TES subplants  431 - 432  and the TES tanks that form TES subplants  431 - 432 , the SOC represents the fraction of the current tank level or: 
     
       
         
           
             ϕ 
             = 
             
               
                 Q 
                 - 
                 
                   Q 
                   min 
                 
               
               
                 
                   Q 
                   max 
                 
                 - 
                 
                   Q 
                   min 
                 
               
             
           
         
       
     
     where Q is the current tank level, Q min  is the minimum tank level, Q max  is the maximum tank level, and ϕ∈[0,1] is the SOC. Since the maximum rate of discharge or charge may depend on the SOC at low or high SOC, SOC dependent bounds on the maximum rate of discharge or charge may be included. 
     In some embodiments, storage models  938  store SOC models for each of storage  430 . The SOC model for a thermal energy storage tank may be an integrator model given by: 
     
       
         
           
             
               ϕ 
               ⁡ 
               
                 ( 
                 
                   k 
                   + 
                   1 
                 
                 ) 
               
             
             = 
             
               
                 ϕ 
                 ⁡ 
                 
                   ( 
                   k 
                   ) 
                 
               
               - 
               
                 δ 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   t 
                   s 
                 
                 ⁢ 
                 
                   
                     
                       Q 
                       . 
                     
                     ⁡ 
                     
                       ( 
                       k 
                       ) 
                     
                   
                   
                     
                       Q 
                       max 
                     
                     - 
                     
                       Q 
                       min 
                     
                   
                 
               
             
           
         
       
     
     where {dot over (Q)}(k) is the charge/discharge rate and δt s . Positive values of {dot over (Q)}(k) represent discharging, whereas negative values of {dot over (Q)}(k) represent charging. The mixed constraints depicted in  FIG. 11  can be accounted for as follows: 
         a   mixed ϕ( k )+ b   mixed   ≤{dot over (Q)} ( k )
 
       0≤ϕ( k )≤1
 
       − {dot over (Q)}   charge,max   ≤{dot over (Q)} ( k )&lt; {dot over (Q)}   discharge,max  
 
     where a mixed  and b mixed  are vectors of the same dimension that describe any mixed linear inequality constraints (e.g., constraints that depend on both the SOC and the discharge/charge rate). The second constraint (i.e., 0≤ϕ(k)≤1) is the constraint on the SOC. The last constraint limits the rate of charging and discharging within bound. 
     In some embodiments, storage models  938  include models that treat the air within the building and/or the building mass as a form of energy storage. However, one of the key differentiators between an airside mass and storage  430  is that additional care must be taken to ensure feasibility of the optimization problem (e.g., soft constraining of the state constraints). Nevertheless, airside optimization units share many common features and mathematical operations as storage  430 . In some embodiments, a state-space representation of airside dynamics can be used to describe the predicted evolution of airside optimization units (e.g., building mass). Such a model may have the form: 
         x ( k+ 1)= A   x ( k )+ Bu ( k ) 
     where x(k) is the airside optimization unit state vector, u(k) is the airside optimization unit input vector, and A and B are the system matrices. In general, an airside optimization unit or the control volume that the dynamic model describes may represent a region (e.g., multiple HVAC zones served by the same air handling unit) or an aggregate of several regions (e.g., an entire building). 
     Element Links 
     Still referring to  FIG. 9 , element models  930  are shown to include element links  940 . In some embodiments, element links  940  define the connections between sources  410 , subplants  420 , storage  430 , and sinks  440 . These links  940  are shown as lines connecting various elements in plant resource diagrams  500  and  550 . For example, element links  940  may define which of sources  410  provide resources to each of subplants  420 , which subplants  420  are connected to which storage  430 , and which subplants  420  and/or storage  430  provide resources to each of sinks  440 . Element links  940  may contain the data and methods needed to create and solve an instance of the high level optimization problem. 
     In some embodiments, element links  940  link sources  410 , subplants  420 , storage  430 , and sinks  440  (i.e., the high level problem elements) using a netlist of connections between high level problem elements. The information provided by element links  940  may allow multiple subplants  420 , storage  430 , sinks  440 , and sources of the same type to be defined. Rather than assuming that all elements contribute to and draw from a common pool of each resource, element links  940  can be used to specify the particular connections between elements. Accordingly, multiple resources of the same type can be defined such that a first subset of subplants  420  produce a first resource of a given type (e.g., Chilled Water A), whereas a second subset of subplants  420  produce a second resource of the same type (e.g., Chilled Water B). Such a configuration is shown in  FIG. 5B . Advantageously, element links  940  can be used to build constraints that reflect the actual physical connections between equipment in a central plant. 
     In some embodiments, element links  940  are used to account for the distribution costs of resources between elements of asset allocation system  400  (e.g., from sources  410  to subplants  420 , from subplants  420  to sinks  440 , etc.) and/or the distribution efficiency of each connection. In some cases it may be necessary to include costs for delivering the resource along a connection, or an efficiency of the transportation (amount or percentage of resources received on the other side of the connection). Accounting for distribution costs and/or distribution efficiency may affect the result of the optimization in some situations. For example, consider a first chiller subplant  420  that is highly efficient and can provide a chilled water resource to sinks  440 , but it costs significantly more (e.g., due to pumping costs etc.) to transport the resource from the first chiller subplant  420  rather than from a second chiller subplant  420 . In that scenario, asset allocator  402  may determine that the first chiller subplant  420  should be used only if necessary. Additionally, energy could be lost during transportation along a particular connection (e.g., chilled water temperature may increase over a long pipe). This could be described as an efficiency of the connection. 
     The resource balance constraint can be modified to account for distribution efficiency as follows: 
     
       
         
           
             
               
                 
                   
                     ∑ 
                     sources 
                   
                   ⁢ 
                   
                     
                       α 
                       
                         source 
                         , 
                         resource 
                       
                     
                     ⁢ 
                     
                       purchase 
                       
                         resource 
                         , 
                         time 
                       
                     
                   
                 
                 + 
                 
                   
                     ∑ 
                     subplants 
                   
                   ⁢ 
                   
                     
                       α 
                       
                         subplant 
                         , 
                         resource 
                       
                     
                     ⁢ 
                     
                       produces 
                       ⁡ 
                       
                         ( 
                         
                           
                             x 
                             
                               internal 
                               , 
                               time 
                             
                           
                           , 
                           
                             x 
                             
                               external 
                               , 
                               time 
                             
                           
                           , 
                           
                             v 
                             
                               uncontrolled 
                               , 
                               time 
                             
                           
                         
                         ) 
                       
                     
                   
                 
                 - 
                 
                   
                     ∑ 
                     subplants 
                   
                   ⁢ 
                   
                     
                       1 
                       
                         α 
                         
                           source 
                           , 
                           resource 
                         
                       
                     
                     ⁢ 
                     
                       consumes 
                       ⁡ 
                       
                         ( 
                         
                           
                             x 
                             
                               internal 
                               , 
                               time 
                             
                           
                           , 
                           
                             x 
                             
                               external 
                               , 
                               time 
                             
                           
                           , 
                           
                             v 
                             
                               uncontrolled 
                               , 
                               time 
                             
                           
                         
                         ) 
                       
                     
                   
                 
                 + 
                 
                   
                     ∑ 
                     storages 
                   
                   ⁢ 
                   
                     
                       discharges 
                       resource 
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           x 
                           
                             internal 
                             , 
                             time 
                           
                         
                         , 
                         
                           x 
                           
                             external 
                             , 
                             time 
                           
                         
                       
                       ) 
                     
                   
                 
                 - 
                 
                   
                     1 
                     
                       α 
                       
                         sink 
                         , 
                         resource 
                       
                     
                   
                   ⁢ 
                   
                     
                       ∑ 
                       sinks 
                     
                     ⁢ 
                     
                       requests 
                       resource 
                     
                   
                 
               
               = 
               
                 0 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   ∀ 
                   resources 
                 
               
             
             , 
             
               ∀ 
               
                 time 
                 ∈ 
                 horizon 
               
             
           
         
       
     
     where the α terms are loss factors with values between zero and one. 
     The cost function can be modified to account for transportation costs as follows: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               
                 
                   ∑ 
                   sources 
                 
                 ⁢ 
                 
                   
                     ∑ 
                     horizon 
                   
                   ⁢ 
                   
                     cost 
                     ⁡ 
                     
                       ( 
                       
                         
                           purchases 
                           
                             resource 
                             , 
                             time 
                           
                         
                         , 
                         time 
                       
                       ) 
                     
                   
                 
               
               + 
               ⋯ 
               + 
               
                 
                   ∑ 
                   connection 
                 
                 ⁢ 
                 
                   
                     λ 
                     connection 
                   
                   ⁢ 
                   
                     resource 
                     connection 
                   
                 
               
             
           
         
       
     
     where λ connection  is the cost per unit resource transported along a particular connection and resource connection  is the amount of the resource transported along the connection. Accordingly, the final term of the cost function accounts for transportation costs along each of the connections or links between elements in asset allocation system  400 . 
     Demand Charges 
     Still referring to  FIG. 9 , asset allocator  402  is shown to include a demand charge module  906 . Demand charge module  906  can be configured to modify the cost function J(x) and the optimization constraints to account for one or more demand charges. As previously described, demand charges are costs imposed by sources  410  based on the peak consumption of a resource from sources  410  during various demand charge periods (i.e., the peak amount of the resource purchased from the utility during any time step of the applicable demand charge period). For example, an electric utility may define one or more demand charge periods and may impose a separate demand charge based on the peak electric consumption during each demand charge period. Electric energy storage can help reduce peak consumption by storing electricity in a battery when energy consumption is low and discharging the stored electricity from the battery when energy consumption is high, thereby reducing peak electricity purchased from the utility during any time step of the demand charge period. 
     In some instances, one or more of the resources purchased from  410  are subject to a demand charge or multiple demand charges. There are many types of potential demand charges as there are different types of energy rate structures. The most common energy rate structures are constant pricing, time of use (TOU), and real time pricing (RTP). Each demand charge may be associated with a demand charge period during which the demand charge is active. Demand charge periods can overlap partially or completely with each other and/or with the optimization period. Demand charge periods can include relatively long periods (e.g., monthly, seasonal, annual, etc.) or relatively short periods (e.g., days, hours, etc.). Each of these periods can be divided into several sub-periods including off-peak, partial-peak, and/or on-peak. Some demand charge periods are continuous (e.g., beginning Jan. 1, 2017 and ending Jan. 31, 2017), whereas other demand charge periods are non-continuous (e.g., from 11:00 AM-1:00 PM each day of the month). 
     Over a given optimization period, some demand charges may be active during some time steps that occur within the optimization period and inactive during other time steps that occur during the optimization period. Some demand charges may be active over all the time steps that occur within the optimization period. Some demand charges may apply to some time steps that occur during the optimization period and other time steps that occur outside the optimization period (e.g., before or after the optimization period). In some embodiments, the durations of the demand charge periods are significantly different from the duration of the optimization period. 
     Advantageously, demand charge module  906  may be configured to account for demand charges in the high level optimization process performed by asset allocator  402 . In some embodiments, demand charge module  906  incorporates demand charges into the optimization problem and the cost function J(x) using demand charge masks and demand charge rate weighting factors. Each demand charge mask may correspond to a particular demand charge and may indicate the time steps during which the corresponding demand charge is active and/or the time steps during which the demand charge is inactive. Each rate weighting factor may also correspond to a particular demand charge and may scale the corresponding demand charge rate to the time scale of the optimization period. 
     The demand charge term of the cost function J(x) can be expressed as: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               ⋯ 
               ⁢ 
               
                 
                   ∑ 
                   
                     s 
                     ∈ 
                     sources 
                   
                 
                 ⁢ 
                 
                   
                     ∑ 
                     
                       q 
                       ∈ 
                       
                         demands 
                         s 
                       
                     
                   
                   ⁢ 
                   
                     
                       w 
                       
                         demand 
                         , 
                         s 
                         , 
                         q 
                       
                     
                     ⁢ 
                     
                       r 
                       
                         demand 
                         , 
                         s 
                         , 
                         q 
                       
                     
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       
                         max 
                         
                           i 
                           ∈ 
                           
                             demand 
                             
                               s 
                               , 
                               q 
                             
                           
                         
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         
                           ( 
                           
                             purchase 
                             
                               s 
                               , 
                               i 
                             
                           
                           ) 
                         
                         ⁢ 
                         … 
                       
                     
                   
                 
               
             
           
         
       
     
     where the max( ) function selects the maximum amount of the resource purchased from source s during any time step i that occurs during the optimization period. However, the demand charge period associated with demand charge q may not cover all of the time steps that occur during the optimization period. In order to apply the demand charge q to only the time steps during which the demand charge q is active, demand charge module  906  can add a demand charge mask to the demand charge term as shown in the following equation: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               ⋯ 
               ⁢ 
               
                 
                   ∑ 
                   
                     s 
                     ∈ 
                     sources 
                   
                 
                 ⁢ 
                 
                   
                     ∑ 
                     
                       q 
                       ∈ 
                       
                         demands 
                         s 
                       
                     
                   
                   ⁢ 
                   
                     
                       w 
                       
                         demand 
                         , 
                         s 
                         , 
                         q 
                       
                     
                     ⁢ 
                     
                       r 
                       
                         demand 
                         , 
                         s 
                         , 
                         q 
                       
                     
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       
                         max 
                         
                           i 
                           ∈ 
                           
                             demand 
                             
                               s 
                               , 
                               q 
                             
                           
                         
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         
                           ( 
                           
                             
                               g 
                               
                                 s 
                                 , 
                                 q 
                                 , 
                                 i 
                               
                             
                             ⁢ 
                             
                               purchase 
                               
                                 s 
                                 , 
                                 i 
                               
                             
                           
                           ) 
                         
                         ⁢ 
                         … 
                       
                     
                   
                 
               
             
           
         
       
     
     where g s,q,i  is an element of the demand charge mask. 
     The demand charge mask may be a logical vector including an element g s,q,i  for each time step i that occurs during the optimization period. Each element g s,q,i  of the demand charge mask may include a binary value (e.g., a one or zero) that indicates whether the demand charge q for source s is active during the corresponding time step i of the optimization period. For example, the element g s,q,i  may have a value of one (i.e., g s,q,i =1) if demand charge q is active during time step i and a value of zero (i.e., g s,q,i =0) if demand charge q is inactive during time step i. An example of a demand charge mask is shown in the following equation: 
         g   s,q =[0,0,0,1,1,1,1,0,0,0,1,1] T    
     where g s,q,1 , g s,q,2 , g s,q,3 , g s,q,8 , g s,q,9 , and g s,q,10  have values of zero, whereas g s,q,4 , g s,q,5 , g s,q,6 , g s,q,7 , g s,q,11 , and g s,q,12  have values of one. This indicates that the demand charge q is inactive during time steps i=1, 2, 3, 8, 9, 10 (i.e., g s,q,i =0 ∀i=1, 2, 3, 8, 9, 10) and active during time steps i=4, 5, 6, 7, 11, 12 (i.e., g s,q,i =1 ∀i=4, 5, 6, 7, 11, 12). Accordingly, the term g s,q,i purchase s,i  within the max( ) function may have a value of zero for all time steps during which the demand charge q is inactive. This causes the max( ) function to select the maximum purchase from source s that occurs during only the time steps for which the demand charge q is active. 
     In some embodiments, demand charge module  906  calculates the weighting factor w demand,s,q  for each demand charge q in the cost function J(x). The weighting factor w demand,s,q  may be a ratio of the number of time steps the corresponding demand charge q is active during the optimization period to the number of time steps the corresponding demand charge q is active in the remaining demand charge period (if any) after the end of the optimization period. For example, demand charge module  906  can calculate the weighting factor w demand,s,q  using the following equation: 
     
       
         
           
             
               w 
               
                 demand 
                 , 
                 s 
                 , 
                 q 
               
             
             = 
             
               
                 
                   ∑ 
                   
                     i 
                     = 
                     k 
                   
                   
                     k 
                     + 
                     h 
                     - 
                     1 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   q 
                   
                     s 
                     , 
                     q 
                     , 
                     i 
                   
                 
               
               
                 
                   ∑ 
                   
                     i 
                     = 
                     
                       k 
                       + 
                       h 
                     
                   
                   
                     period 
                     ⁢ 
                     _ 
                     ⁢ 
                     end 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   g 
                   
                     s 
                     , 
                     q 
                     , 
                     i 
                   
                 
               
             
           
         
       
     
     where the numerator is the summation of the number of time steps the demand charge q is active in the optimization period (i.e., from time step k to time step k+h−1) and the denominator is the number of time steps the demand charge q is active in the portion of the demand charge period that occurs after the optimization period (i.e., from time step k+h to the end of the demand charge period). 
     The following example illustrates how demand charge module  906  can incorporate multiple demand charges into the cost function J(x). In this example, a single source of electricity (e.g., an electric grid) is considered with multiple demand charges applicable to the electricity source (i.e., q=1 . . . N, where N is the total number of demand charges). The system includes a battery asset which can be allocated over the optimization period by charging or discharging the battery during various time steps. Charging the battery increases the amount of electricity purchased from the electric grid, whereas discharging the battery decreases the amount of electricity purchased from the electric grid. 
     Demand charge module  906  can modify the cost function J(x) to account for the N demand charges as shown in the following equation: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               ⋯ 
               + 
               
                 
                   w 
                   
                     d 
                     1 
                   
                 
                 ⁢ 
                 
                   r 
                   
                     d 
                     1 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     max 
                     i 
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     ( 
                     
                       
                         g 
                         
                           1 
                           i 
                         
                       
                       ⁡ 
                       
                         ( 
                         
                           
                             - 
                             
                               P 
                               
                                 bat 
                                 i 
                               
                             
                           
                           + 
                           
                             eLoad 
                             i 
                           
                         
                         ) 
                       
                     
                     ) 
                   
                 
               
               + 
               ⋯ 
               + 
               
                 
                   w 
                   
                     d 
                     q 
                   
                 
                 ⁢ 
                 
                   r 
                   
                     d 
                     q 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     max 
                     i 
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     ( 
                     
                       
                         g 
                         
                           q 
                           i 
                         
                       
                       ⁡ 
                       
                         ( 
                         
                           
                             - 
                             
                               P 
                               
                                 bat 
                                 i 
                               
                             
                           
                           + 
                           
                             eLoad 
                             i 
                           
                         
                         ) 
                       
                     
                     ) 
                   
                 
               
               + 
               ⋯ 
               + 
               
                 
                   w 
                   
                     d 
                     N 
                   
                 
                 ⁢ 
                 
                   r 
                   
                     d 
                     N 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     max 
                     i 
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     ( 
                     
                       
                         g 
                         
                           N 
                           i 
                         
                       
                       ⁡ 
                       
                         ( 
                         
                           
                             - 
                             
                               P 
                               
                                 bat 
                                 i 
                               
                             
                           
                           + 
                           
                             eLoad 
                             i 
                           
                         
                         ) 
                       
                     
                     ) 
                   
                 
               
             
           
         
       
     
     where the term −P bat     i   +eLoad i  represents the total amount of electricity purchased from the electric grid during time step i (i.e., the total electric load eLoad i  minus the power discharged from the battery P bat     i   ). Each demand charge q=1 . . . N can be accounted for separately in the cost function J(x) by including a separate max( ) function for each of the N demand charges. The parameter r d     q    indicates the demand charge rate associated with the qth demand charge (e.g., $/kW) and the weighting factor w d     q    indicates the weight applied to the qth demand charge. 
     Demand charge module  906  can augment each max( ) function with an element g q     i    of the demand charge mask for the corresponding demand charge. Each demand charge mask may be a logical vector of binary values which indicates whether the corresponding demand charge is active or inactive at each time step i of the optimization period. Accordingly, each max( ) function may select the maximum electricity purchase during only the time steps the corresponding demand charge is active. Each max( ) function can be multiplied by the corresponding demand charge rate r d     q    and the corresponding demand charge weighting factor w d     q    to determine the total demand charge resulting from the battery allocation P bat  over the duration of the optimization period. 
     In some embodiments, demand charge module  906  linearizes the demand charge terms of the cost function J(x) by introducing an auxiliary variable d q  for each demand charge q. In the case of the previous example, this will result in N auxiliary variables d 1  . . . d N  being introduced as decision variables in the cost function J(x). Demand charge module  906  can modify the cost function J(x) to include the linearized demand charge terms as shown in the following equation: 
         J ( x )= . . . + w   d     1     r   d     1     d   1   + . . . +w   d     q     r   d     q     d   q   + . . . +w   d     N     r   d     N     d   N    
     Demand charge module  906  can impose the following constraints on the auxiliary demand charge variables d 1  . . . d N  to ensure that each auxiliary demand charge variable represents the maximum amount of electricity purchased from the electric utility during the applicable demand charge period: 
     
       
         
           
             
               
                 
                   
                     d 
                     1 
                   
                   ≥ 
                   
                     
                       g 
                       
                         1 
                         i 
                       
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           - 
                           
                             P 
                             
                               bat 
                               i 
                             
                           
                         
                         + 
                         
                           eLoad 
                           i 
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   
                     
                       ∀ 
                       i 
                     
                     = 
                     
                       
                         k 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         … 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         k 
                       
                       + 
                       h 
                       - 
                       1 
                     
                   
                   , 
                   
                     
                       g 
                       
                         1 
                         i 
                       
                     
                     ≠ 
                     0 
                   
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   
                     d 
                     1 
                   
                   ≥ 
                   
                     0 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     ⋮ 
                   
                 
               
             
             
               
                 
                   
                     d 
                     q 
                   
                   ≥ 
                   
                     
                       g 
                       
                         q 
                         i 
                       
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           - 
                           
                             P 
                             
                               bat 
                               i 
                             
                           
                         
                         + 
                         
                           eLoad 
                           i 
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   
                     
                       ∀ 
                       i 
                     
                     = 
                     
                       
                         k 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         … 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         k 
                       
                       + 
                       h 
                       - 
                       1 
                     
                   
                   , 
                   
                     
                       g 
                       
                         q 
                         i 
                       
                     
                     ≠ 
                     0 
                   
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   
                     d 
                     q 
                   
                   ≥ 
                   
                     0 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     ⋮ 
                   
                 
               
             
             
               
                 
                   
                     d 
                     N 
                   
                   ≥ 
                   
                     
                       g 
                       
                         N 
                         i 
                       
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           - 
                           
                             P 
                             
                               bat 
                               i 
                             
                           
                         
                         + 
                         
                           eLoad 
                           i 
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   
                     
                       ∀ 
                       i 
                     
                     = 
                     
                       
                         k 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         … 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         k 
                       
                       + 
                       h 
                       - 
                       1 
                     
                   
                   , 
                   
                     
                       g 
                       
                         N 
                         i 
                       
                     
                     ≠ 
                     0 
                   
                 
               
             
             
               
                 
                     
                 
               
               
                 
                   
                     
                       d 
                       N 
                     
                     ≥ 
                     0 
                   
                   ⁢ 
                   
                       
                   
                 
               
             
           
         
       
     
     In some embodiments, the number of constraints corresponding to each demand charge q is dependent on how many time steps the demand charge q is active during the optimization period. For example, the number of constraints for the demand charge q may be equal to the number of non-zero elements of the demand charge mask g. Furthermore, the value of the auxiliary demand charge variable de at each iteration of the optimization may act as the lower bound of the value of the auxiliary demand charge variable de at the following iteration. 
     Consider the following example of a multiple demand charge structure. In this example, an electric utility imposes three monthly demand charges. The first demand charge is an all-time monthly demand charge of 15.86 $/kWh which applies to all hours within the entire month. The second demand charge is an on-peak monthly demand charge of 1.56 $/kWh which applies each day from 12:00-18:00. The third demand charge is a partial-peak monthly demand charge of 0.53 $/kWh which applies each day from 9:00-12:00 and from 18:00-22:00. 
     For an optimization period of one day and a time step of one hour (i.e., i=1 . . . 24), demand charge module  906  may introduce three auxiliary demand charge variables. The first auxiliary demand charge variable d 1  corresponds to the all-time monthly demand charge; the second auxiliary demand charge variable d 2  corresponds to the on-peak monthly demand charge; and the third auxiliary demand charge variable d 3  corresponds to the partial-peak monthly demand charge. Demand charge module  906  can constrain each auxiliary demand charge variable to be greater than or equal to the maximum electricity purchase during the hours the corresponding demand charge is active, using the inequality constraints described above. 
     Demand charge module  906  can generate a demand charge mask g q  for each of the three demand charges (i.e., q=1 . . . 3), where g q  includes an element for each time step of the optimization period (i.e., g q =[g q     1    . . . g q     24   ]). The three demand charge masks can be defined as follows: 
         g   1     i   =1 ∀ i= 1 . . . 24
 
         g   2     i   =1 ∀ i= 12 . . . 18
 
         g   3     i   =1 ∀ i= 9 . . . 12,18 . . . 22
 
     with all other elements of the demand charge masks equal to zero. In this example, it is evident that more than one demand charge constraint will be active during the hours which overlap with multiple demand charge periods. Also, the weight of each demand charge over the optimization period can vary based on the number of hours the demand charge is active, as previously described. 
     In some embodiments, demand charge module  906  considers several different demand charge structures when incorporating multiple demand charges into the cost function J(x) and optimization constraints. Demand charge structures can vary from one utility to another, or the utility may offer several demand charge options. In order to incorporate the multiple demand charges within the optimization framework, a generally-applicable framework can be defined as previously described. Demand charge module  906  can translate any demand charge structure into this framework. For example, demand charge module  906  can characterize each demand charge by rates, demand charge period start, demand charge period end, and active hours. Advantageously, this allows demand charge module  906  to incorporate multiple demand charges in a generally-applicable format. 
     The following is another example of how demand charge module  906  can incorporate multiple demand charges into the cost function J(x). Consider, for example, monthly demand charges with all-time, on-peak, partial-peak, and off-peak. In this case, there are four demand charge structures, where each demand charge is characterized by twelve monthly rates, twelve demand charge period start (e.g., beginning of each month), twelve demand charge period end (e.g., end of each month), and hoursActive. The hoursActive is a logical vector where the hours over a year where the demand charge is active are set to one. When running the optimization over a given horizon, demand charge module  906  can implement the applicable demand charges using the hoursActive mask, the relevant period, and the corresponding rate. 
     In the case of an annual demand charge, demand charge module  906  can set the demand charge period start and period end to the beginning and end of a year. For the annual demand charge, demand charge module  906  can apply a single annual rate. The hoursActive demand charge mask can represent the hours during which the demand charge is active. For an annual demand charge, if there is an all-time, on-peak, partial-peak, and/or off-peak, this translates into at most four annual demand charges with the same period start and end, but different hoursActive and different rates. 
     In the case of a seasonal demand charge (e.g., a demand charge for which the maximum peak is determined over the indicated season period), demand charge module  906  can represent the demand charge as an annual demand charge. Demand charge module  906  can set the demand charge period start and end to the beginning and end of a year. Demand charge module  906  can set the hoursActive to one during the hours which belong to the season and to zero otherwise. For a seasonal demand charge, if there is an All-time, on-peak, partial, and/or off-peak, this translates into at most four seasonal demand charges with the same period start and end, but different hoursActive and different rates. 
     In the case of the average of the maximum of current month and the average of the maxima of the eleven previous months, demand charge module  906  can translate the demand charge structure into a monthly demand charge and an annual demand charge. The rate of the monthly demand charge may be half of the given monthly rate and the annual rate may be the sum of given monthly rates divided by two. These and other features of demand charge module  906  are described in greater detail in U.S. patent application Ser. No. 15/405,236 filed Jan. 12, 2017, the entire disclosure of which is incorporated by reference herein. 
     Incentive Programs 
     Referring again to  FIG. 9 , asset allocator  402  is shown to include an incentive program module  908 . Incentive program module  908  may modify the optimization problem to account for revenue from participating in an incentive-based demand response (IBDR) program. IBDR programs may include any type of incentive-based program that provides revenue in exchange for resources (e.g., electric power) or a reduction in a demand for such resources. For example, asset allocation system  400  may provide electric power to an energy grid or an independent service operator as part of a frequency response program (e.g., PJM frequency response) or a synchronized reserve market. In a frequency response program, a participant contracts with an electrical supplier to maintain reserve power capacity that can be supplied or removed from an energy grid by tracking a supplied signal. The participant is paid by the amount of power capacity required to maintain in reserve. In other types of IBDR programs, asset allocation system  400  may reduce its demand for resources from a utility as part of a load shedding program. It is contemplated that asset allocation system  400  may participate in any number and/or type of IBDR programs. 
     In some embodiments, incentive program module  908  modifies the cost function J(x) to include revenue generated from participating in an economic load demand response (ELDR) program. ELDR is a type of IBDR program and similar to frequency regulation. In ELDR, the objective is to maximize the revenue generated by the program, while using the battery to participate in other programs and to perform demand management and energy cost reduction. To account for ELDR program participation, incentive program module  908  can modify the cost function J(x) to include the following term: 
     
       
         
           
             
               min 
               
                 
                   b 
                   i 
                 
                 , 
                 
                   P 
                   
                     bat 
                     i 
                   
                 
               
             
             ⁢ 
             
               ( 
               
                 - 
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       k 
                     
                     
                       k 
                       + 
                       h 
                       - 
                       1 
                     
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     
                       b 
                       i 
                     
                     ⁢ 
                     
                       
                         r 
                         
                           ELDR 
                           i 
                         
                       
                       ⁡ 
                       
                         ( 
                         
                           
                             adjCBL 
                             i 
                           
                           - 
                           
                             ( 
                             
                               
                                 eLoad 
                                 i 
                               
                               - 
                               
                                 P 
                                 
                                   bat 
                                   i 
                                 
                               
                             
                             ) 
                           
                         
                         ) 
                       
                     
                   
                 
               
               ) 
             
           
         
       
     
     where b i  is a binary decision variable indicating whether to participate in the ELDR program during time step i, r ELDR     i    is the ELDR incentive rate at which participation is compensated, and adjCBL i  is the symmetric additive adjustment (SAA) on the baseline load. The previous expression can be rewritten as: 
     
       
         
           
             
               min 
               
                 
                   b 
                   i 
                 
                 , 
                 
                   P 
                   
                     bat 
                     i 
                   
                 
               
             
             ⁢ 
             
               ( 
               
                 - 
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       k 
                     
                     
                       k 
                       + 
                       h 
                       - 
                       1 
                     
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     
                       b 
                       i 
                     
                     ⁢ 
                     
                       
                         r 
                         
                           ELDR 
                           i 
                         
                       
                       ⁡ 
                       
                         ( 
                         
                           
                             
                               ∑ 
                               
                                 l 
                                 = 
                                 1 
                               
                               4 
                             
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             
                               
                                 e 
                                 li 
                               
                               4 
                             
                           
                           + 
                           
                             
                               ∑ 
                               
                                 p 
                                 = 
                                 
                                   m 
                                   - 
                                   4 
                                 
                               
                               
                                 m 
                                 - 
                                 2 
                               
                             
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             
                               
                                 1 
                                 3 
                               
                               ⁢ 
                               
                                 ( 
                                 
                                   
                                     eLoad 
                                     p 
                                   
                                   - 
                                   
                                     P 
                                     
                                       bat 
                                       p 
                                     
                                   
                                   - 
                                   
                                     
                                       ∑ 
                                       
                                         l 
                                         = 
                                         1 
                                       
                                       4 
                                     
                                     ⁢ 
                                     
                                         
                                     
                                     ⁢ 
                                     
                                       
                                         e 
                                         lp 
                                       
                                       4 
                                     
                                   
                                 
                                 ) 
                               
                             
                           
                           - 
                           
                             ( 
                             
                               
                                 eLoad 
                                 i 
                               
                               - 
                               
                                 P 
                                 
                                   bat 
                                   i 
                                 
                               
                             
                             ) 
                           
                         
                         ) 
                       
                     
                   
                 
               
               ) 
             
           
         
       
     
     where e li  and e lp  are the electric loads at the lth hour of the operating day. 
     In some embodiments, incentive program module  908  handles the integration of ELDR into the optimization problem as a bilinear problem with two multiplicative decision variables. In order to linearize the cost function J(x) and customize the ELDR problem to the optimization framework, several assumptions may be made. For example, incentive program module  908  can assume that ELDR participation is only in the real-time market, balancing operating reserve charges and make whole payments are ignored, day-ahead prices are used over the horizon, real-time prices are used in calculating the total revenue from ELDR after the decisions are made by the optimization algorithm, and the decision to participate in ELDR is made in advance and passed to the optimization algorithm based on which the battery asset is allocated. 
     In some embodiments, incentive program module  908  calculates the participation vector b i  as follows: 
     
       
         
           
             
               b 
               i 
             
             = 
             
               { 
               
                 
                   
                     1 
                   
                   
                     
                       ∀ 
                       
                         
                           
                             i 
                             ⁢ 
                             
                               / 
                             
                             ⁢ 
                             
                               r 
                               
                                 DA 
                                 i 
                               
                             
                           
                           ≥ 
                           
                             
                               NBT 
                               i 
                             
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             and 
                             ⁢ 
                             
                                 
                             
                             ⁢ 
                             i 
                           
                         
                         ∈ 
                         S 
                       
                     
                   
                 
                 
                   
                     0 
                   
                   
                     
                       otherwise 
                       ⁢ 
                       
                           
                       
                     
                   
                 
               
             
           
         
       
     
     where r DA     i    is the hourly day-ahead price at the ith hour, NBT i  is the net benefits test value corresponding to the month to which the corresponding hour belongs, and S is the set of nonevent days. Nonevent days can be determined for the year by choosing to participate every x number of days with the highest day-ahead prices out of y number of days for a given day type. This approach may ensure that there are nonevent days in the 45 days prior to a given event day when calculating the CBL for the event day. 
     Given these assumptions and the approach taken by incentive program module  908  to determine when to participate in ELDR, incentive program module  908  can adjust the cost function J(x) as follows: 
     
       
         
           
             
               J 
               ⁡ 
               
                 ( 
                 x 
                 ) 
               
             
             = 
             
               
                 - 
                 
                   
                     ∑ 
                     
                       i 
                       = 
                       k 
                     
                     
                       k 
                       + 
                       h 
                       - 
                       1 
                     
                   
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     
                       r 
                       
                         e 
                         i 
                       
                     
                     ⁢ 
                     
                       P 
                       
                         bat 
                         i 
                       
                     
                   
                 
               
               - 
               
                 
                   ∑ 
                   
                     i 
                     = 
                     k 
                   
                   
                     k 
                     + 
                     h 
                     - 
                     1 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     r 
                     
                       FR 
                       i 
                     
                   
                   ⁢ 
                   
                     P 
                     
                       FR 
                       i 
                     
                   
                 
               
               + 
               
                 
                   ∑ 
                   
                     i 
                     = 
                     k 
                   
                   
                     k 
                     + 
                     h 
                     - 
                     1 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     r 
                     
                       s 
                       i 
                     
                   
                   ⁢ 
                   
                     s 
                     i 
                   
                 
               
               + 
               
                 
                   w 
                   d 
                 
                 ⁢ 
                 
                   r 
                   d 
                 
                 ⁢ 
                 d 
               
               - 
               
                 
                   ∑ 
                   
                     i 
                     = 
                     k 
                   
                   
                     k 
                     + 
                     h 
                     - 
                     1 
                   
                 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   
                     b 
                     i 
                   
                   ⁢ 
                   
                     
                       r 
                       
                         DA 
                         i 
                       
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           
                             ∑ 
                             
                               p 
                               = 
                               
                                 m 
                                 - 
                                 4 
                               
                             
                             
                               m 
                               - 
                               2 
                             
                           
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             
                               - 
                               
                                 1 
                                 3 
                               
                             
                             ⁢ 
                             
                               P 
                               
                                 bat 
                                 p 
                               
                             
                           
                         
                         + 
                         
                           P 
                           
                             bat 
                             i 
                           
                         
                       
                       ) 
                     
                   
                 
               
             
           
         
       
     
     where b i  and m are known over a given horizon. The resulting term corresponding to ELDR shows that the rates at the ith participation hour are doubled and those corresponding to the SAA are lowered. This means it is expected that high level optimizer  632  will tend to charge the battery during the SAA hours and discharge the battery during the participation hours. Notably, even though a given hour is set to be an ELDR participation hour, high level optimizer  632  may not decide to allocate any of the battery asset during that hour. This is due to the fact that it may be more beneficial at that instant to participate in another incentive program or to perform demand management. 
     To build the high level optimization problem, optimization problem constructor  910  may query the number of decision variables and constraints that each subplant  420 , source  410 , storage  430 , and site specific constraint adds to the problem. In some embodiments, optimization problem constructor  910  creates optimization variable objects for each variable of the high level problem to help manage the flow of data. After the variable objects are created, optimization problem constructor  910  may pre-allocate the optimization matrices and vectors for the problem. Element links  940  can then be used to fill in the optimization matrices and vectors by querying each component. The constraints associated with each subplant  420  can be filled into the larger problem-wide optimization matrix and vector. Storage constraints can be added, along with demand constraints, demand charges, load balance constraints, and site-specific constraints. 
     Extrinsic Variables 
     In some embodiments, asset allocator  402  is configured to optimize the use of extrinsic variables. Extrinsic variables can include controlled or uncontrolled variables that affect multiple subplants  420  (e.g., condenser water temperature, external conditions such as outside air temperature, etc.). In some embodiments, extrinsic variables affect the operational domain of multiple subplants  420 . There are many methods that can be used to optimize the use of extrinsic variables. For example, consider a chiller subplant connected to a cooling tower subplant. The cooling tower subplant provides cooling for condenser water provided as an input to the chiller. Several scenarios outlining the use of extrinsic variables in this example are described below. 
     In a first scenario, both the chiller subplant and the tower subplant have operational domains that are not dependent on the condenser water temperatures. In this scenario, the condenser water temperature can be ignored (e.g., excluded from the set of optimization variables) since the neither of the operational domains are a function of the condenser water temperature. 
     In a second scenario, the chiller subplant has an operational domain that varies with the entering condenser water temperature. However, the cooling tower subplant has an operational domain that is not a function of the condenser water temperature. For example, the cooling tower subplant may have an operational domain that defines a relationship between fan power and water usage, independent from its leaving condenser water temperature or ambient air wet bulb temperature. In this case, the operational domain of the chiller subplant can be sliced (e.g., a cross section of the operational domain can be taken) at the condenser water temperature indicated at each point in the optimization period. 
     In a third scenario, the cooling tower subplant has an operational domain that depends on its leaving condenser water temperature. Both the entering condenser water temperature of the chiller subplant and the leaving condenser water temperature of the cooling tower subplant can be specified so the operational domain will be sliced at those particular values. In both the second scenario and the third scenario, asset allocator  402  may produce variables for the condenser water temperature. In the third scenario, asset allocator  402  may produce the variables for both the tower subplant and the chiller subplant. However, these variables will not become decision variables because they are simply specified directly 
     In a fourth scenario, the condenser water temperature affects the operational domains of both the cooling tower subplant and the chiller subplant. Because the condenser water temperature is not specified, it may become an optimization variable that can be optimized by asset allocator  402 . In this scenario, the optimization variable is produced when the first subplant (i.e., either the chiller subplant or the cooling tower subplant) reports its optimization size. When the second subplant is queried, no additional variable is produced. Instead, asset allocator  402  may recognize the shared optimization variable as the same variable from the connection netlist. 
     When asset allocator  402  asks for constraints from the individual subplants  420 , subplants  420  may send those constraints using local indexing. Asset allocator  402  may then disperse these constraints by making new rows in the optimization matrix, but also distributing the column to the correct columns based on its own indexing for the entire optimization problem. In this way, extrinsic variables such as condenser water temperature can be incorporated into the optimization problem in an efficient and optimal manner. 
     Commissioned Constraints 
     Some constraints may arise due to mechanical problems after the energy facility has been built. These constraints are site specific and may not be incorporated into the main code for any of the subplants or the high level problem itself. Instead, constraints may be added without software update on site during the commissioning phase of the project. Furthermore, if these additional constraints are known prior to the plant build they could be added to the design tool run. Commissioned constraints can be held by asset allocator  402  and can be added constraints to any of the ports or connections of subplants  420 . Constraints can be added for the consumption, production, or extrinsic variables of a subplant. 
     As an example implementation, two new complex type internals can be added to the problem. These internals can store an array of constraint objects that include a dictionary to describe inequality and equality constraints, times during which the constraints are active, and the elements of the horizon the constraints affect. In some embodiments, the dictionaries have keys containing strings such as (subplantUserName).(portInternalName) and values that represent the linear portion of the constraint for that element of the constraint matrix. A special “port name” could exist to reference whether the subplant is running. A special key can be used to specify the constant part of the constraint or the right hand side. A single dictionary can describe a single linear constraint. 
     Operational Domains 
     Referring now to  FIGS. 9 and 12 , asset allocator  402  is shown to include an operational domain module  904 . Operational domain module  904  can be configured to generate and store operational domains for various elements of the high level optimization problem. For example, operational domain module  904  can create and store operational domains for one or more of sources  410 , subplants  420 , storage  430 , and/or sinks  440 . The operational domains for subplants  420  may describe the relationship between the resources, intrinsic variables, and extrinsic variables, and constraints for the rate of change variables (delta load variables). The operational domains for sources  410  may include the constraints necessary to impose any progressive/regressive rates (other than demand charges). The operational domain for storage  430  may include the bounds on the state of charge, bounds on the rate of charge/discharge, and any mixed constraints. 
     In some embodiments, the operational domain is the fundamental building block used by asset allocator  402  to describe the models (e.g., optimization constraints) of each high level element. The operational domain may describe the admissible values of variables (e.g., the inputs and the outputs of the model) as well as the relationships between variables. Mathematically, the operational domain is a union of a collection of polytopes in an n-dimensional real space. Thus, the variables must take values in one of the polytopes of the operational domain. The operational domains generated by operational domain module  904  can be used to define and impose constraints on the high level optimization problem. 
     Referring particularly to  FIG. 12 , a block diagram illustrating operational domain module  904  in greater detail is shown, according to an exemplary embodiment. Operational domain module  904  can be configured to construct an operational domain for one or more elements of asset allocation system  400 . In some embodiments, operational domain module  904  converts sampled data points into a collection of convex regions making up the operational domain and then generates constraints based on the vertices of the convex regions. Being able to convert sampled data points into constraints gives asset allocator  402  much generality. This conversion methodology is referred to as the constraint generation process. The constraint generation process is illustrated through a simple chiller subplant example, described in greater detail below. 
       FIG. 13  illustrates a subplant curve  1300  for a chiller subplant. Subplant curve  1300  is an example of a typical chiller subplant curve relating the electricity usage of the chiller subplant with the chilled water production of the chiller subplant. Although only two variables are shown in subplant curve  1300 , it should be understood that the constraint generation process also applies to high dimensional problems. For example, the constraint generation process can be extended to the case that the condenser water return temperature is included in the chiller subplant operational domain. When the condenser water return temperature is included, the electricity usage of the chiller subplant can be defined as a function of both the chilled water production and the condenser water return temperature. This results in a three-dimensional operational domain. The constraint generation process described here applies to two-dimensional problems as well as higher dimensional problems. 
     Referring now to  FIGS. 12 and 14 , the components and functions of operational domain module  904  are described.  FIG. 14  is a flowchart outlining the constraint generation process  1400  performed by operational domain module  904 . Process  1400  is shown to include collecting samples of data points within the operational domain (step  1402 ). In some embodiments, step  1402  is performed by a data gathering module  1202  of operational domain module  904 . Step  1402  can include sampling the operational domain (e.g., the high level subplant curve). For the operational tool (i.e., central plant controller  600 ), the data sampling may be performed by successively calling low level optimizer  634 . For the planning tool  700 , the data may be supplied by the user and asset allocator  402  may automatically construct the associated constraints. 
     In some embodiments, process  1400  includes sorting and aggregating data points by equipment efficiency (step  1404 ). Step  1404  can be performed when process  1400  is performed by planning tool  700 . If the user specifies efficiency and capacity data on the equipment level (e.g., provides data for each chiller of the subplant), step  1404  can be performed to organize and aggregate the data by equipment efficiency. 
     The result of steps  1402 - 1404  is shown in  FIG. 15A .  FIG. 15A  is a plot  1500  of several data points  1502  collected in step  1402 . Data points  1502  can be partitioned into two sets of points by a minimum turndown (MTD) threshold  1504 . The first set of points includes a single point  1506  representing the performance of the chiller subplant when the chiller subplant is completely off (i.e., zero production and zero resource consumption). The second set of data points includes the points  1502  between the MTD threshold  1504  and the maximum capacity  1508  of the chiller subplant. 
     Process  1400  is shown to include generating convex regions from different sets of the data points (step  1406 ). In some embodiments, step  1406  is performed by a convex hull module  1204  of operational domain module  904 . A set X is a “convex set” if for all points (x,y) in set X and for all θ∈[0,1], the point described by the linear combination (1−θ)x+θy also belongs in set X. A “convex hull” of a set of points is the smallest convex set that contains X. Convex hull module  1204  can be configured to generate convex regions from the sampled data by applying an n-dimensional convex hull algorithm to the data. In some embodiments, convex hull module  1204  uses the convex hull algorithm of Matlab (i.e., “convhulln”), which executes an n-dimensional convex hull algorithm. Convex hull module  1204  can identify the output of the convex hull algorithm as the vertices of the convex hull. 
     The result of step  1406  applied to the chiller subplant example is shown in  FIG. 15B .  FIG. 15B  is a plot  1550  of two convex regions CR- 1  and CR- 2 . Point  1506  is the output of the convex hull algorithm applied to the first set of points. Since only a single point  1506  exists in the first set, the first convex region CR- 1  is the single point  1506 . The points  1510 ,  1512 ,  1514 , and  1516  are the output of the convex hull algorithm applied to the second set of points between the MTD threshold  1504  and the maximum capacity  1508 . Points  1510 - 1516  define the vertices of the second convex region CR- 2 . 
     Process  1400  is shown to include generating constraints from vertices of the convex regions (step  1408 ). In some embodiments, step  1408  is performed by a constraint generator  1206  of operational domain module  904 . The result of step  1408  applied to the chiller subplant example is shown in  FIG. 16 .  FIG. 16  is a plot  1600  of the operational domain  1602  for the chiller subplant. Operational domain  1602  includes the set of points contained within both convex regions CR- 1  and CR- 2  shown in plot  1550 . These points include the origin point  1506  as well as all of the points within area  1604 . 
     Constraint generator  1206  can be configured to convert the operational domain  1602  and/or the set of vertices that define the operational domain  1602  into a set of constraints. Many methods exists to convert the vertices of the convex regions into optimization constraints. These methodologies produce different optimization formulations or different problem structures, but the solutions to these different formulations are equivalent. All methods effectively ensure that the computed variables (inputs and outputs) are within one of the convex regions of the operational domain. Nevertheless, the time required to solve the different formulations may vary significantly. The methodology described below has demonstrated better execution times in feasibility studies over other formulations. 
     MILP Formulation 
     In some embodiments, constraint generator  1206  uses a mixed integer linear programming (MILP) formulation to generate the optimization constraints. A few definitions are needed to present the MILP formulation. A subset P of    d  is called a convex polyhedron if it is the set of solutions to a finite system of linear inequalities (i.e., P={x:a j   T x≤b j , j=1 . . . m}). Note that this definition also allows for linear equalities because an equality may be written as two inequalities. For example, c j x=d j  is equivalent to [c j , −c j ] T x≤[d j , −d j ] T . A convex polytope is a bounded convex polyhedron. Because the capacity of any subplant is bounded, constraint generator  1206  may exclusively work with convex polytopes. 
     In some embodiments, the MILP formulation used by constraint generator  1206  to define the operational domain is the logarithmic disaggregated convex combination model (DLog). The advantage of the DLog model is that only a logarithmic number of binary variables with the number of convex regions need to be introduced into the optimization problem as opposed to a linear number of binary variables. Reducing the number of binary variables introduced into the problem is advantageous as the resulting problem is typically computationally easier to solve. 
     Constraint generator  1206  can use the DLog model to capture which convex region is active through a binary numbering of the convex regions. Each binary variable represents a digit in the binary numbering. For example, if an operational domain consists of four convex regions, the convex regions can be numbered zero through three, or in binary numbering 00 to 11. Two binary variables can used in the formulation: y 1 ∈{0,1} and y 2 ∈{0,1} where the first variable y 1  represents the first digit of the binary numbering and the second variable y 2  represents the second digit of the binary numbering. If y 1 =0 and y 2 =0, the zeroth convex region is active. Similarly, y 1 =1 and y 2 =0, the second convex region is active. In the DLog model, a point in any convex region is represented by a convex combination of the vertices of the polytope that describes the convex region. 
     In some embodiments, constraint generator  1206  formulates the DLog model as follows: let   be the set of polytopes that describes the operational domain (i.e.,   represents the collection of convex regions that make up the operational domain). Let P i ∈ (i=1, . . . , n CR ) be the ith polytope which describes the ith convex region of the operational domain. Let V(P i ) be the vertices of the ith polytope, and let V( ):= V(P) be the vertices of all polytopes. In this formulation, an auxiliary continuous variable can be introduced for each vertex of each polytope of the operational domain, which is denoted by λ P     i     ,v     j    where the subscripts denote that the continuous variable is for the jth vertex of the ith polytope. For this formulation, ┌log 2 | |┐ binary variables are needed where the function ┌⋅┐ denotes the ceiling function (i.e., ┌x┐ is the smallest integer not less than x. Constraint generator  1206  can define an injective function B: → . The injective function may be interpreted as the binary numbering of the convex regions. 
     In some embodiments, the DLog formulation is given by: 
         Σ v∈V(P) λ P,V   v=x  
         λ P,v v≥0, ∀P∈ , v∈V(P)       

         Σ v∈V(P) λ P,v =1
 
         Σ v∈V ( P )Δ P,v   ≤y   1   , ∀l∈L ( P )
 
         Σ v∈V(P) λ P,v ≤(1− y   l ), ∀ 1 ∈ L ( P )
           y∈{0,1}, ∀l∈L(P)
 
where    + (B,l):={P∈ :B(P) l =1},    0 (B,l): ={P∈ :B(P) l =0}, and L( ):={1, . . . , log 2 | |}. If there are shared vertices between the convex regions, a fewer number of continuous variables may need to be introduced.
       

     To understand the injective function and the sets    + (B,l) and    0 (B,l), consider again the operational domain consisting of four convex regions. Again, binary numbering can be used to number the sets from 00 to 11, and two binary variables can be used to represent each digit of the binary set numbering. Then, the injective function maps any convex region, which is a polytope, to a unique set of binary variables. Thus, B(P 0 )=[0,0] T , B(P 1 )=[0,1] T , B(P 2 )=[1,0] T , and B(P 3 )=[1,1] T . Also, for example, the sets    + (B,0) {PÅ :B(P) 0 =1}=P 2 ∪P 3  and    0 (B,0):={P∈ :B(P) 0 =0}=P 0 ∪P 1 . 
     Box Constraints 
     Still referring to  FIG. 12 , operational domain module  904  is shown to include a box constraints module  1208 . Box constraints module  1208  can be configured to adjust the operational domain for a subplant  420  in the event that a device of the subplant  420  is unavailable or will be unavailable (e.g., device offline, device removed for repairs or testing, etc.). Reconstructing the operational domain by resampling the resulting high level operational domain with low level optimizer  634  can be used as an alternative to the adjustment performed by box constraints module  1208 . However, reconstructing the operational domain in this manner may be time consuming. The adjustment performed by box constraints module  1208  may be less time consuming and may allow operational domains to be updated quickly when devices are unavailable. Also, owing to computational restrictions, it may be useful to use a higher fidelity subplant model for the first part of the prediction horizon. Reducing the model fidelity effectively means merging multiple convex regions. 
     In some embodiments, box constraints module  1208  is configured to update the operational domain by updating the convex regions with additional box constraints. Generating the appropriate box constraints may include two primary steps: (1) determining the admissible operational interval(s) of the independent variable (e.g., the production of the subplant) and (2) generating box constraints that limit the independent variable to the admissible operational interval(s). Both of these steps are described in detail below. 
     In some embodiments, box constraints module  1208  determines the admissible operational interval (e.g., the subplant production) using an algorithm that constructs the union of intervals. Box constraints module  1208  may compute two convolutions. For example, let lb and ub be vectors with elements corresponding to the lower and upper bound of the independent variables of each available device within the subplant. Box constraints module  1208  can compute two convolutions to compute all possible combinations of lower and upper bounds with all the combinations of available devices on and off. The two convolutions can be defined as follows: 
         lb   all,combos   T =[0  ]*[0  lb   T ] 
         ub   all,combos   T =[0  ]*[0  ub   T ] 
     where lb all,combos  and ub all,combos  are vectors containing the elements with the lower and  upper bounds with all combinations of the available devices on and off,   is a vector with all ones of the same dimension as lb and ub, and the operator * represents the convolution operator. Note that each element of lb all,combos  and ub all,combos  are subintervals of admissible operating ranges. In some embodiments, box constraints module  1208  computes the overall admissible operating range by computing the union of the subintervals. 
     To compute the union of the subintervals, box constraints module  1208  can define the vector v as follows: 
         v :=[ lb   all,combos   T   ,ub   all,combos   T ] T    
     and may sort the vector v from smallest to largest: 
       [ t,p ]=sort( v ) 
     where t is a vector with sorted elements of v, p is a vector with the index position in v of each element in t. If p i ≤n where n is the dimension of lb all,combos  and ub all,combos , the ith element of t is a lower bound. However, if p i &gt;n, the ith element of t is an upper bound. Box constraints module  1208  may construct the union of the sub intervals by initializing a counter at zero and looping through each element of p starting with the first element. If the element corresponds to a lower bound, box constraints module  1208  may add one to the counter. However, if the element corresponds to an upper bound, box constraints module  1208  may subtract one from the counter. Once the counter is set to zero, box constraints module  1208  may determine that the end of the subinterval is reached. An example of this process is illustrated graphically in  FIGS. 17A-17B . 
     Referring now to  FIGS. 17A-17B , a pair of graphs  1700  and  1750  illustrating the operational domain update procedure performed by box constraints module  1208  is shown, according to an exemplary embodiment. In this example, consider a subplant consisting of three devices where the independent variable is the production of the subplant. Let the first two devices have a minimum and maximum production of 3.0 and 5.0 units, respectively, and the third device has a minimum and maximum production of 2.0 and 4.0 units, respectively. The minimum production may be considered to be the minimum turndown of the device and the maximum production may be considered to be the device capacity. With all the devices available, the results of the two convolutions are: 
         lb   all,combos   T =[0.0,2.0,3.0,5.0,6.0,8.0] 
         ub   all,combos   T =[0.0,4.0,5.0,9.0,10.0,14.0] 
     The result of applying the counter algorithm to these convolutions with all the devices available is shown graphically in  FIG. 17A . The start of an interval occurs when the counter becomes greater than 0 and the end of an interval occurs when the counter becomes 0. Thus, from  FIG. 17A , the admissible production range of the subplant when all the devices are available is either 0 units if the subplant is off or any production from 2.0 to 14.0 units. In other words, the convex regions in the operational domain are {0} and another region including the interval from 2.0 to 14.0 units. 
     If one of the first two devices becomes unavailable, the subplant includes one device having a minimum and maximum production of 3.0 and 5.0 units, respectively, and another device having a minimum and maximum production of 2.0 and 4.0 units, respectively. Accordingly, the admissible production range of the subplant is from 2.0 to 9.0 units. This means that the second convex region needs to be updated so that it only contains the interval from 2.0 to 9.0 units. 
     If the third device becomes unavailable, the subplant includes two devices, both of which have a minimum and maximum production of 3.0 and 5.0 units, respectively. Therefore, the admissible range of production for the subplant is from 3.0 to 5.0 units and from 6.0 to 10.0 units. This result can be obtained using the convolution technique and counter method. For example, when the third device becomes unavailable, the two convolutions are (omitting repeated values): 
         lb   all,combos   T =[0.0,3.0,6.0] 
         ub   all,combos   T =[0.0,5.0,10.0] 
     The result of applying the counter algorithm to these convolutions with the third device unavailable is shown graphically in  FIG. 17B . The start of an interval occurs when the counter becomes greater than 0 and the end of an interval occurs when the counter becomes 0. From  FIG. 17B , the new admissible production range is from 3.0 to 5.0 units and from 6.0 to 10.0 units. Thus, if the third device is unavailable, there are three convex regions: {0}, the interval from 3.0 to 5.0 units, and the interval from 6.0 to 10.0 units. This means that the second convex region of the operational domain with all devices available needs to be split into two regions. 
     Once the admissible range of the independent variable (e.g., subplant production) has been determined, box constraints module  1208  can generate box constraints to ensure that the independent variable is maintained within the admissible range. Box constraints module  1208  can identify any convex regions of the original operational domain that have ranges of the independent variables outside the new admissible range. If any such convex ranges are identified, box constraints module  1208  can update the constraints that define these convex regions such that the resulting operational domain is inside the new admissible range for the independent variable. The later step can be accomplished by adding additional box constraints to the convex regions, which may be written in the general form x lb ≤x≤x ub  where x is an optimization variable and x lb  and x ub  are the lower and upper bound, respectively, for the optimization variable x. 
     In some embodiments, box constraints module  1208  removes an end portion of a convex region from the operational domain. This is referred to as slicing the convex region and is shown graphically in  FIGS. 18A-18B . For example,  FIG. 18A  is a graph  1800  of an operational domain which includes a convex region CR- 2 . A first part  1802  of the convex region CR- 2  is within the operational range determined by box constraints module  1208 . However, a second part  1804  of the convex region CR- 2  is outside the operational range determined by box constraints module  1208 . Box constraints module  1208  can remove the second part  1804  from the convex region CR- 2  by imposing a box constraint that limits the independent variable (i.e., chilled water production) within the operational range. The slicing operation results in the modified convex region CR- 2  shown in graph  1850 . 
     In some embodiments, box constraints module  1208  removes a middle portion of a convex region from the operational domain. This is referred to as splitting the convex region and is shown graphically in  FIGS. 19A-19B . For example,  FIG. 19A  is a graph  1900  of an operational domain which includes a convex region CR- 2 . A first part  1902  of the convex region CR- 2  is within the operational range between lower bound  1908  and upper bound  1910 . Similarly, a third part  1906  of the convex region CR- 2  is within the operational range between lower bound  1912  and upper bound  1914 . However, a second part  1904  of the convex region CR- 2  is outside the split operational range. Box constraints module  1208  can remove the second part  1904  from the convex region CR- 2  by imposing two box constraints that limit the independent variable (i.e., chilled water production) within the operational ranges. The splitting operation results two smaller convex regions CR- 2  and CR- 3  shown in graph  1950 . 
     In some embodiments, box constraints module  1208  removes a convex region entirely. This operation can be performed when a convex region lies entirely outside the admissible operating range. Removing an entire convex region can be accomplished by imposing a box constraint that limits the independent variable within the admissible operating range. In some embodiments, box constraints module  1208  merges two or more separate convex regions. The merging operation effectively reduces the model fidelity (described in greater detail below). 
     Box constraints module  1208  can automatically update the operational domain in response to a determination that one or more devices of the subplant are offline or otherwise unavailable for use. In some embodiments, a flag is set in the operational tool when a device becomes unavailable. Box constraints module  1208  can detect such an event and can queue the generation of an updated operational domain by querying the resulting high level subplant operational domain. In other words, the high level subplant operational domain for the subplant resulting from the collection of devices that remain available can be sampled and the operational domain can be constructed as described in process  1400 . The generation of the updated operational domain may occur outside of the high level optimization algorithm in another computer process. Once the constraint generation process is complete, the operational domain data can be put into the data model and used in the optimization problem instead of the fast update method performed by box constraints module  1208 . 
     Cross Section Constraints 
     Still referring to  FIG. 12 , operational domain module  904  is shown to include a cross section constraints module  1210 . Cross section constraints module  1210  can be configured to modify the constraints on the high level optimization when one or more optimization variables are treated as fixed parameters. When the high level subplant operational domain includes additional parameters, the data sampled from the high level operational domain is of higher dimension than what is used in the optimization. For example, the chiller subplant operational domain may be three dimensional to include the electricity usage as a function of the chilled water production and the condenser water temperature. However, in the optimization problem, the condenser water temperature may be treated as a parameter. 
     The constraint generation process (described above) may be used with the higher dimensional sampled data of the subplant operational domain. This results in the following constraints being generated: 
     
       
      
       A 
       x,j 
       x 
       j 
       +A 
       z,j 
       z 
       j 
       +A 
       y,j 
       y 
       j 
       ≤b 
       j  
      
     
     
       
      
       H 
       x,j 
       x 
       j 
       +H 
       z,j 
       z 
       j 
       +H 
       y,j 
       y 
       j 
       =g 
       j  
      
     
     
       
      
       x 
       lb,j 
       ≤x 
       j 
       x 
       ub,j  
      
     
     
       
      
       z 
       lb,j 
       ≤z 
       j 
       ≤z 
       ub,j  
      
     
         z   j =integer 
     where x j  is a vector consisting of the continuous decision variables, z 1  is a vector consisting of the discrete decision variables, y j  is a vector consisting of all the parameters, and H y,j  and A y,j  are the constraint matrices associated with the parameters. Cross section constraints module  1210  can be configured to modify the constraints such that the operational domain is limited to a cross section of the original operational domain. The cross section may include all of the points that have the same fixed value for the parameters. 
     In some embodiments, cross section constraints module  1210  retains the parameters in vector y j  as decision variables in the optimization problem, bus uses equality constraints to ensure that they are set to their actual values. The resulting constraints used in the optimization problem are given by: 
     
       
      
       A 
       x,j 
       x 
       j 
       +A 
       z,j 
       z 
       j 
       +A 
       y,j 
       y 
       j 
       ≤b 
       j  
      
     
     
       
      
       H 
       x,j 
       x 
       j 
       +H 
       z,j 
       z 
       j 
       +H 
       y,j 
       y 
       j 
       =g 
       j  
      
     
     
       
      
       x 
       lb,j 
       ≤x 
       j 
       ≤x 
       ub,j  
      
     
     
       
      
       z 
       lb,j 
       ≤z 
       j 
       ≤z 
       ub,j  
      
     
     
       
      
       y 
       j 
       =p  
      
     
         z   j =integer 
     where p is a vector of fixed values (e.g., measured or estimated parameter values). 
     In other embodiments, cross section constraints module  1210  substitutes values for the parameters before setting up and solving the optimization problem. This method reduces the dimension of the constraints and the optimization problem, which may be computationally desirable. Assuming that the parameters are either measured or estimated quantities (e.g., in the case of the condenser water temperature, the temperature may be measured), the parameter values may be substituted into the constraints. The resulting constraints used in the optimization problem are given by: 
     
       
      
       A 
       x,j 
       x 
       j 
       +A 
       z,j 
       z 
       j 
       +A 
       y,j 
       y 
       j 
       ≤ b   
       j  
      
     
     
       
      
       H 
       x,j 
       x 
       j 
       +H 
       z,j 
       z 
       j 
       +H 
       y,j 
       y 
       j 
       = g   
       j  
      
     
     
       
      
       x 
       lb,j 
       ≤x 
       j 
       ≤x 
       ub,j  
      
     
     
       
      
       z 
       lb,j 
       ≤z 
       j 
       ≤z 
       ub,j  
      
     
         z   j =integer 
     where  b   j =b j −A y,i p and  g   j =g j −H y,j p 
     In some embodiments, cross section constraints module  1210  is configured to detect and remove redundant constraints. It is possible that there are redundant constraints after taking a cross section of the constraints. Being computationally mindful, it is desirable to automatically detect and remove redundant constraints. Cross section constraints module  1210  can detect redundant constraints by computing the vertices of the corresponding dual polytope and computing the convex hull of the dual polytope vertices. Cross section constraints module  1210  can identify any vertices contained in the interior of the convex hull as redundant constraints. 
     The following example illustrates the automatic detection and removal of redundant constraints by cross section constraints module  1210 . Consider a polytope described by the inequality constraints Ax≤b. In this example, only an individual polytope or convex region of the operational domain is considered, whereas the previous set of constraints describe the entire operational domain. Cross section constraints module  1210  can be configured to identify any point c that lies strictly on the interior of the polytope (i.e., such that Ac≤b). These points can be identified by least squares or computing the analytic center of the polytope. Cross section constraints module  1210  can then shift the polytope such that the origin is contained in the interior of the polytope. The shifted coordinates for the polytope can be defined as  x =x−c. After shifting the polytope, cross section constraints module  1210  can compute the vertices of the dual polytope. If the polytope is defined as the set P={x:Ax≤b}, then the dual polytope is the set P*={y:y T x≤1, ∀x∈P}. Cross section constraints module  1210  can then compute the convex hull of the dual polytope vertices. If a vertex of the dual polytope is not a vertex of the convex hull, cross section constraints module  1210  can identify the corresponding constraint as redundant and may remove the redundant constraint. 
     Referring now to  FIGS. 20A-20D , several graphs  2000 ,  2020 ,  2040 , and  2060  illustrating the redundant constraint detection and removal process are shown, according to an exemplary embodiment. Graph  2000  is shown to include the boundaries  2002  of several constraints computed after taking the cross section of higher dimensional constraints. The constraints bounded by boundaries  2002  are represented by the following inequalities: 
         x   1   −x   2 ≤−1
 
       2 x   1   −x   2 ≤1
 
       −3/2 x   1   +x   2 ≤0
 
       − x   1   +x   2 ≤0
 
     The operational domain is represented by a polytope with vertices  2006 . Point  2004  can be identified as a point that lies strictly on the interior of the polytope. 
     Graph  2020  shows the result of shifting the polytope such that the origin is contained in the interior of the polytope. The polytope is shifted to a new coordinate system (i.e.,  x   1  and  x   2 ) with the origin  2022  (i.e.,  x   1 =0 and  x   2 =0) located within the polytope. Graph  2040  shows the result of computing the vertices  2044  of the dual polytope  2042 , which may be defined by the set P*={y:y T x≤1, ∀x∈P}. Graph  2060  shows the result of computing the convex hull of the dual polytope vertices  2044  and removing any constraints that correspond to vertices  2044  of the dual polytope but not to vertices of the convex hull. In this example, the constraint x 1 −x 2 ≤−1 is removed, resulting in the feasible region  2062 . 
     Referring now to  FIGS. 21A-21B , graphs  2100  and  2150  illustrating the cross section constraint generation process performed by cross section constraints module  1210  is shown, according to an exemplary embodiment. Graph  2100  is a three-dimensional graph having an x-axis, a y-axis, and a z-axis. Each of the variables x, y, and z may be treated as optimization variables in a high level optimization problem. Graph  2100  is shown to include a three-dimensional surface  2100  defined by the following equations: 
     
       
         
           
             z 
             = 
             
               { 
               
                 
                   
                     
                       
                           
                       
                       ⁢ 
                       
                         
                           x 
                           + 
                           y 
                         
                         , 
                       
                     
                   
                   
                     
                       
                         if 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         x 
                       
                       ∈ 
                       
                         [ 
                         
                           0 
                           , 
                           1 
                         
                         ] 
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           2 
                           ⁢ 
                           x 
                         
                         + 
                         y 
                         - 
                         1 
                       
                       , 
                     
                   
                   
                     
                       
                         if 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         x 
                       
                       ∈ 
                       
                         [ 
                         
                           1 
                           , 
                           2 
                         
                         ] 
                       
                     
                   
                 
               
             
           
         
       
     
     for x∈[0,2] and y∈[0,3], where x is the subplant production, y is a parameter, and z is the amount of resources consumed. 
     A three-dimensional subplant operational domain is bounded surface  2102 . The three-dimensional operational domain is described by the following set of constraints: 
     
       
         
           
             
               
                 - 
                 
                   5 
                   
                     3 
                     ⁢ 
                     x 
                   
                 
               
               - 
               y 
               + 
               z 
             
             ≤ 
             
               0 
               ⁢ 
               
                 
 
               
               - 
               y 
             
             ≤ 
             0 
           
         
       
       
         
           
             y 
             ≤ 
             3 
           
         
       
       
         
           
             
               x 
               + 
               y 
               - 
               z 
             
             ≤ 
             0 
           
         
       
       
         
           
             
               
                 2 
                 ⁢ 
                 x 
               
               + 
               y 
               - 
               z 
             
             ≤ 
             1 
           
         
       
     
     The cross section constraint generation process can be applied to the three dimensional operational domain. When variable y is treated as a fixed parameter (i.e., y=1), the three-dimensional operational domain can be limited to the cross section  2104  along the plane y=1. Cross section constraints module  1210  can generate the following cross section constraints to represent the two-dimensional cross section of the original three-dimensional operational domain: 
     
       
         
           
             
               
                 - 
                 
                   5 
                   
                     3 
                     ⁢ 
                     x 
                   
                 
               
               + 
               z 
             
             ≤ 
             1 
           
         
       
       
         
           
             
               x 
               - 
               z 
             
             ≤ 
             
               - 
               1 
             
           
         
       
       
         
           
             
               
                 2 
                 ⁢ 
                 x 
               
               - 
               z 
             
             ≤ 
             0 
           
         
       
     
     which are represented by boundaries  2154  in graph  2150 . The resulting two-dimensional operational domain is shown as feasible region  2152  in graph  2150 . 
     Rate of Change Penalties 
     Referring again to  FIG. 12 , operational domain module  904  is shown to include a rate of change penalties module  1212 . Rate of change penalties module  1212  can be configured to modify the high level optimization problem to add rate of change penalties for one or more of the decision variables. Large changes in decision variable values between consecutive time steps may result in a solution that may not be physically implementable. Rate of change penalties prevent computing solutions with large changes in the decision variables between consecutive time steps. In some embodiments, the rate of change penalties have the form: 
         c   Δx,k   |Δx   k   |=c   Δx,k   |x   k   −x   k−1 | 
     where x k  denotes the value of the decision variable x at time step k, x k−1  denotes the variable value at time step k−1, and c Δx,k  is the penalty weight for the rate of change of the variable at the kth time step. 
     In some embodiments, rate of change penalties module  1212  introduces an auxiliary variable Δx k  for k∈{1, . . . , h}, which represents the rate of change of the decision variable x. This may allow asset allocator  402  to solve the high level optimization with the rate of change penalty using linear programming. Rate of change penalties module  1212  may add the following constraints to the optimization problem to ensure that the auxiliary variable is equal to the rate of change of x at each time step in the optimization period: 
     
       
      
       x 
       k−1 
       −x 
       k 
       ≤Δx 
       k  
      
     
     
       
      
       x 
       k 
       −x 
       k−1 
       ≤Δx 
       k  
      
     
       Δ x   k ≥0
 
     for all k∈{1, . . . , h}, where h is the number of time steps in the optimization period. 
     The inequality constraints associated with the rate of change penalties may have the following structure: 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋰ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       1 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       1 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       1 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       1 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       1 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋰ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                   
                 
                 ] 
               
               ⁡ 
               
                 [ 
                 
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         x 
                         1 
                       
                     
                   
                   
                     
                       
                         x 
                         2 
                       
                     
                   
                   
                     
                       
                         x 
                         3 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         Δ 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           x 
                           1 
                         
                       
                     
                   
                   
                     
                       
                         Δ 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           x 
                           2 
                         
                       
                     
                   
                   
                     
                       
                         Δ 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           x 
                           3 
                         
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                 
                 ] 
               
             
             ≤ 
             
               [ 
               
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       - 
                       
                         x 
                         0 
                       
                     
                   
                 
                 
                   
                     
                       x 
                       0 
                     
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     ⋮ 
                   
                 
               
               ] 
             
           
         
       
     
     Rate of Change Constraints 
     Still referring to  FIG. 12 , operational domain module  904  is shown to include a rate of change constraints module  1214 . A more strict method that prevents large changes in decision variable values between consecutive time steps is to impose (hard) rate of change constraints. For example, the following constraint can be used to constrain the rate of change Δx k  between upper bounds Δx ub,k  and lower bounds Δx lb,k    
       Δ x   lb,k   ≤Δx   k   ≤Δx   ub,k  
 
     where Δx k =x k −x k−1 , Δx lb,k &lt;0, and Δx ub,k &gt;0. 
     The inequality constraints associated with these rate of change constraints are given by the following structure: 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋰ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       1 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       1 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       1 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       1 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       1 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       
                         - 
                         1 
                       
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       1 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋰ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                   
                 
                 ] 
               
               ⁡ 
               
                 [ 
                 
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         x 
                         1 
                       
                     
                   
                   
                     
                       
                         x 
                         2 
                       
                     
                   
                   
                     
                       
                         x 
                         3 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         x 
                         h 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                 
                 ] 
               
             
             ≤ 
             
               [ 
               
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         
                           - 
                           Δ 
                         
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           x 
                           
                             lb 
                             , 
                             k 
                           
                         
                       
                       - 
                       
                         x 
                         0 
                       
                     
                   
                 
                 
                   
                     
                       
                         Δ 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         
                           x 
                           
                             ub 
                             , 
                             k 
                           
                         
                       
                       + 
                       
                         x 
                         0 
                       
                     
                   
                 
                 
                   
                     
                       
                         - 
                         Δ 
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         x 
                         
                           lb 
                           , 
                           k 
                         
                       
                     
                   
                 
                 
                   
                     
                       Δ 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         x 
                         
                           ub 
                           , 
                           k 
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         - 
                         Δ 
                       
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         x 
                         
                           lb 
                           , 
                           k 
                         
                       
                     
                   
                 
                 
                   
                     
                       Δ 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         x 
                         
                           ub 
                           , 
                           k 
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
               
               ] 
             
           
         
       
     
     Storage/Airside Constraints 
     Still referring to  FIG. 12 , operational domain module  904  is shown to include a storage/airside constraints module  1216 . Storage/airside constraints module  1216  can be configured to modify the high level optimization problem to account for energy storage in the air or mass of the building. To predict the state of charge of such storage a dynamic model can be solved. Storage/airside constraints module  1216  can use a single shooting method or a multiple shooting method to embed the solution of a dynamic model within the optimization problem. Both the single shooting method and the multiple shooting method are described in detail below. 
     In the single shooting method, consider a general discrete-time linear dynamic model of the form: 
     
       
      
       x 
       k+1 
       =Δx 
       k 
       +Bu 
       k  
      
     
     where x k  denotes the state (e.g., state of charge) at time k and u k  denotes the input at time k. In general, both the state x k  and input u k  may be vectors. To solve the dynamic model over h time steps, storage/airside constraints module  1216  may identify the initial condition and an input trajectory/sequence. In an optimal control framework, the input trajectory can be determined by the optimization solver. Without loss of generality, the time interval over which the dynamic model is solved is taken to be the interval [0, h]. The initial condition is denoted by x 0 . 
     The state x k  and input u k  can be constrained by the following box constraints: 
     
       
      
       x 
       lb,k 
       ≤x 
       k 
       ≤x 
       ub,k  
      
     
     
       
      
       u 
       lb,k 
       ≤u 
       k 
       ≤u 
       ub,k  
      
     
     for all k, where x lb,k  is the lower bound on the state x k , x ub,k  is the upper bound on the state x k , u lb,k  is the lower bound on the input u k , and u ub,k  is the upper bound on the input u k . In some embodiments, the bounds may be time-dependent. 
     In the single shooting method, only the input sequence may be included as a decision variable because the state x k  at any given time step is a function of the initial condition x 0  and the input trajectory. This strategy has less decision variables in the optimization problem than the second method, which is presented below. The inequality constraints associated with the upper bound on the state x k  may have the following structure: 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋰ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       B 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       AB 
                     
                     
                       B 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           A 
                           2 
                         
                         ⁢ 
                         B 
                       
                     
                     
                       AB 
                     
                     
                       B 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           A 
                           
                             h 
                             - 
                             1 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           A 
                           
                             h 
                             - 
                             2 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           A 
                           
                             h 
                             - 
                             3 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       ⋯ 
                     
                     
                       B 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋰ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                   
                 
                 ] 
               
               ⁡ 
               
                 [ 
                 
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         0 
                       
                     
                   
                   
                     
                       
                         u 
                         1 
                       
                     
                   
                   
                     
                       
                         u 
                         2 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         
                           h 
                           - 
                           1 
                         
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                 
                 ] 
               
             
             ≤ 
             
               [ 
               
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         x 
                         
                           ub 
                           , 
                           1 
                         
                       
                       - 
                       
                         Ax 
                         0 
                       
                     
                   
                 
                 
                   
                     
                       
                         x 
                         
                           ub 
                           , 
                           2 
                         
                       
                       - 
                       
                         
                           A 
                           2 
                         
                         ⁢ 
                         
                           x 
                           0 
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         x 
                         
                           ub 
                           , 
                           3 
                         
                       
                       - 
                       
                         
                           A 
                           3 
                         
                         ⁢ 
                         
                           x 
                           0 
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         x 
                         
                           ub 
                           , 
                           h 
                         
                       
                       - 
                       
                         
                           A 
                           h 
                         
                         ⁢ 
                         
                           x 
                           0 
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
               
               ] 
             
           
         
       
     
     Similarly, the inequality constraints associated with the lower bound on the state x k  may have the following structure: 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋰ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         B 
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         AB 
                       
                     
                     
                       
                         - 
                         B 
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           - 
                           
                             A 
                             2 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         - 
                         AB 
                       
                     
                     
                       
                         - 
                         B 
                       
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           - 
                           
                             A 
                             
                               h 
                               - 
                               1 
                             
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           - 
                           
                             A 
                             
                               h 
                               - 
                               2 
                             
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           - 
                           
                             A 
                             
                               h 
                               - 
                               3 
                             
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       ⋯ 
                     
                     
                       
                         - 
                         B 
                       
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋰ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                   
                 
                 ] 
               
               ⁡ 
               
                 [ 
                 
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         0 
                       
                     
                   
                   
                     
                       
                         u 
                         1 
                       
                     
                   
                   
                     
                       
                         u 
                         2 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         
                           h 
                           - 
                           1 
                         
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                 
                 ] 
               
             
             ≤ 
             
               [ 
               
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         Ax 
                         0 
                       
                       - 
                       
                         x 
                         
                           lb 
                           , 
                           1 
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           A 
                           2 
                         
                         ⁢ 
                         
                           x 
                           0 
                         
                       
                       - 
                       
                         x 
                         
                           lb 
                           , 
                           2 
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           A 
                           3 
                         
                         ⁢ 
                         
                           x 
                           0 
                         
                       
                       - 
                       
                         x 
                         
                           lb 
                           , 
                           3 
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         
                           A 
                           h 
                         
                         ⁢ 
                         
                           x 
                           0 
                         
                       
                       - 
                       
                         x 
                         
                           lb 
                           , 
                           h 
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
               
               ] 
             
           
         
       
     
     In some embodiments, more general constraints or mixed constraints may also be considered. These constraints may have the following form: 
         A   ineq,x   x ( k )+ A   ineq,u   u ( k )≤ b   ineq  
 
     The inequality constraint structure associated with the single shooting strategy and the mixed constraints may have the form: 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋰ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         A 
                         
                           ineq 
                           , 
                           u 
                         
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           
                             A 
                             
                               ineq 
                               , 
                               x 
                             
                           
                           ⁢ 
                           B 
                         
                         + 
                         
                           A 
                           
                             ineq 
                             , 
                             u 
                           
                         
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         AB 
                       
                     
                     
                       
                         
                           
                             A 
                             
                               ineq 
                               , 
                               x 
                             
                           
                           ⁢ 
                           B 
                         
                         + 
                         
                           A 
                           
                             ineq 
                             , 
                             u 
                           
                         
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           A 
                           2 
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         AB 
                       
                     
                     
                       
                         
                           
                             A 
                             
                               ineq 
                               , 
                               x 
                             
                           
                           ⁢ 
                           B 
                         
                         + 
                         
                           A 
                           
                             ineq 
                             , 
                             u 
                           
                         
                       
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         
                           A 
                           
                             inceq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           A 
                           
                             h 
                             - 
                             2 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           A 
                           
                             h 
                             - 
                             3 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           A 
                           
                             h 
                             - 
                             4 
                           
                         
                         ⁢ 
                         B 
                       
                     
                     
                       ⋯ 
                     
                     
                       
                         
                           
                             A 
                             
                               ineq 
                               , 
                               x 
                             
                           
                           ⁢ 
                           B 
                         
                         + 
                         
                           A 
                           
                             ineq 
                             , 
                             u 
                           
                         
                       
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋰ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                   
                 
                 ] 
               
               ⁡ 
               
                 [ 
                 
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         0 
                       
                     
                   
                   
                     
                       
                         u 
                         1 
                       
                     
                   
                   
                     
                       
                         u 
                         2 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         
                           h 
                           - 
                           1 
                         
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                 
                 ] 
               
             
             ≤ 
             
               [ 
               
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         b 
                         ineq 
                       
                       - 
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           x 
                           ⁡ 
                           
                             ( 
                             0 
                             ) 
                           
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         b 
                         ineq 
                       
                       - 
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           Ax 
                           ⁡ 
                           
                             ( 
                             0 
                             ) 
                           
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         b 
                         ineq 
                       
                       - 
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           A 
                           2 
                         
                         ⁢ 
                         
                           x 
                           ⁡ 
                           
                             ( 
                             0 
                             ) 
                           
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       
                         b 
                         ineq 
                       
                       - 
                       
                         
                           A 
                           
                             ineq 
                             , 
                             x 
                           
                         
                         ⁢ 
                         
                           A 
                           
                             h 
                             - 
                             1 
                           
                         
                         ⁢ 
                         
                           x 
                           ⁡ 
                           
                             ( 
                             0 
                             ) 
                           
                         
                       
                     
                   
                 
                 
                   
                     ⋮ 
                   
                 
               
               ] 
             
           
         
       
     
     In the multiple shooting method, storage/airside constraints module  1216  may include the state sequence as a decision variable in the optimization problem. This results in an optimization problem with more decision variables than the single shooting method. However, the multiple shooting method typically has more desirable numerical properties, resulting in an easier problem to solve even though the resulting optimization problem has more decision variables than that of the single shooting method. 
     To ensure that the state and input trajectories (sequences) satisfy the model of x k−1 =Ax k +Bu k , the following equality constraints can be used: 
     
       
         
           
             
               
                 [ 
                 
                   
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋰ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       
                         - 
                         I 
                       
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       B 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       A 
                     
                     
                       
                         - 
                         I 
                       
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       B 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       A 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       B 
                     
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       
                         - 
                         I 
                       
                     
                     
                       0 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                     
                       ⋮ 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋯ 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       A 
                     
                     
                       
                         - 
                         I 
                       
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       0 
                     
                     
                       ⋯ 
                     
                     
                       B 
                     
                     
                       ⋯ 
                     
                   
                   
                     
                       ⋰ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋯ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋮ 
                     
                     
                       ⋱ 
                     
                   
                 
                 ] 
               
               ⁡ 
               
                 [ 
                 
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         x 
                         1 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         x 
                         
                           h 
                           - 
                           1 
                         
                       
                     
                   
                   
                     
                       
                         x 
                         h 
                       
                     
                   
                   
                     
                       
                         u 
                         1 
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                   
                     
                       
                         u 
                         
                           h 
                           - 
                           1 
                         
                       
                     
                   
                   
                     
                       ⋮ 
                     
                   
                 
                 ] 
               
             
             ≤ 
             
               [ 
               
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     
                       - 
                       
                         Ax 
                         0 
                       
                     
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     ⋮ 
                   
                 
                 
                   
                     0 
                   
                 
                 
                   
                     ⋮ 
                   
                 
               
               ] 
             
           
         
       
     
     where I is an identity matrix of the same dimension as A. The bound constraints on the state x k  and inputs u k  can readily be included since the vector of decision variables may include both the state x k  and inputs u k . 
     Mixed constraints of the form A ineq,x x(k)+A ineq,u u(k)≤b ineq  can also be used in the multiple shooting method. These mixed constraints result in the following structure: 
     
       
         
           
             
               [ 
               
                 
                   
                     ⋱ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋰ 
                   
                 
                 
                   
                     ⋯ 
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     
                       A 
                       
                         ineq 
                         , 
                         u 
                       
                     
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                 
                 
                   
                     ⋯ 
                   
                   
                     
                       A 
                       
                         ineq 
                         , 
                         x 
                       
                     
                   
                   
                     ⋯ 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     
                       A 
                       
                         ineq 
                         , 
                         u 
                       
                     
                   
                   
                     ⋯ 
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                 
                 
                   
                     ⋯ 
                   
                   
                     ⋮ 
                   
                   
                     ⋱ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋱ 
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                 
                 
                   
                     ⋯ 
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                   
                     
                       A 
                       
                         ineq 
                         , 
                         x 
                       
                     
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     0 
                   
                   
                     ⋯ 
                   
                   
                     
                       A 
                       
                         ineq 
                         , 
                         u 
                       
                     
                   
                   
                     ⋯ 
                   
                 
                 
                   
                     ⋱ 
                   
                   
                     ⋮ 
                   
                   
                     ⋯ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋮ 
                   
                   
                     ⋱ 
                   
                 
               
               ] 
             
             ⁢ 
             
                 
               
                 
                   [ 
                   
                     
                       
                         ⋮ 
                       
                     
                     
                       
                         
                           x 
                           1 
                         
                       
                     
                     
                       
                         ⋮ 
                       
                     
                     
                       
                         
                           x 
                           
                             h 
                             - 
                             1 
                           
                         
                       
                     
                     
                       
                         
                           x 
                           h 
                         
                       
                     
                     
                       
                         
                           u 
                           1 
                         
                       
                     
                     
                       
                         ⋮ 
                       
                     
                     
                       
                         
                           u 
                           
                             h 
                             - 
                             1 
                           
                         
                       
                     
                     
                       
                         ⋮ 
                       
                     
                   
                   ] 
                 
                 ≤ 
                 
                   [ 
                   
                     
                       
                         ⋮ 
                       
                     
                     
                       
                         
                           
                             b 
                             ineq 
                           
                           - 
                           
                             
                               A 
                               
                                 ineq 
                                 , 
                                 x 
                               
                             
                             ⁢ 
                             
                               x 
                               ⁡ 
                               
                                 ( 
                                 0 
                                 ) 
                               
                             
                           
                         
                       
                     
                     
                       
                         
                           b 
                           ineq 
                         
                       
                     
                     
                       
                         ⋮ 
                       
                     
                     
                       
                         
                           b 
                           ineq 
                         
                       
                     
                     
                       
                         ⋮ 
                       
                     
                   
                   ] 
                 
               
             
           
         
       
     
     Model Predictive Control for Various Environmental Conditions Overview 
     Referring generally to  FIGS. 22-29 , systems and methods for performing cost optimization based on various environmental conditions while maintaining occupant comfort are shown. The various environmental conditions may include, for example, temperature, humidity, PM2.5 concentration (i.e. particulate matter having a diameter of less than or equal to 2.5 micrometers), PM10 concentration (i.e. particulate matter having a diameter of less than or equal to 10 micrometers), carbon dioxide, carbon monoxide, etc. In some embodiments, the various environmental conditions include particulate matter, such that particulate matter refers to particulate matter in the air of various diameters (possibly including PM2.5 and/or PM10) that can be detrimental to occupant comfort. For a space (e.g., a zone of a building, a room in a building, etc.) to be comfortable for occupants, a comfortable range of each of the various environmental conditions should be maintained. If a value of an environmental condition falls outside the comfortable range for said environmental condition, an occupant in the space may be uncomfortable. By incorporating each environmental condition into the optimization problem solved by asset allocator  402  (e.g., the objective function J), occupant comfort can be maintained while optimizing (e.g., reducing) costs. 
     Another consideration to be made if solving the optimization problem is that devices that manage certain environmental conditions may directly and/or indirectly affect other environmental conditions as well. For example, if an air conditioner is operated to lower a temperature in a space, a temperature of a heat exchanger should be lowered below a dew point temperature of the air to maintain a comfortable humidity level. As another example, an air purifier operated to reduce PM2.5 concentration in the air may also reduce PM10 concentration and/or any particulate matter concentration in the air as a result of the operation. As such, the optimization problem may need to account for how different devices affect each environmental condition to maintain occupant comfort while optimizing costs. In this way, the optimization problem can consider environmental condition models that predict how environmental conditions change based on operation of building equipment. 
     Environmental Control System 
     Referring now to  FIG. 22 , an environmental control system  2200  is shown, according to some embodiments. Environmental control system  2200  is shown to include a conditioned space  2204 . Conditioned space  2204  can be any space that requires environmental conditions to be managed as to maintain occupant comfort such as, for example, a zone of a building (e.g., building  10 ), a room in a building, a building itself, etc. Conditioned space  2204  is shown to include a window  2210 . Conditioned space  2204  may include no windows  2210 , one window  2210 , or multiple windows  2210 , according to various embodiments. In some embodiments, particulate matter, heat, etc., can escape or enter around windows  2210 , thereby affecting environmental conditions of conditioned space  2204 . External space  2206  may be any space (e.g., a different zone of a building, outside, etc.) outside of conditioned space  2204 . For example, if external space  2206  is the outdoors, particulate matter (e.g., PM2.5, PM10, etc.) may enter through window  2210 , thereby decreasing air quality in conditioned space  2204 . 
     Conditioned space  2204  is also shown to include a temperature sensor  2212 , a relative humidity sensor  2214 , a carbon dioxide sensor  2216 , a carbon monoxide sensor  2218 , a PM10 sensor  2220 , and a PM2.5 sensor  2222 . In some embodiments, some and/or all sensors of sensors  2212 - 2222  are components of a thermostat  2224 . In some embodiments, some and/or all sensors of sensors  2212 - 2222  are independent sensors (e.g., separate sensors) of environmental control system  2200 . In some embodiments, conditioned space  2204  may include more or fewer sensors than are shown by sensors  2212 - 2222 . For example, conditioned space  2204  may include a sensor for detecting lighting in conditioned space  2204 . In general, conditioned space  2204  includes at least the sensors necessary to measure environmental conditions associated with solving an optimization problem for conditioned space  2204 . 
     Sensors  2212 - 2222  are shown to provide environmental condition data to a comfort controller  2202 . In some embodiments, sensors  2212 - 2222  communicate the environmental condition data via thermostat  2224 . In some embodiments, sensors  2212 - 2222  include components for facilitating electronic data communication. For example, sensors  2212 - 2222  may include an Ethernet card and port for sending and receiving data via an Ethernet-based communications network and/or a WiFi transceiver for communicating via a wireless communications network. Sensors  2212 - 2222  may be configured to communicate via local area networks or wide area networks (e.g., the Internet, a building WAN, etc.) and may use a variety of communications protocols (e.g., BACnet, IP, LON, etc.). 
     Based on the environmental condition data received from sensors  2212 - 2222 , comfort controller  2202  can determine an optimized control schedule to be provided to BMS  606 . The optimized control schedule provided by comfort controller  2202  can detail how building equipment  2208  should be operated to maintain occupant comfort in conditioned space  2204  while optimizing (e.g., reducing) costs. In some embodiments, comfort controller  2202  may additionally receive weather forecasts (i.e., a forecast of outdoor conditions) regarding various environmental conditions of external space  2206 . For example, a forecast of carbon dioxide, PM2.5 levels, temperature, humidity, etc. may be gathered and used to generate the optimized control schedule. Forecasts of outdoor conditions can be particularly useful to ensure that building equipment  2208  is not operate to affect environmental conditions that may already be affected naturally due to changes in weather. In some embodiments, the optimized control schedule is constrained by one or more environmental condition constraints that maintain occupant comfort. For example, a temperature of conditioned space  2204  may be constrained by an upper and a lower comfort bound of 68° F. and 75° F. such that the optimized control schedule should ensure that the temperature of conditioned space  2204  is not greater than or smaller than the upper and lower comfort bounds respectively. 
     Moreover, the optimized control schedule can be generated respective of identified relationships between building devices of building equipment  2208 . Relationships between building devices can indicate how certain building devices may advertently and/or inadvertently affect environmental conditions managed by other building devices. For example, a humidifier of building equipment  2208  may typically affect a humidity of conditioned space  2204  but may inadvertently affect air quality of conditioned space  2204  by humidifying air. Accordingly, an air purifier may be required to be operated to account for the change in air quality due to operating the humidifier. In this example, a relationship can be identified between the humidifier and the air purifier indicating that operation of the humidifier may necessitate operation of the air purifier. The optimization can be performed subject to any identified relationships such that a single optimization can be performed that accounts for various interactions between building devices of building equipment  2208 . 
     Based on the optimized control schedule, BMS  606  can generate control signals to provide to building equipment  2208 . Building equipment  2208  can include any building device capable of affecting (e.g., changing, increasing, decreasing) an environmental condition of conditioned space  2204 . For example, building equipment  2208  can include a heater, an indoor unit of a variable refrigerant flow (VRF) system, an air purifier, a ventilator, a humidifier, etc. In general, the control signals can operate building equipment  2208  to affect one or more environmental conditions in conditioned space  2204  to maintain occupant comfort while optimizing costs related to operating building equipment  2208 . As the optimized control schedule may account for relationships between building devices, the control signals may properly ensure that building equipment  2208  is operated such that environmental conditions satisfy constraints even if other building devices negatively affect some conditions. 
     Referring now to  FIG. 23 , comfort controller  2202  described with reference to  FIG. 22  is shown in greater detail, according to some embodiments. Comfort controller  2202  is shown to include a communications interface  2308  and a processing circuit  2302 . Communications interface  2308  may include wired or wireless interfaces (e.g., jacks, antennas, transmitters, receivers, transceivers, wire terminals, etc.) for conducting data communications with various systems, devices, or networks. For example, communications interface  2308  may include an Ethernet card and port for sending and receiving data via an Ethernet-based communications network and/or a WiFi transceiver for communicating via a wireless communications network. Communications interface  2308  may be configured to communicate via local area networks or wide area networks (e.g., the Internet, a building WAN, etc.) and may use a variety of communications protocols (e.g., BACnet, IP, LON, etc.). 
     Communications interface  2308  may be a network interface configured to facilitate electronic data communications between comfort controller  2202  and various external systems or devices (e.g., BMS  606 , thermostat  2224 , etc.). For example, comfort controller  2202  may receive environmental condition data from thermostat  2224  indicating one or more measured environmental conditions of the controlled building (e.g., temperature, relative humidity, air quality, etc.). 
     Still referring to  FIG. 23 , thermostat  2224  is shown to include air quality sensors  2316  including sensors  2216 - 2222 . Air quality sensors  2316  can include more or less sensors than as shown in  FIG. 23 . In general, air quality sensors  2316  include the sensors necessary for detecting air quality conditions applicable to an optimization problem solved by asset allocator  402 . 
     Processing circuit  2302  is shown to include a processor  2304  and memory  2306 . Processor  2304  may be a general purpose or specific purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a group of processing components, or other suitable processing components. Processor  2304  may be configured to execute computer code or instructions stored in memory  2306  or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.). 
     Memory  2306  may include one or more devices (e.g., memory units, memory devices, storage devices, etc.) for storing data and/or computer code for completing and/or facilitating the various processes described in the present disclosure. Memory  2306  may include random access memory (RAM), read-only memory (ROM), hard drive storage, temporary storage, non-volatile memory, flash memory, optical memory, or any other suitable memory for storing software objects and/or computer instructions. Memory  2306  may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present disclosure. Memory  2306  may be communicably connected to processor  2304  via processing circuit  2302  and may include computer code for executing (e.g., by processor  2304 ) one or more processes described herein. 
     In some embodiments, one or more components of memory  2306  are included in a single component of memory  2306 . However, for ease of explanation, components of memory  2306  are shown and described separately. Memory  2306  is shown to include a data collector  2310 . In some embodiments, data collector  2310  is configured to collect data communicated to communications interface  2308  (e.g., environmental condition data from sensors  2212 - 2222 ). In some embodiments, data collector  2310  communicates data received by communications interface  2308  to a comfort model generator  2312  upon reception. In some embodiments, data collector  2310  communicates data to comfort model generator  2312  after a sufficient amount of data is gathered and/or comfort model generator  2312  requests data from data collector  2310 . 
     Memory  2306  is also shown to include comfort model generator  2312 . Comfort model generator  2312  can be configured to generate a comfort model that can be used to determine how occupants may react to setpoint changes. The comfort model may include comfort ranges for environmental conditions such that the comfort ranges are known to maintain occupant comfort. 
     Memory  2306  is also shown to include a constraint generator  2314 . Based on the comfort model received by comfort model generator  2312 , constraint generator  2314  can determine environmental condition constraints to provide to asset allocator  402 . For example, the comfort model may indicate a maximum concentration of particulate matter permissible for maintaining occupant comfort. Based on the maximum concentration of particulate matter, constraint generator  2314  can generate an environmental condition constraint to provide to asset allocator  402  to adhere to when solving the optimization problem such that a concentration of particulate matter in conditioned space  2204  is maintained below the maximum concentration. In some embodiments, constraint generator  2314  extracts constraints directly from the comfort model. In some embodiments, constraint generator  2314  tests various combinations of environmental conditions with the model and determines the constraints based on results of said tests. In yet other embodiments, constraint generator  2314  generates environmental condition constraints without the comfort model. For example, constraint generator  2314  may utilize indications of occupant comfort to determine environmental condition constraints to provide to asset allocator  402 . 
     Constraint generator  2314  can also generate additional constraints on other conditions that affect occupants. For example, constraint generator  2314  may generate a noise constraint to place on a model predictive control process. The noise constraint may limit how much certain building equipment can be operated during certain periods of time to reduce noise. For example, a fan may make an annoying amount of noise during normal operation. As such, constraint generator  2314  may generate a noise constraint indicating the fan should operate at a lower operational level and/or not operate at all during a period of time when a presentation is held where the fan is located. The additional constraints generated by constraint generator  2314  may restrict what/when building equipment can be determined to be operated as to maintain occupant comfort while optimizing costs. 
     Still referring to  FIG. 23 , memory  2306  is also shown to include asset allocator  402 . In some embodiments, asset allocator  402  is separate from comfort controller  2202  and is not a part of comfort controller  2202 . If asset allocator  402  is separate from comfort controller  2202 , asset allocator may include an independent processing circuit, processor, memory, etc. configured to generate and solve an optimization problem. However, asset allocator  402  is shown as a component in comfort controller  2202  for ease of explanation. 
     Based on the constraints received from constraint generator  2314  and the comfort model received from comfort model generator  2312 , asset allocator  402  can generate and solve an optimization problem (e.g., the objective function J). The optimization problem can be configured to account for any applicable environmental conditions. For example, the optimization problem may account for temperature, relative humidity, and/or air quality conditions measured by sensors of air quality sensors  2316 . 
     In some embodiments, asset allocator  402  accounts for relationships between building devices when solving the optimization problem (e.g., by performing MPC). As described above, accounting relationships between building devices can ensure that operation of one building device to affect a particular environmental condition does not result in another condition violating a constraint. More particularly, asset allocator  402  can solve the optimization problem such that building devices are operated with respect to how other building devices affect environmental conditions. In some embodiments, the relationships are identified by the comfort model generated and provided by comfort model generator  2312 . 
     It should be noted that solving the optimization problem (e.g., optimizing the objective function J) may not indicate that an ideal result/solution is obtained. Rather, solving the optimization problem may indicate a solution to the optimization problem is obtained such that building equipment can be operated in accordance with the solution. For example, asset allocator  402  may determine that heater should be operated to increase a temperature in conditioned space  2204  to maintain occupant comfort and optimize (e.g., reduce) costs. However, an ideal solution of operating both a heater and a ventilator to increase the temperature may or may not be determined by asset allocator  402 . 
     In some embodiments, if determining a solution to the optimization problem while adhering to environmental condition constraints provided by constraint generator  2314 , some contaminants only have an upper bound constraint to adhere to. The contaminants may not require a lower bound constraint as occupants may not desire a contaminant concentration to be above some value. For the occupants to be comfortable based on contaminant concentration, it may be sufficient for each contaminant concentration to be below a certain value. However, relative humidity may have a lower bound constraint and an upper bound constraint such that the air is not too dry or too moist/damp in conditioned space  2204 . Depending on constraints placed on each environmental condition, building equipment should be operated as to affect each environmental condition without moving another environmental condition beyond a comfortable range as determined based on model for the environmental conditions. For example, if a ventilator is operated to reduce a concentration of PM2.5 in the air, asset allocator  402  can ensure excessive heat is not introduced into the zone while extracting PM2.5 as to maintain occupant comfort in regards to both temperature and PM2.5 concentration. 
     Asset allocator  402  is shown to provide an optimized control schedule to BMS  606 . In some embodiments, the optimized control schedule is provided to low level optimizer  634  described with reference to  FIG. 6  to generate control decisions to provide to BMS  606 . In some embodiments, the optimized control schedule (or the control decisions) indicates what building equipment to operate, when to operate said building equipment, and/or how to operate said building equipment. For example, the optimized control schedule can include setpoints for certain environmental conditions for various time steps in an optimization period. Based on the setpoints, BMS  606  and/or low level optimizer  634  can determine how to operate building equipment to achieve the setpoints. In general, the optimized control schedule determined by asset allocator  402  can take any form capable of indicating what building equipment to operate, when to operate said building equipment, and/or how to operate said building equipment to affect environmental conditions in a space, according to various embodiments. 
     Based on the optimized control schedule received from asset allocator  402  (or low level optimizer  634 ), BMS  606  can generate control signals to provide to building equipment indicated by the optimized control schedule. For example, BMS  606  can provide control signals to building equipment  2208  described with reference to  FIG. 22  to affect a temperature in conditioned space  2204 . 
     Asset Models 
     Referring now to  FIG. 24 , asset allocator  402  as described with reference to  FIG. 9  is shown in greater detail, according to some embodiments. As shown in  FIG. 24 , element models  930  are shown to include asset models  2402 . Asset models  2402  may store models for each asset capable of affecting an environmental change. For example, asset models  2402  may include models of assets such as a ventilator, a heater, a purifier, an economizer, etc. Each asset model of asset models  2402  may indicate inputs and outputs of each asset. Inputs to an asset may be resources provided by sources modeled by source models  934 . For example, a purifier may require inputs of electricity, and a humidifier may require inputs of both water and electricity. Likewise, an output of an asset can be described as an environmental change. For example, a variable refrigerant flow (VRF) system may have an output of heat to a zone, while a ventilator may have an output of heat, water vapor, carbon dioxide, and various contaminants (e.g., PM2.5, PM10, etc.). 
     Asset allocator  402  can use each asset model of asset models  2402  if determining how to operate building equipment to affect an environmental condition(s) in a zone. Based on an amount of resources required to affect an environmental condition by a certain amount, asset allocator  402  can determine what asset affects the environmental condition(s) required at a lowest cost and without moving other environmental conditions outside constraints. In some embodiments, asset models  2402  are similar to and/or the same as subplant models  936 . 
     In some embodiments, asset models  2402  may indicate relationships between assets. In other words, an individual model of asset models  2402  may indicate relationships between the individual model and other models. These relationships may be useful in identifying how operation of one asset (e.g., a building device) to affect an environmental condition may impact operation of other assets. For example, an asset model for a humidifier may indicate a relationship with an asset model for an air purifier such that operation of the humidifier may necessitate at least some operation of the air purifier. Including relationships in asset models  2402  can allow an performed by asset allocator  402  to generate optimal control decisions for all assets. 
     Zone Models 
     Element models  930  are also shown to include zone models  2404 . Zone models  2404  allow for the dynamic nature of zones of a building to be considered by asset allocator  402 . In some embodiments, asset allocator  402  determines an optimized control schedule for each zone in the building to maintain occupant comfort while optimizing (e.g., reducing) costs. Due to the dynamic nature of a zone, environmental conditions may naturally vary over time, with or without direct augmentation by assets in the zone. For example, a zone may experience airflow between the zone and the outdoors. Due to the airflow, contaminants may enter the zone independent of operation of any assets. Likewise, heat may be exchanged between the zone and an adjacent zone, thereby naturally increasing/decreasing a temperature in the zone. 
     A zone can be modeled in zone models  2404  using a state space representation tracking states of the zone. A state space of the zone for a next time step can be modeled as a state space at a current time step added with new inputs to the zone. In general, the state space of the zone for the next time step can be modeled by the following equation: 
         x ( k+ 1)= Ax ( k )+ Bu ( k )+ d    
     where k is the current time step, A x (k) is the state space for the current time step, x(k+1) is the state space of the next time step, Bu(k) is the new inputs to the zone, and d is a disturbance to the zone. In some embodiments, the disturbance d indicates an effect on environmental conditions in the zone not due to outputs of assets. For example, heat emitted by people and electronics may cause a disturbance in a temperature of the zone. Likewise, air contaminants (e.g., PM2.5, PM10, etc.) entering through an open window in the zone may cause a disturbance in values of said contaminants. 
     In some embodiments, a model of zone models  2404  facilitates model predictive control by describing how the temperature of building air and mass changes as the building is heated (or cooled). In some embodiments, the model describing these two temperatures is given by: 
     
       
         
           
             
               
                 T 
                 . 
               
               z 
             
             = 
             
               
                 
                   ( 
                   
                     
                       
                         - 
                         1 
                       
                       
                         
                           R 
                           im 
                         
                         ⁢ 
                         
                           C 
                           a 
                         
                       
                     
                     - 
                     
                       1 
                       
                         
                           R 
                           oa 
                         
                         ⁢ 
                         
                           C 
                           
                             a 
                             z 
                           
                         
                       
                     
                   
                   ) 
                 
                 ⁢ 
                 
                   T 
                   z 
                 
               
               + 
               
                 
                   1 
                   
                     
                       R 
                       im 
                     
                     ⁢ 
                     
                       C 
                       a 
                     
                   
                 
                 ⁢ 
                 
                   T 
                   m 
                 
               
               + 
               
                 
                   1 
                   
                     
                       R 
                       oa 
                     
                     ⁢ 
                     
                       C 
                       a 
                     
                   
                 
                 ⁢ 
                 
                   T 
                   oa 
                 
               
               + 
               
                 
                   1 
                   
                     C 
                     a 
                   
                 
                 ⁢ 
                 
                   
                     Q 
                     . 
                   
                   HVAC 
                 
               
               + 
               
                 
                   1 
                   
                     C 
                     a 
                   
                 
                 ⁢ 
                 
                   
                     Q 
                     . 
                   
                   Other 
                 
               
             
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 
                   T 
                   . 
                 
                 m 
               
               = 
               
                 
                   
                     1 
                     
                       
                         R 
                         im 
                       
                       ⁢ 
                       
                         C 
                         m 
                       
                     
                   
                   ⁢ 
                   
                     T 
                     z 
                   
                 
                 - 
                 
                   
                     1 
                     
                       
                         R 
                         im 
                       
                       ⁢ 
                       
                         C 
                         m 
                       
                     
                   
                   ⁢ 
                   
                     T 
                     m 
                   
                 
               
             
           
         
       
     
     where {dot over (T)} z  is a rate of change of temperature in a zone, R im  is a mass thermal resistance value of a resistor (e.g., a wall, a door, etc.), C a  is an capacitance value of air, T z  is a temperature in the zone, T oa  is an outdoor air temperature, Q HVAC  is an amount of heat contributed by a heat, ventilation, or air conditioning (HVAC) system, {dot over (Q)} other  is a heat transfer value, {dot over (T)} m  is a rate of change in a building mass temperature, C m  is a mass thermal capacitance value, and T m  is a building mass temperature. By using the model, asset allocator  402  can capture the dynamic nature of a zone (or any space) of a building. 
     If a goal is to maintain comfort in regards to temperature and humidity as well as contaminates (e.g., PM2.5, PM10, etc.) in the air, the above model can be augmented with equations describing the additional states as follows: 
     
       
         
           
             
               
                 T 
                 . 
               
               z 
             
             = 
             
               
                 
                   ( 
                   
                     
                       
                         - 
                         1 
                       
                       
                         
                           R 
                           im 
                         
                         ⁢ 
                         
                           C 
                           a 
                         
                       
                     
                     - 
                     
                       1 
                       
                         
                           R 
                           oa 
                         
                         ⁢ 
                         
                           C 
                           
                             a 
                             z 
                           
                         
                       
                     
                   
                   ) 
                 
                 ⁢ 
                 
                   T 
                   z 
                 
               
               + 
               
                 
                   1 
                   
                     
                       R 
                       im 
                     
                     ⁢ 
                     
                       C 
                       a 
                     
                   
                 
                 ⁢ 
                 
                   T 
                   m 
                 
               
               + 
               
                 
                   1 
                   
                     
                       R 
                       oa 
                     
                     ⁢ 
                     
                       C 
                       a 
                     
                   
                 
                 ⁢ 
                 
                   T 
                   oa 
                 
               
               + 
               
                 
                   1 
                   
                     C 
                     a 
                   
                 
                 ⁢ 
                 
                   
                     Q 
                     . 
                   
                   HVAC 
                 
               
               + 
               
                 
                   1 
                   
                     C 
                     a 
                   
                 
                 ⁢ 
                 
                   
                     Q 
                     . 
                   
                   Other 
                 
               
               + 
               
                 
                   
                     v 
                     ~ 
                   
                   . 
                 
                 ⁡ 
                 
                   ( 
                   
                     
                       T 
                       oa 
                     
                     - 
                     
                       T 
                       z 
                     
                   
                   ) 
                 
               
             
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 
                   T 
                   . 
                 
                 m 
               
               = 
               
                 
                   
                     1 
                     
                       
                         R 
                         im 
                       
                       ⁢ 
                       
                         C 
                         m 
                       
                     
                   
                   ⁢ 
                   
                     T 
                     z 
                   
                 
                 - 
                 
                   
                     1 
                     
                       
                         R 
                         im 
                       
                       ⁢ 
                       
                         C 
                         m 
                       
                     
                   
                   ⁢ 
                   
                     T 
                     m 
                   
                 
               
             
           
         
       
       
         
           
             
               
                 φ 
                 . 
               
               
                 
                   H 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   2 
                   ⁢ 
                   O 
                 
                 , 
                 in 
               
             
             = 
             
               
                 
                   
                     v 
                     ~ 
                   
                   . 
                 
                 ⁡ 
                 
                   ( 
                   
                     
                       φ 
                       
                         
                           H 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           2 
                           ⁢ 
                           O 
                         
                         , 
                         out 
                       
                     
                     - 
                     
                       φ 
                       
                         
                           H 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           2 
                           ⁢ 
                           O 
                         
                         , 
                         in 
                       
                     
                   
                   ) 
                 
               
               + 
               
                 
                   φ 
                   . 
                 
                 
                   
                     H 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     2 
                     ⁢ 
                     O 
                   
                   , 
                   dist 
                 
               
               - 
               
                 
                   φ 
                   . 
                 
                 
                   
                     H 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     2 
                     ⁢ 
                     O 
                   
                   , 
                   hvac 
                 
               
               + 
               
                 
                   φ 
                   . 
                 
                 
                   
                     H 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     2 
                     ⁢ 
                     O 
                   
                   , 
                   control 
                 
               
             
           
         
       
       
         
           
             
                 
             
             ⁢ 
             ⋮ 
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 
                   φ 
                   . 
                 
                 
                   X 
                   , 
                   in 
                 
               
               = 
               
                 
                   
                     
                       v 
                       ~ 
                     
                     . 
                   
                   ⁡ 
                   
                     ( 
                     
                       
                         φ 
                         
                           X 
                           , 
                           out 
                         
                       
                       - 
                       
                         φ 
                         
                           X 
                           , 
                           in 
                         
                       
                     
                     ) 
                   
                 
                 + 
                 
                   
                     φ 
                     . 
                   
                   
                     X 
                     , 
                     dist 
                   
                 
                 + 
                 
                   
                     φ 
                     . 
                   
                   
                     X 
                     , 
                     control 
                   
                 
               
             
           
         
       
     
     where {dot over (φ)} H2O,in  is a rate of change in a concentration of water in the air,   is an airflow normalized by a volume of air in a space (e.g., a zone), φ X,out  is a concentration of water in the air outside of the space (e.g., in the outdoors), φ X,in  is a concentration of water in the air inside the space, {dot over (φ)} H2O,dist  is a disturbance rate of water in the space, {dot over (φ)} H2O,hvac  is a rate of change of water in the air due to HVAC equipment operation, and {dot over (φ)} H2O,control  is a rate of change of water in the air due to control decisions, {dot over (φ)} X,in  is a rate of change in a concentration of a contaminant in the air, φ X,out  is a concentration of the contaminant in the air outside of the space, φ X,in  is a concentration of contaminant in the air inside the space, {dot over (φ)} X,dist  is a disturbance rate of the contaminant in the space, {dot over (φ)} X,control  is a rate of change of the contaminant in the air due to control decisions, and all other variables are the same as described above. In general, the model can be augmented with as additional contaminants as necessary for the optimization problem. 
     To fit the above equations into a framework used by asset allocator  402 , the equations can be modified to the following form: 
     
       
         
           
             
               
                 T 
                 . 
               
               z 
             
             = 
             
               
                 
                   ( 
                   
                     
                       
                         - 
                         1 
                       
                       
                         
                           R 
                           im 
                         
                         ⁢ 
                         
                           C 
                           a 
                         
                       
                     
                     - 
                     
                       1 
                       
                         
                           R 
                           oa 
                         
                         ⁢ 
                         
                           C 
                           a 
                         
                       
                     
                   
                   ) 
                 
                 ⁢ 
                 
                   T 
                   z 
                 
               
               + 
               
                 
                   1 
                   
                     
                       R 
                       im 
                     
                     ⁢ 
                     
                       C 
                       a 
                     
                   
                 
                 ⁢ 
                 
                   T 
                   m 
                 
               
               + 
               
                 
                   1 
                   
                     
                       R 
                       oa 
                     
                     ⁢ 
                     
                       C 
                       a 
                     
                   
                 
                 ⁢ 
                 
                   T 
                   oa 
                 
               
               + 
               
                 
                   1 
                   
                     C 
                     a 
                   
                 
                 ⁢ 
                 
                   
                     Q 
                     . 
                   
                   HVAC 
                 
               
               + 
               
                 
                   1 
                   
                     C 
                     a 
                   
                 
                 ⁢ 
                 
                   
                     Q 
                     . 
                   
                   Other 
                 
               
               + 
               
                 
                   Q 
                   . 
                 
                 econ 
               
             
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 
                   T 
                   . 
                 
                 m 
               
               = 
               
                 
                   
                     1 
                     
                       
                         R 
                         im 
                       
                       ⁢ 
                       
                         C 
                         m 
                       
                     
                   
                   ⁢ 
                   
                     T 
                     z 
                   
                 
                 - 
                 
                   
                     1 
                     
                       
                         R 
                         im 
                       
                       ⁢ 
                       
                         C 
                         m 
                       
                     
                   
                   ⁢ 
                   
                     T 
                     m 
                   
                 
               
             
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 
                   φ 
                   . 
                 
                 
                   
                     H 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     2 
                     ⁢ 
                     O 
                   
                   , 
                   in 
                 
               
               = 
               
                 
                   
                     φ 
                     . 
                   
                   
                     
                       H 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       2 
                       ⁢ 
                       O 
                     
                     , 
                     econ 
                   
                 
                 + 
                 
                   
                     φ 
                     . 
                   
                   
                     
                       H 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       2 
                       ⁢ 
                       O 
                     
                     , 
                     dist 
                   
                 
                 - 
                 
                   
                     φ 
                     . 
                   
                   
                     
                       H 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       2 
                       ⁢ 
                       O 
                     
                     , 
                     hvac 
                   
                 
                 + 
                 
                   
                     φ 
                     . 
                   
                   
                     
                       H 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       2 
                       ⁢ 
                       O 
                     
                     , 
                     control 
                   
                 
               
             
           
         
       
       
         
           
             
                 
             
             ⁢ 
             ⋮ 
           
         
       
       
         
           
             
                 
             
             ⁢ 
             
               
                 
                   φ 
                   . 
                 
                 
                   X 
                   , 
                   in 
                 
               
               = 
               
                 
                   
                     φ 
                     . 
                   
                   
                     X 
                     , 
                     econ 
                   
                 
                 + 
                 
                   
                     φ 
                     . 
                   
                   
                     X 
                     , 
                     dist 
                   
                 
                 + 
                 
                   
                     φ 
                     . 
                   
                   
                     X 
                     , 
                     control 
                   
                 
               
             
           
         
       
     
     where the econ subscript illustrates inputs from an economizer or a ventilator, and the control subscript illustrates another device that can perform control (e.g., a humidifier or a separate filter). Using the asset allocator format, this configuration is described for a variable refrigerant flow (VRF) system as described below with reference to  FIG. 25  and for an air handling unit (AHU) system described below with reference to  FIG. 26 . In the equations and  FIGS. 25-26 , the economizer (i.e., ventilator control points) and the additional control points are capable of taking on both negative and positive values. As such, terms may have to be split into both negative and positive components to allow assets to produce both negative and positive values. In some embodiments, using this form, an identification model for a zone group is not required to change as no additional parameters are added to the dynamic equations as the additional parameters are moved to static models of the economizer or the ventilator. This formulation can allow the complication to be moved out of the dynamics and into the asset models. In fact, the number of parameters that must be identified in the zone group model may remain the same: 
     
       
         
           
             
               1 
               
                 
                   R 
                   oa 
                 
                 ⁢ 
                 
                   C 
                   a 
                 
               
             
             , 
             
               1 
               
                 
                   R 
                   im 
                 
                 ⁢ 
                 
                   C 
                   a 
                 
               
             
             , 
             
               1 
               
                 C 
                 a 
               
             
             , 
             
               
                 1 
                 
                   
                     R 
                     im 
                   
                   ⁢ 
                   
                     C 
                     m 
                   
                 
               
               . 
             
           
         
       
     
     All the additional elements of the state-space matrix may become 1 or 0. The difficulty can be placed in the models of the assets themselves (the models of the ventilator, the purifier, etc.). 
     It should be noted that when using volume concentrations with the above equations for determining rate of changes for environmental conditions, the equations are not exact as no mass balance is implied. However, given a density of air inside is generally less than 1% different than outside and the density of air changes by less than 5% in a given day, volume balance may be used with negligible error. 
     Using zone models  2404 , asset allocator  402  can incorporate how environmental conditions in a zone will be affected due to operation of assets and other factors leading to disturbances when solving an optimization problem. In particular, zone models  2404  can indicate to asset allocator  402  how various environmental conditions will be affected to determine whether or not occupant comfort is maintained. In some embodiments, models are generated to describe how individual environmental conditions change as a function of operation of ventilators and/or other building equipment. Without utilizing zone models  2404 , asset allocator  402  may be constrained to making decisions based on a static model of a zone (e.g., the zone has no interaction with the surrounding environment). Using the static model of zones may result in control decisions that do not maintain occupant comfort due to not accounting for dynamic nature of zones. 
     Environmental Control System Resource Diagrams 
     Referring now to  FIG. 25 , a block diagram of resource diagram  2500  affecting various environmental conditions in a zone group is shown. In resource diagram  2500 , a water supplier  2502  is shown to provide water resource  2516  to a humidifier  2508 . Likewise, an electricity supplier  2504  is shown to provide electricity resource  2518  to a variable refrigerant flow (VRF) system  2506 , humidifier  2508 , a ventilator  2510 , and a purifier  2512 . Water supplier  2502  and electricity supplier  2504  may be any utility supplier capable of providing water resource  2516  and electricity resource  2518  to resource diagram  2500  respectively. In some embodiments, water supplier  2502  and/or electricity supplier  2504  are a part of a building controlled by resource diagram  2500 . For example, electricity supplier  2504  may be an array of solar panels configured to provide electricity resource  2518  for the building. In some embodiments, water supplier  2502  and/or electricity supplier  2504  are utility suppliers separate from the building controlled by resource diagram  2500 . If water supplier  2502  and/or electricity supplier  2504  are separate from the building, resource diagram  2500  may be required to purchase water resource  2516  and/or electricity resource  2518  from water supplier  2502  and/or electricity supplier  2504  respectively. 
     In some embodiments, water supplier  2502  and electricity supplier  2504  are defined by models of source models  934  described with reference to  FIG. 24 . In some embodiments, water supplier  2502  and electricity supplier  2504  are treated by asset allocator  402  as sources that provide resources at a cost (e.g., in dollars per kW of electricity). In some embodiments, water supplier  2502  is similar to and/or the same as water utility  504  described with reference to  FIGS. 5A-5B . In some embodiments, electricity supplier  2504  is similar to and/or the same as electric utility  552  described with reference to  FIGS. 5A-5B . As such, water supplier  2502  and electricity supplier  2504  may be treated similarly to water utility  504  and electric utility  552  by asset allocator  402 . 
     In some embodiments VRF system  2506 , humidifier  2508 , ventilator  2510 , and purifier  2512  are modeled as subplants. As such, each of VRF system  2506 , humidifier  2508 , ventilator  2510 , and purifier  2512  may have an associated model of subplant models  936 . 
     VRF system  2506  of resource diagram  2500  is shown to intake (e.g., consume) electricity resource  2518  and provide heat resource  2520  to a zone group  2514 . In some embodiments, zone group  2514  is or includes multiple zones of a building (e.g., building  10 ). In some embodiments, zone group  2514  includes only one zone of the building. In some embodiments, asset allocator  402  can treat various zones of zone group  2514  as a single zone. By treating zones of zone group  2514  as a single zone, an amount of processing required to maintain occupant comfort across zone group  2514  can be lessened. VRF system  2506  may include, for example, one or more outdoor units (ODUs), one or more indoor units (IDUs), or any other VRF device capable of affecting a temperature, humidity, or other environmental conditions in zone group  2514 . In general, the heat resource  2520  produced by VRF system  2506  can increase or decrease the temperature in zone group  2514 . 
     Resource diagram  2500  is also shown to include humidifier  2508  that intakes (e.g., consumes) both electricity resource  2518  and water resource  2516  and provides (e.g., produces) water vapor resource  2522  (e.g., thereby increasing humidity) to zone group  2514 . In some embodiments, humidifier  2508  removes water vapor resource  2522  (i.e., decreases humidity) from zone group  2514 . In some embodiments, if humidifier  2508  removes water vapor resource  2522  from zone group  2514  (e.g., thereby decreasing humidity of zone group  2514 ) the removed water vapor is treated as a negative resource by asset allocator  402 . 
     Resource diagram  2500  is also shown to include ventilator  2510 . Ventilator  2510  is shown to intake (e.g., consume) electricity resource  2518  and affect heat resource  2520 , water vapor resource  2522 , carbon dioxide resource  2524 , and contaminant X resource  2526  in zone group  2514 . Particularly, contaminant X resource  2526  may be any one or more contaminants (e.g., PM2.5, PM10, etc.) that can affect air quality in zone group  2514 . 
     Resource diagram  2500  is also shown to include purifier  2512 . Purifier  2512  is shown to intake (e.g., consume) electricity resource  2518  and affect contaminant X resource  2526  in zone group  2514 . Similar to ventilator  2510 , purifier  2512  may be able to affect any one or more contaminants in zone group  2514 . In some embodiments, purifier  2512  is treated by asset allocator  402  as a subplant that consumes some amount of electrical energy resource and produces a negative quantity of contaminant X resource  2526  in zone group  2514  (e.g., removes the quantity of contaminant X resource  2526  from zone group  2514 ). Throughout the present disclosure, various building devices are described as providing a particular resource or multiple resources to a building zone. However, it should be understood that “providing” does not necessarily require the building device to add a positive amount of that resource to the building zone. For example, a building device can “provide” a negative amount of a resource to a building zone by removing an amount of that resource from the building zone (e.g., purifier  2512  provides a negative amount of contaminant X resource  2526  to zone group  2514 ). Accordingly, any references to providing a resource should be interpreted as either adding an amount of the resource or removing an amount of the resource. 
     Resource diagram  2500  is also shown to include outside air  2528 . Outside air  2528  can introduce outside air to zone group  2514  (e.g., via an open window) to affect a temperature of zone group  2514 . In some embodiments, outside air  2528  affects other environmental conditions within zone group  2514  such as humidity or air quality. Outside air  2528  can also be utilized by ventilator  2510  to affect any of resources  2520 - 2526 . For example, ventilator  2510  may utilize outside air  2528  to affect heat resource  2520  and water vapor resource  2522 . Outside air  2528  is shown as a dashed line in resource diagram  2500  as, depending on implementation, outside air  2528  may or may not affect zone group  2514  and/or ventilator  2510 . 
     Resource diagram  2500  is also shown to include disturbances D affecting each of resources  2520 - 2526 . A disturbance to a resource of resources  2520 - 2526  can affect how the resource impacts an environmental condition of zone group  2514  and/or a device of devices  2506 - 2512 . For example, a heat disturbance can affect heat resource  2520 , thereby affecting a temperature of zone group  2514  and operation of VRF system  2506 . The heat disturbance can by caused by, for example, body heat released by people, heat released by electronic equipment, or solar radiation. As another example, carbon dioxide resource  2524  can be affected by a carbon dioxide disturbance due to a gas leak. In some embodiments, disturbances are included in the zone models described above with reference to  FIG. 24 . If disturbances are included in the zone models, the zone models can inherently account for leakage, internal generation, etc. of resources and how environmental conditions are affected due to the disturbances. 
     Resource diagram  2500  illustrates how individual devices can affect multiple environmental conditions. Further, resource diagram  2500  illustrates how individual devices can affect the same environmental condition(s) as other devices. Therefore, to properly solve the optimization problem generated by asset allocator  402 , each device may need to be considered in relation to every other device and what environmental conditions each device affects. Asset allocator  402  can use resource diagram  2500  to identify interconnections between various sources (e.g., water supplier  2502  or electricity supplier  2504 ), resources (e.g., water resource  2516 , heat resource  2520 , carbon dioxide resource  2524 , etc.), subplants/assets (e.g., VRF system  2506 , humidifier  2508 , ventilator  2510 , and purifier  2512 ). Based on the interconnections between various components of resource diagram  2500 , asset allocator can determine how to affect an environmental condition of a space (e.g., a zone of zone group  2514 ) while optimizing (e.g., reducing) costs. For example, if a temperature of a zone of zone group  2514  should be raised to maintain occupant comfort, asset allocator  402  may need to determine whether to operate VRF system  2506  or ventilator  2510 . If asset allocator  402  determines that it is more cost effective to operate ventilator  2510  than VRF system  2506 , asset allocator  402  may still determine how ventilator  2510  affects other environmental conditions and determine if other devices require operation as a result. As such, additional variables may be necessary in the optimization problem to optimize costs while maintaining occupant comfort for all environmental conditions. 
     In particular, during an optimization process, asset allocator  402  can determine how ventilator  2510  should be operated to maintain desired environmental conditions as ventilator  2510  can affect all of resources  2520 - 2526 . As such, asset allocator  402  may determine if operation of ventilator  2510  can satisfy all required adjustments to environmental conditions as operation of a single device (e.g., ventilator  2510 ) may be less expensive than operation of multiple devices. However, operation of ventilator  2510  to affect one environmental condition may negatively impact a separate environmental condition. For example, ventilator  2510  may utilize outdoor air  2528  to cool zone group  2514 , but said utilization may introduce additional pollutants, thereby negatively affecting contaminant X resource  2526 . As such, operation of ventilator  2510  to cool zone group  2514  may reduce/eliminate a need to operate VRF system  2506 , but may result in additional operation required for purifier  2512  in order to improve air quality in zone group  2514 . In general, asset allocator  402  can determine a cost effective solution that ensures each environmental condition of zone group  2514  does not violate any environmental condition constraints. In some embodiments, asset allocator  402  performs a cost benefit analysis of operating each component of building equipment to determine what components should be operated in order to optimize (e.g., reduce) costs related to ensuring environmental conditions do not violate any environmental condition constraints. In this way, asset allocator  402  can determine whether operation of ventilator  2510  reduces overall costs by reducing a need for operation of other devices, or if operation of other devices to affect resources  2520 - 2526  individually is more cost effective. 
     During an optimization process, asset allocator  402  may account for disturbances affecting some and/or all of resources  2520 - 2526 . Disturbances can significantly impact environmental conditions of zone group  2514  and can thereby affect how devices  2506 - 2512  should be operated in order to maintain comfortable conditions. For example, humidity released by people breathing may impact water vapor resource  2522 . As such, if a humidity level of zone group  2514  should be increased, humidifier  2508  may not require as much operation as the humidity level may naturally increase due to water vapor released from people breathing. As another example, a heat disturbance due to heat released by electronic equipment (e.g., computers, phones, televisions, etc.) may introduce additional heat to heat resource  2520 , thereby increasing a temperature of zone group  2514 . As such, if a temperature of zone group  2514  should be decreased, VRF system  2506  may require additional operation to mitigate effects of the heat disturbance. Therefore, asset allocator  402  may be required to account for disturbances affecting any/all of resources  2520 - 2526  to determine an optimized control schedule for operating building equipment such that environmental conditions of zone group  2514  do not violate any environmental condition constraints. 
     Referring now to  FIG. 26 , a block diagram of a resource diagram  2600  affecting various environmental conditions in a zone group is shown. In some embodiments, resource diagram  2600  is similar to resource diagram  2500  described with reference to  FIG. 25 . Resource diagram  2600  illustrates how additional utilities, devices, etc. can affect environmental conditions in zone group  2514 . In resource diagram  2600 , the optimization problem solved by asset allocator  402  may account for each device and how each device affects various environmental conditions to determine an optimal (or near-optimal) solution to the optimization problem (e.g., a solution that minimizes a cost function). 
     In some embodiments, resource diagram  2600  includes various sources that can have associated source models in source models  934 . In addition to water supplier  2502  and electricity supplier  2504 , resource diagram  2600  is also shown to include a natural gas supplier  2602 . Each supplier is shown to provide (e.g., supply) resources in resource diagram  2600  to other various components. For example, natural gas supplier  2602  provides a natural gas resource  2612  to hot water generators  2610 . As such, asset allocator  402  can account for how each supplier/source provides a resource at a particular cost (e.g., $ per gallon of water) in resource diagram  2600  and plan accordingly. 
     In some embodiments, resource diagram  2600  includes various assets that can have associated asset models of asset models  2402 . Particularly, resource diagram  2600  is shown to include chillers  2606 , heat recovery chillers  2608 , hot water generators  2610 , heat exchanger  2616 , air handling unit (AHU) and economizer  2618 , humidifier  2508 , and purifier  2512 . Each asset can have an associated asset model to which asset allocator  402  can determine what resource(s) each asset consumer and produces when solving an optimization problem. For example, AHU and economizer  2618  is shown to produce heat resource  2520 , water vapor resource  2522 , carbon dioxide resource  2524 , and contaminant X resource  2526  while humidifier  2508  is shown to only produce water vapor resource  2522 . Based on additional information regarding each asset (e.g., a rate at which an asset converts input resources to output resources), asset allocator  402  can determine particular assets to operate to affect environmental conditions to maintain occupant comfort. 
     In some embodiments, resource diagram  2600  includes various storage mediums for storing resources. In some embodiments, each storage medium can be modeled by a model of storage models  938 . Particularly, resource diagram  2600  is shown to include thermal storage  2614 , electricity storage  2626 , towers  2604 , and chilled water storage  2620 . For each storage medium, asset allocator  402  can allocate various resources to be stored in said mediums for later consumption. For example, asset allocator  402  may store some electricity of electricity resource in electricity storage  2626  (e.g., a battery). Therefore, asset allocator  402  can withdraw resources from said storage mediums as needed. For example, during a peak demand period, water may be expensive so asset allocator  402  may withdraw water from towers  2604  to utilize instead of being charged at an increased rate by water supplier  2502 . Each storage model of storage models  938  can allow asset allocator  402  to determine information such as, for example, how much of a resource the storage medium can store, at what rate resources can be stored/withdrawn, etc. 
     In some embodiments, resource diagram  2600  also includes various resources that are supplied by sources and/or assets and consumed by storage mediums and/or sinks. Particularly, resource diagram  2600  is shown to include water resource  2516 , electricity resource  2518 , a natural gas resource  2612 , a chilled water resource  2622 , a hot water resource  2624 , and resources  2520 - 2526  described above. As shown in resource diagram  2600 , disturbances can affect some and/or all of resources  2520 - 2526 . It should be appreciated that the disturbances affecting resources  2520 - 2526  may originate from various disturbance sources, and therefore lines connecting the disturbances to resources  2520 - 2526  as shown in resource diagram  2600  may not follow associations of lines shown in the key of  FIG. 26  (e.g., the disturbances may not be due to electricity as would otherwise be interpreted based on a solid line shown in the key). Resource diagram  2600  can be utilized by asset allocator  402  to determine what resources each device/component requires and any resources produced by each device/component. As such, asset allocator can utilize each resource when determining how to best operate devices/components to affect a change on a condition of zone group  2514 . 
     Bilinear Mapping Graphs 
     Referring now to  FIGS. 27A-27B , graphs  2700  and  2750  illustrating three-dimensional bilinear mappings that can be used by a mixed integer linear program (MILP) to determine environmental condition constraints are shown, according to some embodiments. The bilinear mapping illustrated by graph  2750  is the same bilinear mapping illustrated by graph  2700  with courser resolution. The bilinear mapping shown by graphs  2700  and  2750  has 8 convex regions. In some embodiments, the 8 convex regions are represented by three binary variables using the DLog [XXX] representation as described with reference to  FIG. 12 . Based on the generated convex regions, the constraints may be constructed from the vertices of the convex regions and used as described with reference to  FIGS. 12 and 14 , according to some embodiments. 
     For example, graphs  2700  and  2750  may be generated based on a ventilator model used by asset allocator  402 . The ventilator model has several bilinear terms. In each case, an indoor concentration is multiplied by a normalized volumetric flow of the ventilator (air changes per hour with outside air). Because both of these are decision variables, the resulting model is nonlinear and must be treated appropriately so that it can be solved within the framework of an MILP. Therefore, the resulting model can be augmented as graphs  2700  and  2750  such that the resulting model can be solved within the framework of the MILP. 
     In some embodiments, the nonlinearity is moved out of the resulting model (i.e., a dynamic system model) and into an asset model of asset models  2402 . However, it is still necessary to determine a mapping between a control variable and a normalized air exchange with the outdoors, V. For example, a ventilator may have a simple on/off or an off/low/high setting. In this case, it may be necessary to learn that low corresponds to 5 air changes per hour and high corresponds to 10 air changes per hour. In a direct digital control (DDC) controlled economizer it may be possible to directly specify the amount of amount of air flow to bring in from the outside. However, even with said ability to control a mapping is still required. In this case, the mapping is simply the normalization term, or the total volume of the air in the zone. For example, if the air rate is 2000 cfm it is still necessary to know that the total air volume is 20,000 ft 3  to calculate the air changes per hour. 
     
       
         
           
             
               
                 v 
                 ~ 
               
               . 
             
             = 
             
               
                 
                   2000 
                   ⁢ 
                   
                     
                       ft 
                       3 
                     
                     min 
                   
                   * 
                   
                     
                       60 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       min 
                     
                     
                       1 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       hr 
                     
                   
                 
                 
                   20000 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   
                     ft 
                     3 
                   
                 
               
               = 
               6 
             
           
         
       
     
     Because the mapping is static, it can be determined using regression analysis. If each of the contaminants, water vapor, and temperature can be monitored, then it can be straight forward to set up several regression equations that utilize the change in concentration or temperature over an hour while the ventilator is in a given state. 
     Psychometric Chart of Occupant Comfort 
     Referring now to  FIG. 28 , a psychometric chart  2800  illustrating a comfort zone  2802  based on humidity and temperature is shown. Comfort zone  2802  of psychometric chart  2800  illustrates a balance between temperature and humidity where an occupant may typically be comfortable in a space (e.g., a zone of building  10 ). For example, occupant comfort is shown to be maintained if a temperature in the space is 75° F. with a humidity value of 40%, but occupant comfort is not maintained if the temperature in the space is 75° F. with a humidity value of 20%. Based on comfort zone  2802 , various environmental condition constraints can be generated to indicate values of environmental conditions where occupants are comfortable. In some embodiments, psychometric chart  2800  includes additional environmental conditions such as PM2.5 and adjusts comfort zone  2802  to reflect conditions where an occupant is comfortable. In general, psychometric chart  2800  can be utilized to determine environmental condition constraints for use in solving an optimization problem. 
     Generating Control Signals to Affect Environmental Conditions 
     Referring now to  FIG. 29 , a process  2900  for operating building equipment to maintain occupant comfort in a zone for multiple environmental conditions is shown, according to some embodiments. In the zone, maintaining occupant comfort across multiple environmental conditions (e.g., air quality, temperature, relative humidity, etc.) may be necessary. In some embodiments, building equipment (i.e., assets) of the zone affect multiple environmental conditions upon operation. As such, for occupant comfort to be maintained while optimizing (e.g., reducing) costs, interactions between each asset and the various environmental conditions in addition to dynamics of the zone should be considered. In some embodiments, some and/or all steps of process  2900  are performed by components of environmental control system  2200  described with reference to  FIG. 22 . 
     Process  2900  is shown to include collecting environmental data by environmental sensors (step  2902 ), according to some embodiments. The environmental data collected by the environmental sensors can described various environmental conditions in a zone. For example, the environmental data may include information regarding PM2.5 concentration in the air, carbon dioxide concentration in the air, a temperature, a relative humidity level, etc. In some embodiments, step  2902  is performed by sensors  2212 - 2222  and/or other sensors of thermostat  2224 . 
     Process  2900  is shown to include receiving the environmental data from the environmental sensors (step  2904 ), according to some embodiments. In some embodiments, the environmental data is received continuously from the environmental sensors as the environmental data is gathered. In some embodiments, the environmental data is received occasionally after a predetermined time period and/or after a certain amount of environmental data is gathered. In some embodiments, step  2904  is performed by comfort controller  2202 . 
     Process  2900  is shown to include determining current environmental conditions in a zone of a building based on the environmental data (step  2906 ), according to some embodiments. As the environmental data received from each environmental sensor may only indicate current conditions of a particular environmental condition, it may be necessary to determine an overall state of environmental conditions in the zone. The current environmental conditions can be used to solve an optimization problem. In some embodiments, step  2906  is performed by data collector  2310  and/or comfort model generator  2312 . 
     Process  2900  is shown to include generating a model describing occupant comfort in the zone based on environmental conditions (step  2908 ), according to some embodiments. The comfort model can be determined based on information gathered regarding how occupants respond to various environmental conditions. For example, users may be polled to determine whether they are comfortable based on current environmental conditions. As another example, occupants may be determined to be uncomfortable if the occupants make adjustments to setpoints in the zone (e.g., increasing a temperature, decreasing humidity, etc.). Based on the preferences of occupants, the comfort model can illustrate how occupants may react to certain environmental conditions. For example, the comfort model may indicate occupants are comfortable if relative humidity in the zone is 45% and temperature in the zone is 72° F., but the occupants are not comfortable if the relative humidity in the zone is 50% and the temperature in the zone is 70° F. In some embodiments, the comfort model also indicates occupant comfort based on contaminant concentrations in the air. In general, the comfort model can indicate occupant comfort for any environmental conditions in the zone that may affect occupant comfort. In some embodiments, the comfort model additionally indicates relationships between building devices. In this case, step  2908  may include identifying said relationships and integrating the relationships with the comfort model. In some embodiments, the relationships may be separately identified for later use in process  2900 . In some embodiments, step  2908  is performed by comfort model generator  2312 . 
     Process  2900  is shown to include generating environmental condition constraints for maintaining occupant comfort in the zone based on the comfort model (step  2910 ), according to some embodiments. The environmental condition constraints place limits on permissible values of environmental conditions. Some environmental conditions may only have an upper bound as no lower bound may be necessary. For example, concentration of PM2.5 in the air may only require an upper bound as occupants are not uncomfortable if there is little or no concentration of PM2.5 in the air. However, some environmental conditions may require an upper bound and a lower bound to ensure occupant comfort. For example, relative humidity and temperature may both have a range of values that maintain occupant comfort such that values above or below the range are uncomfortable for occupants. In some embodiments, the environmental condition constraints are indicated explicitly by the comfort model and can be directly extracted. In some embodiments, combinations of environmental conditions are tested with the comfort model and the environmental condition constraints are determined based on results of the tests. The results of the tests can include various information indicating how occupants reacted to the tests such as, for example, occupant votes regarding comfort, a number of setpoint adjustments that occurred during the tests indicating occupant discomfort, etc. If the environmental condition constraints are determined based on tests run against the comfort model, the environmental condition constraints may be approximations of comfort that maintain occupant comfort. In some embodiments, environmental condition constraints determined through tests may be determined conservatively such that the environmental condition constraints have a high probability to maintain occupant comfort, even if less conservative environmental condition constraints may still maintain occupant comfort. In some embodiments, the environmental condition constraints are generated without the comfort model by, for example, having an occupant indicate desired ranges of environmental conditions. In some embodiments, step  2910  is performed by constraint generator  2314 . 
     Process  2900  is shown to include performing a cost optimization for operating building equipment over a time period based on the comfort model, the environmental condition constraints, and the current environmental conditions (step  2912 ), according to some embodiments. In some embodiments, the cost optimization is performed by solving an optimization problem (e.g., the objective function J). The cost optimization can indicate how building equipment should be operated as to maintain occupant comfort while reducing costs. The cost optimization can be constrained by the environmental condition constraints generated in step  2910 . Due to the environmental condition constraints, the cost optimization may not be allowed to make decisions that jeopardize occupant comfort by allowing an environmental condition to be outside the environmental condition&#39;s associated constraints. Further, the cost optimization should be performed respective to the current environmental conditions. For example, if all environmental conditions in the zone are currently comfortable and are predicted to stay comfortable for the time period, the cost optimization may determine not to operate any building equipment to reduce costs. 
     In some embodiments, the cost optimization includes consideration for some and/or all assets in the zone to determine how to ensure all pertinent environmental conditions are kept comfortable for the time period. In other words, step  2912  may include accounting for identified relationships between assets/building devices. As some assets may control more than one environmental condition, the cost optimization may consider how other environmental conditions are affected as a result of operating certain building equipment to affect individual environmental conditions. As such, the cost optimization problem may not be able to consider each environmental condition individually. Instead, the cost optimization may need to consider how purposely affecting one environmental condition may indirectly affect other environmental conditions. The cost optimization may also ensure that occupant comfort is not jeopardized due to a time lag in how quickly building equipment can be operated to affect environmental conditions. A time lag may indicate an amount of time required to adjust an environmental condition by operating a building device after receiving a control signal. For example, an air conditioner may require five minutes to reach a normal operating level. During the amount of time before normal operation is reached, the air conditioner may not affect environmental conditions (e.g., temperature) of the zone as the air conditioner does at a normal operating level. As such, the cost optimization can consider an amount of time required to properly operate building equipment, such that occupant comfort is maintained throughout the amount of time and beyond. In some embodiments, step  2912  is performed by asset allocator  402 . 
     Process  2900  is shown to include generating control signals for the building equipment based on the cost optimization (step  2914 ), according to some embodiments. As the cost optimization can detail decisions of what building equipment should be operated at particular times during the time period, control signals can be generated to match said decisions. In some embodiments, the control signals are generated based on setpoints indicated by the cost optimization. For example, if a temperature setpoint for the zone is 73° F. and a current temperature is 70° F., a control signal may be generated to operate a heater to raise the current temperature in the zone to the temperature setpoint. In some embodiments, step  2914  is performed by BMS  606 . 
     Process  2900  is shown to include operating building equipment based on the generated control signals to affect environmental conditions of the zone (step  2916 ), according to some embodiments. Due to operation of the building equipment, environmental conditions of the zone may change as to ensure occupant comfort while optimizing costs. In some embodiments, step  2916  is performed by building equipment  2208 . 
     Other Environmental Control System Implementations 
     Referring generally to  FIGS. 30 and 31 , alternative implementations of the environmental control system described throughout  FIGS. 22-29  are shown, according to some embodiments. In particular,  FIG. 30  illustrates how model predictive control (i.e., solving an optimization problem as described throughout  FIGS. 22-29 ) can be implemented in a cloud computing system whereas  FIG. 31  illustrates how model predictive control can be implemented by a smart thermostat. It should be appreciated that the alternate system structures described below are provided for sake of example and are not meant to be limiting on the present disclosure. In some embodiments, the cloud computing system and smart thermostat systems for implementing MPC are described in greater detail in U.S. patent application Ser. No. 15/625,830 filed Jun. 16, 2017 and in U.S. patent application Ser. No. 16/185,274 filed Nov. 9, 2018. The entireties of both of these patent applications are incorporated by reference herein. 
     Referring now to  FIG. 30 , an environmental control system  3000  with a cloud computing system  3002  is shown, according to some embodiments. In some embodiments, environmental control system  3000  is similar to and/or the same as environmental control system  2200  as described with reference to  FIG. 22 . Environmental control system  3000  is shown to include cloud computing system  3002 , a communications network  3004 , thermostat  2224 , BMS  606 , building equipment  2008 , and conditioned space  2204 . 
     Cloud computing system  3002  is shown to include comfort controller  2202 . As such, cloud computing system  3002  may be able to perform MPC for conditioned space  2204  and can generate a control schedule for operating building equipment  2008 . Specifically, the control schedule may include one or more setpoints for which building equipment  2008  can be operated based on. MPC may be performed by cloud computing system  3002  to reduce computational load on local computing devices (e.g., devices local to a building including conditioned space  2204 ). In particular, moving functionality of comfort controller  2202  to be performed by cloud computing system  3002  can reduce a need for users (e.g., building owners) to purchase computing devices/systems for maintaining comfortable environmental conditions in conditioned space  2204  and/or elsewhere in a building. 
     Cloud computing system  3002  can be operated by any cloud provider that can provide MPC functionality for conditioned space  2204  and/or other spaces. In some embodiments, cloud computing system  3002  may perform MPC for some and/or all of a building, a campus including multiple buildings, etc. By utilizing cloud computing system  3002 , MPC can more easily be applied to a larger number of spaces of a building, of a campus, etc. Moreover, cloud computing system  3002  may include more processing components such that calculations (e.g., optimizations) associated with MPC can be shorter amounts of time and in finer detail such that more accurate control decisions can be generated. 
     As a result of including comfort controller  2202 , cloud computing system  3002  can generate and provide a control schedule to thermostat  2224  via network  3004 . Network  3004  may be any type of communications network that can transmit data between components of environmental control system  3000 . For example, network  3004  may be or include the Internet, a cellular network, Wi-Fi, Wi-Max, a proprietary communications network, or any other type of wired or wireless network. In environmental control system  3000 , thermostat  2224  can be considered a networked device that is configured to send and receive information via network  3004 . It should be appreciated that other networked devices may be used separately and/or in addition to thermostat  2224 . For example, a user device (e.g., a smart phone, a laptop, a desktop computer), a local controller, a building computing system, etc. may be used to receive control schedules and provide zone conditions to cloud computing system  3002  via network  3004 . 
     In response to receiving a control schedule from network  3004 , thermostat  2224  can provide the control schedule to BMS  606  such that building equipment  2008  can be operated to affect some variable state or condition (e.g., temperature) of conditioned space  2204 . In the example of  FIG. 30 , thermostat  2224  may effectively operate as a pass-through for control schedules. In other words, thermostat  2224  may not perform any data processing operations on the control schedules and instead may directly provide the control schedules to BMS  606 . In some embodiments, the control schedules may be directed provided from cloud computing system  3002  to BMS  606  via network  3004 . In this case, thermostat  2224  may or may not receive the control schedules. In some embodiments, thermostat  2224  includes functionality to generate and provide control signals to building equipment  2008  based on the control schedule. In this case, thermostat  2224  may include an equipment controller that can extract control information from the control schedule and generate control signals respective of the control schedule. In other words, thermostat  2224  may identify information such as setpoints from the control schedule and generate control signals for the building equipment and/or directly provide the setpoints to building equipment  2008 . Thermostat  2224  may provide the control signals directly to building equipment  2008  and/or may provide the control signals to BMS  606  such that BMS  606  can operate building equipment  2008 . 
     Based on the control schedule and/or the control signals, building equipment  2008  can be operated to affect variables states or conditions of conditioned space  2204 . For example, as shown in  FIG. 30 , conditioned space  2204  may be affected by a temperature change of HVAC equipment {dot over (Q)} HVAC  as a result of operating building equipment  2008 . Of course, building equipment  2008  may affect different conditions separately and/or in addition to temperature such as, for example, humidity, air quality, luminosity, etc. depending on what equipment is included in building equipment  2008 . Conditioned space  2204  is also shown to receive a heat disturbance {dot over (Q)} other  from an external source. Q other  may be caused by for example, solar irradiance, outdoor air affecting conditioned space  2204 , heat generated due to operating building equipment  2008  and/or other equipment in a building, heat emitted from occupants of conditioned space  2204 , etc. As should be appreciated, Q other  is given as an example of external factors that may affect conditioned space  2204 . Conditioned space  2204  may be affected by humidity disturbances, air quality disturbances, etc. from external sources. 
     Thermostat  2224  can measure environmental conditions (e.g., temperature, humidity, air quality, luminosity, etc.) of conditioned space  2204  and provide values of the environmental conditions to cloud computing system  3002 . To properly perform MPC, cloud computing system  3002  may require measurements of the environmental conditions such that cloud computing system  3002  can adjust control schedules provided to thermostat  2224  to ensure appropriate values (e.g., values are within a predefined range) of the environmental conditions are maintained in conditioned space  2204 . The environmental conditions provided to cloud computing system  3002  may also include measurements of other conditions such as outdoor temperatures, outdoor humidity, outdoor air quality, etc. In this way, cloud computing system  3002  can continually/periodically revise the control schedule to account for changes in conditions. 
     Referring now to  FIG. 31 , an environmental control system  3100  with a smart thermostat is shown, according to some embodiments. In some embodiments, environmental control system  3100  is similar to and/or the same as environmental control system  2200  and/or environmental control system  3000  as described with reference to  FIGS. 22 and 30 , respectively. In the embodiment of  FIG. 31 , thermostat  2224  may be considered a smart thermostat. In other words, thermostat  2224  may include some and/or all of the functionality of comfort controller  2202  such that thermostat  2224  can perform MPC for conditioned space  2204 . In this way, thermostat  2224  can determine the setpoints for which building equipment  2008  can be operated based on. In this way, thermostat  2224  can dynamically adjust the control schedule (i.e., the setpoints) provided to BMS  606  and building equipment  2008 . 
     Configuration of Exemplary Embodiments 
     Although the figures show a specific order of method steps, the order of the steps may differ from what is depicted. Also two or more steps can be performed concurrently or with partial concurrence. Such variation will depend on the software and hardware systems chosen and on designer choice. All such variations are within the scope of the disclosure. Likewise, software implementations could be accomplished with standard programming techniques with rule based logic and other logic to accomplish the various connection steps, calculation steps, processing steps, comparison steps, and decision steps. 
     The construction and arrangement of the systems and methods as shown in the various exemplary embodiments are illustrative only. Although only a few embodiments have been described in detail in this disclosure, many modifications are possible (e.g., variations in sizes, dimensions, structures, shapes and proportions of the various elements, values of parameters, mounting arrangements, use of materials, colors, orientations, etc.). For example, the position of elements can be reversed or otherwise varied and the nature or number of discrete elements or positions can be altered or varied. Accordingly, all such modifications are intended to be included within the scope of the present disclosure. The order or sequence of any process or method steps can be varied or re-sequenced according to alternative embodiments. Other substitutions, modifications, changes, and omissions can be made in the design, operating conditions and arrangement of the exemplary embodiments without departing from the scope of the present disclosure. 
     As used herein, the term “circuit” may include hardware structured to execute the functions described herein. In some embodiments, each respective “circuit” may include machine-readable media for configuring the hardware to execute the functions described herein. The circuit may be embodied as one or more circuitry components including, but not limited to, processing circuitry, network interfaces, peripheral devices, input devices, output devices, sensors, etc. In some embodiments, a circuit may take the form of one or more analog circuits, electronic circuits (e.g., integrated circuits (IC), discrete circuits, system on a chip (SOCs) circuits, etc.), telecommunication circuits, hybrid circuits, and any other type of “circuit.” In this regard, the “circuit” may include any type of component for accomplishing or facilitating achievement of the operations described herein. For example, a circuit as described herein may include one or more transistors, logic gates (e.g., NAND, AND, NOR, OR, XOR, NOT, XNOR, etc.), resistors, multiplexers, registers, capacitors, inductors, diodes, wiring, and so on). 
     The “circuit” may also include one or more processors communicably coupled to one or more memory or memory devices. In this regard, the one or more processors may execute instructions stored in the memory or may execute instructions otherwise accessible to the one or more processors. In some embodiments, the one or more processors may be embodied in various ways. The one or more processors may be constructed in a manner sufficient to perform at least the operations described herein. In some embodiments, the one or more processors may be shared by multiple circuits (e.g., circuit A and circuit B may comprise or otherwise share the same processor which, in some example embodiments, may execute instructions stored, or otherwise accessed, via different areas of memory). Alternatively or additionally, the one or more processors may be structured to perform or otherwise execute certain operations independent of one or more co-processors. In other example embodiments, two or more processors may be coupled via a bus to enable independent, parallel, pipelined, or multi-threaded instruction execution. Each processor may be implemented as one or more general-purpose processors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), digital signal processors (DSPs), or other suitable electronic data processing components structured to execute instructions provided by memory. The one or more processors may take the form of a single core processor, multi-core processor (e.g., a dual core processor, triple core processor, quad core processor, etc.), microprocessor, etc. In some embodiments, the one or more processors may be external to the apparatus, for example the one or more processors may be a remote processor (e.g., a cloud based processor). Alternatively or additionally, the one or more processors may be internal and/or local to the apparatus. In this regard, a given circuit or components thereof may be disposed locally (e.g., as part of a local server, a local computing system, etc.) or remotely (e.g., as part of a remote server such as a cloud based server). To that end, a “circuit” as described herein may include components that are distributed across one or more locations. 
     The present disclosure contemplates methods, systems and program products on any machine-readable media for accomplishing various operations. The embodiments of the present disclosure can be implemented using existing computer processors, or by a special purpose computer processor for an appropriate system, incorporated for this or another purpose, or by a hardwired system. Embodiments within the scope of the present disclosure include program products comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media can be any available media that can be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of machine-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer or other machine with a processor. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machines to perform a certain function or group of functions.