/*!
\page userguide_ctrl BDM Use - Control and Design of Decision Making Strategy

Bayesian estimation as introduced in Section \ref userguide_estim is a special case of Decision Strategy, see. ....
A more demanding scenario is to design a control strategy that will influence the system operating under uncertainty, this is implemented as scenario \c closedloop.

Table of content:
\ref ug3_theory 
\ref ug3_arx_basic 
\ref ug3_arx_distributed 

The function of the \c closedloop is graphically illustrated:
\dot
digraph estimation{
	node [shape=box];
	"Data Source" -> "Controller 1" [label="data"];
	"Data Source" -> "Controller 2" [label="data"];
	"Controller 1" -> "Data Source" [label="actions"];
	"Controller 2" -> "Data Source" [label="actions"];
	
	"Data Source" -> "Result Logger" [label="Simulated\n data"];
	"Controller 1" -> "Result Logger" [label="Internal \n variables"];
	"Controller 2" -> "Result Logger" [label="Internal \n variables"];
}
\enddot
The numer of controllers in not limited, however, they can not influence the same variable. Thus, it is limited by the number of available actions.

Here,
\li Data Source is an object (class DS) providing sequential data, \f$ [d_1, d_2, \ldots d_t] \f$ and accepting input actions \f$[u_{1,t},\ldots u_{m,t}]\f$
\li Controller is an object (class Controller) performing adaptive control. Typically is has some internal Bayesian Estimator.
\li Result Logger is an object (class logger) dedicated to storing important data from the experiment.

Since objects  datasource and the logger has already been introduced in section \ref userguide_sim, it remains to introduce 
object \c Controller (bdm::Controller).

\section ug3_theory Design of DM strategy
The object bdm::Contoller has two principal methods: 
 * redesign, which (re)designs the control strategy - this may be computationally costly operation,
 * ctrlaction, which evaluates the current decision strategy and returns a numerical value of the action variable.
 
At the most general class, we do not prescribe any technique how to design the strategy in \c redesign(). Most of the implemented techniques are, however, 
variants and approximations of dynamic programming (or optimal control), see [].

TODO...

\section ug3_arx_basic Control of ARX models

Autoregressive models has already been introduced in \ref ug_arx_sim and \ref ug2_arx_basic where their simulator and estimator has been presented.
Control of an ARX model under the qudratic loss function is known as LQG control. This is implemented in object bdm::LQG_ARX.

The following code is from bdmtoolbox/tutorial/userguide/lqg_arx_example.m
\code
\endcode 
This is the minimal configuration of an LQG_ARX estimator. Optional elements of bdm::ARX::from_setting() were set using their default values:

\section ug3_arx_distributed Naive distributed control 

In the example above, only one controller was influencing the system. We extend this approach to a scenario where more controllers is acting independently. 

A trivial example how this can be done is presented in file bdmtoolbox/tutorial/userguide/lqg_arx_distrib_example.m. The code extends previous example as follows:
\code
\endcode

*/
