GFLS Help Page

Generalized Flexible Least Squares
for Approximately Linear Models

Last Updated: 4 January 2018

Site Maintained By:
Leigh Tesfatsion
Emeritus Professor of Economics, Mathematics,
   and Electrical & Computer Engineering
Heady Hall 260
Iowa State University
Ames, Iowa 50011-1054
tesfatsi AT

FLS Homepage
GFLS Source Code

Basic Information About GFLS:

The Fortran program GFLS, developed by Robert E. Kalaba and Leigh Tesfatsion, implements a generalized flexible least squares (GFLS) method for the estimation of nonlinear systems described by approximately linear dynamic and measurement relations.

The basic GFLS objective is to determine the Cost-Efficient Frontier (CEF) for such systems in analogy to the determination of Pareto-efficient frontiers for multicriteria decision problems. The CEF is the collection of all state trajectory estimates that are efficient for the system at hand in the sense that they are minimally incompatible with the specified dynamic and measurement relations.

The GFLS method was proposed and developed in detail by Robert Kalaba and Leigh Tesfatsion in "Flexible Least Squares for Approximately Linear Systems" (pdf,1.2M), IEEE Transactions on Systems, Man, and Cybernetics, Vol. 20, No. 5 (1990), pp. 978-989. (The published article is available from IEEE Xplore.) This article constitutes the manual for the GFLS program.

The GFLS program has been incorporated into the statistical package GAUSS - TSM (Time Series Methods). See the FLS Homepage for additional information about the general FLS approach to model estimation.

Outline of GFLS Program Logic:


     x_t  =  n x 1 column vector of state variables

     y_t  =  m x 1 column vector of observations

Dynamic and Measurement Equation Matrices and Forcing Terms:

     F(t) =  n x n dynamic equation matrix, t  =  1,...,T-1

     a(t) =  n x 1 dynamic equation forcing term, t  =  1,...,T-1

     H(t) =  m x n measurement equation matrix,  t  =  1,...,T

     b(t) =  m x 1 measurement equation forcing term,  t  =  1,...,T

Prior Dynamic Specification (Approximately Linear Dynamics):

     x_{t+1}   \approx=   F(t)x_t  +  a(t) ,     t = 1,...,T-1

Prior Measurement Specification (Approximately Linear Measurements):

     y_t   \approx=   H(t)x_t  +  b(t) ,    t = 1,...,T

Penalty Weight Specifications for the Incompatibility Cost Function:

     D(t) = symmetric positive definite nxn matrix, t = 1,...,T-1

     M(t) = symmetric positive definite mxm matrix, t = 1,...,T

     Q_0  = symmetric positive definite nxn matrix

     p_0  = nx1 column vector

     r_0  = scalar


Let x* = (x*_1,...,x*_T) denote any possible choice for a sequence of
state vector estimates.

Dynamic Cost Associated with the Choice of x*:

 C_D(x*;T)  =  SUM [x*_{t+1}- F(t)x*_t - a(t)]'D(t)[x*_{t+1}-F(t)x*_t - a(t)]

Measurement Cost Associated with the Choice of x*:

 C_M(x*;T)  =  SUM [y_t - H(t)x*_t - b(t)]'M(t)[y_t - H(t)x*_t - b(t)]

Initialization Cost Associated with the Choice of x*_1:

     C_I(x*,T)  =  [x*_1'Q_0x*_1] - [2x*_1'p_0]  +  r_0

Total Incompatibility Cost Associated with the Choice of x* for a Given
Nonnegative Trade-off Value \mu:

      C(x*;\mu,T)  =   \mu[C_D(x*,T)] + C_M(x*,T) + C_I(x*,T)  .


Determine the trajectory x* which minimizes the total cost function
C(x*;\mu,T).  This trajectory is called the "general flexible least
squares (GFLS) solution conditional on \mu and T."


     The Fortran program GFLS generates the general flexible least
squares solution in a sequential manner.  Comment statements are
interspersed throughout the program GFLS explaining the sequential
updating equations.  The order of derivation is as follows:

Time-T Updating Equations, T \geq 1:

     In storage at time T \geq 1 are the exogenously given matrices
and vectors F(T), a(T), H(T), b(T), D(T), and M(T) and the
previously calculated (if T exceeds 1) or exogenously given (if T = 1)
matrix, vector, and scalar Q_{T-1}(\mu), p_{T-1}(\mu), and
r_{T-1}(\mu).  A new observation y_T is obtained.  Determine in

      U_T(\mu)  =  H(T)'M(T)H(T)  +  Q_{T-1}(\mu)

      C(T)   =  F(T)'D(T)

      W_T(\mu)  =  \mu [C(T)F(T)]  +  U_T(\mu)

      V_T(\mu)  =  [W_T(\mu)]^{-1}

      e_T     =  y_T - b(T)

      z_T(\mu)  =  H(T)'M(T)e_T + p_{T-1}(\mu)

      G_T(\mu)  =  \mu [V_T(\mu)C(T)]

      Q_T(\mu)  =  \mu D(T)[I - F(T)G_T(\mu)]

      p_T(\mu)  =  G_T(\mu)'z_T(\mu)  +  Q_T(\mu)'a(T)

      s_T(\mu)  =  V_T(\mu)[z_T(\mu) - \mu C(T)a(T)]

      r_T(\mu)  =  r_{T-1}(\mu) + e_T'M(T)e_T + \mu [a(T)'D(T)a(T)]
                   - s_T(\mu)'W_T(\mu)s_T(\mu)

GFLS Filtered State Estimate Obtained at time T:

      x_T^{FLS}(\mu,T)  =  [U_T(\mu)]^{-1}z_T(\mu)

GFLS Smoothed State Estimates Obtained at time T:

   x_t^{FLS}(\mu,T) = s_t(\mu) + G_t(\mu)x_{t+1}^{FLS}(\mu,T),

       for 0 less than or equal to t, and for t less than T.

Copyright © Leigh Tesfatsion. All Rights Reserved.