Building control system with smart edge devices having embedded model predictive control

A smart edge controller for building equipment that operates to affect a variable state or condition within a building. The controller includes processors and non-transitory computer-readable media storing instructions that, when executed by the processors, cause the processors to perform operations including obtaining sensor data indicating environmental conditions of the building and include determining an amount of available processing resources at the smart edge controller or at the building equipment. The operations include automatically scaling a level of complexity of an optimization of a cost function based on the available processing resources and include performing the optimization of the cost function at the automatically scaled level of complexity to generate a first setpoint trajectory. The first setpoint trajectory includes operating setpoints for the building equipment at time steps within an optimization period. The operations include operating the building equipment based on the first setpoint trajectory.

BACKGROUND

The present disclosure relates generally to environmental control systems in a building. The present disclosure relates more particularly to optimizing costs related to maintaining a comfortable environment in a building.

A building typically includes a system that maintains certain environmental conditions in the building to be comfortable for occupants. If attempting to keep occupants comfortable in the building, it can be difficult to maintain low costs. Further, if a building has limited computing resources, implementing complex control systems may not be possible.

SUMMARY

One implementation of the present disclosure is a smart edge controller for building equipment that operates to affect a variable state or condition within 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 obtaining sensor data indicating one or more environmental conditions of the building, according to some embodiments. The operations include determining an amount of available processing resources at the smart edge controller or at the building equipment, according to some embodiments. The operations include automatically scaling a level of complexity of an optimization of a cost function based on the amount of available processing resources, according to some embodiments. The operations include performing the optimization of the cost function at the automatically scaled level of complexity to generate a first setpoint trajectory for the building equipment, according to some embodiments. The first setpoint trajectory includes operating setpoints for the building equipment at time steps within an optimization period, according to some embodiments. The operations include operating the building equipment based on the first setpoint trajectory to affect the variable state or condition within the building, according to some embodiments.

In some embodiments, the operations include selecting a subset of the sensor data for generating a predictive model based on the amount of available processing resources. The operations include generating the predictive model based on the subset of the sensor data, according to some embodiments. The optimization of the cost function is performed based on the predictive model, according to some embodiments.

In some embodiments, the operations include generating an active setpoint for the building equipment or for a space of the building based on the first setpoint trajectory. The optimization of the cost function is performed based on a first-order thermal model describing thermal dynamics of the space of the building, according to some embodiments.

In some embodiments, scaling the level of complexity of the optimization of the cost function includes at least one of reducing a number of input variables to the cost function, reducing a number of time steps within the optimization period, or reducing a number of decision variables for which values are generated by performing the optimization of the cost function.

In some embodiments, the available processing resources include at least one of available memory, available clock cycles, available energy, available network bandwidth, or available budget.

In some embodiments, functionality of the controller is distributed across devices of the building.

In some embodiments, the operations include determining whether a connection between the controller and a cloud computation system is active. The operations include, in response to a determination that the connection is active, obtaining a second setpoint trajectory from the cloud computation system and using the second setpoint trajectory instead of the first setpoint trajectory to operate the building equipment, according to some embodiments. Performing the optimization of the cost function to generate the first setpoint trajectory occurs in response to a determination that the connection is not active, according to some embodiments.

Another implementation of the present disclosure is an environmental control system for building equipment that operates to affect a variable state or condition within a building, according to some embodiments. The system includes one or more environmental sensors configured to measure one or more environmental conditions affecting the building, according to some embodiments. The system includes the building equipment that operates to affect the variable state or condition within the building, according to some embodiments. The system includes a controller including a processing circuit, according to some embodiments. The processing circuit is configured to obtain sensor data indicating the one or more environmental conditions of the building from the one or more environmental sensors, according to some embodiments. The processing circuit is configured to determine an amount of available processing resources at the controller or at the building equipment, according to some embodiments. The processing circuit is configured to automatically scale a level of complexity of an optimization of a cost function based on the amount of available processing resources, according to some embodiments. The processing circuit is configured to perform the optimization of the cost function at the automatically scaled level of complexity to generate a first setpoint trajectory for the building equipment, according to some embodiments. The first setpoint trajectory includes operating setpoints for the building equipment at time steps within an optimization period, according to some embodiments. The processing circuit is configured to operate the building equipment based on the first setpoint trajectory to affect the variable state or condition within the building, according to some embodiments.

In some embodiments, the processing circuit is configured to select a subset of the sensor data for generating a predictive model based on the amount of available processing resources. The processing circuit is configured to generate the predictive model based on the subset of the sensor data, according to some embodiments. The optimization of the cost function is performed based on the predictive model, according to some embodiments.

In some embodiments, the processing circuit is configured to generate an active setpoint for the building equipment or for a space of the building based on the first setpoint trajectory. The optimization of the cost function is performed based on a first-order thermal model describing thermal dynamics of the space of the building, according to some embodiments.

In some embodiments, scaling the level of complexity of the optimization of the cost function includes at least one of reducing a number of input variables to the cost function, reducing a number of time steps within the optimization period, or reducing a number of decision variables for which values are generated by performing the optimization of the cost function.

In some embodiments, the available processing resources include at least one of available memory, available clock cycles, available energy, available network bandwidth, or available budget.

In some embodiments, functionality of the controller is distributed across devices of the building.

In some embodiments, the processing circuit is configured to determine whether a connection between the controller and a cloud computation system is active. The processing circuit is configured to, in response to a determination that the connection is active, obtain a second setpoint trajectory from the cloud computation system and using the second setpoint trajectory instead of the first setpoint trajectory to operate the building equipment, according to some embodiments. Performing the optimization of the cost function to generate the first setpoint trajectory occurs in response to a determination that the connection is not active, according to some embodiments.

Another implementation of the present disclosure is a method for operating building equipment to affect a variable state or condition within a building, according to some embodiments. The method includes obtaining sensor data indicating one or more environmental conditions of the building, according to some embodiments. The method includes determining a capacity to perform an optimization of a cost function at a smart edge controller or at the building equipment, according to some embodiments. The method includes automatically scaling a level of complexity of the optimization of the cost function based on the capacity, according to some embodiments. The method includes performing the optimization of the cost function at the automatically scaled level of complexity to generate a first setpoint trajectory for the building equipment, according to some embodiments. The first setpoint trajectory includes operating setpoints for the building equipment at time steps within an optimization period, according to some embodiments. The method includes operating the building equipment based on the first setpoint trajectory to affect the variable state or condition within the building, according to some embodiments.

In some embodiments, the method includes selecting a subset of the sensor data for generating a predictive model based on the capacity. The method includes generating the predictive model based on the subset of the sensor data, according to some embodiments. The optimization of the cost function is performed based on the predictive model, according to some embodiments.

In some embodiments, the method includes generating an active setpoint for the building equipment or for a space of the building based on the first setpoint trajectory.

In some embodiments, scaling the level of complexity of the optimization of the cost function includes at least one of reducing a number of input variables to the cost function, reducing a number of time steps within the optimization period, or reducing a number of decision variables for which values are generated by performing the optimization of the cost function.

In some embodiments, the optimization of the cost function is performed based on a first-order thermal model describing thermal dynamics of a space of the building.

In some embodiments, the method includes determining whether a connection between the controller and a cloud computation system is active. The method includes, in response to a determination that the connection is active, obtaining a second setpoint trajectory from the cloud computation system and using the second setpoint trajectory instead of the first setpoint trajectory to operate the building equipment, according to some embodiments. Performing the optimization of the cost function to generate the first setpoint trajectory occurs in response to a determination that the connection is not active, according to some embodiments.

DETAILED DESCRIPTION

Overview

Referring generally to the FIGURES, a central plant with an asset allocator and components thereof are shown, according to various exemplary embodiments. 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 some and/or all time steps 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 time steps within the optimization period. These and other features of the asset allocator are described in greater detail below.

In some embodiments, the asset allocator is reduced in complexity in order to be able to be run on devices with lower computational power. If a building is operating with limited resources (e.g., limited funds, limited internet bandwidth, etc.), a full amount of processing power required for the asset allocator to perform at full functionality may not be possible. To mitigate said problem, a reduced version of the optimization process performed by the asset allocator is described in greater detail below. Advantageously, the reduced complexity asset allocator can be used by less computationally powerful devices (e.g., local devices in the building).

Building and HVAC System

Referring now toFIG. 1, a perspective view of a building10is shown. Building10can 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 building10is 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 building10may include a HVAC system100. HVAC system100can 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 building10. For example, HVAC system100is shown to include a waterside system120and an airside system130. Waterside system120may provide a heated or chilled fluid to an air handling unit of airside system130. Airside system130may use the heated or chilled fluid to heat or cool an airflow provided to building10. In some embodiments, waterside system120can be replaced with or supplemented by a central plant or central energy facility (described in greater detail with reference toFIG. 2). An example of an airside system which can be used in HVAC system100is described in greater detail with reference toFIG. 3.

Central Plant

Referring now toFIG. 2, a block diagram of a central plant200is shown, according to some embodiments. In various embodiments, central plant200can supplement or replace waterside system120in HVAC system100or can be implemented separate from HVAC system100. When implemented in HVAC system100, central plant200can include a subset of the HVAC devices in HVAC system100(e.g., boiler104, chiller102, pumps, valves, etc.) and may operate to supply a heated or chilled fluid to AHU106. The HVAC devices of central plant200can be located within building10(e.g., as components of waterside system120) or at an offsite location such as a central energy facility that serves multiple buildings.

Central plant200is shown to include a plurality of subplants202-208. Subplants202-208can be configured to convert energy or resource types (e.g., water, natural gas, electricity, etc.). For example, subplants202-208are shown to include a heater subplant202, a heat recovery chiller subplant204, a chiller subplant206, and a cooling tower subplant208. In some embodiments, subplants202-208consume 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 subplant202can be configured to heat water in a hot water loop214that circulates the hot water between heater subplant202and building10. Similarly, chiller subplant206can be configured to chill water in a cold water loop216that circulates the cold water between chiller subplant206building10.

Heat recovery chiller subplant204can be configured to transfer heat from cold water loop216to hot water loop214to provide additional heating for the hot water and additional cooling for the cold water. Condenser water loop218may absorb heat from the cold water in chiller subplant206and reject the absorbed heat in cooling tower subplant208or transfer the absorbed heat to hot water loop214. In various embodiments, central plant200can 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.

Although subplants202-208are 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, CO2, etc.) can be used in place of or in addition to water to serve thermal energy loads. In other embodiments, subplants202-208may provide heating and/or cooling directly to the building or campus without requiring an intermediate heat transfer fluid. These and other variations to central plant200are within the teachings of the present disclosure.

In some embodiments, one or more of the pumps in central plant200(e.g., pumps222,224,228,230,234,236, and/or240) or pipelines in central plant200include 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 plant200. In various embodiments, central plant200can include more, fewer, or different types of devices and/or subplants based on the particular configuration of central plant200and the types of loads served by central plant200.

Still referring toFIG. 2, central plant200is shown to include hot thermal energy storage (TES)210and cold thermal energy storage (TES)212. Hot TES210and cold TES212can be configured to store hot and cold thermal energy for subsequent use. For example, hot TES210can include one or more hot water storage tanks242configured to store the hot water generated by heater subplant202or heat recovery chiller subplant204. Hot TES210may also include one or more pumps or valves configured to control the flow rate of the hot water into or out of hot TES tank242.

Similarly, cold TES212can include one or more cold water storage tanks244configured to store the cold water generated by chiller subplant206or heat recovery chiller subplant204. Cold TES212may also include one or more pumps or valves configured to control the flow rate of the cold water into or out of cold TES tanks244. In some embodiments, central plant200includes 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 plant200, or otherwise obtained from any source.

Airside System

Cooling coil334may receive a chilled fluid from central plant200(e.g., from cold water loop216) via piping342and may return the chilled fluid to central plant200via piping344. Valve346can be positioned along piping342or piping344to control a flow rate of the chilled fluid through cooling coil334. In some embodiments, cooling coil334includes multiple stages of cooling coils that can be independently activated and deactivated (e.g., by AHU controller330, by BMS controller366, etc.) to modulate an amount of cooling applied to supply air310.

Heating coil336may receive a heated fluid from central plant200(e.g., from hot water loop214) via piping348and may return the heated fluid to central plant200via piping350. Valve352can be positioned along piping348or piping350to control a flow rate of the heated fluid through heating coil336. In some embodiments, heating coil336includes multiple stages of heating coils that can be independently activated and deactivated (e.g., by AHU controller330, by BMS controller366, etc.) to modulate an amount of heating applied to supply air310.

Each of valves346and352can be controlled by an actuator. For example, valve346can be controlled by actuator354and valve352can be controlled by actuator356. Actuators354-356may communicate with AHU controller330via communications links358-360. Actuators354-356may receive control signals from AHU controller330and may provide feedback signals to controller330. In some embodiments, AHU controller330receives a measurement of the supply air temperature from a temperature sensor362positioned in supply air duct312(e.g., downstream of cooling coil334and/or heating coil336). AHU controller330may also receive a measurement of the temperature of building zone306from a temperature sensor364located in building zone306.

Asset Allocation System

Referring now toFIG. 4, a block diagram of an asset allocation system400is shown, according to an exemplary embodiment. Asset allocation system400can 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 system400can 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 system400is implemented as a component of central plant200and interacts with the equipment of central plant200in an online operational environment (e.g., performing real-time control of the central plant equipment). In other embodiments, asset allocation system400can be implemented as a component of a planning tool (described with reference toFIGS. 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 system400is shown to include sources410, subplants420, storage430, and sinks440. These four categories of objects define the assets of a central plant and their interaction with the outside world. Sources410may include commodity markets or other suppliers from which resources such as electricity, water, natural gas, and other resources can be purchased or obtained. Sources410may provide resources that can be used by asset allocation system400to satisfy the demand of a building or campus. For example, sources410are shown to include an electric utility411, a water utility412, a natural gas utility413, a photovoltaic (PV) field (e.g., a collection of solar panels), an energy market415, and source M416, where M is the total number of sources410. Resources purchased from sources410can be used by subplants420to produce generated resources (e.g., hot water, cold water, electricity, steam, etc.), stored in storage430for later use, or provided directly to sinks440.

Subplants420are the main assets of a central plant. Subplants420are shown to include a heater subplant421, a chiller subplant422, a heat recovery chiller subplant423, a steam subplant424, an electricity subplant425, and subplant N, where N is the total number of subplants420. In some embodiments, subplants420include some or all of the subplants of central plant200, as described with reference toFIG. 2. For example, subplants420can include heater subplant202, heat recovery chiller subplant204, chiller subplant206, and/or cooling tower subplant208.

Subplants420can be configured to convert resource types, making it possible to balance requested loads from the building or campus using resources purchased from sources410. For example, heater subplant421may be configured to generate hot thermal energy (e.g., hot water) by heating water using electricity or natural gas. Chiller subplant422may be configured to generate cold thermal energy (e.g., cold water) by chilling water using electricity. Heat recovery chiller subplant423may 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 subplant424may be configured to generate steam by boiling water using electricity or natural gas. Electricity subplant425may 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 subplants420may be provided by sources410, retrieved from storage430, and/or generated by other subplants420. For example, steam subplant424may produce steam as an output resource. Electricity subplant425may include a steam turbine that uses the steam generated by steam subplant424as an input resource to generate electricity. The output resources produced by subplants420may be stored in storage430, provided to sinks440, and/or used by other subplants420. For example, the electricity generated by electricity subplant425may be stored in electrical energy storage433, used by chiller subplant422to generate cold thermal energy, used to satisfy the electric load445of a building, or sold to resource purchasers441.

Storage430can be configured to store energy or other types of resources for later use. Each type of storage within storage430may be configured to store a different type of resource. For example, storage430is shown to include hot thermal energy storage431(e.g., one or more hot water storage tanks), cold thermal energy storage432(e.g., one or more cold thermal energy storage tanks), electrical energy storage433(e.g., one or more batteries), and resource type P storage434, where P is the total number of storage430. In some embodiments, storage430include some or all of the storage of central plant200, as described with reference toFIG. 2. In some embodiments, storage430includes the heat capacity of the building served by the central plant. The resources stored in storage430may be purchased directly from sources or generated by subplants420.

In some embodiments, storage430is used by asset allocation system400to 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 sources410) 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 storage430allows 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 storage430also allows the resource demand of the building or campus to be shifted in time. For example, resources can be purchased from sources410at times when the demand for heating or cooling is low and immediately converted into hot or cold thermal energy by subplants420. The thermal energy can be stored in storage430and retrieved at times when the demand for heating or cooling is high. This allows asset allocation system400to smooth the resource demand of the building or campus and reduces the maximum required capacity of subplants420. Smoothing the demand also asset allocation system400to reduce the peak electricity consumption, which results in a lower demand charge.

In some embodiments, storage430is used by asset allocation system400to 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 sources410or 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 purchasers441or an energy grid442to supplement the energy generated by sources410. 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 storage433allows system400to quickly respond to a request for electric power by rapidly discharging stored electrical energy to energy grid442.

Sinks440may include the requested loads of a building or campus as well as other types of resource consumers. For example, sinks440are shown to include resource purchasers441, an energy grid442, a hot water load443, a cold water load444, an electric load445, and sink Q, where Q is the total number of sinks440. 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 sink440over the optimization period can be supplied as an input to asset allocation system400or predicted by asset allocation system400. Sinks440can receive resources directly from sources410, from subplants420, and/or from storage430.

Still referring toFIG. 4, asset allocation system400is shown to include an asset allocator402. Asset allocator402may be configured to control the distribution, production, storage, and usage of resources in asset allocation system400. In some embodiments, asset allocator402performs 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 sources410, an optimal amount of each resource to produce or convert using subplants420, an optimal amount of each resource to store or remove from storage430, an optimal amount of each resource to sell to resources purchasers441or energy grid440, and/or an optimal amount of each resource to provide to other sinks440. In some embodiments, the control decisions include an optimal amount of each input resource and output resource for each of subplants420.

In some embodiments, asset allocator402is 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 sources410, used or produced by subplants420, stored or discharged by storage430, or consumed by sinks440. 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 allocator402can be configured to operate the equipment of asset allocation system400to ensure that a resource balance is maintained at each time step of the optimization period. This resource balance is shown in the following equation:
Σxtime=0∀resources,∀time ∈horizon
where the sum is taken over all producers and consumers of a given resource (i.e., all of sources410, subplants420, storage430, and sinks440) 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 allocator402may 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 subplants420may be intermediate resources that function only as inputs to other subplants420.

