Learn R Programming

timsac (version 1.3.0)

simcon: Optimal Controller Design and Simulation

Description

Produce optimal controller gain and simulate the controlled process.

Usage

simcon(span, len, r, arcoef, impuls, v, weight)

Arguments

span
span of control performance evaluation.
len
length of experimental observation.
r
dimension of control input, less than or equal to $d$ (dimension of a vector).
arcoef
matrices of autoregressive coefficients. arcoef[i,j,k] shows the value of $i$-th row, $j$-th column, $k$-th order.
impuls
impulse response matrices.
v
covariance matrix of innovation.
weight
weighting matrix of performance.

Value

  • gaincontroller gain.
  • aveaverage value of i-th component of y.
  • varvariance.
  • stdstandard deviation.
  • bcsub matrices $(pd,r)$ of impulse response matrices, where $p$ is the order of the process, $d$ is the dimension of the vector and $r$ is the dimension of the control input.
  • bdsub matrices $(pd,d-r)$ of impulse response matrices.

Details

The basic state space model is obtained from the autoregressive moving average model of a vector process $y(t)$; $$y(t) - A(1)y(t-1) -\ldots- A(p)y(t-p) = u(t) - B(1)u(t-1) -\ldots- B(p-1)u(t-p+1),$$ where $A(i)$ ($i=1,\ldots,p$) are the autoregressive coefficients of the ARMA representation of $y(t)$.

References

H.Akaike, E.Arahata and T.Ozaki (1975) Computer Science Monograph, No.6, Timsac74, A Time Series Analysis and Control Program Package (2). The Institute of Statistical Mathematics.

Examples

Run this code
x <- matrix(rnorm(1000*2),1000,2)
  ma <- array(0,dim=c(2,2,2))
  ma[,,1] <- matrix(c( -1.0,  0.0,
                        0.0, -1.0), 2,2,byrow=TRUE)
  ma[,,2] <- matrix(c( -0.2,  0.0,
                       -0.1, -0.3), 2,2,byrow=TRUE)
  y <- mfilter(x,ma,"convolution")
  ar <- array(0,dim=c(2,2,3))
  ar[,,1] <- matrix(c( -1.0,  0.0,
                        0.0, -1.0), 2,2,byrow=TRUE)
  ar[,,2] <- matrix(c( -0.5, -0.2,
                       -0.2, -0.5), 2,2,byrow=TRUE)
  ar[,,3] <- matrix(c( -0.3, -0.05,
                       -0.1, -0.30), 2,2,byrow=TRUE)
  y <- mfilter(y,ar,"recursive")
  z <- markov(y)
  weight <-  matrix(c(0.0002,  0.0,
                      0.0,    2.9 ), 2,2,byrow=TRUE)
  simcon(span=50, len=700, r=1, z$arcoef, z$impuls, z$v, weight)

Run the code above in your browser using DataLab