Driver Components
While a Driver Component is running, it will repeatedly set and get the values of other variables in the workflow until some condition is satisfied. The result is a feedback loop.
In the example below, while Component A is running, it causes Components B and C to run multiple times. This can be viewed either as Component A calls Components B and C as subroutines or as Component A encompasses Components B and C.
A Driver Component usually requires multiple iterations to execute. An example Driver Component is the Optimization Tool. The Optimization Tool has as variables a set of design variables, constraints, and an objective. While the Optimization Tool is running, it will repeatedly set values for the design variables until the objective function is minimized.
Example uses of Driver Components include:
- Local optimization - The Optimization Tool can be used to repeatedly run a component until some output is minimized or maximized before executing the next component in a series of components.
- Convergence loops - The Optimization Tool can also be used to close convergence loops. A convergence loop occurs when a workflow has an input that is some function of an output of the same model. By specifying an objective function that minimizes the difference between the input and output values, the Optimization Tool can converge the system.
- Nested drivers - It is often the goal to optimize the results of a driver. For example, the output of a Monte Carlo module calculates mean and standard deviations for variables in the workflow. To minimize the standard deviation of one or more of these variables, the Monte Carlo module must be inserted into the workflow as a Driver Component. The Optimization then minimizes the results of the Monte Carlo driver.