Abstract
This paper presents an adaptive bacterial foraging optimization (ABFO) algorithm for an active noise control system. The conventional active noise control (ANC) systems often use the gradient-based filtered-X least mean square algorithms to adapt the coefficients of the adaptive controller. Hence, there is a possibility to converge to local minima. In addition, this class of algorithms needs prior identification of the secondary path. The ABFO algorithm helps the ANC system to prevent falling into local minima. The proposed ANC system is also simpler since it does not need any prior information of the secondary path. Moreover, the adaptive strategy of the algorithm results in improved search performance compared with the basic bacterial foraging optimization algorithm, as well as other conventional algorithms. Experimental studies are performed for nonlinear primary path along with linear and nonlinear secondary path. The results show the effectiveness of the proposed ABFO-based ANC system for different kinds of input noise.
Similar content being viewed by others
References
Kuo, S.M., Morgan, D.R.: Active Noise Control Systems: Algorithms and DSP Implementation. Wiley, New York (1996)
Elliott, S.J.: Signal Processing for Active Control. Academic, London (2000)
Elliott, S.J., Nelson, P.A.: Active noise control. In: IEEE Signal Process. Mag. 10(4), 12–35 (1993)
Chang, C.Y., Shyu, K.K.: Active noise cancellation with a fuzzy adaptive filtered-X algorithm. IET Circuits Devices Syst. 150(5), 416–422 (2003)
Chang, C.Y., Louh, F.B.: Enhancement of active noise control using neural based filtered-X algorithm. J. Sound Vib. 305(1/2), 348–356 (2007)
Bouchard, M., Pailard, B., Dinh, C.T.L.: Improved training of neural networks for nonlinear active control of sound and vibration. In: IEEE Trans. Neural Netw. 10(2), 391–401 (1999)
Matsuura, T., Hiei, T., Itoh, H., Torikoshi, K.: Active noise control by using prediction of time series data with a neural network. In: Proceedings of IEEE SMCC Conference, pp. 2070–2075 (1995)
Sicuranza, G.L., Carini, A.: Filtered-X affine projection algorithm for multichannel active noise control using second-order Volterra filters. In: IEEE Signal Process. Lett. 11(11), 853–857 (2004)
Tan, L., Jiang, J.: Adaptive Volterra filters for active control of nonlinear noise processes. In: IEEE Trans. Signal Process. 49(8), 1667–1676 (2001)
Zhou, D., DeBrunner, V.: Efficient adaptive nonlinear filters for nonlinear active noise control. In: IEEE Trans. Circuits Syst. I 54(3), 669–681 (2007)
Strauch, P., Mulgrew, B.: Active control of nonlinear noise processes in a linear duct. In: IEEE Trans. Signal Process. 46(9), 2404–2412 (1998)
Tang, K.S., Man, K.F., Kwong, S., He, Q.: Genetic algorithms and their applications. In: IEEE Signal Process. Mag. 13(6), 22–37 (1996)
Yim, K.H., Kim, J.B., Lee, T.P., Ahn, D.S.: Genetic adaptive IIR filtering algorithm for active noise control. In: Proceedings of IEEE International Conference on Fuzzy Systems, pp. 1723–1728 (1999)
Gholami Boroujeny, Sh., Eshghi, M.: Efficient adaptive noise cancellation using genetic optimization. In: Proceedings of International Conference on, Signal Processing (ICSP). pp. 2596–2599 (2010)
Russo, F., Sicuranza, G.L.: Accuracy and performance evaluation in the genetic optimization of nonlinear systems for active noise control. IEEE Trans. Instrum. Meas. 56(4), 1443–1450 (2007)
Chang, Ch.Y., Chen, D.R.: Active noise cancellation without secondary path identification by using an adaptive genetic algorithm. In: IEEE Trans. Instrum. Meas. 59(9), 2315–2327 (2010)
Passino, K.M.: Biomimicry of bacterial foraging for distributed optimization and control. In: IEEE Cont. Syst. Mag. 22, 52–67 (2002)
Passino, K.M.: Biomimicry for Optimization, Control, and Automation. Springer, Berlin (2005)
Tripathy, M., Mishra, S.: Bacteria foraging-based to optimize both real power loss and voltage stability limit. In: IEEE Trans. Power Syst. 1(22), 240–248 (2007)
Hanmandlu, M., Verma, O.P., Kumar, N.K., Kulkami, M.: A novel optimal fuzzy system for color image enhancement using bacterial foraging. In: IEEE Trans. Instrum. Meas. 58(8), 2867–2879 (2009)
Gholami Boroujeny, Sh, Eshghi, M.: Non-linear active noise cancellation using a bacterial foraging optimisation algorithm. IET Sig. Process. 6(4), 364–373 (2012)
Mishra, S.: A hybrid least square-fuzzy bacterial foraging strategy for harmonic estimation. In: IEEE Trans. Evol. Comput. 9(1), 61–73 (2005)
Chen, H., Zhu, Y., Hu, K.: Self-adaptation in bacterial foraging optimization algorithm. In: Proceedings of \(3^{\rm rd}\) International Conference on Intelligent Systems and Knowledge Engineering, ISKE. pp. 1026–1031 (2008)
Su, T.J., Cheng, J.C., Yu, C.J.: An adaptive channel equalizer using self-adaptation bacterial foraging optimization. J. Optics Commun. 283(20), 3911–3916 (2010)
Acknowledgments
This research is supported by IRAN Telecommunication Research Center (ITRC).
Author information
Authors and Affiliations
Corresponding author
Appendix: Proposed algorithm for ABFO-based ANC system
Appendix: Proposed algorithm for ABFO-based ANC system
The proposed algorithm for ABFO-based ANC system has three main phases as follows:
Phase 1 Initializing the following parameters.
-
\(S\) is the number of bacteria to be used for searching the total region.
-
\(p\) is the dimension of the search space or the number of parameters to be optimized.
-
\(N_s \) is the swimming length of bacteria after each tumbling in a chemotactic loop.
-
\(N_c \) is the number of iterations to be undertaken in a chemotactic loop, \(\left( {N_c >N_s } \right)\).
-
\(P_{ed} \) is the probability of continuing the elimination and dispersal event.
-
\(P\) is the location of each bacterium in the first bacteria population.
-
\(C^{i}\left( j \right)\) is the current run-length unit or step size taken in random direction for \(i\)th bacterium.
-
\(C_{{\text{ initial}}} \) is the initialized run-length unit. This is assumed to be constant for all the bacteria.
-
\(\varepsilon _{{\text{ initial}}} \) is the initialized precision goal. This is assumed to be constant for all the bacteria.
-
\(\varepsilon ^{i}\left( j \right)\) is the required precision fitness in the current generation of the \(i\)th bacterium.
-
\(ku\) is the user defined number of consecutive generations.
-
\({\text{ flag}}^{i}\) is the number of generations during which the \(i^{th}\) bacterium has not improved its own fitness.
-
\(\alpha \) is the run-length factor.
-
\(\beta \) is the cost function factor.
Phase 2 Obtaining the incoming noise samples.
In this step the input noise samples to the ANC system are taken. For each noise sample the algorithm runs separately and the corresponding residual noise is obtained.
-
(a)
While the input noise samples come to the ANC system — do the following
Phase 3 Running the Iterative Algorithm for Optimization.
This section models the ABFO operations (including chemotaxis, reproduction, and elimination-and-dispersal) on bacterial population.
-
(b)
Chemotaxis loop: for \(j=1,2,\ldots ,N_c \)
-
1.
Filtering the input noise. In the adaptive Volterra filter, \(S\) groups of the anti-noise signal \(ds_i \left( n \right)\) can be generated with considering the \(S\) groups of filter coefficients \(W_i \left( n \right)=\left[ {w_i \left( {0,n} \right),w_i \left( {1,n} \right),\ldots ,w_i \left( {L-1,n} \right)} \right],i=1,\ldots ,S,\) given by
$$\begin{aligned} \left[ {{\begin{array}{c} {y_1 \left( n \right)} \\ {y_2 \left( n \right)} \\ {.} \\ {.} \\ {.} \\ {y_S \left( n \right)} \\ \end{array}}} \right]&= \left[ {{\begin{array}{cccc} w_1 \left({0,n} \right)&w_1 \left( {1,n} \right)&\ldots&w_1 \left( {L-1,n} \right) \\ w_2 \left({0,n} \right)&w_2 \left( {1,n} \right)&\ldots&w_2 \left( {L-1,n} \right) \\ \vdots&\vdots&\vdots&\vdots \\ w_S \left( {0,n} \right)&w_S \left( {1,n} \right)&\ldots&w_S \left( {L-1,n} \right) \\ \end{array} }} \right]\nonumber \\&.\left[ {{\begin{array}{c} x\left( n \right) \\ x\left( {n-1} \right) \\ \vdots \\ x\left( {n-\frac{L}{2}+1} \right) \\ x^{2}\left( n \right) \\ x^{2}\left( {n-1} \right) \\ \vdots \\ x^{2}\left( {n-\frac{L}{2}+1} \right) \\ \end{array} }} \right],\end{aligned}$$(9)$$\begin{aligned} \left[ {{\begin{array}{c} ds_1 \left( n \right) \\ ds_2 \left( n \right) \\ {.} \\ {.} \\ {.} \\ {ds_S \left( n \right)} \\ \end{array} }} \right]&= \left[ {{\begin{array}{cccc} y_1&\left( n \right)y_1 \left( {n-1} \right)&\ldots&y_1 \left( {n-L_1 +1} \right) \\ y_2&\left( n \right)y_2 \left( {n-1} \right)&\ldots&y_2 \left( {n-L_1 +1} \right) \\ \vdots&\vdots&\vdots&\vdots \\ y_S&\left( n \right)y_S \left( {n-1} \right)&\ldots&y_S \left( {n-L_1 +1} \right) \\ \end{array} }} \right]\nonumber \\&.\left[ {{\begin{array}{c} {s_1 } \\ {s_2 } \\ {\vdots } \\ {s_{L_1 } } \\ \end{array} }} \right]. \end{aligned}$$(10)
where \(\left[ {s_1,s_2,\ldots ,s_{L_1 } } \right]\) denotes the impulse response of the secondary path \(S\left( z \right)\), and \(W_i \left( n \right)\) denotes the coefficient vector of the \(i\)th bacterium of Volterra filter \(W\left( z \right)\) at time \(n\), with length \(L\).
Then, Calculate the cost function or the residual noise function as
-
2.
Let \(J_{{\text{ last}}}^i =J\left( {i,j} \right)\) to save this value since we may find better value via a run.
-
3.
Tumbling/Swimming loop: For \(i=1,2,\ldots ,S\)—take the tumbling/swimming decision
-
Tumble: Generate a random vector \(\Delta \left( i \right)\in R^{n}\). Each element of \(\Delta \; (\Delta _m \left( i \right),m=1,2,\ldots ,p)\) is a random number on [-1, 1].
-
Move (updating the position of bacteria): Let
$$\begin{aligned} w^{i}\left( {j+1} \right)=w^{i}\left( j \right)+C^{i}\left( j \right)\frac{\Delta \left( i \right)}{\sqrt{\Delta ^{T}\left( i \right)\Delta \left( i \right)}}. \end{aligned}$$(12)This results in an adaptable step size of \(C^{i}\left( j \right)\) in the direction of the tumble for \(i^{th}\) bacteria. Compute \(J\left( {i,j+1} \right)\) with \(w^{i}\left( {j+1} \right)\).
-
Swim:
-
i.
Let \(m=0\) (counter for swim length).
-
ii.
While \(m<N_S \)
-
Let \(m=m+1\).
-
If \(J\left( {i,j+1} \right)<J_{{\text{ last}}}^i\) then let \(J_{{\text{ last}}}^i =J\left( {i,j+1} \right)\), then another step of size \(C^{i}\left( j \right)\) in this same direction will be taken as Eq. 12.
-
Use \(w^{i}\left( {j+1} \right)\) to compute the new \(J\left( {i,j+1} \right)\) and then set \({\text{ flag}}^{i}=0.\)
— Adaptive Chemotaxis
-
Else, if \(J\left( {i,j+1} \right)\ge J_{{\text{ last}}}^i \) then let \({\text{ flag}}^{i}={\text{ flag}}^{i}\) + 1 and if \({\text{ flag}}^{i}>ku\) then \(C^{i}\left( {j+1} \right)=C_{{\text{ initial}}}^i \) and \(\varepsilon ^{i}\left( {j+1} \right)=\varepsilon _{{\text{ initial}}}^i \).
-
Else, if \({\text{ flag}}^{i}\le ku\) then let \(C^{i}\left( {j+1} \right)=C^{i}\left( j \right)\) and \(\varepsilon ^{i}\left( {j+1} \right)=\varepsilon ^{i}\left( j \right)\), let \(m=N_S \).
-
End of while statement.
-
iii.
If \(J\left( {i,j+1} \right)<\varepsilon ^{i}\left( j \right)\) then \(C^{i}\left( {j+1} \right)=C^{i}\left( j \right)/\alpha \) and \(\varepsilon ^{i}\left( {j+1} \right)=\varepsilon ^{i}\left( j \right)/\beta \); Else \(C^{i}\left( {j+1} \right)=C^{i}\left( j \right)\) and \(\varepsilon ^{i}\left( {j+1} \right)=\varepsilon ^{i}\left( j \right)\).
— End of adaptive Chemotaxis.
-
4.
End of tumbling/swimming loop. If \(i\ne S\), go to (d) to process the next bacterium.
-
5.
Reproduction:
-
For each \(i=1,2,\ldots ,S\), let
$$\begin{aligned} J_{{\text{ health}}}^i =J\left( {i,j} \right) {\text{ for}} j=1,\ldots ,N_C +1. \end{aligned}$$(13) -
Sort bacteria in order of ascending values \(J_{{\text{ health}}} \).
-
The \(S_r =S/2\) bacteria with the highest \(J_{{\text{ health}}} \) values die and the other \(S_r \) bacteria with the best values split and the copies that are made are placed at the same location as their parent.
-
6.
Elimination-dispersal:
-
For \(i=1,2,\ldots ,S\), with probability\(p_{ed} \), eliminate and disperse each bacterium, to keep the number of bacteria in the population constant.
-
(c)
End of Chemotaxis loop. — If \(j<N_c \), go to Step 3.
-
(d)
End of while statement.
The flow chart of the described algorithm is shown in Fig. 5 .
Rights and permissions
About this article
Cite this article
Gholami-Boroujeny, S., Eshghi, M. Active noise control using an adaptive bacterial foraging optimization algorithm. SIViP 8, 1507–1516 (2014). https://doi.org/10.1007/s11760-012-0385-2
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11760-012-0385-2