In some embodiments, the resources balanced by asset allocator402include 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 allocator402to 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 allocator402to 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 allocator402may be configured to minimize the economic cost (or maximize the economic value) of operating asset allocation system400over 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 allocator402. The cost function J(x) may account for the cost of resources purchased from sources410, as well as the revenue generated by selling resources to resource purchasers441or energy grid442or participating in incentive programs. The cost optimization performed by asset allocator402can be expressed as:

argminx⁢J⁡(x)
where J(x) is defined as follows:

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 source410. 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 subplants420and storage430may include equipment that can be controlled by asset allocator402to optimize the performance of asset allocation system400. 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 subplants420and storage430. Individual devices of subplants420can be turned on or off to adjust the resource production of each subplant420. In some embodiments, individual devices of subplants420can be operated at variable capacities (e.g., operating a chiller at 10% capacity or 60% capacity) according to an operating setpoint received from asset allocator402. Asset allocator402can control the equipment of subplants420and storage430to adjust the amount of each resource purchased, consumed, and/or produced by system400.

In some embodiments, asset allocator402minimizes the cost function while participating in PBDR programs, IBDR programs, or simultaneously in both PBDR and IBDR programs. For the IBDR programs, asset allocator402may use statistical estimates of past clearing prices, mileage ratios, and event probabilities to determine the revenue generation potential of selling stored energy to resource purchasers441or energy grid442. For the PBDR programs, asset allocator402may use predictions of ambient conditions, facility thermal loads, and thermodynamic models of installed equipment to estimate the resource consumption of subplants420. Asset allocator402may use predictions of the resource consumption to monetize the costs of running the equipment.

Asset allocator402may 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 allocator402may 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 allocator402may 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 allocator402to determine an optimal set of control decisions that maximize the overall value of operating asset allocation system400.

In some embodiments, asset allocator402optimizes 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:

The first term in the previous equation represents the total amount of each resource (e.g., electricity, water, natural gas, etc.) purchased from each source410over the optimization horizon. The second and third terms represent the total production and consumption of each resource by subplants420over the optimization horizon. The fourth term represents the total amount of each resource discharged from storage430over the optimization horizon. Positive values indicate that the resource is discharged from storage430, whereas negative values indicate that the resource is charged or stored. The fifth term represents the total amount of each resource requested by sinks440over the optimization horizon. Accordingly, this constraint ensures that the total amount of each resource purchased, produced, or discharged from storage430is equal to the amount of each resource consumed, stored, or provided to sinks440.

In some embodiments, additional constraints exist on the regions in which subplants420can 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 source410, 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 module904(described in greater detail with reference toFIGS. 9 and 12).

Asset allocator402may include a variety of features that enable the application of asset allocator402to 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 subplants420, sinks440, storage430, and sources410; multiples of the same type of subplant420or sink440; subplant resource connections that describe which subplants420can send resources to which sinks440and 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 allocator402to 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 subplants420, sinks440, storage430, and sources410allow each of these components to be described by the mapping from decision variables to resources consume and resources produced. Resources and other components of system400do 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 allocator420can solve the optimization problem by simply balancing resource use and can be configured to solve in terms of consumed resource1, consumed resource2, produced resource1, 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 system400rather than needing them hard coded. Of course, “typed” resources and other components of system400can still exist in order to generate the mapping at run time, based on equipment out of service.

Incorporating multiple subplants420or sinks440of the same type allows for modeling the interconnections between subplants420, sources410, storage430, and sinks440. This type of modeling describes which subplants420can use resource from which sources410and which subplants420can send resources to which sinks440. This can be visualized as a resource connection matrix (i.e., a directed graph) between the subplants420, sources410, sinks440, and storage430. Examples of such directed graphs are described in greater detail with reference toFIGS. 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 subplants420or 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 allocator402can 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 allocator402may be shared by multiple elements of system400. 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's electrical use and the tower's electrical use, nor does it allow the optimization to exceed the chiller's design load by feeding it cooler condenser water. Incorporating these extrinsic decisions into asset allocator402allows 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 allocator402can be configured to add revenue to the cost function per amount of resource reserved. Asset allocator402can then make the reserved portion of the resource unavailable for typical price based cost optimization. For example, asset allocator402can 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 toFIG. 5A, a plant resource diagram500is shown, according to an exemplary embodiment. Plant resource diagram500represents 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 allocator402can use plant resource diagram500to identify the interconnections between various sources410, subplants420, storage430, and sinks440in the central plant. In some instances, the interconnections defined by diagram500are not capable of being inferred based on the type of resource produced. For this reason, plant resource diagram500may provide asset allocator402with new information that can be used to establish constraints on the asset allocation problem.

Plant resource diagram500is shown to include an electric utility502, a water utility504, and a natural gas utility506. Utilities502-506are examples of sources410that provide resources to the central plant. For example, electric utility502may provide an electricity resource508, water utility504may provide a water resource510, and natural gas utility506may provide a natural gas resource512. The lines connecting utilities502-506to resources508-512along with the directions of the lines (i.e., pointing toward resources508-512) indicate that resources purchased from utilities502-506add to resources508-512.

Plant resource diagram500is shown to include a chiller subplant520, a heat recovery (HR) chiller subplant522, a hot water generator subplant524, and a cooling tower subplant526. Subplants520-526are examples of subplants420that convert resource types (i.e., convert input resources to output resources). For example, the lines connecting electricity resource508and water resource510to chiller subplant520indicate that chiller subplant520receives electricity resource508and water resource510as input resources. The lines connecting chiller subplant520to chilled water resource514and condenser water resource516indicate that chiller subplant520produces chilled water resource514and condenser water resource516. Similarly, the lines connecting electricity resource508and water resource510to HR chiller subplant522indicate that HR chiller subplant522receives electricity resource508and water resource510as input resources. The lines connecting HR chiller subplant522to chilled water resource514and hot water resource518indicate that HR chiller subplant522produces chilled water resource514and hot water resource518.

Plant resource diagram500is shown to include water TES528and530. Water TES528-530are examples of storage530that can be used to store and discharge resources. The line connecting chilled water resource514to water TES528indicates that water TES528stores and discharges chilled water resource514. Similarly, the line connecting hot water resource518to water TES530indicates that water TES530stores and discharges hot water resource518. In diagram500, water TES528is connected to only chilled water resource514and not to any of the other water resources516or518. This indicates that water TES528can be used by asset allocator402to store and discharge only chilled water resource514and not the other water resources516or518. Similarly, water TES530is connected to only hot water resource518and not to any of the other water resources514or516. This indicates that water TES530can be used by asset allocator402to store and discharge only hot water resource518and not the other water resources514or516.

Plant resource diagram500is shown to include a chilled water load532and a hot water load534. Loads532-534are examples of sinks440that consume resources. The line connecting chilled water load532to chilled water resource514indicates that chilled water resource514can be used to satisfy chilled water load532. Similarly, the line connecting hot water load534to hot water resource518indicates that hot water resource518can be used to satisfy hot water load534. Asset allocator402can use the interconnections and limitations defined by plant resource diagram500to establish appropriate constraints on the optimization problem.

Referring now toFIG. 5B, another plant resource diagram550is shown, according to an exemplary embodiment. Plant resource diagram550represents 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 allocator402can use plant resource diagram550to identify the interconnections between various sources410, subplants420, storage430, and sinks440in the central plant. In some instances, the interconnections defined by diagram550are not capable of being inferred based on the type of resource produced. For this reason, plant resource diagram550may provide asset allocator402with new information that can be used to establish constraints on the asset allocation problem.

Plant resource diagram550is shown to include an electric utility552, a water utility554, and a natural gas utility556. Utilities552-556are examples of sources410that provide resources to the central plant. For example, electric utility552may provide an electricity resource558, water utility554may provide a water resource560, and natural gas utility556may provide a natural gas resource562. The lines connecting utilities552-556to resources558-562along with the directions of the lines (i.e., pointing toward resources558-562) indicate that resources purchased from utilities552-556add to resources558-562. The line connecting electricity resource558to electrical storage551indicates that electrical storage551can store and discharge electricity resource558.

Plant resource diagram550is shown to include a boiler subplant572, a cogeneration subplant574, several steam chiller subplants576-580, several chiller subplants582-586, and several cooling tower subplants588-592. Subplants572-592are examples of subplants420that convert resource types (i.e., convert input resources to output resources). For example, the lines connecting boiler subplant572and cogeneration subplant574to natural gas resource562, electricity resource558, and steam resource564indicate that both boiler subplant572and cogeneration subplant574consume natural gas resource562and electricity resource558to produce steam resource564.

The lines connecting steam resource564and electricity resource558to steam chiller subplants576-580indicate that each of steam chiller subplants576-580receives steam resource564and electricity resource558as input resources. However, each of steam chiller subplants576-580produces a different output resource. For example, steam chiller subplant576produces chilled water resource566, steam chiller subplant578produces chilled water resource568, and steam chiller subplant580produces chilled water resource570. Similarly, the lines connecting electricity resource558to chiller subplants582-586indicate that each of chiller subplants582-586receives electricity resource558as an input. However, each of chiller subplants582-586produces a different output resource. For example, chiller subplant582produces chilled water resource566, chiller subplant584produces chilled water resource568, and chiller subplant586produces chilled water resource570.

Chilled water resources566-570have the same general type (i.e., chilled water) but can be defined as separate resources by asset allocator402. The lines connecting chilled water resources566-570to subplants576-586indicate which of subplants576-586can produce each chilled water resource566-570. For example, plant resource diagram550indicates that chilled water resource566can only be produced by steam chiller subplant576and chiller subplant582. Similarly, chilled water resource568can only be produced by steam chiller subplant578and chiller subplant584, and chilled water resource570can only be produced by steam chiller subplant580and chiller subplant586.

Plant resource diagram550is shown to include a hot water load599and several cold water loads594-598. Loads594-599are examples of sinks440that consume resources. The line connecting hot water load599to steam resource564indicates that steam resource564can be used to satisfy hot water load599. Similarly, the lines connecting chilled water resources566-570to cold water loads594-598indicate which of chilled water resources566-570can be used to satisfy each of cold water loads594-598. For example, only chilled water resource566can be used to satisfy cold water load594, only chilled water resource568can be used to satisfy cold water load596, and only chilled water resource570can be used to satisfy cold water load598. Asset allocator402can use the interconnections and limitations defined by plant resource diagram550to establish appropriate constraints on the optimization problem.

Central Plant Controller

Referring now toFIG. 6, a block diagram of a central plant controller600in which asset allocator402can be implemented is shown, according to an exemplary embodiment. In various embodiments, central plant controller600can be configured to monitor and control central plant200, asset allocation system400, and various components thereof (e.g., sources410, subplants420, storage430, sinks440, etc.). Central plant controller600is shown providing control decisions to a building management system (BMS)606. The control decisions provided to BMS606may include resource purchase amounts for sources410, setpoints for subplants420, and/or charge/discharge rates for storage430.

In some embodiments, BMS606is the same or similar to the BMS described with reference toFIG. 1. BMS606may be configured to monitor conditions within a controlled building or building zone. For example, BMS606may 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 controller600. 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. BMS606may operate subplants420and storage430to affect the monitored conditions within the building and to serve the thermal energy loads of the building.

BMS606may receive control signals from central plant controller600specifying on/off states, charge/discharge rates, and/or setpoints for the subplant equipment. BMS606may control the equipment (e.g., via actuators, power relays, etc.) in accordance with the control signals provided by central plant controller600. For example, BMS606may operate the equipment using closed loop control to achieve the setpoints specified by central plant controller600. In various embodiments, BMS606may be combined with central plant controller600or may be part of a separate building management system. According to an exemplary embodiment, BMS606is a METASYS® brand building management system, as sold by Johnson Controls, Inc.

Central plant controller600may monitor the status of the controlled building using information received from BMS606. Central plant controller600may 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 service604). Central plant controller600may 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 programs602. Central plant controller600may generate control decisions that optimize the economic value of operating central plant200over 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 controller600is described in greater detail below.

In some embodiments, central plant controller600is integrated within a single computer (e.g., one server, one housing, etc.). In various other exemplary embodiments, central plant controller600can be distributed across multiple servers or computers (e.g., that can exist in distributed locations). In another exemplary embodiment, central plant controller600may integrated with a smart building manager that manages multiple building systems and/or combined with BMS606.

Central plant controller600is shown to include a communications interface636and a processing circuit607. Communications interface636may 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 interface636may 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 interface636may 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 interface636may be a network interface configured to facilitate electronic data communications between central plant controller600and various external systems or devices (e.g., BMS606, subplants420, storage430, sources410, etc.). For example, central plant controller600may receive information from BMS606indicating one or more measured states of the controlled building (e.g., temperature, humidity, electric loads, etc.) and one or more states of subplants420and/or storage430(e.g., equipment status, power consumption, equipment availability, etc.). Communications interface636may receive inputs from BMS606, subplants420, and/or storage430and may provide operating parameters (e.g., on/off decisions, setpoints, etc.) to subplants420and storage430via BMS606. The operating parameters may cause subplants420and storage430to activate, deactivate, or adjust a setpoint for various devices thereof.

Still referring toFIG. 6, processing circuit607is shown to include a processor608and memory610. Processor608may 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. Processor608may be configured to execute computer code or instructions stored in memory610or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.).

Memory610may 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. Memory610may 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. Memory610may 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. Memory610may be communicably connected to processor608via processing circuit607and may include computer code for executing (e.g., by processor608) one or more processes described herein.

Memory610is shown to include a building status monitor624. Central plant controller600may receive data regarding the overall building or building space to be heated or cooled by system400via building status monitor624. In an exemplary embodiment, building status monitor624may 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 controller600may determine on/off configurations and operating setpoints to satisfy the building requirements received from building status monitor624. In some embodiments, building status monitor624receives, 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 monitor624stores data regarding energy costs, such as pricing information available from sources410(energy charge, demand charge, etc.).

Still referring toFIG. 6, memory610is shown to include a load/rate predictor622. Load/rate predictor622may 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 predictor622is shown receiving weather forecasts from a weather service604. In some embodiments, load/rate predictor622predicts the thermal energy loadskas a function of the weather forecasts. In some embodiments, load/rate predictor622uses feedback from BMS606to predict loadsk. Feedback from BMS606may 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 predictor622receives a measured electric load and/or previous measured load data from BMS606(e.g., via building status monitor624). Load/rate predictor622may predict loadskas a function of a given weather forecast ({circumflex over (ϕ)}w), a day type (day), the time of day (t), and previous measured load data (Yk−1). Such a relationship is expressed in the following equation:
k=ƒ({circumflex over (ϕ)}w,day,t|Yk−1)

In some embodiments, load/rate predictor622uses a deterministic plus stochastic model trained from historical load data to predict loadsk. Load/rate predictor622may use any of a variety of prediction methods to predict loadsk(e.g., linear regression for the deterministic portion and an AR model for the stochastic portion). Load/rate predictor622may predict one or more different types of loads for the building or campus. For example, load/rate predictor622may predict a hot water loadHot,kand a cold water loadCold,kfor each time step k within the prediction window. In some embodiments, load/rate predictor622makes load/rate predictions using the techniques described in U.S. patent application Ser. No. 14/717,593.

Load/rate predictor622is shown receiving utility rates from sources410. Utility rates may indicate a cost or price per unit of a resource (e.g., electricity, natural gas, water, etc.) provided by sources410at 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 sources410or predicted utility rates estimated by load/rate predictor622.

In some embodiments, the utility rates include demand charges for one or more resources provided by sources410. A demand charge may define a separate cost imposed by sources410based 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 optimizer630may be configured to account for demand charges in the high level optimization process performed by asset allocator402. Sources410may 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 predictor622may store the predicted loadskand the utility rates in memory610and/or provide the predicted loadskand the utility rates to demand response optimizer630.

Still referring toFIG. 6, memory610is shown to include an incentive estimator620. Incentive estimator620may be configured to estimate the revenue generation potential of participating in various incentive-based demand response (IBDR) programs. In some embodiments, incentive estimator620receives an incentive event history from incentive programs602. The incentive event history may include a history of past IBDR events from incentive programs602. An IBDR event may include an invitation from incentive programs602to 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 estimator620may use the incentive event history to estimate IBDR event probabilities during the optimization period.

Incentive estimator620is shown providing incentive predictions to demand response optimizer630. 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 optimizer630may use the incentive predictions along with the predicted loadskand utility rates from load/rate predictor622to determine an optimal set of control decisions for each time step within the optimization period.

Still referring toFIG. 6, memory610is shown to include a demand response optimizer630. Demand response optimizer630may perform a cascaded optimization process to optimize the performance of asset allocation system400. For example, demand response optimizer630is shown to include asset allocator402and a low level optimizer634. Asset allocator402may control an outer (e.g., subplant level) loop of the cascaded optimization. Asset allocator402may 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 system400. Control decisions made by asset allocator402may include, for example, load setpoints for each of subplants420, charge/discharge rates for each of storage430, resource purchase amounts for each type of resource purchased from sources410, and/or an amount of each resource sold to energy purchasers504. In other words, the control decisions may define resource allocation at each time step. The control decisions made by asset allocator402are 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 optimizer634may control an inner (e.g., equipment level) loop of the cascaded optimization. Low level optimizer634may determine how to best run each subplant at the load setpoint determined by asset allocator402. For example, low level optimizer634may 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 optimizer634receives actual incentive events from incentive programs602. Low level optimizer634may determine whether to participate in the incentive events based on the resource allocation set by asset allocator402. For example, if insufficient resources have been allocated to a particular IBDR program by asset allocator402or if the allocated resources have already been used, low level optimizer634may determine that asset allocation system400will 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 storage430, low level optimizer634may determine that system400will participate in the IBDR program in response to the IBDR event. The cascaded optimization process performed by demand response optimizer630is described in greater detail in U.S. patent application Ser. No. 15/247,885, filed Aug. 25, 2016, the entirety of which is incorporated by reference herein.

In some embodiments, low level optimizer634generates and provides subplant curves to asset allocator402. 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 optimizer634generates 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 optimizer634may fit a curve to the data points to generate the subplant curves. In other embodiments, low level optimizer634provides the data points asset allocator402and asset allocator402generates the subplant curves using the data points. Asset allocator402may 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 models618. 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 inFIG. 13.

