simcon: Optimal Controller Design and Simulation

simconR Documentation

Optimal Controller Design and Simulation

Description

Produce optimal controller gain and simulate the controlled process.

Usage

simcon(span, len, r, arcoef, impulse, 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.

impulse

impulse response matrices.

v

covariance matrix of innovation.

weight

weighting matrix of performance.

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).

Value

gain

controller gain.

ave

average value of i-th component of y.

var

variance.

std

standard deviation.

bc

sub 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.

bd

sub matrices (pd,d-r) of impulse response matrices.

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

x <- matrix(rnorm(1000*2), nrow = 1000, ncol = 2)
ma <- array(0, dim = c(2,2,2))
ma[, , 1] <- matrix(c( -1.0,  0.0,
                        0.0, -1.0), nrow = 2, ncol = 2, byrow = TRUE)
ma[, , 2] <- matrix(c( -0.2,  0.0,
                       -0.1, -0.3), nrow = 2, ncol = 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), nrow = 2, ncol = 2, byrow = TRUE)
ar[, , 2] <- matrix(c( -0.5, -0.2,
                       -0.2, -0.5), nrow = 2, ncol = 2, byrow = TRUE)
ar[, , 3] <- matrix(c( -0.3, -0.05,
                       -0.1, -0.3), nrow = 2, ncol = 2, byrow = TRUE)
y <- mfilter(y, ar, "recursive")

z <- markov(y)
weight <-  matrix(c(0.0002,  0.0,
                    0.0,     2.9 ), nrow = 2, ncol = 2, byrow = TRUE)
simcon(span = 50, len = 700, r = 1, z$arcoef, z$impulse, z$v, weight)

timsac documentation built on Sept. 30, 2023, 5:06 p.m.