## 3 Proposed Method
### Design of GNP Nodes  
Figure 1(a) depicts an example of GNP. As an original population, the initial set of nodes is randomly generated. Although GP and GNP use different genotypes such as a tree structure and a graph network structure, the GP tree depth grows infinitely, which is an important benefit for searching when combined with mutation and crossover for an optimal solution. However, an important shortcoming is that it has low searching efficiency if search ranges are expanded. The fitness of nodes near the root is greater than that of nodes near terminals if mutation or crossover occurs near the root. In the early stage of evolution, convergence to a local minimum occurs if a node near the root is unselected. The number of GNP nodes is invariable during the evolution process because it uses a network structure genotype. The influence of fitness for changing nodes is extremely different in the respective nodes.  
Figure 1(b) depicts a crossover example that is applied between two sets of nodes as the following.  
1. Two sets of nodes are selected randomly.
2. Each set of nodes is switched while the connections are maintained.
3. New fitness values are calculated.  
Figure 1: Overall structure of our proposed method including our originally developed sensor.  
Figure 2: Example of genetic network programming (GNP).  
Figure 2c depicts a mutation example that is applied to a particular node like the following.  
1. A node is selected randomly.
2. A new node is produced randomly.
3. The existing node is switched to the new node.
4. A new fitness value is calculated.  
Throughout the evolutionary process, GNP automatically generates programs as nodes of two types: a branch node and a processing node that respectively comprise a nonterminal symbol and a terminal symbol of GP. We designed 5 branch nodes and 15 processing nodes for filtering original output sensor signals. Table 1 denotes the branch nodes. Each branch node includes three branches compared with two values. Let \(a(t)\) be an input signal, which is discretized as a 8-bit discrete value versus time \(t\), to a branch node. Herein, \(d\) in N5 is defined as  
\[\overline{a}=\frac{a(t-1)+a(t)+a(t+1)}{3} \tag{1}\]  
and \(d(a)\) in N5 is defined as  
\[d(a)=a(t+1)-2a(t)+a(t-1). \tag{2}\]  
Table 2 presents processing nodes. Let \(s(t)\) be an input signal, which is discretized as an 8-bit discrete value versus time \(t\), to a processing node. The processing formulas in each node are the following.  
\[s(t)=\alpha s(t-1) \tag{3}\]  
\[s(t)=\frac{1}{2}\{s(t-1)+s(t)\} \tag{4}\]  
\[s(t)=\frac{1}{2}\{s(t)+s(t+1)\} \tag{5}\]  
\[s(t)=\frac{1}{3}\{s(t-1)+s(t)+s(t+1)\} \tag{6}\]  
\[s(t)=-\frac{1}{3}\{s(t-1)-2s(t)+s(t+1)\} \tag{7}\]  
\[s(t)=\beta s(t-1)+\gamma s(t)+\beta s(t+1) \tag{8}\]  
\[s(t)=-\{\beta s(t-1)+(1-\gamma)s(t)+\beta s(t+1)\} \tag{9}\]  
\[s(t)=s(t-1), \tag{10}\]  
where \(\alpha\), \(\beta\), and \(\gamma\) are gains that adjust the signal strength.  
\begin{table}
\begin{tabular}{c c c c} \hline \hline
**Node Index** & **First Branch** & **Second Branch** & **Third Branch** \\ \hline N1 & \(a(t)>a(t-1)\) & \(a(t)=a(t-1)\) & \(a(t)<a(t-1)\) \\ N2 & \(a(t)>a(t+1)\) & \(a(t)=a(t+1)\) & \(a(t)<a(t+1)\) \\ N3 & \(a(t-1)>a(t+1)\) & \(a(t-1)=a(t+1)\) & \(a(t-1)<a(t+1)\) \\ N4 & \(a(t)>\overline{a}\) & \(a(t)=\overline{a}\) & \(a(t)<\overline{a}\) \\ N5 & \(d(a)>0\) & \(d(a)=0\) & \(d(a)<0\) \\ \hline \hline \end{tabular}
\end{table}
Table 1: Originally designed branch nodes of five types.