Still referring toFIG. 6, memory610is shown to include a subplant control module628. Subplant control module628may store historical data regarding past operating statuses, past operating setpoints, and instructions for calculating and/or implementing control parameters for subplants420and storage430. Subplant control module628may 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 module628may receive data from subplants420, storage430, and/or BMS606via communications interface636. Subplant control module628may also receive and store on/off statuses and operating setpoints from low level optimizer634.

Data and processing results from demand response optimizer630, subplant control module628, or other modules of central plant controller600may be accessed by (or pushed to) monitoring and reporting applications626. Monitoring and reporting applications626may 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 applications626may 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 toFIG. 6, central plant controller600may include one or more GUI servers, web services612, or GUI engines614to support monitoring and reporting applications626. In various embodiments, applications626, web services612, and GUI engine614may be provided as separate components outside of central plant controller600(e.g., as part of a smart building manager). Central plant controller600may 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 controller600may 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 controller600is shown to include configuration tools616. Configuration tools616can allow a user to define (e.g., via graphical user interfaces, via prompt-driven “wizards,” etc.) how central plant controller600should react to changing conditions in the energy storage subsystems. In an exemplary embodiment, configuration tools616allow 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 tools616can 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 tools616can 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 toFIG. 7, a block diagram of a planning tool700in which asset allocator402can be implemented is shown, according to an exemplary embodiment. Planning tool700may be configured to use demand response optimizer630to 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 tool700, demand response optimizer630may operate in a similar manner as described with reference toFIG. 6. For example, demand response optimizer630may use building loads and utility rates to determine an optimal resource allocation to minimize cost over a simulation period. However, planning tool700may not be responsible for real-time control of a building management system or central plant.

Planning tool700can 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 tool700can 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 tool700allows 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 tool700is configured to determine the battery size that minimizes SPP given the IBDR programs selected and the requirement of performing PBDR. In some embodiments, planning tool700is configured to determine the battery size that maximizes NPV given the IBDR programs selected and the requirement of performing PBDR.

In planning tool700, asset allocator402may 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 device722(e.g., user-defined, user selected, etc.) and/or retrieved from a plan information database726. Asset allocator402uses the planned loads and utility rates in conjunction with subplant curves from low level optimizer634to 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 allocator402optimizes 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 allocator402requests all of the subplant curves used in the simulation from low level optimizer634at the beginning of the simulation. Since the planned loads and environmental conditions are known for the entire simulation period, asset allocator402may retrieve all of the relevant subplant curves at the beginning of the simulation. In some embodiments, low level optimizer634generates functions that map subplant production to equipment level production and resource use when the subplant curves are provided to asset allocator402. 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 toFIG. 7, planning tool700is shown to include a communications interface704and a processing circuit706. Communications interface704may 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 interface704may 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 interface704may 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 interface704may be a network interface configured to facilitate electronic data communications between planning tool700and various external systems or devices (e.g., client device722, results database728, plan information database726, etc.). For example, planning tool700may receive planned loads and utility rates from client device722and/or plan information database726via communications interface704. Planning tool700may use communications interface704to output results of the simulation to client device722and/or to store the results in results database728.

Still referring toFIG. 7, processing circuit706is shown to include a processor710and memory712. Processor710may 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. Processor710may be configured to execute computer code or instructions stored in memory712or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.).

Memory712may 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. Memory712may 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. Memory712may 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. Memory712may be communicably connected to processor710via processing circuit706and may include computer code for executing (e.g., by processor710) one or more processes described herein.

Still referring toFIG. 7, memory712is shown to include a GUI engine716, web services714, and configuration tools718. In an exemplary embodiment, GUI engine716includes 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 services714may allow a user to interact with planning tool700via a web portal and/or from a remote system or device (e.g., an enterprise control application).

Configuration tools718can 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 tools718can 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 database726) and adapt it or enable it for use in the simulation.

Still referring toFIG. 7, memory712is shown to include demand response optimizer630. Demand response optimizer630may use the planned loads and utility rates to determine an optimal resource allocation over a prediction window. The operation of demand response optimizer630may be the same or similar as previously described with reference toFIG. 6. With each iteration of the optimization process, demand response optimizer630may 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 optimizer630may use the new plan information at the end of the prediction window to perform the next iteration of the optimization process. Demand response optimizer630may output the applied resource allocation to reporting applications730for presentation to a client device722(e.g., via user interface724) or storage in results database728.

Still referring toFIG. 7, memory712is shown to include reporting applications730. Reporting applications730may receive the optimized resource allocations from demand response optimizer630and, in some embodiments, costs associated with the optimized resource allocations. Reporting applications730may 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 applications730is shown inFIG. 8.

Referring now toFIG. 8, several graphs800illustrating the operation of planning tool700are shown, according to an exemplary embodiment. With each iteration of the optimization process, planning tool700selects an optimization period (i.e., a portion of the simulation period) over which the optimization is performed. For example, planning tool700may select optimization period802for use in the first iteration. Once the optimal resource allocation810has been determined, planning tool700may select a portion818of resource allocation810to send to plant dispatch830. Portion818may be the first b time steps of resource allocation810. Planning tool700may shift the optimization period802forward in time, resulting in optimization period804. The amount by which the prediction window is shifted may correspond to the duration of time steps b.

Planning tool700may repeat the optimization process for optimization period804to determine the optimal resource allocation812. Planning tool700may select a portion820of resource allocation812to send to plant dispatch830. Portion820may be the first b time steps of resource allocation812. Planning tool700may then shift the prediction window forward in time, resulting in optimization period806. This process may be repeated for each subsequent optimization period (e.g., optimization periods806,808, etc.) to generate updated resource allocations (e.g., resource allocations814,816, etc.) and to select portions of each resource allocation (e.g., portions822,824) to send to plant dispatch830. Plant dispatch830includes the first b time steps818-824from each of optimization periods802-808. Once the optimal resource allocation is compiled for the entire simulation period, the results may be sent to reporting applications730, results database728, and/or client device722, as described with reference toFIG. 7.

Asset Allocator

Referring now toFIG. 9, a block diagram illustrating asset allocator402in greater detail is shown, according to an exemplary embodiment. Asset allocator402may be configured to control the distribution, production, storage, and usage of resources in a central plant. As discussed above, asset allocator402can 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 allocator402. The cost function J(x) may account for the cost of resources purchased from sources410, as well as the revenue generated by selling resources to resource purchasers441or energy grid442or participating in incentive programs.

In some embodiments, asset allocator402performs 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 sources410, an optimal amount of each resource to produce or convert using subplants420, an optimal amount of each resource to store or remove from storage430, an optimal amount of each resource to sell to resources purchasers441or energy grid440, and/or an optimal amount of each resource to provide to other sinks440. In some embodiments, asset allocator402is 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 allocator402is described as actively identifying or defining various items (e.g., sources410, subplants420, storage430, sinks440, operational domains, etc.). However, it should be understood that asset allocator402can 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 allocator402can 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 allocator402identifying, detecting, receiving, or otherwise obtaining a predefined item an input.

Optimization Framework

Asset allocator402is shown to include an optimization framework module902. Optimization framework module902can be configured to define an optimization framework for the optimization problem solved by asset allocator402. In some embodiments, optimization framework module902defines 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 module902has the following form:

minx,zcxT⁢x+czT⁢z
subject to the following constraints:
Axx+Azz≤b
Hxx+Hzz=g
z=integer
where x∈nxis a vector of the continuous decision variables, z∈nzis a vector of the integer decision variables, cxand czare the respective cost vectors for the continuous decision variables and integer decision variables, Ax, Az, and b are the matrices and vector that describe the inequality constraints, and Hx, Hz, and g are the matrices and vector that describe the equality constraints.

Optimization Problem Construction

Still referring toFIG. 9, asset allocator402is shown to include an optimization problem constructor910. Optimization problem constructor910can be configured to construct the high level (i.e., asset allocation) optimization problem solved by asset allocator402. In some embodiments, the high level optimization problem includes one or more of the elements of asset allocation system400. For example, the optimization problem can include sinks440, sources410, subplants420, and storage430, as described with reference toFIG. 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 constructor910includes a set of links between sources410, subplants420, storage430, sinks440, or other elements of the optimization problem. For example, the high level optimization problem can be viewed as a directed graph, as shown inFIGS. 5A-5B. The nodes of the directed graph can include sources410, subplants420, storage430, and sinks440. 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 constructor910includes 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 constructor910may have the following form:

In some embodiments, the optimization problem generated by optimization problem constructor910includes 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 subplants420, state of charge (SOC) and storage capacity constraints for each of storage430, 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 module904(described in greater detail below). The decision variable constraints may be box constraints of the form xlb≤x≤xub, where x is a decision variable and xlband xubare the lower and upper bound for the decision variable x.

The optimization problem generated by optimization problem constructor910can be considered a finite-horizon optimal control problem. The optimization problem may take the form:
minimizeJ(x)
subject to resource balances, operational domains for subplants420(e.g., subplant curves), constraints to predict the SOC of storage430, 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 constructor910applies 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 sources410, the total amount of the resource produced by all of subplants420, the total amount of the resource discharged from storage430(negative values indicate charging storage430), 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 subplants420and airside units, overmet load, and the total amount of the resource sold. For example, the inventory balance for a resource may have the form:

Optimization problem constructor910may 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 predictor622and 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 constructor910. 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 sinks440, sources410, subplants420, storage430, or airside unit.

Element Models

Still referring toFIG. 9, asset allocator402is shown to include element models930. Element models930may store definitions and/or models for various elements of the high level optimization problem. For example, element models930are shown to include sink models932, source models934, subplant models936, storage models938, and element links940. In some embodiments, element models930include data objects that define various attributes or properties of sinks440, sources410, subplants420, and storage430(e.g., using object-oriented programming).

For example, source models934may define the type of resource provided by each of sources410, 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 sources410, and other attributes of sources410. Similarly, subplant models936may define the input resources of each subplant420, the output resources of each subplant420, relationships between the input and output variables of each subplant420(i.e., the operational domain of each subplant420), and optimization constraints associated with each of subplants420. Each of element models930are described in greater detail below.

Sink Models

