Req:Optimize

--Dchassin 23:46, 16 October 2011 (UTC)

Optimization is a general class of problem in which a property of an object of either minimized, maximized, or brought as close as possible to a given value, given a set of variable that can be altered, and a set of constraints that must not be violated.

Application Concept
A user implements a model that is intended to minimize/maximize a property that is calculated from the behavior of the system by altering one or more other properties during the simulation.

Design philosophy
The design approach of the optimizer is based on the idea that making optimization is a component of GridLAB-D as opposed to the idea that one uses GridLAB-D to do optimization. The optimizer should provide functionality that modelers can use rather than requiring modelers to provide models that optimization experts can use.

The optimizer is designed to meet the expectations of GridLAB-D modelers, rather than those of traditional optimization experts. For example, the terminology of "target property" (instead of objective) and "changing property" (instead of decision variable) to facility accessibility and understanding for GridLAB-D modelers who are not necessarily well-versed in the language of optimization.

Because of the structure of GridLAB-D models, it is easy to create discontinuous functions or even non-numeric values. The models usually cannot be solved with classical optimization methods. For this reason, it is not expected that the optimizer can always determine the global optimal.

U1

 * Simple optimization : The user implements a thermostat control strategy that minimizes the energy cost given a 24 hour price forecast by adjusting the temperature setpoint for the next hour.

U2

 * Complex optimization : The user implements a thermostat control strategy that minimizes the energy cost given a 24 hour price forecast by adjusting the temperature setpoint for the next hour and adjusting the bid price for in a retail market.

R1

 * Module scope

R1.1

 * Name : GridLAB-D shall implement optimization in the module optimization.

R1.2

 * Core scope : that operates using the main solver engine in the core.

R1.3

 * Class scope : Optimizer objectives shall be implemented as individual objects of the class objective.

R2
The objective object shall allow the following properties to be specified by the user

R2.1

 * Target property : The target property shall specify the optimization objective in the form of a minimization, maximization, or equality.

R2.2

 * Changing properties : The properties that may be changed to achieve the objective shall be specified in a form compliant with the GridLAB-D object reference standard.

R2.3

 * Constraints : The constraints that are applied shall be specified in the form of relations between object properties and/or expressions that are compliant with GLM syntax.

R2.4

 * Maximum trials : The minimum number of trials before the optimizer fails shall be specified by the user.

R2.5

 * Precision : The precision with which the objective must be determined shall be specified by the user.

R2.6

 * Models : The user shall specify the modeling assumptions to use.

R2.7

 * Methods : The user shall specify the method used to solve the optima.