Equation symbols variable
Structure:
symbols{1}
symbols{2}
Cells of strings
Cells of strings
Operator symbols (internal nodes)
Variables symbols (terminator nodes)
The symbols{1} contains the operator symbols. E.g. symbols{1} = {'+','*','*sqrt'}.
The symbols{2} contains the terminal symbols. E.g. symbols{2} = {'u(k-1)','u(k-2)'}.
The gp-ols identification directly uses the symbols{1}, but not the symbols{2}. During the identification, only the size of the symbols{2} is used, it must be equal to the number of columns of X, i.e. length(symbols{2}) = size(X,2) (it is important!).
The gpols_result function uses the symbols{2} directly to write the equation.
Note: Because the gp-ols uses binary trees, every operator must be binary, i.e. every operator is used as: (...) <op> (..), e.g.: (..)+(..), (..)*sqrt(..), etc.
Example:
%Equation representation attributes
gene.symlist{1} = {'+','*','/'};
for j = 1:size(X,2),
gene.symlist{2}{j} = sprintf('x%i',j);
end
Result:
gene.symlist{1} =
'+' '*' '/'
gene.symlist{2} =
'x1' 'x2' 'x3' 'x4'