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'