title: Self-tuning
text: # Self-tuning
  
  In control theory a self-tuning system is capable of optimizing its own internal running parameters in order to maximize or minimize the fulfilment of an objective function; typically the maximization of efficiency or error minimization.
  
  Self-tuning and auto-tuning often refer to the same concept. Many software research groups consider auto-tuning the proper nomenclature.
  
  Self-tuning systems typically exhibit non-linear adaptive control. Self-tuning systems have been a hallmark of the aerospace industry for decades, as this sort of feedback is necessary to generate optimal multi-variable control for non-linear processes. In the telecommunications industry, adaptive communications are often used to dynamically modify operational system parameters to maximize efficiency and robustness.
  
  ## Examples
  
  Examples of self-tuning systems in computing include:
  
  * TCP (Transmission Control Protocol)
  * Microsoft SQL Server (Newer implementations only)
  * FFTW (Fastest Fourier Transform in the West)
  * ATLAS (Automatically Tuned Linear Algebra Software)
  * libtune (Tunables library for Linux)
  * PhiPAC (Self Tuning Linear Algebra Software for RISC)
  * MILEPOST GCC (Machine learning based self-tuning compiler)
  
  Performance benefits can be substantial. Professor Jack Dongarra, an American computer scientist, claims self-tuning boosts performance, often on the order of 300%.
  
  Digital self-tuning controllers are an example of self-tuning systems at the hardware level.
  
  ## Architecture
  
  Self-tuning systems are typically composed of four components: expectations, measurement, analysis, and actions. The expectations describe how the system should behave given exogenous conditions.
  
  Measurements gather data about the conditions and behaviour. Analysis helps determine whether the expectations are being met- and which subsequent actions should be performed. Common actions are gathering more data and performing dynamic reconfiguration of the system.
  
  Self-tuning (self-adapting) systems of automatic control are systems whereby adaptation to randomly changing conditions is performed by means of automatically changing parameters or via automatically determining their optimum configuration. In any non-self-tuning automatic control system there are parameters which have an influence on system stability and control quality and which can be tuned. If these parameters remain constant whilst operating conditions (such as input signals or different characteristics of controlled objects) are substantially varying, control can degrade or even become unstable. Manual tuning is often cumbersome and sometimes impossible. In such cases, not only is using self-tuning systems technically and economically worthwhile, but it could be the only means of robust control. Self-tuning systems can be with or without parameter determination.
  
  In systems with parameter determination the required level of control quality is achieved by automatically searching for an optimum (in some sense) set of parameter values. Control quality is described by a generalised characteristic which is usually a complex and not completely known or stable function of the primary parameters. This characteristic is either measured directly or computed based on the primary parameter values. The parameters are then tentatively varied. An analysis of the control quality characteristic oscillations caused by the varying of the parameters makes it possible to figure out if the parameters have optimum values, i.e.. if those values deliver extreme (minimum or maximum) values of the control quality characteristic. If the characteristic values deviate from an extremum, the parameters need to be varied until optimum values are found. Self-tuning systems with parameter determination can reliably operate in environments characterised by wide variations of exogenous conditions.
  
  In practice systems with parameter determination require considerable time to find an optimum tuning, i.e. time necessary for self-tuning in such systems is bounded from below. Self-tuning systems without parameter determination do not have this disadvantage. In such systems, some characteristic of control quality is used (e.g., the first time derivative of a controlled parameter). Automatic tuning makes sure that this characteristic is kept within given bounds. Different self-tuning systems without parameter determination exist that are based on controlling transitional processes, frequency characteristics, etc. All of those are examples of closed-circuit self-tuning systems, whereby parameters are automatically corrected every time the quality characteristic value falls outside the allowable bounds. In contrast, open-circuit self-tuning systems are systems with para-metrical compensation, whereby input signal itself is controlled and system parameters are changed according to a specified procedure. This type of self-tuning can be close to instantaneous. However, in order to realise such self-tuning one needs to control the environment in which the system operates and a good enough understanding of how the environment influences the controlled system is required.
  
  In practice self-tuning is done through the use of specialised hardware or adaptive software algorithms. Giving software the ability to self-tune (adapt):
  
  * Facilitates controlling critical processes of systems;
  * Approaches optimum operation regimes;
  * Facilitates design unification of control systems;
  * Shortens the lead times of system testing and tuning;
  * Lowers the criticality of technological requirements on control systems by making the systems more robust;
  * Saves personnel time for system tuning.
  
  ## Literature
  
  * ↑ http://appliedmathematician.org/pdf/news/781.pdf Faster than a Speeding Algorithm
  * ↑ http://bse.sci-lib.com/article099233.html Big Soviet Encyclopedia, Self-Tuning Systems (in Russian)
  