Review
by
Jorge Guerra Pires
Department of Information Engineering, Computer Science and Mathematics
University of L'Aquila, Italy
Institute of Systems Analysis and Computer Science (IASI)
Cosiglio Nazionale delle Ricerche (CNR) Rome, Italy
CAPES Foundation, Ministry of Education of Brazil
University of L'Aquila, Italy
Institute of Systems Analysis and Computer Science (IASI)
Cosiglio Nazionale delle Ricerche (CNR) Rome, Italy
CAPES Foundation, Ministry of Education of Brazil
Email: jorgeguerrapires@yahoo.com.br
Created on: 17/10/2014
|
Comment: this is
mathematical based approach. It is a interesting reading for people studying
optimal control from a practical point of view, but mathematical driven
studies. For a more engineering driven approach, see S Lenhart, J T Workman, Optimal Control Applied to biological models,
Chapman & Hall/ CRC, Mathematical and Computational Biology Series, 2007
(review on the way). This is a nice reading for being done in parallel with
this or even after. George W Swan, Applications of optimal
control theory in biomedicine, Pure and Applied Mathematics. Marcel Dekker
Inc, 1984 is a second
nice reading to accompany the same book (review on the way).
|
Last review: 17/10/2014
|
Review
class: short.
|
Keywords: Finite Differences Method, Numerical Schemes, Applied Optimal
Control, Pontryagin's Principle, age-structured population models, diffusive
models.
For a complete text, please, download the PDF.
========
Sebastian Anița, Viorel
Arnăutu, Vincenzo Capasso, An introduction to optimal control problems in life
sciences and economics: from mathematical models to numerical simulation with
Matlab®, Modeling and Simulation in Science, Engineering and Technology, Birkhäuser,
2011.
========
An introduction to MATLAB®. Elementary models with applications
MATLAB (MATrix LABoratory) is a very flexible
and simple programming language tool. But it can be used as high-level
programming language. Matlab is our choice because it offers some important
advantages in comparison to other programming languages.
Arrays and matrix algebra
The basic
element of MATLAB, hereafter written as Matlab for simplicity, is the matrix.
Even a simple variable is considered as a 1-by-1 matrix. The basic type is double (8 bytes).
Some commands:
- Format short: this will make Matlab uses a short number representation;
- Format long: this will make Matlab releases a long number representation;
- Format short e: this will make Matlab uses floating point, the style sometimes is referred as scientific notation;
- Format long e: this will make Matlab uses floating point, the style sometimes is referred as scientific notation. For short it uses 5 digits whereas for long it uses 15 digits;
- Format short g: best between fixed or floating point representation with 5 digits;
- Format long g: best between fixed or floating point representation with 15 digits;
The first is the
Matlab default choice. See as well printf
and vpa for further numerical
representation capability.
Arrays. There are no
statements for declaring the dimensions of an array. The components of an array
may be real numbers, complex numbers, or any Matlab expression. Important. if you give value for a
component for which the predecessors were not initiated, the same ones will be
given zero as value. [] can be used to
eliminate rows and columns at once, this is not necessary to make it step by
step such as in C++ or Java, do it directly. See ones and eye functions,
the former creates a vector or matrix of ones and the latter the identity. For
matrix dimensionality measures, see length
and size functions, the former gives
you the vector/matrix length in number of elements whereas the latter gives you
the line and the column number. For matrix manipulations, the interesting to
mention is: P=A.*B, gives a matrix with the same dimension in which the
elements are multiplied one by one, aij*bij, this is not the conventional
matrix multiplication. For P=A./B it follows the same rule, but division rather
than multiplication.
Important. The Gaussian
elimination algorithm is implemented to solve linear algebraic systems. You can
alternatively apply: A_aux=inv(A), and T=A_aux*D, where the linear system to be
solved is AT=D; in this case you are using the inverse of the coefficient
matrix instead, theoretically this approach is more probe to roundoff errors.
And another possibility is using the LU decomposition: [L,U]=lu(A),
L_aux=inv(L) and U_aux=inv(U), A_aux=L_aux* L_aux, and finally T=A_aux*D. Apparently
the results are the same.
Simple 2D graphics. By
plot (x,y), given they have the same dimensions, we get a graph of x vs. y, whereas by plot (y) we get a graph
of y vs. its indexes. Several others functions for plot is available such as xLabel, that gives a name for the
x-axis.
Script files and function files. All Matlab files have the extension m, e.g rootfiders.m . Type edit for accessing the editor window. A script file is the main routine of a program, the driver
directions. On the other hand, the function
files contain specific direction such as the ones in Matlab, the built-in
functions. The script files can follow any template you please, but the
function file should start with function
and has the same name as the file itself, for who is familiar with Java
this is the same as it happens with the main class. Functions can be either void, just input and no output, or returning type, it returns the
calculations. For the former the template is function name (inputs), whereas for the latter it is function outputs = name (inputs). This
is a good programming practice to write down support to the users, it serves
even for you in a memory failure. For that, just use % in each line you want to
comment, the first comments after the function header will be displayed as help
for the user when they type help and
the function name, the same way it occurs with conventional Matlab functions.
I/O statements. In Matlab
you can ask the user to enter data just by using: variable=input (‘please,
enter the value for variable 1’). Use \n for jumping one line. For
strings, we must use: name=input(‘what is your name’, ‘s’). num2string(a) transforms the string a
into a numerical variable.
Roots and minimum points of 1D functions. For root finding, just use fzero
(‘f’,r0), where f is the function name, defined in a m-file like style and
r0 is the initial guess for the root of the function. Further, fzero (‘f’,[r0 r1]) can be used to represents an interval for
searching rather than a singled-value guess. An alternative approach for the
m-file creation is using inline
function. Just use f=inline (‘x*x-3’)
and procedure normally. For polynomial functions, we can additionally use roots, the input is a vector with the
coefficients from the higher degree to the smallest. For finding the optimal of
a function, just apply fminbnd (f,
-1, 1, 1), where is a inline function therefore no prime is used, the first two
numbers are the bounds for the optimal search, and the last activates the
storing-pathway search.
Arrays-smart function. All
built-in functions in Matlab is
array-smart, this means that you do not have to write for sentences for entering a vector values, just enter the value
normally the output will be a vector or matrix correspondent in dimension. This
is suggested that whenever one programs its own function, use array-smart
tricks such as x.*x, the dot is used in Matlab for
“discretizing” the operation, element by element.
Global Variables. Any
variable can be shared by all function and the workplace, just declare it as
global. See that several books in computer programming practices does not
advise the usage of global variables, besides this is widely used by Matlab
programmers.
Models with Ordinary
Differential Equations ODEs. The ODE23 is a ODE solver by Runge-Kutta
method is other 2 or 3, by adapting steps. Equally one can apply ODE34.
Optimal Control of ordinary
differential systems. Optimality conditions
This
chapter and the next one are devoted to some basic ideas and techniques in
optimal control theory of ordinary differential systems. We do not treat the
optimal control problem or Pontryagin's
principle in their most general form; instead we prefer direct approach to some significant optimal
control problems in life sciences and economics governed by ordinary
differential systems. The main goal of this chapter is to prove the existence
of an optimal control and to obtain first-order necessary conditions of
optimality (Pontryagin's principle)
for some significant optimal control problems.
=========
Comments section
As mentioned
before the authors have decided to use Matlab as their software, indeed this is
a good choice. However, I myself would pinpoint two points regarding Matlab,
firstly this is not free, this could limit the usability of the theory
presented. This is not always the case, on Lenhart and Workman (2007) they use
Matlab as well, but the code is so generic that it can be adapted to any other
language, you just need a txt of the code and knowledge of Matlab syntax. Secondly,
even if this is not the case, in some situations Matlab indeed can be slow. One
of the biggest advantage of using Matlab, besides its simplicity in the
programming syntax, is the graphical capability, it is easy and nice to use.
=================
general optimal control problem |
Lotka-Volterra system |
Nenhum comentário:
Postar um comentário