Element models930are shown to include sink models932. Sink models932may store models for each of sinks440. As described above, sinks440may include resource consumers or requested loads. Some examples are the campus thermal loads and campus electricity usage. The predicted consumption of a sink440over the optimization period can be supplied as an input to asset allocator402and/or computed by load/rate predictor622. Sink models932may store the predicted consumption over the optimization period for each of sinks440. Sink models932may also store any unmet/overmet load for each of sinks440, carryover from the previous time steps, and any incentives earned by supplying each of sinks440(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 allocator402determines 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 allocator402adds a forgetting factor to the carryover. For example, asset allocator402can calculate the carryover for each time step using the following equation:
carryoverj+1=γj·unmet/overmetj
where unmet/overmetjis the amount of unmet and/or overmet load at time step j, carryoverj+1is 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 γjmay 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 toFIG. 9, element models930are shown to include source models934. Source models934may store models for each of sources410. As described above, sources410may include utilities or markets where resources may be purchased. Source models934may store a price per unit of a resource purchased from each of sources410(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 models934store 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 sources410.

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 sources410. In some embodiments, demand charges are defined as follows:

wc⁢maxi∈Tdemand{xi}
where xirepresents the resource purchase at time step i of the optimization period, c>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 Tdemand⊆{1, . . . , h} is the subinterval of the optimization period to which the demand charge is applied. Source models934can store values for some or all of the parameters that define the demand charges and the demand charge periods.

In some embodiments, asset allocator402accounts 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 module906. 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 models934store parameters of various incentive programs offered by sources410. For example, the source definition934for 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 models934define 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 models934may also define a decision variable that indicates whether to participate in the incentive program. In asset allocator402, storage capacity may be reserved for participation in incentive programs. Low level optimizer634can 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 models934store pricing information for the resources sold by sources410. 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 toFIG. 10, a graph1000depicting 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:

In the cost function J(x), the following term can be used to describe progressive rates:

maxi∈{1,2,3}{pi⁢u+bi}
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
p1u+b1≤C
p2u+b2≤C
p2u+b2≤C
where C is the auxiliary variable that is equal to the cost of the resource. Source models934can define these constraints in order to enable progressive rate structures in the optimization problem.

In some embodiments, source models934stores definitions of any fixed costs associated with resource purchases from each of sources410. These costs can be captured within the MILP framework. For example, let v∈{0,1} represent whether a source410is being utilized (v=0 means the source410is not used and v=1 means the source410is used) and let u∈[0, umax] be the source usage where umaxrepresents the maximum usage. If the maximum usage is not known, umaxmay be any arbitrarily large number that satisfies u<umax. Then, the following two constraints ensure that the binary variable v is zero when u=1 and is one when u>0:
u−umaxv≤0
u≥0
Asset allocator402can add the term cfixedv to the cost function to account for fixed costs associated with each of sources410, where cfixedis the fixed cost. Source models934can define these constraints and terms in order to account for fixed costs associated with sources410.

Referring again toFIG. 9, element models930are shown to include subplant models936. Subplant models936may store models for each of subplants420. As discussed above, subplants420are the main assets of a central plant. Subplants420can be configured to convert resource types, making it possible to balance requested loads from the building or campus using resources purchased from sources410. 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 models936identify each of subplants420as 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 models936describe the relationships between the optimization variables of each subplant. For example, subplant models936can 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 models936store subplant constraints for each of subplants420. Subplant constraints may be written in the following general form:
Ax,jxj+Az,jzj≤bj
Hx,jxj+Hz,jzj=gj
xlb,j≤xj≤xub,j
zlb,j≤zj≤zub,j
zj=integer
for all j where j is an index representing the jth subplant, xjdenotes the continuous variables associated with the jth subplant (e.g., resource variables and auxiliary optimization variables), and zidenotes the integer variables associated with the jth subplant (e.g., auxiliary binary optimization variables). The vectors xlb,j, xub,j, zlb,j, and zub,jrepresent the box (bound) constraints on the decision variables. The matrices Ax,j, Az,j, Hx,j, and Hz,jand the vectors bjand gjare associated with the inequality constraints and the equality constraints for the jth subplant.

In some embodiments, subplant models936store 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 subplant422, this data may include several points sampled from the subplant curve1300(shown inFIG. 13). When implemented as part of an online operational tool (shown inFIG. 6), the high level subplant operational domain can be sampled by querying low level optimizer634at several requested production amounts. When implemented as part of an offline planning tool (shown inFIG. 7), the sampled data may be user-specified efficiency and capacity data.

Storage Models

Referring again toFIG. 9, element models930are shown to include storage models938. Storage models938may store models for each of storage430. Storage models938can define the types of resources stored by each of storage430, as well as storage constraints that limit the state-of-charge (e.g., maximum charge level) and/or the rates at which each storage430can be charged or discharged. In some embodiments, the current level or capacity of storage430is 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 models938. 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 storage430. 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 allocator402can be configured to add constraints based on the operational domain of storage430. 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 storage430to 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 storage430.

In some embodiments, storage models938store optimization constraints for each of storage430. Storage constraints may be written in the following general form:
Ax,kxk+Az,kzk≤bk
Hx,kxk+Hz,kzk=gk
xlb,k≤xk≤xub,k
zlb,k≤zk≤zub,k
zk=integer
for all k where k is an index representing the kth storage device, xkdenotes the continuous variables associated with the kth storage device (e.g., resource variables and auxiliary optimization variables), and zkdenotes the integer variables associated with the kth storage device (e.g., auxiliary binary optimization variables). The vectors xlb,k, xub,k, zlb,k, and zub,krepresent the box (bound) constraints on the decision variables. The matrices Ax,k, Az,k, Hx,k, and Hz,kand the vectors bkand gkare 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 storage430is maintained between a minimum SOC Qminand a maximum SOC Qmax. The optimization constraints may also ensure that the charge/discharge rate is maintained between a minimum charge rate {dot over (Q)}minand maximum charge rate {dot over (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 storage430are full at the end of the optimization period (i.e., “tank forced full” constraints).

In some embodiments, storage models938store mixed constraints for each of storage430. Mixed constraints may be needed in the case that the operational domain of storage430is similar to that shown inFIG. 11.FIG. 11is a graph1100of an example operational domain for a thermal energy storage tank or thermal energy storage subplant (e.g., TES subplants431-432). Graph1100illustrates 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 subplants431-432and the TES tanks that form TES subplants431-432, the SOC represents the fraction of the current tank level or:

ϕ=Q-QminQmax-Qmin
where Q is the current tank level, Qminis the minimum tank level, Qmaxis 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 models938store SOC models for each of storage430. The SOC model for a thermal energy storage tank may be an integrator model given by:

ϕ⁡(k+1)=ϕ⁡(k)=δ⁢ts⁢Q.(k)Qmax-Qmin
where {dot over (Q)}(k) is the charge/discharge rate and δts. Positive values of {dot over (Q)}(k) represent discharging, whereas negative values of {dot over (Q)}(k) represent charging. The mixed constraints depicted inFIG. 11can be accounted for as follows:
amixedϕ(k)bmixed≤{dot over (Q)}(k)
0≤ϕ(k)≤1
−{dot over (Q)}charge,max≤{dot over (Q)}(k)≤{dot over (Q)}discharge,max
where amixedand bmixedare 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 models938include 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 storage430is 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 storage430. 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)=Ax(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 toFIG. 9, element models930are shown to include element links940. In some embodiments, element links940define the connections between sources410, subplants420, storage430, and sinks440. These links940are shown as lines connecting various elements in plant resource diagrams500and550. For example, element links940may define which of sources410provide resources to each of subplants420, which subplants420are connected to which storage430, and which subplants420and/or storage430provide resources to each of sinks440. Element links940may contain the data and methods needed to create and solve an instance of the high level optimization problem.

In some embodiments, element links940link sources410, subplants420, storage430, and sinks440(i.e., the high level problem elements) using a netlist of connections between high level problem elements. The information provided by element links940may allow multiple subplants420, storage430, sinks440, 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 links940can 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 subplants420produce a first resource of a given type (e.g., Chilled Water A), whereas a second subset of subplants420produce a second resource of the same type (e.g., Chilled Water B). Such a configuration is shown inFIG. 5B. Advantageously, element links940can be used to build constraints that reflect the actual physical connections between equipment in a central plant.

In some embodiments, element links940are used to account for the distribution costs of resources between elements of asset allocation system400(e.g., from sources410to subplants420, from subplants420to sinks440, 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 subplant420that is highly efficient and can provide a chilled water resource to sinks440, but it costs significantly more (e.g., due to pumping costs etc.) to transport the resource from the first chiller subplant420rather than from a second chiller subplant420. In that scenario, asset allocator402may determine that the first chiller subplant420should 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:

The cost function can be modified to account for transportation costs as follows:

where λconnectionis the cost per unit resource transported along a particular connection and resourceconnectionis 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 system400.

Demand Charges

Still referring toFIG. 9, asset allocator402is shown to include a demand charge module906. Demand charge module906can 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 sources410based on the peak consumption of a resource from sources410during 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 from410are 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. 17, 2001 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 module906may be configured to account for demand charges in the high level optimization process performed by asset allocator402. In some embodiments, demand charge module906incorporates 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:

The demand charge mask may be a logical vector including an element gs,q,ifor each time step i that occurs during the optimization period. Each element gs,q,iof 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 gs,q,imay have a value of one (i.e., gs,q,i=1) if demand charge q is active during time step i and a value of zero (i.e., gs,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:
gs,q=[0,0,0,1,1,1,1,0,0,0,1,1]T
where gs,q,1, gs,q,2, gs,q,3, gs,q,8gs,q,9, and gs,q,10have values of zero, whereas gs,q,4, gs,q,5, gs,q,6, gs,q,7, gs,q,11, and gs,q,12have values of one. This indicates that the demand charge q is inactive during time steps i=1, 2, 3, 8, 9, 10 (i.e., gs,q,i=0 ∀i=1, 2, 3, 8, 9, 10) and active during time steps i=4, 5, 6, 7, 11, 12 (i.e., gs,q,i=1 ∀i=4, 5, 6, 7, 11, 12). Accordingly, the term gs,q,ipurchases,iwithin 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 module906calculates the weighting factor wdemand,s,qfor each demand charge q in the cost function J(x). The weighting factor wdemand,s,qmay 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 module906can calculate the weighting factor wdemand,s,qusing the following equation:

wdemand,s,q=∑i=kk+h-1ℊs,q,i∑i=k+hperiod_en⁢dℊ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 module906can 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 module906can modify the cost function J(x) to account for the N demand charges as shown in the following equation:

J⁡(x)=…+wd1⁢rd1⁢maxi(ℊ1i(-Pbati+eLoadi))+…+wdq⁢rdq⁢maxi(ℊqi(-Pbati+eLoadi))+…+wdN⁢rdN⁢maxi(ℊNi(-Pbati+eLoadi))
where the term −Pbati+eLoadirepresents the total amount of electricity purchased from the electric grid during time step i (i.e., the total electric load eLoadiminus the power discharged from the battery Pbati). 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 rdqindicates the demand charge rate associated with the qth demand charge (e.g., $/kW) and the weighting factor wdqindicates the weight applied to the qth demand charge.

Demand charge module906can augment each max( ) function with an element gqiof 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 rdqand the corresponding demand charge weighting factor wdqto determine the total demand charge resulting from the battery allocation Pbatover the duration of the optimization period.

In some embodiments, demand charge module906linearizes the demand charge terms of the cost function J(x) by introducing an auxiliary variable dqfor each demand charge q. In the case of the previous example, this will result in N auxiliary variables d1. . . dNbeing introduced as decision variables in the cost function J(x). Demand charge module906can modify the cost function J(x) to include the linearized demand charge terms as shown in the following equation:
J(x)= . . . +wd1rd1d1+ . . . +wdqrdqdq+ . . . +wdNrdNdN

Demand charge module906can impose the following constraints on the auxiliary demand charge variables d1. . . dNto ensure that each auxiliary demand charge variable represents the maximum amount of electricity purchased from the electric utility during the applicable demand charge period:

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 gq. Furthermore, the value of the auxiliary demand charge variable dqat each iteration of the optimization may act as the lower bound of the value of the auxiliary demand charge variable dqat 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 module906may introduce three auxiliary demand charge variables. The first auxiliary demand charge variable d1corresponds to the all-time monthly demand charge; the second auxiliary demand charge variable d2corresponds to the on-peak monthly demand charge; and the third auxiliary demand charge variable d3corresponds to the partial-peak monthly demand charge. Demand charge module906can 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 module906can generate a demand charge mask gqfor each of the three demand charges (i.e., q=1 . . . 3), where gqincludes an element for each time step of the optimization period (i.e., gq=[gq1. . . gq24]). The three demand charge masks can be defined as follows:
g1i=1∀i=1 . . . 24
g2i=1∀i=12 . . . 18
g3i=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 module906considers 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 module906can translate any demand charge structure into this framework. For example, demand charge module906can characterize each demand charge by rates, demand charge period start, demand charge period end, and active hours. Advantageously, this allows demand charge module906to incorporate multiple demand charges in a generally-applicable format.

The following is another example of how demand charge module906can 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 module906can 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 module906can set the demand charge period start and period end to the beginning and end of a year. For the annual demand charge, demand charge module906can 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 module906can represent the demand charge as an annual demand charge. Demand charge module906can set the demand charge period start and end to the beginning and end of a year. Demand charge module906can 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 module906can 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 module906are 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 toFIG. 9, asset allocator402is shown to include an incentive program module908. Incentive program module908may 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 system400may 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 system400may reduce its demand for resources from a utility as part of a load shedding program. It is contemplated that asset allocation system400may participate in any number and/or type of IBDR programs.

In some embodiments, incentive program module908modifies 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 module908can modify the cost function J(x) to include the following term:

minbi,Pbati(-∑k+h-1i=kbi⁢rELDRi(adjCBLi-(eLoadi-Pbati)))
where biis a binary decision variable indicating whether to participate in the ELDR program during time step i, rELDRiis the ELDR incentive rate at which participation is compensated, and adjCBLiis the symmetric additive adjustment (SAA) on the baseline load. The previous expression can be rewritten as:

In some embodiments, incentive program module908handles 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 module908can 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 module908calculates the participation vector bias follows:

bi={1∀i/rDAi≥NBTi⁢and⁢i∈S0otherwise
where rDAiis the hourly day-ahead price at the ith hour, NBTiis 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 module908to determine when to participate in ELDR, incentive program module908can adjust the cost function J(x) as follows:

J⁡(x)=-∑i=kk+h-1rei⁢Pbati-∑i=kk+h-1rFRi⁢PFRi+∑i=kk+h-1rsi⁢si+wd⁢rd⁢d-∑i=kk+h-1bi⁢rDAi(∑p=m-4m-2-13⁢Pbatp+Pbati)
where biand 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 optimizer632will 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 optimizer632may 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 constructor910may query the number of decision variables and constraints that each subplant420, source410, storage430, and site specific constraint adds to the problem. In some embodiments, optimization problem constructor910creates 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 constructor910may pre-allocate the optimization matrices and vectors for the problem. Element links940can then be used to fill in the optimization matrices and vectors by querying each component. The constraints associated with each subplant420can 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 allocator402is configured to optimize the use of extrinsic variables. Extrinsic variables can include controlled or uncontrolled variables that affect multiple subplants420(e.g., condenser water temperature, external conditions such as outside air temperature, etc.). In some embodiments, extrinsic variables affect the operational domain of multiple subplants420. 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 allocator402may produce variables for the condenser water temperature. In the third scenario, asset allocator402may 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 allocator402. 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 allocator402may recognize the shared optimization variable as the same variable from the connection netlist.

When asset allocator402asks for constraints from the individual subplants420, subplants420may send those constraints using local indexing. Asset allocator402may 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 allocator402and can be added constraints to any of the ports or connections of subplants420. 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 toFIGS. 9 and 12, asset allocator402is shown to include an operational domain module904. Operational domain module904can be configured to generate and store operational domains for various elements of the high level optimization problem. For example, operational domain module904can create and store operational domains for one or more of sources410, subplants420, storage430, and/or sinks440. The operational domains for subplants420may 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 sources410may include the constraints necessary to impose any progressive/regressive rates (other than demand charges). The operational domain for storage430may 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 allocator402to 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 module904can be used to define and impose constraints on the high level optimization problem.

Referring particularly toFIG. 12, a block diagram illustrating operational domain module904in greater detail is shown, according to an exemplary embodiment. Operational domain module904can be configured to construct an operational domain for one or more elements of asset allocation system400. In some embodiments, operational domain module904converts 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 allocator402much 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.

Referring now toFIGS. 12 and 14, the components and functions of operational domain module904are described.FIG. 14is a flowchart outlining the constraint generation process1400performed by operational domain module904. Process1400is shown to include collecting samples of data points within the operational domain (step1402). In some embodiments, step1402is performed by a data gathering module1202of operational domain module904. Step1402can include sampling the operational domain (e.g., the high level subplant curve). For the operational tool (i.e., central plant controller600), the data sampling may be performed by successively calling low level optimizer634. For the planning tool700, the data may be supplied by the user and asset allocator402may automatically construct the associated constraints.

In some embodiments, process1400includes sorting and aggregating data points by equipment efficiency (step1404). Step1404can be performed when process1400is performed by planning tool700. If the user specifies efficiency and capacity data on the equipment level (e.g., provides data for each chiller of the subplant), step1404can be performed to organize and aggregate the data by equipment efficiency.

The result of steps1402-1404is shown inFIG. 15A.FIG. 15Ais a plot1500of several data points1502collected in step1402. Data points1502can be partitioned into two sets of points by a minimum turndown (MTD) threshold1504. The first set of points includes a single point1506representing 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 points1502between the MTD threshold1504and the maximum capacity1508of the chiller subplant.

Process1400is shown to include generating convex regions from different sets of the data points (step1406). In some embodiments, step1406is performed by a convex hull module1204of operational domain module904. 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 module1204can 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 module1204uses the convex hull algorithm of Matlab (i.e., “convhulln”), which executes an n-dimensional convex hull algorithm. Convex hull module1204can identify the output of the convex hull algorithm as the vertices of the convex hull.

The result of step1406applied to the chiller subplant example is shown inFIG. 15B.FIG. 15Bis a plot1550of two convex regions CR-1and CR-2. Point1506is the output of the convex hull algorithm applied to the first set of points. Since only a single point1506exists in the first set, the first convex region CR-1is the single point1506. The points1510,1512,1514, and1516are the output of the convex hull algorithm applied to the second set of points between the MTD threshold1504and the maximum capacity1508. Points1510-1516define the vertices of the second convex region CR-2.

Process1400is shown to include generating constraints from vertices of the convex regions (step1408). In some embodiments, step1408is performed by a constraint generator1206of operational domain module904. The result of step1408applied to the chiller subplant example is shown inFIG. 16.FIG. 16is a plot1600of the operational domain1602for the chiller subplant. Operational domain1602includes the set of points contained within both convex regions CR-1and CR-2shown in plot1550. These points include the origin point1506as well as all of the points within area1604.

Constraint generator1206can be configured to convert the operational domain1602and/or the set of vertices that define the operational domain1602into 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.

In some embodiments, constraint generator1206uses 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 ofdis called a convex polyhedron if it is the set of solutions to a finite system of linear inequalities (i.e., P={x:ajTx≤bj,j=1 . . . m}). Note that this definition also allows for linear equalities because an equality may be written as two inequalities. For example, cjx=djis equivalent to [cj, −cj]Tx≤[dj, −dj]T. A convex polytope is a bounded convex polyhedron. Because the capacity of any subplant is bounded, constraint generator1206may exclusively work with convex polytopes.

In some embodiments, the MILP formulation used by constraint generator1206to define the operational domain is the logarithmic disaggregated convex combination model (D Log). The advantage of the D Log 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 generator1206can use the D Log 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: y1∈{0,1} and y2∈{0,1} where the first variable y1represents the first digit of the binary numbering and the second variable y2represents the second digit of the binary numbering. If y1=0 and y2=0, the zeroth convex region is active. Similarly, y1=1 and y2=0, the second convex region is active. In the D Log 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 generator1206formulates the D Log model as follows: letbe the set of polytopes that describes the operational domain (i.e.,represents the collection of convex regions that make up the operational domain). Let Pi∈(i=1, . . . , nCR) be the ith polytope which describes the ith convex region of the operational domain. Let V(Pi) be the vertices of the ith polytope, and let V():=∪P∈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 λPi,viwhere the subscripts denote that the continuous variable is for the jth vertex of the ith polytope. For this formulation, ┌ log2|| ┐ binary variables are needed where the function ┌·┐ denotes the ceiling function (i.e., ┌x┐ is the smallest integer not less than x. Constraint generator1206can define an injective function B:→{0,1}┌log2||┐. The injective function may be interpreted as the binary numbering of the convex regions.

In some embodiments, the D Log formulation is given by:
ΣPEΣvEV(P)λP,vv=x
λP,vv≥0,∀P∈,v∈V(P)
ΣPEΣv∈V(P)λP,v=1
ΣPE+(B,l)Σv∈V(P)λP,v≤yl,∀l∈L(P)
ΣPE0(B,l)Σv∈V(P)λP,v≤(1−yl),∀l∈L(P)
yl∈{0,1},∀l∈L(P)
where+(B,l):={P∈:B(P)l=1},0(B,l):={P∈:B(P)l=0}, and L(P):={1, . . . , log2||}. 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) and0(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(P0)=[0,0]T, B(P1)=[0,1]T, B(P2)=[1,0]T, and B(P3)=[1,1]T. Also, for example, the sets+(B, 0):={P∈:B(P)0=1}=P2∪P3and P0(B, 0):={P∈:B(P)0=0}=P0∪P1.

Box Constraints

Still referring toFIG. 12, operational domain module904is shown to include a box constraints module1208. Box constraints module1208can be configured to adjust the operational domain for a subplant420in the event that a device of the subplant420is 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 optimizer634can be used as an alternative to the adjustment performed by box constraints module1208. However, reconstructing the operational domain in this manner may be time consuming. The adjustment performed by box constraints module1208may 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 module1208is 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 module1208determines the admissible operational interval (e.g., the subplant production) using an algorithm that constructs the union of intervals. Box constraints module1208may 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 module1208can 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:
lball,combosT=[0]*[0lbT]
uball,combosT=[0]*[0ubT]
where lball,combosand uball,combosare 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 lball,combosand uball,combosare subintervals of admissible operating ranges. In some embodiments, box constraints module1208computes the overall admissible operating range by computing the union of the subintervals.

To compute the union of the subintervals, box constraints module1208can define the vector v as follows:
v:=[lball,combosT,uball,combosT]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 pi≤n where n is the dimension of lball,combosand uball,combos, the ith element of t is a lower bound. However, if pi>n, the ith element of t is an upper bound. Box constraints module1208may 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 module1208may add one to the counter. However, if the element corresponds to an upper bound, box constraints module1208may subtract one from the counter. Once the counter is set to zero, box constraints module1208may determine that the end of the subinterval is reached. An example of this process is illustrated graphically inFIGS. 17A-17B.

Referring now toFIGS. 17A-17B, a pair of graphs1700and1750illustrating the operational domain update procedure performed by box constraints module1208is 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:
lball,combosT=[0.0,2.0,3.0,5.0,6.0,8.0]
uball,combosT=[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 inFIG. 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, fromFIG. 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):
lball,combosT=[0.0,3.0,6.0]
uball,combosT=[0.0,5.0,10.0]

The result of applying the counter algorithm to these convolutions with the third device unavailable is shown graphically inFIG. 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. FromFIG. 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 module1208can generate box constraints to ensure that the independent variable is maintained within the admissible range. Box constraints module1208can 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 module1208can 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 xlb≤x≤xubwhere x is an optimization variable and xlband xubare the lower and upper bound, respectively, for the optimization variable x.

In some embodiments, box constraints module1208removes an end portion of a convex region from the operational domain. This is referred to as slicing the convex region and is shown graphically inFIGS. 18A-18B. For example,FIG. 18Ais a graph1800of an operational domain which includes a convex region CR-2. A first part1802of the convex region CR-2is within the operational range determined by box constraints module1208. However, a second part1804of the convex region CR-2is outside the operational range determined by box constraints module1208. Box constraints module1208can remove the second part1804from the convex region CR-2by 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-2shown in graph1850.

In some embodiments, box constraints module1208removes a middle portion of a convex region from the operational domain. This is referred to as splitting the convex region and is shown graphically inFIGS. 19A-19B. For example,FIG. 19Ais a graph1900of an operational domain which includes a convex region CR-2. A first part1902of the convex region CR-2is within the operational range between lower bound1908and upper bound1910. Similarly, a third part1906of the convex region CR-2is within the operational range between lower bound1912and upper bound1914. However, a second part1904of the convex region CR-2is outside the split operational range. Box constraints module1208can remove the second part1904from the convex region CR-2by 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-2and CR-3shown in graph1950.

In some embodiments, box constraints module1208removes 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 module1208merges two or more separate convex regions. The merging operation effectively reduces the model fidelity (described in greater detail below).

Box constraints module1208can 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 module1208can 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 process1400. 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 module1208.

Cross Section Constraints

Still referring toFIG. 12, operational domain module904is shown to include a cross section constraints module1210. Cross section constraints module1210can 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:
Ax,jxj+Az,jzj+Ay,jyj≤bj
Hx,jxj+Hz,jzj+Hy,jyj=gj
xlb,j≤xj≤xub,j
zlb,j≤zj≤zub,j
zj=integer
where xjis a vector consisting of the continuous decision variables, zjis a vector consisting of the discrete decision variables, yjis a vector consisting of all the parameters, and Hy,jand Ay,jare the constraint matrices associated with the parameters. Cross section constraints module1210can 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 module1210retains the parameters in vector yjas 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:
Ax,jxj+Az,jzj+Ay,jyj≤bj
Hx,jxj+Hz,jzj+Hy,jyj=gj
xlb,j≤xj≤xub,j
zlb,j≤zj≤zub,j
yj=p
zj=integer
where p is a vector of fixed values (e.g., measured or estimated parameter values).

In other embodiments, cross section constraints module1210substitutes 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:
Ax,jxj+Az,jzj≤bj
Hx,jxj+Hz,jzj=gj
xlb,j≤xj≤xub,j
zlb,j≤zj≤zub,j
zj=integer
wherebj=b1−Ay,jp andgj=gj=Hy,jp

In some embodiments, cross section constraints module1210is 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 module1210can 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 module1210can 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 module1210. 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 module1210can 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 module1210can 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 asx=x−c. After shifting the polytope, cross section constraints module1210can 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:yTx≤1,∀x∈P}. Cross section constraints module1210can 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 module1210can identify the corresponding constraint as redundant and may remove the redundant constraint.

Referring now toFIGS. 20A-20D, several graphs2000,2020,2040, and2060illustrating the redundant constraint detection and removal process are shown, according to an exemplary embodiment. Graph2000is shown to include the boundaries2002of several constraints computed after taking the cross section of higher dimensional constraints. The constraints bounded by boundaries2002are represented by the following inequalities:
x1−x2≤−1
2x1−x2≤1
− 3/2x1+x2≤0
−x1+x2≤0
The operational domain is represented by a polytope with vertices2006. Point2004can be identified as a point that lies strictly on the interior of the polytope.

Graph2020shows 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.,x1andx2) with the origin2022(i.e.,x1=0 andx2=0) located within the polytope. Graph2040shows the result of computing the vertices2044of the dual polytope2042, which may be defined by the set P*={y:yTx≤1, ∀x∈P}. Graph2060shows the result of computing the convex hull of the dual polytope vertices2044and removing any constraints that correspond to vertices2044of the dual polytope but not to vertices of the convex hull. In this example, the constraint x1−x2≤−1 is removed, resulting in the feasible region2062.

Referring now toFIGS. 21A-21B, graphs2100and2150illustrating the cross section constraint generation process performed by cross section constraints module1210is shown, according to an exemplary embodiment. Graph2100is 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. Graph2100is shown to include a three-dimensional surface2100defined 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 surface2102. The three-dimensional operational domain is described by the following set of constraints:

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 section2104along the plane y=1. Cross section constraints module1210can generate the following cross section constraints to represent the two-dimensional cross section of the original three-dimensional operational domain:

-53⁢x+z≤1⁢x-z≤-1⁢2⁢x-z≤0
which are represented by boundaries2154in graph2150. The resulting two-dimensional operational domain is shown as feasible region2152in graph2150.

Rate of Change Penalties

Referring again toFIG. 12, operational domain module904is shown to include a rate of change penalties module1212. Rate of change penalties module1212can 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|Δxk|=cΔx,k|xk−xk−1|
where xkdenotes the value of the decision variable x at time step k, xk−1denotes the variable value at time step k−1, and cΔx,kis the penalty weight for the rate of change of the variable at the kth time step.

In some embodiments, rate of change penalties module1212introduces an auxiliary variable Δxkfor k∈{1, . . . , h}, which represents the rate of change of the decision variable x. This may allow asset allocator402to solve the high level optimization with the rate of change penalty using linear programming. Rate of change penalties module1212may 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:
xk−1−xk≤Δxk
xk−xk−1≤Δxk
Δxk≥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:

Rate of Change Constraints

Still referring toFIG. 12, operational domain module904is shown to include a rate of change constraints module1214. 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 Δxkbetween upper bounds Δxub,kand lower bounds Δxlb,k
Δxlb,k≤Δxxk≤Δxub,k
where Δxk=xk−xk−1, Δxlb,k<0, and Δxub,k>0.

The inequality constraints associated with these rate of change constraints are given by the following structure:

Still referring toFIG. 12, operational domain module904is shown to include a storage/airside constraints module1216. Storage/airside constraints module1216can 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 module1216can 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:
xk+1=Axk+Buk
where xkdenotes the state (e.g., state of charge) at time k and ukdenotes the input at time k. In general, both the state xkand input ukmay be vectors. To solve the dynamic model over h time steps, storage/airside constraints module1216may 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 x0.

The state xkand input ukcan be constrained by the following box constraints:
xlb,k≤xk≤xub,k
ulb,k≤uk≤uub,k
for all k, where xlb,kis the lower bound on the state xk, xub,kis the upper bound on the state xk, ulb,kis the lower bound on the input uk, and uub,kis the upper bound on the input uk. 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 xkat any given time step is a function of the initial condition x0and 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 xkmay have the following structure:

[⋱⋮⋮⋮⋮⋮⋰⋯B00⋯0⋯⋯ABB0⋯0⋯⋯A2⁢BABB⋯0⋯⋯⋮⋮⋮⋱⋮⋯⋯Ah-1⁢BAh-2⁢BAh-3⁢B⋯B⋯⋰⋮⋮⋮⋮⋮⋱][⋮u0u1u2⋮uh-1⋮]≤[⋮xub,1-Ax0xub,2-A2⁢x0xub,3-A3⁢x0⋮xub,h-Ah⁢x0⋮]
Similarly, the inequality constraints associated with the lower bound on the state xkmay have the following structure:

In some embodiments, more general constraints or mixed constraints may also be considered. These constraints may have the following form:
Aineq,xx(k)+Aineq,uu(k)≤bineq
The inequality constraint structure associated with the single shooting strategy and the mixed constraints may have the form:

In the multiple shooting method, storage/airside constraints module1216may 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 xk+1=AxkBuk, the following equality constraints can be used:

Mixed constraints of the form Aineq,xx(k)+Aineq,uu(k)≤bineqcan also be used in the multiple shooting method. These mixed constraints result in the following structure:

Reduced Optimization Process for Asset Allocation

Overview

Referring generally toFIGS. 22-30, systems and methods for smart edge model predictive control (MPC) are shown, according to some embodiments. Smart edge MPC can refer to a simplified version of MPC (e.g., as performed by asset allocator402). Some versions of MPC may require a large amount of computational resources to perform. Particularly, solving an optimization problem with a large amount of inputs and considerations may require significant processing resources. Processing resources, as described herein, can include any type of resource needed to complete various computations. For example, processing resources may include available memory, a number of clock cycles available to complete computations, energy availability (e.g., a battery level), available network bandwidth, available budget (e.g., cash) for performing processing, and/or any other resource that may be required/used in performing processing of information.

In some embodiments, the amount of computational resources required for some versions of MPC may not be available in some building systems. Advantageously, smart edge MPC can reduce complexity of MPC so that MPC can be performed on systems/devices/etc. with less processing power. In effect, complexity of MPC can be scaled respective to a capacity for particular systems/devices/etc. to perform MPC. In this case, the capacity for particular systems/devices/etc. to perform MPC can be defined based on an estimated amount of time required to perform MPC calculations, how much energy may be consumed by performing the MPC calculations, as a function of higher operating costs due to operations that cannot be perform and/or are delayed as a result of performing MPC, and/or any other metric or combination of metrics for defining an ability to perform MPC on the particular systems/devices/etc. In some embodiments, the capacity for a system/device/etc. to perform MPC is defined at least partially as a function of the processing resources. However, as should be appreciated, capacity may account for any variables that affect an ability to perform MPC. For example, a first device that has other critical operations to perform may have less overall capacity to perform MPC as compared to a second device that is dedicated to performing MPC even if the first and second device have similar amounts of random access memory (RAM), similar processor speeds, etc.

Implementing smart edge MPC can be beneficial for a building system for a variety of reasons. Smart edge MPC can provide cost-effective solutions for operating building equipment to maintain occupant comfort in a space of a building. In some embodiments, a full version of MPC is run on a cloud system. However, not all building systems have the capability to connect to cloud systems, have sufficient bandwidth to support data transfer necessary for MPC to operate remotely on the cloud, and/or are willing to subscribe to internet of things (IoT) solutions of the cloud system. As such, smart edge MPC can allow the building system to benefit from some and/or all advantages of MPC even given various constraints (e.g., physical, economic, etc.)

Building System with Smart Edge MPC

Referring now toFIG. 22, an environmental control system2200a including a smart edge controller2206for maintaining occupant comfort in a building is shown, according to some embodiments. Environmental control system2200is shown to include a cloud computation system2202and a building system2204. Cloud computation system2202and building system2204can be configured to communicate over any data communication medium (e.g., the Internet, satellite communication, cellular communication, etc.) capable of transmitting data between cloud computation system2202and building system2204.

In some embodiments, cloud computation system2202is configured to make some and/or all relevant control decisions regarding operation of building devices (e.g., HVAC devices, lighting devices, etc.) of building system2204. To determine the relevant control decisions, cloud computation system2202may implement some and/or all components of central plant controller600described with reference toFIG. 6. As such, cloud computation system2202can perform MPC for building system2204to optimize (e.g., minimize) costs and maintain occupant comfort. Particularly, cloud computation system2202can determine a setpoint trajectory for one or more environmental conditions for a space (e.g., a room, a zone, a hallway, etc.) of building system2204over an optimization period. In some embodiments, a setpoint trajectory is provided at each time step within the optimization period. In some embodiments, a setpoint trajectory is provided at a subset of time steps within the optimization period. In some embodiments, single a setpoint trajectory is provided for an optimization period.

In some embodiments, a setpoint trajectory indicates various setpoints for operating building equipment. For example, the setpoint trajectory may include 10 different setpoint trajectories to operate building equipment based on over a course of a day. In some embodiments, the setpoint trajectory defines how setpoints are to be calculated given current environmental conditions. For example, the setpoint trajectory may indicate that setpoints are to increase relative to the current environmental conditions. Per the above example, the setpoint trajectory may indicate that a setpoint is to be 2° F. above an outdoor temperature in the morning and 4° F. above the outdoor temperature in the afternoon. Based on the setpoint trajectory, an active setpoint can be calculated such that the active setpoint is an appropriate amount above the current outdoor temperature as indicated by the setpoint trajectory. In some embodiments, the setpoint trajectory indicates other information used to generate active setpoints.

In some embodiments, cloud computation system2202communicates a setpoint trajectory to building system2204. The setpoint trajectory may be a trajectory of, for example, temperature, humidity, air quality, etc. In some embodiments, the setpoint trajectory can be utilized to generate setpoints for a space of building system2204to achieve at various time steps of an optimization period (e.g., a future time horizon). In some embodiments, the setpoint trajectory defines a comfort constraint for an environmental condition during various time steps of the optimization period. For example, a comfort constraint for temperature may include an upper bound and a lower bound of temperature for a time step such that the space maintains a current temperature between said bounds.

Building system2204is shown to include smart edge controller2206. Smart edge controller2206is shown to communicate an active setpoint to a building device2208of a control system2210. To determine the active setpoint, smart edge controller2206can rely on setpoint trajectories provided by cloud computation system2202and/or can perform smart edge MPC, as described in greater detail below with reference toFIGS. 23A and 23B, to locally generate setpoint trajectories used to determine the active setpoint. Control system2210can include building equipment (e.g., building device2208) capable of affecting a change of a variable state or condition (e.g., an environmental condition) of a space of building system2204. For example, control system2210may be or include a temperature control system having building equipment configured to affect a temperature of the space. As another example, control system2210may be or include a humidity control system including building equipment operable to affect a humidity value of the space. Based on the active setpoint, building device2208can be operated to maintain comfortable environmental conditions in the space. In some embodiments, building device2208includes one or more building devices2208configured to maintain a variable state or condition in the space. If building device2208contains multiple building devices2208and the active setpoint is provided to control system2210, control system2210can determine a subset of building devices2208to operate to achieve the active setpoint provided by smart edge controller2206.

Some and/or all of the functionality of smart edge controller2206can be performed by a variety of devices of building system2204. In some embodiments, the functionality of smart edge controller2206is performed by an independent device in building system2204configured to perform the functionality of smart edge controller2206. In some embodiments, smart edge controller2206can be run on (e.g., the functionality thereof can be performed by) other devices in building system2204such as, for example, a gateway, an indoor unit of a variable refrigerant flow (VRF) system, a thermostat, a computer, a user device, etc. In some embodiments, the functionality of smart edge controller2206is distributed across multiple devices.

In some embodiments, the active setpoint provided to control system2210(or building device2208) by smart edge controller2206is based on a setpoint trajectory provided by cloud computation system2202if a connection between building system2204and cloud computation system2202is active. In some embodiments, an active connection is defined by building system2204and cloud computation system2202being able to communicate a sufficient amount of information between one another to facilitate MPC of building system2204. Even if the connection can be established, the connection may not be considered active insufficient amounts of data can be communicated between building system2204and cloud computation system2202(e.g., due to limited internet bandwidth). If setpoint trajectories are being received from cloud computation system2202(i.e., no connectivity issues are present), smart edge controller2206can determine the active setpoint based on a setpoint trajectory including the current time step.

A connection between building system2204and cloud computation system2202may not always be active. For example, building system2204may be undergoing an internet disruption such that a connection to cloud computation system2202is limited (e.g., insufficient bandwidth is available for proper communication) or nonexistent. As another example, an owner of building system2204may elect not to subscribe to cloud solutions provided by cloud computation system2202, and as such, a connection may never be established to receive setpoint trajectories from cloud computation system2202. In any case, if a connection is not active (or is too limited), smart edge controller2206may not receive setpoint trajectories from cloud computation system2202to utilize in determining active setpoints. If setpoint trajectories are not received by cloud computation system2202, building system2204may rely on smart edge MPC to generate setpoint trajectories.

Still referring toFIG. 22, smart edge controller2206is shown to receive sensor data from an environmental sensor2212. To perform MPC and/or smart edge MPC, environmental conditions may be required to appropriately solve a control problem. In particular, solving the control problem may require measurements of one or more environmental conditions as measured by environmental sensor2212. Environmental sensor2212may include one or more environmental sensors2212each configured to measure an environmental condition(s) in a space managed by building system2204(e.g., a zone of a building, a room of the building, etc.). For example, environmental sensor2212may be or include a temperature sensor configured to measure a current temperature value. In some embodiments, environmental sensor2212is outside of the space (e.g., is offsite). If environmental sensor2212is offsite, environmental sensor2212may measure environmental conditions outside the space. For example, if environmental sensor2212is offsite, environmental sensor2212may measure weather data such as a current outdoor air temperature, a current outdoor humidity value, a time of day, an amount of solar radiation, etc. Environmental sensor2212is shown to provide sensor data to smart edge controller2206. The sensor data may include information regarding any/all conditions that can be measured by environmental sensor2212(e.g., temperature, humidity, air quality, light intensity, outdoor air temperature, etc.). Based on the sensor data received by smart edge controller2206, smart edge controller2206can communicate said sensor data to cloud computation system2202to utilize for MPC.

During a period of intermittent connectivity, smart edge controller2206may be unable to communicate the sensor data to cloud computation system2202. However, to perform MPC accurately, cloud computation system2202may require sensor data gathered during the period of intermittent connectivity. Therefore, smart edge controller2206can store the sensor data collected during the period of intermittent connectivity to provide to cloud computation system2202if the connection is restored. If connectivity is restored, smart edge controller2206can provide cloud computation system2202with the stored sensor data collected during the period of intermittent connectivity. If smart edge controller2206runs out of storage space for sensor data, smart edge controller2206may discard old sensor data in order to store more up-to-date sensor data. Storing the sensor data to provide to cloud computation system2202may only be necessary if cloud system2202provides setpoint trajectories to building system2204. Storing the sensor may not be necessary if, for example, smart edge MPC generates all setpoint trajectories.

If a connection is not available between building system2204and cloud computation system2202, smart edge controller2206can perform smart edge MPC to generate setpoint trajectories. Using the sensor data gathered by environmental sensor2212, smart edge controller2206can perform smart edge MPC to determine a setpoint trajectory that maintains occupant comfort and optimizes (e.g., reduces) costs. Smart edge MPC performed by smart edge controller2206is described in greater detail below with reference toFIGS. 23A and 23B.

In some embodiments, during periods of connectivity between cloud computation system2202and building system2204, smart edge controller2206makes a determination whether to operate based on setpoint trajectories provided by cloud computation system2202or based on setpoint trajectories generated by smart edge controller2206. MPC performed by cloud computation system2202can be a computationally expensive process. As such, if setpoint trajectories generated by smart edge controller2206provide similar or better cost savings than those generated by cloud computation system2202, switching to smart edge MPC may be more cost effective even if a connection is active. To determine whether to operate based on smart edge MPC rather than full MPC during periods of connectivity, smart edge controller2206can perform experiments under various conditions (e.g., time of day, day of week, weather conditions, etc.). For example, a first experiment may be performed on a weekday with rainy weather to determine how setpoint trajectories generated by smart edge MPC compare to those generated by MPC. A second experiment may be performed, for example, on a weekend with sunny weather. As more experiments are conducted, additional data regarding how setpoint trajectories generated by smart edge MPC compare to those generated by MPC can be gathered.

In some embodiments, if a connection is active between cloud computation system2202and building system2204, smart edge controller2206can determine whether to operate based on smart edge MPC or MPC based on an optimality calculation. Particularly, smart edge controller2206can use MPC decisions as a standard for optimal control decisions and determine an optimality gap (i.e., a difference) between decisions produced by smart edge MPC and decisions produced by MPC. It should be understood that MPC may not provide an ideal solution (i.e., a solution where costs are perfectly minimized and a highest possible level of occupant comfort is maintained), but can be considered the optimal solution for comparison purposes. In some environmental conditions, the optimality gap (i.e., a different in cost savings between MPC and smart edge MPC) may pass a threshold value indicating that smart edge MPC generates setpoint trajectories that provide a similar cost savings to those generated by MPC. The threshold value of the optimality gap may be determined such that any costs lost due to smart edge MPC not providing optimal decisions (i.e., those provided by MPC) are less than or equal to costs saved due to costs related to performing MPC (e.g., costs charged by cloud computation system2202).

Based on results of the experiments, certain conditions for operating based on smart edge MPC rather than full MPC may be determined. For example, smart edge MPC determinations may be similar to full MPC determinations on weekends where outdoor conditions are comfortable (e.g., an outdoor temperature is 72° F. and an outdoor humidity is 50%). Under said conditions, building equipment may not require significant operation as few occupants may be expected and conditions are already comfortable. Therefore, determining setpoints based on smart edge MPC rather than MPC may save computation power without compromising cost savings and/or occupant comfort. If smart edge MPC provides similar results as MPC, additional costs may be saved if, for example, cloud computation system2202charges based on an amount of computation performed.

Smart Edge Controller for Performing Smart Edge MPC

Referring now toFIG. 23, smart edge controller2206is shown in greater detail, according to some embodiments. Smart edge controller2206can generate active setpoints to provide to control system2210(or building device2208) based on setpoint trajectories. The setpoint trajectories can be received from cloud computation system2202and/or generated by smart edge controller2206by a smart edge MPC process. By generating setpoint trajectories locally within building system2204, smart edge controller2206can ensure benefits of MPC are maintained even if a connection between building system2204and cloud computation system2202is lost. Further, smart edge controller2206can ensure building system2204receives some benefits of MPC even if cloud computation system2202never performs MPC of building system2204.

Smart edge controller2206is shown to include a communications interface2308and a processing circuit2302. Communications interface2308may 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 interface2308may 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 interface2308may 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 interface2308may be a network interface configured to facilitate electronic data communications between smart edge controller2206and various external systems or devices (e.g., control system2210, environmental sensor2212, cloud computation system2202, etc.). For example, smart edge controller2206may receive a setpoint trajectory from cloud computation system2202and sensor data from environmental sensor2212.

Still referring toFIG. 23, processing circuit2302is shown to include a processor2304and memory2306. Processor2304may 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. Processor2304may be configured to execute computer code or instructions stored in memory2306or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.).

Memory2306may 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. Memory2306may 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. Memory2306may 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. Memory2306may be communicably connected to processor2304via processing circuit2302and may include computer code for executing (e.g., by processor2304) one or more processes described herein. In some embodiments, some components of memory2306are a single component. However, each component of memory2306is shown separately for ease of explanation.

Memory2306is shown to include a heartbeat detector2320. Heartbeat detector2320can determine if a connection is active between building system2204and cloud computation system2202. Cloud computation system2202can communicate heartbeat transmissions to heartbeat detector2320via communications interface2308to indicate the connection is active. In some embodiments, the heartbeat transmissions are specialized communications indicating if the connection between building system2204and cloud computation system2202is active. In some embodiments, the heartbeat transmissions are setpoint trajectories communicated by cloud computation system2202that heartbeat detector2320can utilize to determine if the connection is active.

In some embodiments, the heartbeat transmissions are communicated by cloud computation system2202at periodic intervals (e.g., every second, every minute, every hour, etc.) to ensure the connection between cloud computation system2202and building system2204is active. In some embodiments, heartbeat detector2320occasionally sends a heartbeat request to cloud computation system2202and determines if a heartbeat transmission is sent in response. If a heartbeat transmission is detected by heartbeat detector2320, heartbeat detector2320may determine the connection is active. If the heartbeat transmission is not detected by heartbeat detector2320, heartbeat detector2320may determine intermittent connectivity between building system2204and cloud computation system2202is present.

Still referring toFIG. 23, memory2306is also shown to include an active setpoint generator2310. Active setpoint generator2310is shown to provide an active setpoint to control system2210via communications interface2308. In some embodiments, active setpoint generator2310provides the active setpoint directly to building device2208. Building device2208may include one or more building devices configured to affect a variable state or condition (e.g., temperature, humidity, air quality, lighting, etc.) of a space based on the active setpoint(s). By operating building device2208based on the active setpoint provided by active setpoint generator2310, environmental conditions in a building (e.g., building10as described with reference toFIG. 1) can be made (or maintained) comfortable for occupants of the building.

In some embodiments, active setpoint generator2310determines the active setpoint based on whether a connection is available between building system2204and cloud computation system2202as determined by heartbeat detector2320. If heartbeat detector2320indicates a connection (and a suitable data transfer rate/bandwidth) is available based on a heartbeat detection provided to active setpoint generator2310, active setpoint generator2310can determine the active setpoint based on a setpoint trajectory provided directly from cloud computation system2202. For example, the setpoint trajectory can indicate that an optimal temperature setpoint is 72° F. for a next time step in an optimization period. Based on the optimal temperature setpoint, active setpoint generator2310can determine an active setpoint to provide to control system2210. As a result, control system2210can operate building device2208to achieve the optimal temperature setpoint of 72° F. for the next time step.

If heartbeat detector2320indicates the connection to cloud computation system2202is not available, active setpoint generator2310can determine the active setpoint based on a setpoint trajectory provided by a setpoint trajectory generator2312. In some embodiments, setpoint trajectory generator2312is similar to and/or the same as asset allocator402. As such, setpoint trajectory generator2312may include some and/or all of the functionality of asset allocator402. For example, setpoint trajectory generator2312may be able to solve an optimization problem (e.g., the objective function J) for operating building equipment over an optimization period. Particularly, setpoint trajectory generator2312can perform smart edge MPC to generate a setpoint trajectory to provide to an active setpoint generator2310.

In some embodiments, smart edge MPC performed by setpoint trajectory generator2312is formulated with a simple thermal model (e.g., a first-order thermal model) describing thermal dynamics of a space. By using a simple thermal model, a smart edge MPC problem can be performed by hardware of building system2204that may not be able to perform processing necessary to solve a higher-order model. In some embodiments, smart edge MPC performed by setpoint trajectory generator2312includes a system identification process as described in greater detail in U.S. patent application Ser. No. 15/953,324, filed Apr. 13, 2018, the entirety of which is incorporated by reference herein. The system identification process performed for smart edge MPC can use the simple thermal model (e.g., the first-order thermal model) to capture a system state capturing dynamics of a space of a building.

In some embodiments, smart edge MPC is a simplified target tracking problem. If smart edge MPC is a simplified target tracking problem, setpoint trajectory generator2312can utilize a power setpoint trajectory, the power setpoint trajectory being a trajectory of power setpoints detailing power consumption. To determine a temperature setpoint trajectory, setpoint trajectory generator2312can minimize an error in measured power consumption and the power setpoint trajectory. Setpoint trajectory generator2312may generate setpoint trajectories for other environmental conditions (e.g., humidity, air quality, etc.) similarly to the temperature setpoint trajectory if smart edge MPC is a simplified target tracking problem.

In some embodiments, the optimization problem solved by setpoint trajectory generator2312is a reduced optimization problem. The reduced optimization problem can include, for example, fewer variables, shortened optimization periods, etc., to reduce computational complexity of solving the optimization problem as compared to the optimization problem that can be solved by cloud computation system2202. In some embodiments, smart edge MPC is a less computationally intensive version of MPC performed by asset allocator402as described in greater detail above with reference toFIGS. 4, 6, 7, and 9. By reducing computational complexity, smart edge MPC can be performed locally by devices of building system2204or by less computationally powerful devices.

As described above, to reduce complexity, smart edge MPC performed by setpoint trajectory generator2312may reduce a number of variables considered. For example, smart edge MPC may consider simplified models of sources410, subplants420, storage430, and/or sinks440when solving an optimization problem. For example, smart edge MPC may consider a dynamic model for a electricity supplier of sources410describing how costs of electricity vary over time. However, smart edge MPC may, for example, consider a fixed cost value of water supplied by a water supplier of sources410to simplify cost calculations. In some embodiments, smart edge MPC eliminates certain models entirely from consideration during an optimization process. For example, smart edge MPC may not consider cold water load444of sinks440when solving the optimization problem to further reduce a number of considered variables. In some embodiments, smart edge MPC incorporates a shortened optimization period for solving the optimization problem. For example, an optimization period of smart edge MPC may only span half a day (i.e., 12 hours) whereas an optimization period of MPC (e.g., the MPC that is performed by cloud computation system2202) may span, for example, a full day (i.e., 24 hours). Likewise, smart edge MPC may utilize longer time steps within the optimization when solving the optimization problem. By utilizing longer time steps, smart edge MPC may not need to generate as many setpoint trajectories as a single setpoint trajectory can be used for a longer period of time. In some embodiments, a length of the optimization period and time steps considered is related to processing power of available devices to perform functionality of smart edge MPC. As an amount of available processing power increases, the length of the optimization period may increase and/or the length of time steps may decrease.

In some embodiments, setpoint trajectory generator2312scales a level of complexity of performing smart edge MPC based on an amount of available processing resources. As the amount of processing resources increases, setpoint trajectory generator2312may be able to solve more complex optimization problems locally within building system2204. Specifically, setpoint trajectory generator2312can scale a level of complexity of a cost optimization of a cost function (e.g., the cost function J(x)) based on the amount of available processing resources. Scaling the level of complexity can refer to increasing/decreasing a difficulty of solving the cost optimization. For example, as more processing resources become available, the cost optimization can be scaled up by incorporating more variables, solving for longer optimization periods, utilizing shorter time steps, etc. Similarly, as available processing resources decrease, the cost optimization can be scaled down by limiting a number of variables, shortening the optimization period, extending time steps, etc. Scaling the level of complexity of the cost optimization of the cost function can allow at least some version of smart edge MPC to be performed in building system2204. Even if processing resources are limited in building system2204, a simplified version of smart edge MPC (e.g., a simplified cost optimization) can still be utilized to maintain occupant comfort and optimize (e.g., reduce) costs.

In some embodiments, smart edge MPC performed by setpoint trajectory generator2312utilizes a simplified predictive model. The simplified predictive model can be generated as to limit a number of calculations required to solve the optimization problem using the simplified predictive model. For example, if the predictive model is a neural network model, a number of nodes and/or connections between nodes of the neural network model can be reduced to simplify the neural network model. As another example, if the predictive model is a mathematical model requiring integration, the predictive model may reduce a number of integrations (e.g., by simplifying a triple integral to a double integral). In some embodiments, the predictive model can be further simplified by limiting a number of inputs to the model and/or limiting a number of outputs (i.e., predictions) that can be generated by the predictive model. For example, the predictive model may limit a number of environmental conditions (e.g., temperature, humidity, etc.) used as input and/or may limit predictions to only a set number of time steps into the future (e.g., 2 times steps, 3 times steps, etc.). The simplification of the predictive model can be dependent on an amount of processing power available for smart edge MPC. Based on the mathematical model example, a number of integrals to be solved can increase as the amount of available processing power increases as to increase accuracy of the predictive model.

In some embodiments, the simplified predictive model is generated by smart edge controller2206(e.g., by setpoint trajectory generator2312, a component similar to predictive model generator2412as described below with reference toFIG. 24, etc.) based on measurements taken during a period of connectivity with cloud computation system2202. In this way, the simplified predictive model can be generated based on decisions originating from full MPC performed by cloud computation system2202. In some embodiments, smart edge controller2206generates the simplified predictive model based on measurements taken of building system2204(e.g., by environmental sensor2212). In some embodiments, cloud computation system2202provides the simplified predictive model to smart edge controller2206to use in cases of intermittent connectivity. In this case, smart edge controller2206may not be required to generate any predictive models needed for smart edge MPC, thereby reducing processing requirements for performing the functionality of smart edge controller2206.

In some embodiments, setpoint trajectory generator2312generates setpoint trajectories and provides said setpoint trajectories to active setpoint generator2310until a connection is reestablished with cloud computation system2202. If a connection is reestablished with cloud computation system2202, cloud computation system2202can again provide setpoint trajectories to active setpoint generator2310via communications interface2308. In some embodiments, setpoint trajectory generator2312continues to provide setpoint trajectories to active setpoint generator2310even after connection is restored to2202. Setpoint trajectory generator2312may continue to provide setpoint trajectories if, for example, cloud computation system2202does not communicate a new setpoint trajectory for a period of time after connection is restored, if smart edge MPC decisions are estimated to provide similar and/or better cost savings as compared to MPC decisions made by cloud computation system2202as described above, etc.

Memory2306is also shown to include a data buffer2316and a data collector2314. Data buffer2316and data collector2314are shown to receive sensor data from environmental sensor2212. The sensor data provided to data buffer2316and data collector2314can include any and/or all data that can be measured by environmental sensor(s)2212(e.g., temperature, humidity, air quality, light intensity, etc.).

In response to receiving the sensor data from environmental sensor2212, data buffer2316can store the sensor data for later access. In some embodiments, sensor data is only stored by data buffer2316during a period of intermittent connectivity. To provide optimal (or near-optimal) economic control, cloud computation system2202may require measurements of conditions regarding a space of building system2204. Particularly, cloud computation system2202may perform MPC based on how environmental conditions change over time in the space. As such, cloud computation system2202can rely on time-series data to properly perform MPC. However, during periods of intermittent connectivity, cloud computation system2202may be unable to receive measurements taken by environmental sensor2212. As such, data buffer2316can store sensor data from environmental sensor2212until the connection to cloud computation system2202is restored. If the connection is restored, data buffer2316can provide the stored sensor data to data collector2314to provide to cloud computation system2202via communications interface2308. Based on the stored sensor data, cloud computation system2202can determine new setpoint trajectories by performing MPC without gaps in data due to the period of intermittent connectivity.

Data collector2314is shown to provide measurements to cloud computation system2202via communications interface2308. As described above, the measurements may include sensor data provided by environmental sensor2212, historical condition data provided by data buffer2316, and/or a heartbeat request provided by heartbeat detector2320. In some embodiments, data collector2314communicates the measurements to cloud computation system2202upon reception of the measurements/data (e.g., upon receiving a heartbeat request, upon receiving sensor data, etc.). In some embodiments, data collector2314collects received measurements and communicates the measurements after a predetermined amount of time (e.g., every minute, every hour, etc.) and/or after a certain amount of measurements/data are collected (e.g., 1 megabyte of data, 5 separate measurements, etc.).

Referring now toFIG. 24, a smart edge controller2400is shown, according to some embodiments. In some embodiments, smart edge controller2400includes components similar to and/or the same as smart edge controller2206as described with reference toFIG. 23, as shown by identical reference numbers. In some embodiments, smart edge controller2400and smart edge controller2206are part of a single smart edge controller for performing smart edge MPC of building system2204. In some embodiments, smart edge controller2400is utilized if setpoint trajectories are not provided by cloud computation system2202. Smart edge controller2400can allow building system2204to operate based on smart edge MPC. Smart edge controller2400may be utilized if, for example, a building manager of building system2204does not subscribe to IoT service but is willing to run a limited version of MPC (i.e., smart edge MPC) locally. Similar to smart edge controller2206, functionality of smart edge controller2400can be implemented through various devices of building system2204. For example, smart edge controller2400may be hosted on building device2208. Smart edge controller2400may also be hosted on other building devices, gateways, controllers, etc. of building system2204.

Smart edge controller2400is shown to include a communications interface2408and a processing circuit2402. Communications interface2408may 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 interface2408may 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 interface2408may 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 interface2408may be a network interface configured to facilitate electronic data communications between smart edge controller2400and various external systems or devices (e.g., control system2210, environmental sensor2212, etc.). For example, smart edge controller2400may receive sensor data from environmental sensor2212and provide active setpoints to control system2210.

Still referring toFIG. 24, processing circuit2402is shown to include a processor2404and memory2406. Processor2404may 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. Processor2404may be configured to execute computer code or instructions stored in memory2406or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.).

Memory2406may 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. Memory2406may 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. Memory2406may 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. Memory2406may be communicably connected to processor2404via processing circuit2402and may include computer code for executing (e.g., by processor2404) one or more processes described herein.

Memory2406is shown to include a data collector2410. Data collector2410is shown to receive sensor data from environmental sensor2212. For smart edge controller2400to perform smart edge MPC, current conditions (e.g., environmental conditions) may be required. For example, smart edge controller2400may utilize a time of day, outdoor weather conditions, an indoor temperature, etc. in order to perform smart edge MPC. The sensor data can also be utilized by smart edge controller2400to generate a predictive model for use in smart edge MPC as described in greater detail below. In some embodiments, the sensor data includes indications of occupant comfort. For example, the sensor data may include occupant adjustments to setpoints, the adjustments indicating occupants are comfortable given weather conditions at the adjustment time. As another example, the sensor data may include voting results describing whether occupants indicated they are comfortable in various conditions. If the sensor data includes comfort data, the comfort data can be used to generate a predictive model as described below. Environmental sensor2212can be or include a temperature sensor, a humidity sensor, a solar irradiance sensor, a light detector, an occupancy detector, an outdoor air temperature sensor, etc.

Data collector2410is shown to provide collected data to setpoint trajectory generator2312and to a predictive model generator2412. In some embodiments, data collector2410provides the collected data to setpoint trajectory generator2312and/or to predictive model generator2412as the sensor data is gathered. In some embodiments, data collector2410occasionally provides the collected data to setpoint trajectory generator2312and/or to predictive model generator2412. For example, data collector2410may provide the collected data periodically (e.g., every second, every minute, every hour, etc.) or once a certain amount of data is collected (e.g., 2 measurements provided by environmental sensor2212, 1 megabyte of data, etc.).

Based on the collected data, predictive model generator2412can generate a predictive model for use in smart edge MPC. Particularly, the predictive model can predict one or more setpoint values that are comfortable for occupants and optimize (e.g., reduce) costs and/or can predict how setpoints are to vary over time based on environmental conditions. Said prediction(s) can be made based on inputting values of occupant comfort data, environmental condition data, and/or other various data included in the sensor data collected by data collector2410to the predictive model. The predictive model generated by predictive model generator2412can be any model that can be utilized by setpoint trajectory generator2312to determine a setpoint trajectory based on inputs of various sensor data to the predictive model. For example, the predictive model may be a neural network model, a mathematical model (e.g., a linear equation, a piecewise function, etc.), or any other model that can be used by setpoint trajectory generator2312to generate a setpoint trajectory.

In some embodiments, the predictive model is a convolutional neural network (CNN). A CNN is a type of feed-forward artificial neural network in which the connectivity pattern between its neurons is inspired by the organization of the animal visual cortex. Individual cortical neurons respond to stimuli in a restricted region of space known as the receptive field. The receptive fields of different neurons partially overlap such that they tile the visual field. The response of an individual neuron to stimuli within its receptive field can be approximated mathematically by a convolution operation. The CNN is also known as shift invariant or space invariant artificial neural network (SIANN), which is named based on its shared weights architecture and translation invariance characteristics. An example of a CNN is described in greater detail below with reference toFIG. 32.

In some embodiments, predictive model generator2412generates the predictive model in response to a determination that a predictive model does not exist, a current predictive model should be replaced, etc. In some embodiments, an occupant provides an indication to predictive model generator2412to generate the predictive model (e.g., by starting a model training process). Predictive model generator2412can use some and/or all of the collected data provided by data collector2410to generate the predictive model.

Similar to a predictive model used by cloud computation system2202for MPC, the predictive model generated by predictive model generator2412can be generated as to model occupant comfort over time. However, for smart edge controller2400to be hosted locally on devices in building system2204, the predictive model used by cloud computation system2202may be too complex. As such, the predictive model generated by predictive model generator2412can be a streamlined model that can be generated on a device of building system2204and used for smart edge MPC. In some embodiments, a level of complexity of the predictive model generated by predictive model generator2412can be scaled based on processing resources available for model generation and smart edge MPC as described above with reference toFIG. 23. As a level of complexity of the predictive model increases, the predictive model may, for example, utilize additional inputs, solve higher-order functions, include additional outputs indicating various predictions, etc.

In order to generate the predictive model locally within building system2204, predictive model generator2412may consider a subset of available data describing environmental conditions and occupant comfort. For example, predictive model generator2412may consider data gathered of a 1-month period to generate the predictive model. As compared to a predictive model used by cloud computation system2202which may be generated by considering as much data as is available (e.g., months or years worth of data), limiting an amount of data considered by predictive model generator2412can ensure smart edge MPC can be performed on devices of building system2204. An amount of training data (i.e., the sensor data) considered can be scaled based on the processing power of the device(s) that smart edge controller2400is hosted on. For example, a smaller set of data may be considered to generate the predictive model if smart edge controller2400is hosted on a single indoor unit (IDU) of a VRF system, as compared to if smart edge controller2400is distributed across multiple IDUs or a computer dedicated to smart edge MPC with more processing power than the single IDU. As such, a generation of the predictive model can be scaled by limiting historical datasets based on availability of processing resources. As processing resources increase, the historical dataset can likewise increase to increase accuracy of the predictive model.

Predictive model generator2412is shown to provide a generated model (i.e., the predictive model) to setpoint trajectory generator2312. Based on the predictive model, setpoint trajectory generator2312can determine a setpoint trajectory as described in further detail above with reference toFIGS. 22 and 23. The predictive model provided by predictive model generator2412can be generated for use in smart edge MPC. As the predictive model can be a simplified model of occupant comfort and cost of operating building equipment, smart edge MPC performed by setpoint trajectory generator2312can be similarly simplified as the model may have fewer considerations to account for. For example, if the predictive model is a neural network model, the neural network model may have fewer neurons and/or fewer connections between neurons. If fewer neurons and/or fewer connections between neurons exist in the neural network model, processing requirements to generate the setpoint trajectory may decrease.

Setpoint trajectory generator2312is shown to provide the setpoint trajectory to active setpoint generator2310. Based on the setpoint trajectory, active setpoint generator2310can generate an active setpoint to provide to control system2210(or to building device2208) via communications interface2408. The active setpoint can be determined based on the setpoint trajectory for a current time. For example, if the setpoint trajectory defines setpoints for control system2210to operate on over a time period, active setpoint generator2310can determine a setpoint defined by the setpoint trajectory for a current time. As another example, if the setpoint trajectory defines how setpoints are to react based on various environmental conditions, active setpoint generator2310may utilize collected data provided by data collector2410to use in conjunction with the setpoint trajectory to generate the active setpoint.

If an active setpoint is received by control system2210, building equipment (e.g., building device2208) can operate based on the active setpoint. For example, if the active setpoint indicates a current temperature setpoint of 72° F. and a current temperature is 68° F., the building equipment can operate heating devices to increase the current temperature to the current temperature setpoint indicated by the active setpoint.

Referring now toFIG. 25, an environmental control system2500is shown, according to some embodiments. In some embodiments, environmental control system2500is similar to and/or the same as environmental control system2200described with reference toFIG. 22. Environmental control system2500is shown to illustrate how smart edge MPC can be implemented on various devices throughout an environmental control system.

Environmental control system2500is shown to include a cloud computation system2502and a building system2526. Cloud computation system2502may be similar to and/or the same as cloud computation system2202of environmental control system2200. In some embodiments, cloud computation system2502can perform MPC to generate setpoint trajectories to provide to building system2526. In some embodiments, if building system2526is operating based on smart edge MPC, cloud computation system2502may or may not be a component of environmental control system2500. For example, if a building manager of building system2526elects not to subscribe to services provided by cloud computation system2502, cloud computation system2502may not be a part of environmental control system2500.

Building system2526is shown to include a gateway2504. Gateway2504can facilitate communication between building system2526and other systems, devices, etc. In some embodiments, gateway2504can facilitate smart edge MPC in building system2526. Particularly, gateway2504may include some and/or all of the functionality of smart edge controller2206and/or smart edge controller2400.

Building system2526is also shown to include an outdoor unit2506including a printed circuit board assembly (PCBA)2508. Outdoor unit2506can communicate with a central controller2510and/or another connected device2512. Central controller2510may provide control signals to outdoor unit2506. Other connected device2512may be any various device of building system2526that can communicate with central controller2510and/or outdoor unit2506. For example, other connected device2512may be a heater, a computer, a user device, a light of a room, etc. In some embodiments, outdoor unit2506, PCBA2508, central controller2510, and/or other connected device2512can facilitate smart edge MPC in building system2526. Particularly, outdoor unit2506, PCBA2508, central controller2510, and/or other connected device2512may include some and/or all of the functionality of smart edge controller2206and/or smart edge controller2400.

Still referring toFIG. 25, building system2526is also shown to include indoor units2514-2518and remote controllers2520-2524. Indoor units2514-2518can communicate with outdoor unit2506. Indoor units2514-2518can communicate, for example, power consumption information of each indoor unit2514-2518, environmental condition measurements taken by indoor units2514-2518, etc. Indoor units2514-2518can communicate with remote controllers2520-2524. Communication between indoor units2514-2518and remote controllers2520-2524can include, for example, control signals provided by remote controller2520-2524for indoor units2514-2518to operate based on. In some embodiments, some and/or all of the functionality of smart edge controller2206and/or smart edge controller2400can be included in some and/or all of indoor units2514and remote controllers2520.

As described above, any of components2504-2524of building system2526can implement functionality of smart edge MPC. In some embodiments, a single component of building system2526performs smart edge MPC. In some embodiments, multiple components of building system2526perform smart edge MPC. For example, functionality of smart edge MPC may be distributed between gateway2504, central controller2510, and other connected device2512. In some embodiments, if smart edge MPC is performed by multiple components of building system2526, processing is distributed among each of the multiple components. By distributing processing among multiple components, more processing power may be available for performing smart edge MPC and decreases computational load on any particular device. Further, distribution of processing can reduce a threat of a single device becoming a bottleneck in performing smart edge MPC. For example, if an IDU is configured to perform smart edge MPC but is required to perform other tasks urgently, smart edge MPC may be slowed and/or halted while the IDU performs the urgent tasks. However, if the processing of smart edge MPC is distributed among multiple devices, the IDU can perform the urgent tasks without significantly hampering smart edge MPC.

As the amount of processing power available increases, smart edge MPC can be performed more efficiently (e.g., an amount of time required to generate a solution to a smart edge MPC problem can decrease) and/or can solve a more complex problem. By solving a more complex problem, results of performing smart edge MPC may be more accurate and can further reduce costs related to maintaining occupant comfort. In any case, facilitating smart edge MPC on one or more components of building system2526can ensure benefits of MPC are available to building system2526even if results of MPC that can be performed by cloud computation system2502are not available.

Referring now toFIG. 26, a graph2600illustrating temperature setpoints determined based on a temperature setpoint trajectory over time is shown, according to some embodiments. Graph2600is shown to include a series2602. In some embodiments, series2602illustrates optimal (or near-optimal) temperature setpoints over the time steps shown by time steps t1-t7as determined by MPC (e.g., as determined by cloud computation system2202). In some embodiments, MPC is performed by cloud computation system2202as described with reference toFIG. 22. In some embodiments, the temperature setpoints are determined based on smart edge MPC as performed by smart edge controller2206and/or smart edge controller2400. At each time step, series2602indicates a new temperature setpoint for a space of building system2204to achieve. For example, at time step t3, the temperature setpoint indicated by series2602is shown as 68° F. Based on the temperature setpoint, building equipment (e.g., building device2208) can be operated to achieve the temperature setpoint.

In some embodiments, series2602is the same regardless of whether series2602is generated based on MPC performed by cloud computation system2202or smart edge MPC performed by smart edge controller2206and/or smart edge controller2400. In some embodiments, series2602may differ depending on whether series2602is generated by cloud computation system2202or smart edge controller2206/smart edge controller2400. Series2602may differ as smart edge controller2206/smart edge controller2400solve a simplified optimization problem with fewer variables than as solved by cloud computation system2202. In any case, series2602can be used to determine active setpoints to operate building equipment based on at each time step.

Referring now toFIG. 27, a graph2700illustrating complexity of smart edge MPC as a function of available processing power is shown, according to some embodiments. The complexity of smart edge MPC can be scaled based on how much processing power is available to perform computations needed to generate a solution (e.g., a setpoint trajectory). Specifically, the complexity of smart edge MPC can be scaled by increasing/decreasing, for example, a number of inputs to a predictive model used in smart edge MPC, shortening an optimization period, extending a length of time steps within the optimization periods, limiting a training data set used to generate the predictive model, using a simplified thermal model (e.g., a first-order thermal model) of a space, using simplified models of subplants, not considering some subplants altogether, etc.

Each of the simplifications imposed on smart edge MPC can be correlated to the processing power available to perform smart edge MPC. As the processing power available increases, various aspects of smart edge MPC can become more complex. For example, as available processing power increases, the optimization period considered can increase as well. As another example, as available processing power increases, more complex models of subplants can be considered. More complex models can include additional inputs, generate additional predications, solve higher-order functions, etc.

Graph2700is shown to include a maximum complexity value2702. In some embodiments, maximum complexity value2702indicates a level of complexity necessary for full MPC. Particularly, maximum complexity value2702can indicate a level of complexity of the MPC problem solved by cloud computation system2202.

Graph2700is also shown to include a series2704indicating complexity of smart edge MPC as a function of available processing power. In general, as available processing power increases, the complexity of smart edge MPC can also increase. As available processing power increases, series2704is shown to approach maximum complexity value2702. As a difference in complexity between series2704and maximum complexity value2702decreases, an optimization problem solved by smart edge MPC can become increasingly similar to an optimization problem solved by MPC. As shown in graph2700, values of series2704are always below maximum complexity value2702. If values of series2704were to equal maximum complexity value2702, no difference between smart edge MPC and MPC would exist (i.e., building system2204would be locally performing MPC).

Graph2700is also shown to include a difference2706. Difference2706can indicate how significantly smart edge MPC has been scaled down in comparison to MPC. The larger a value of difference2706is, the more simplified smart edge MPC may be. To simplify smart edge MPC, a predetermined importance hierarchy may be utilized. The predetermined importance hierarchy can identify what considerations of smart edge MPC are most critical to maintain if limited processing power is available. For example, the predetermined importance hierarchy may indicate that shortening the optimization period has less of an effect on accuracy of smart edge MPC in comparison to reducing inputs to a predictive model. As such, if available processing power decreases (i.e., difference2706increases), the optimization period may be shortened but a number of inputs to the predictive model kept constant to maximize accuracy of decisions made by smart edge MPC. Smart edge controller2206can use graph2700, to determine an appropriate complexity value for smart edge MPC to operate at.sss

Processes for Performing MPC and Smart Edge MPC

Referring now toFIG. 28, a process2800for operating building equipment based on MPC determinations is shown, according to some embodiments. In some embodiments, process2800illustrates how MPC is performed based on setpoint trajectories generated by a cloud computation system (e.g., cloud computation system2202). In some embodiments, process2800illustrates how smart edge MPC is performed based on setpoint trajectories generated by a smart edge controller (e.g., smart edge controller2206and/or smart edge controller2400).

Process2800includes collecting sensor data from environmental sensors (step2802). The sensor data collected in step2802can include any information applicable for performing an MPC process. For example, the sensor data can include a time of day, temperature measurements, humidity measurements, weather forecasts, etc. The environmental sensors can include any sensors capable of measuring and communicating various conditions. For example, the environmental sensors may include an indoor temperature sensor, an indoor humidity sensor, outdoor temperature sensors, sensors of a weather service, etc. In some embodiments, step2802is performed by environmental sensor2212, smart edge controller2206, smart edge controller2400, and/or cloud computation system2202.

Process2800includes generating a setpoint trajectory based on the sensor data (step2804), according to some embodiments. The setpoint trajectory generated in step2804can be a setpoint trajectory for an environmental condition that is to be managed in a building system. For example, the setpoint trajectory may be a temperature setpoint trajectory indicating one or more temperature setpoints to achieve over a time period. In some embodiments, the setpoint trajectory indicates setpoint values to achieve. In some embodiments, the setpoint trajectory is used in combination with environmental data to generate active setpoints. The setpoint trajectory may detail how active setpoints change over a time period based on environmental conditions. For example, the setpoint trajectory may indicate an indoor temperature should equal 90% of an outdoor temperature in the morning and 95% of the outdoor temperature in the afternoon. As such, the setpoint trajectory can ensure the indoor temperature is lower in the morning as compared to the afternoon relative to the outdoor temperatures at said times.

The setpoint trajectory generated in step2804may be generated based on MPC or smart edge MPC. If the setpoint trajectory is generated based on MPC, an optimization problem solved in step2804may be more complex than if the setpoint trajectory is generated based on smart edge MPC. For example, an MPC optimization problem may be solved utilizing all the sensor data collected in step2802if determining the setpoint trajectory, whereas a smart edge MPC optimization problem may be solved utilizing a smaller subset of the sensor data. By simplifying the optimization problem, smart edge MPC can be performed by less computationally powerful devices. In some embodiments, step2804is performed by cloud computation system2202, smart edge controller2206, and/or smart edge controller2400.

Process2800includes determining an active setpoint based on the setpoint trajectory (step2806), according to some embodiments. In some embodiments, if the setpoint trajectory indicates setpoints to be achieved over a time period, step2806includes determining what setpoint is indicated for a current time. In some embodiments, if the setpoint trajectory indicates how setpoints are to change over time based on environmental conditions, step2806includes determining the active setpoint based on the setpoint trajectory and current environmental conditions. The active setpoint generated in step2806may be generated the same regardless of whether the setpoint trajectory is generated based on MPC or smart edge MPC. In general, the active setpoint can be generated based on any setpoint trajectory provided. In some embodiments, step2806is performed by smart edge controller2206and/or smart edge controller2400.

Process2800includes communicating the active setpoint to building equipment (step2808), according to some embodiments. In some embodiments, the active setpoint indicates a setpoint value the building equipment is to be operated to achieve. In some embodiments, the active setpoint is communicated to a single building device or to multiple building devices. In some embodiments, the active setpoint is communicated to a control system that provides control signals to building devices of the building equipment. In some embodiments, step2808is performed by smart edge controller2206and/or smart edge controller2400.

Process2800includes operating the building equipment based on the active setpoint (step2810), according to some embodiments. If the active setpoint is provided directly to the building equipment, the building equipment can operate to achieve the active setpoint. If the active setpoint is provided to a control system, the control system can determine control signals to provide to building devices of the building equipment. The control signals can be generated as to operate specific building devices of the building equipment to achieve the active setpoint. For example, if a current temperature of a space is 75° F. and the active setpoint is a temperature setpoint indicating the current temperature is to be 70° F. based on current environmental conditions, an air conditioner may be operated to decrease the current temperature in the space. In some embodiments, step2810is performed by building device2208and/or control system2210.

Referring now toFIG. 29, a process2900for determining how to operate a building system based on whether a connection to a cloud computation system is active is shown, according to some embodiments. The cloud computation system can provide setpoint trajectories to the building system if a connection is active between the cloud computation system and the building system. However, if the connection is not active, the building system may operate based on smart edge MPC to maintain occupant comfort and optimize (e.g., reduce) costs. In some embodiments, process2900is performed if setpoint trajectories can be received by the cloud computation system. If setpoint trajectories cannot be received (e.g., a building manager opted to not subscribe to IoT services provided by the cloud computation system), process2900may not be performed. In some embodiments, some and/or all steps of process2900are performed by smart edge controller2206.

Process2900includes detecting a connection between a cloud computation system and a building system (step2902), according to some embodiments. In some embodiments, the connection is detected to be active if a setpoint trajectory is received from the cloud computation system. In some embodiments, the connection is detected to be active based on a heartbeat transmission communicated by the cloud computation system. If the connection is active, the building system may be able to receive setpoint trajectories from the cloud computation system. If the connection is not active, the building system may be required to generate setpoint trajectories locally. In some embodiments, step2902is performed by heartbeat detector2320of smart edge controller2206.

Process2900includes determining if the connection is detected (step2904), according to some embodiments. In some embodiments, the cloud computation system provides the setpoint trajectory and/or the heartbeat transmission indicating a connection after a predetermined amount of time (e.g., every minute, every hour, etc.). In some embodiments, the cloud computation system provides the setpoint trajectory and/or the heartbeat transmission indicating a connection based on a heartbeat request communicated by the building system. If a connection is detected in step2904(“YES”), process2900proceeds to step2906. If a connection is not detected in step2904(“NO”), process2900proceeds to step2908. In some embodiments, step2904is performed by heartbeat detector2320.

Process2900includes operating building equipment based on setpoint trajectories generated by the cloud computation system (step2906), according to some embodiments. In some embodiments, if the connection to the cloud computation system is active, setpoint trajectories can be generated by and received from the cloud computation system to operate building equipment. In some embodiments, step2906includes performing process3000described below with reference toFIG. 30. In some embodiments, step2906is performed by smart edge controller2206.

Process2900includes operating building equipment based on smart edge MPC (step2908), according to some embodiments. If the connection to the cloud computation system is lost, smart edge MPC can be performed to generate setpoint trajectories to operate the building equipment based on. In some embodiments, step2908includes performing a process3100described below with reference toFIG. 31. In some embodiments, step2908is performed by smart edge controller2206.

Referring now toFIG. 30, a process3000for operating a smart edge controller of a building system receiving setpoint trajectories from a cloud computation system is shown, according to some embodiments. In some embodiments, process3000is performed based on a determination made in process2900described with reference toFIG. 29. In some embodiments, process3000illustrates how the smart edge controller operates if a connection to the cloud computation system is active. The cloud computation system can perform MPC to determine the setpoint trajectories based on optimization of a cost function. MPC may require a large amount of processing power and may be unable to be performed by the smart edge controller or any other devices/systems of the building system. As such, the cloud computation system can provide the processing power necessary to perform MPC for the smart edge controller to determine control decisions based on. However, process3000is shown to include steps for the smart edge controller to perform to prepare for a possible period of intermittent connectivity to the cloud computation system. In some embodiments, some and/or all steps are performed by smart edge controller2206and components thereof.

Process3000includes receiving a current setpoint trajectory from a cloud computation system (step3002), according to some embodiments. The current setpoint trajectory communicated by the cloud computation system can include information regarding setpoints to achieve during an optimization period. In some embodiments, the current setpoint trajectory is communicated by the cloud computation system before a current time step. As the current setpoint trajectory can be communicated before the current time step, the current setpoint trajectory should be accessible such that the current setpoint trajectory can be utilized once the current time step occurs. In some embodiments, the cloud computation system communicates the setpoint trajectory once generated. In some embodiments, the cloud computation system communicates the setpoint trajectory based on a determination the setpoint trajectory should be communicated (e.g., based on an amount of time since a prior setpoint trajectory was communicated, a request from the smart edge controller for a new setpoint trajectory, etc.). In some embodiments, step3002is performed by heartbeat detector2320and/or active setpoint generator2310of smart edge controller2206.

Process3000includes determining an active setpoint based on the current setpoint trajectory for an optimization period (step3004), according to some embodiments. The active setpoint can be determined based on the current setpoint trajectory at a current time. For example, the setpoint trajectory can indicate an optimal temperature setpoint for a current time is 72° F. As such, the active setpoint can be determined to be 72° F. such that occupant comfort is maintained and costs are optimized (e.g., reduced). In some embodiments, step3004is performed by active setpoint generator2310.

Process3000includes communicating the active setpoint to building equipment (step3006), according to some embodiments. In some embodiments, the active setpoint is communicated directly to the building equipment. In some embodiments, the active setpoint is communicated to a control system (e.g., a temperature control system, a humidity control system, etc.) including the building equipment. In some embodiments, step3006is performed by active setpoint generator2310.

Process3000includes operating the building equipment based on the active setpoint (step3008), according to some embodiments. The active setpoint can indicate how the building equipment should operate at a current time. For example, the active setpoint can indicate that a temperature in a space of the building system should be 71° F. Based on the active setpoint, building equipment can be operated to increase/decrease a current temperature depending on current environmental conditions of the space. For example, if a current temperature is 75° F., an indoor unit of a variable refrigerant flow system of the building equipment can be operated to decrease the current temperature. In some embodiments, if the active setpoint is communicated to a control system, the control system determines what building devices of the building equipment to operate and how to operate said building devices to achieve the active setpoint. In some embodiments, step3008is performed by building device2208and/or control system2210.

Process3000includes collecting sensor data from environmental sensors (step3010), according to some embodiments. The sensor data can be collected from devices of the building system capable of measuring an environmental condition. For example, an environmental sensor may measure a current humidity value of a space of the building system. Step3010can allow any relevant sensor data to be collected as required by the cloud computation system to perform MPC. The sensor data collected can also be used in performing smart edge MPC. Similar to MPC performed by the cloud computation system, smart edge MPC may require sensor data to generate appropriate setpoint trajectories. As such, step3010can collect the sensor data for use in MPC performed by the cloud computation system and/or for use in smart edge MPC if a period of intermittent connectivity occurs. In some embodiments, step3010is performed by data collector2314and/or active setpoint generator2310.

Process3000includes storing the sensor data in a data buffer (step3012), according to some embodiments. The data buffer allows for the sensor data to be stored in case of intermittent connectivity between the building system and the cloud computation system. If a connection is lost, the sensor data may need to be stored so that the cloud computation system can receive the sensor data collected during the period of intermittent connectivity once the connection is restored. By saving the sensor data in the data buffer, the cloud computation system can more accurately perform MPC once the connection is restored based on conditions (e.g., environmental conditions of a space of the building system, weather conditions, etc.) measured during the period of intermittent connectivity. In some embodiments, step3012is performed by data buffer2316.

Process3000includes communicating measurements to the cloud computation system (step3014), according to some embodiments. The measurements can include various information collected/generated by the smart edge controller. For example, the measurements, can include sensor data, heartbeat requests, etc. The measurements can be used by the cloud computation system to generate new setpoint trajectories. In some embodiments, the measurements are communicated to the cloud computation system as the measurements are gathered. In some embodiments, the measurements are collected and communicated to the cloud computation system after a determination that the collected measurements should be communicated (e.g., after a predetermined amount of time, based on a request from the cloud computation system for measurements, etc.). In some embodiments, step3014is performed by data collector2314.

Referring now toFIG. 31, a process3100for performing smart edge MPC is shown, according to some embodiments. In some embodiments, process3100is performed based on a determination made in process2900described with reference toFIG. 29that a connection to the cloud computation system is not active. In some embodiments, process3100is a counterpart to process3000described with reference toFIG. 30for operating the building system without connection to the cloud computation system. As such, some steps of process3100may be similar to and/or the same as some steps of process3000. In some embodiments, process3100illustrates how smart edge MPC is performed if a connection is not established with the cloud computation system. If the connection is not established, process3100can ensure some and/or all benefits of MPC (e.g., maintaining occupant comfort, cost optimization, etc.) are maintained locally to a building system. In some embodiments, some and/or all steps of process3100are performed by smart edge controller2206and/or smart edge controller2400.

Process3100includes receiving an indication that smart edge MPC should be performed (step3102), according to some embodiments. In some embodiments, the indication is based on a determination that the connection to the cloud computation system is not active. For example, the building system may be experiencing intermittent connectivity with the cloud computation system, and as such, the connection is not currently available. As another example, a building manager may not subscribe to IoT solutions provided by the cloud computation system, and as such, the building system may operate partially/completely based on smart edge MPC (i.e., a connection to the cloud computation system may never be active). In some embodiments, step3102is performed by smart edge controller2206and/or smart edge controller2400.

Process3100includes collecting sensor data from environmental sensors (step3104), according to some embodiments. The sensor data collected in step3104can be collected for the cloud computation system to perform MPC once the connection is restored and/or for the smart edge controller to perform smart edge MPC. To perform MPC and/or smart edge MPC, current conditions related to the building system (e.g., a current temperature, current humidity, weather conditions, etc.) may be required to generate adequate setpoint trajectories. In some embodiments, step3104includes collecting as much sensor data as possible for use in MPC and/or smart edge MPC. However, if smart edge MPC is the primary control method for the building system (i.e., if the cloud computation system does not provide setpoint trajectories), step3104may include discarding sensor data not required for smart edge MPC. For example, smart edge MPC may require indoor temperature measurements, but may not require outdoor air quality measurements. As such, outdoor air quality measurements included in the sensor data may be discarded as said measurements may be unnecessary for smart edge MPC. In some embodiments, step3104is performed by data collector2314, data collector2410, and/or setpoint trajectory generator2312.

Process3100includes storing the sensor data in a data buffer (step3106), according to some embodiments. Step3106is shown as an optional step in process3100as step3106may only be necessary if setpoint trajectories can be received by the cloud computation system. The data buffer allows for the sensor data to be stored in case of intermittent connectivity between the building system and the cloud computation system. If a connection is lost, the sensor data may need to be stored so that the cloud computation system can receive the sensor data collected during the period of intermittent connectivity if the connection is restored. By saving the sensor data in the data buffer, the cloud computation system can more accurately perform MPC once the connection is restored based on conditions (e.g., environmental conditions of a space of the building system, weather conditions, etc.) measured during the period of intermittent connectivity. However, if setpoint trajectories are not received from the cloud computation system (e.g., all setpoint trajectories are generated based on smart edge MPC), step3106may not be necessary to perform. In some embodiments, step3106is performed by data buffer2316.

Process3100includes generating a predictive model based on the sensor data (step3107), according to some embodiments. The predictive model generated in step3107can be used in smart edge MPC for generating a setpoint trajectory. In some embodiments, the predictive model is generated by the cloud computation system and provided if a connection is available. In some embodiments, the predictive model is generated locally by the smart edge controller. The predictive model can be generated based on the sensor data collected in step3104to ensure the predictive model adequately models occupant comfort and allows for smart edge MPC to optimize (e.g., reduce) costs. As the predictive model generated in step3107can be utilized for smart edge MPC, the predictive model may be a simplified version of a predictive model utilized by the cloud computation system for MPC. By simplifying the model utilized by the cloud computation system, smart edge MPC can be performed on devices of the building system. The predictive model may be simplified by, for example, limiting a number of variables considered, generating the predictive model based on a limited subset of the sensor data collected in step3104, etc. In some embodiments, step3107is performed by cloud computation system2202and/or predictive model generator2412.

Process3100includes determining an amount of available processing resources for performing a cost optimization of a cost function of operating building equipment over a time duration (step3108), according to some embodiments. To determine the amount of available processing resources, step3108can include what devices are configured and able to perform the cost optimization. To determine the amount of available processing resources, step3108may include determining processing components of each available device and determining an amount of processing resources each of the components can allocate to performing the cost optimization. In some embodiments, step3108is performed by smart edge controller2206.

Process3100includes scaling a level of complexity of the cost optimization of the cost function based on the amount of available processing resources (step3109), according to some embodiments. To scale the level of complexity of the cost optimization, various changes can be applied to the cost optimization and/or the cost function. For example, an optimization period that the cost optimization is performed for can be shortened to decrease how far into the future the cost optimization extends, thereby decreasing complexity. As another example, a number of inputs (e.g., occupant comfort data, environmental conditions, etc.) to the cost optimization and/or to the cost function can be limited. By limiting the number of inputs, the cost optimization can simplify predictions as fewer considerations may need to be made. As another example, the cost optimization can be scaled down by decreasing a number of predictions generated by performing the cost optimization. For example, the cost optimization can decrease an number of predictions regarding how occupants react to changes in setpoints, and limit the predictions to a number of critical predictions that are crucial for maintaining occupant comfort. In general, as the amount of available processing resources increases, the complexity of the cost optimization and/or the cost function can increase. Likewise, as the amount of available processing resources decreases, the complexity of the cost optimization and/or the cost function can decrease. In some embodiments, step3109is performed by smart edge controller2206.

Process3100includes performing the scaled cost optimization of the cost function based on the predictive model and the sensor data to generate a current setpoint trajectory (step3110), according to some embodiments. To generate the current setpoint trajectory, smart edge MPC can be performed. Smart edge MPC can ensure that even if setpoint trajectories cannot be received from a cloud computation system, that setpoint trajectories can nonetheless be generated to maintain benefits of MPC. The current setpoint trajectory generated in step3110can be generated by performing the scaled cost optimization based on the sensor data collected in step3104and the predictive model generated in step3107. Similar to setpoint trajectories provided by the cloud computation system, the current setpoint trajectory can detail setpoints to achieve over a time period (e.g., an optimization period). As the cost optimization is scaled in step3109based on the amount of available processing resources, the scaled cost optimization can be solved by one or more devices of the building system in order to generate the setpoint trajectory. In some embodiments, step3110is performed by setpoint trajectory generator2312.

Process3100includes determining an active setpoint based on the current setpoint trajectory (step3112), according to some embodiments. The active setpoint can be determined based on the current setpoint trajectory at a current time. While the current setpoint trajectory generated in step3110may be different than a setpoint trajectory generated by the cloud computation system may be, the active setpoint can nonetheless be generated based on the current setpoint trajectory. In some embodiments, the active setpoint trajectory for a current time can be determined based on the setpoint trajectory if the setpoint trajectory indicates various setpoints to achieve over a time period. In some embodiments, the active setpoint is determined based on the setpoint trajectory and current environmental conditions if the setpoint trajectory indicates how setpoints are to adjust over a time period based on various environmental conditions. In some embodiments, step3112is performed by active setpoint generator2310.

Process3100includes communicating the active setpoint to building equipment (step3114), according to some embodiments. In some embodiments, the active setpoint is communicated directly to the building equipment. In some embodiments, the active setpoint is communicated to a control system (e.g., a temperature control system, a humidity control system, etc.) including the building equipment. In some embodiments, step3114is performed by active setpoint generator2310.

Process3100includes operating the building equipment based on the active setpoint (step3116), according to some embodiments. As the active setpoint is determined based on the setpoint trajectory generated based on smart edge MPC, the active setpoint may not operate the building equipment the same as an active setpoint determined based on a setpoint trajectory generated by the cloud computation system. However, the active setpoint determined based on the current setpoint trajectory can still optimize (e.g., reduce) costs while maintaining occupant comfort. In some embodiments, the active setpoint is provided to a control system including the building equipment such that the control system determines what building devices of the building equipment to operate and how to operate said building devices. In some embodiments, step3116is performed by building device2208and/or control system2210.

Referring now toFIG. 32, an example of a CNN3200is shown, according to an exemplary embodiment. CNN3200is shown to include a sequence of layers including an input layer3202, a convolutional layer3204, a rectified linear unit (ReLU) layer3206, a pooling layer3208, and a fully connected layer3210(i.e., an output layer). Each of layers3202-3210may transform one volume of activations to another through a differentiable function. Layers3202-3210can be stacked to form CNN3100. Unlike a regular (i.e., non-convolutional) neural network, layers3202-3210may have neurons arranged in 3 dimensions: width, height, depth. The depth of the neurons refers to the third dimension of an activation volume, not to the depth of CNN3100, which may refer to the total number of layers in CNN3100. Some neurons in one or more of layers of CNN3100may only be connected to a small region of the layer before or after it, instead of all of the neurons in a fully-connected manner. In some embodiments, the final output layer of CNN3100(i.e., fully-connected layer3210) is a single vector of class scores, arranged along the depth dimension.

In some embodiments, CNN3100is used to generate a setpoint trajectory for building system2204. The setpoint trajectory can be utilized by active setpoint generator2310to generate an active setpoint to operate building equipment based on. Although these specific examples are discussed in detail, it should be understood that CNN3100can be used to generate any models applicable for performing MPC and/or smart edge MPC for building system2204.

Input layer3202is shown to include a set of input neurons3201. Each of input neurons3201may correspond to a variable that can be collected by data collector1010and used as an input to CNN3100. For example, input neurons3201may correspond to variables such as outdoor air temperature (OAT) (e.g., a temperature value in degrees F. or degrees C.), the day of the week (e.g., 1=Sunday, 2=Monday, . . . , 7=Saturday), the day of the year (e.g., 0=January 1st, 1=January 2nd, . . . , 365=December 31st), a binary occupancy value for a building zone (e.g., 0=unoccupied, 1=occupied), a percentage of occupancy for the building zone (e.g., 0% if the building zone is unoccupied, 30% of the building zone is at 30% of maximum occupancy, 100% of the building zone is fully occupied, etc.), a measured temperature of a space of building system2204(e.g., a temperature value in degrees F. or degrees C.), or any other variable that may be relevant to generating a setpoint trajectory.

Convolutional layer3204may receive input from input layer3202and provide output to ReLU layer3206. In some embodiments, convolutional layer3204is the core building block of CNN3100. The parameters of convolutional layer3204may include a set of learnable filters (or kernels), which have a small receptive field, but extend through the full depth of the input volume. During the forward pass, each filter may be convolved across the width and height of the input volume, computing the dot product between the entries of the filter and entries within input layer3202and producing a 2-dimensional activation map of that filter. As a result, CNN3100learns filters that activate when it detects some specific type of feature indicated by input layer3202. Stacking the activation maps for all filters along the depth dimension forms the full output volume of convolutional layer3204. Every entry in the output volume can thus also be interpreted as an output of a neuron that looks at a small region in input layer3202and shares parameters with neurons in the same activation map. In some embodiments, CNN3100includes more than one convolutional layer3204.

ReLU layer3206may receive input from convolutional layer3204and may provide output to fully connected layer3210. ReLU is the abbreviation of Rectified Linear Units. ReLu layer3206may apply a non-saturating activation function such as ƒ(x)=max(0, x) to the input from convolutional layer3204. ReLU layer3206may function to increase the nonlinear properties of the decision function and of the overall network without affecting the receptive fields of convolutional layer3204. Other functions can also be used in ReLU layer3206to increase nonlinearity including, for example, the saturating hyperbolic tangent ƒ(x)=tan h(x) or ƒ(x)=| tan h(x)| and the sigmoid function ƒ(x)=(1+e−x)−1. The inclusion of ReLU layer3206may cause CNN3100to train several times faster without a significant penalty to generalization accuracy.

Pooling layer3208may receive input from ReLU layer3206and provide output to fully connected layer3210. Pooling layer3208can be configured to perform a pooling operation on the input received from ReLU layer3206. Pooling is a form of non-linear down-sampling. Pooling layer3208can use any of a variety of non-linear functions to implement pooling, including for example max pooling. Pooling layer3208can be configured to partition the input from ReLU layer3206into a set of non-overlapping sub-regions and, for each such sub-region, output the maximum. The intuition is that the exact location of a feature is less important than its rough location relative to other features. Pooling layer3208serves to progressively reduce the spatial size of the representation, to reduce the number of parameters and amount of computation in the network, and hence to also control overfitting. Accordingly, pooling layer3208provides a form of translation invariance.

In some embodiments, pooling layer3208operates independently on every depth slice of the input and resizes it spatially. For example, pooling layer3208may include filters of size 2×2 applied with a stride of 2 down-samples at every depth slice in the input by 2 along both width and height, discarding 75% of the activations. In this case, every max operation is over 4 numbers. The depth dimension remains unchanged. In addition to max pooling, pooling layer3208can also perform other functions, such as average pooling or L2-norm pooling.

In some embodiments, CNN3100includes multiple instances of convolutional layer3204, ReLU layer3206, and pooling layer3208. For example, pooling layer3208may be followed by another instance of convolutional layer3204, which may be followed by another instance of ReLU layer3206, which may be followed by another instance of pooling layer3208. Although only one set of layers3204-3208is shown inFIG. 32, it is understood that CNN3100may include one or more sets of layers3204-3208between input layer3202and fully-connected layer3210. Accordingly, CNN3100may be an “M-layer” CNN, where M is the total number of layers between input layer3202and fully connected layer3210.

Fully connected layer3210is the final layer in CNN3100and may be referred to as an output layer. Fully connected layer3210may follow one or more sets of layers3204-3208and may be perform the high-level reasoning in CNN3100. In some embodiments, output neurons3211in fully connected layer3210may have full connections to all activations in the previous layer (i.e., an instance of pooling layer3208). The activations of output neurons3211can hence be computed with a matrix multiplication followed by a bias offset. In some embodiments, output neurons3211within fully connected layer3210are arranged as a single vector of class scores along the depth dimension of CNN3100.

In some embodiments, each of output neurons3211represents a threshold value (e.g., a boundary value, a boundary range around a setpoint, etc.) which can be used to generate a setpoint trajectory by setpoint trajectory generator2312. For example, one or more of output neurons3211may represent setpoint values for a space of building system2204. The one or more of output neurons3211can be used to generate a setpoint trajectory.

In some embodiments, predictive model generator2412uses comfort data included in sensor data from sources such as manual adjustments to setpoints made by occupants, experiments on setpoints, and/or occupant voting regarding comfort levels to determine accuracy of a predictive model generated by CNN3100. If the comfort data indicates the predictive model generated by CNN3100maintains adequate levels of occupant comfort, CNN3100may be reinforced, such that the reinforcement indicates a current predictive model can be used to generate an appropriate setpoint trajectory. However, if the comfort data indicates the predictive model generated by CNN3100does not maintain adequate levels of occupant comfort, CNN3100may be updated and/or regenerated to provide a more accurate predictive model.

Configuration of Exemplary Embodiments