<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">IJCNS</journal-id><journal-title-group><journal-title>International Journal of Communications, Network and System Sciences</journal-title></journal-title-group><issn pub-type="epub">1913-3715</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/ijcns.2013.61008</article-id><article-id pub-id-type="publisher-id">IJCNS-27468</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  A Novel Decoder Based on Parallel Genetic Algorithms for Linear Block Codes
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>bdeslam</surname><given-names>Ahmadi</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Faissal</surname><given-names>El Bouanani</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Hussain</surname><given-names>Ben-Azza</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Youssef</surname><given-names>Benghabrit</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Industrial and Production Engineering, Moulay Ismail University,
National High School of Arts and Trades, Meknès, Morocco</addr-line></aff><aff id="aff2"><addr-line>Department of Communication Networks, National High School of Comptuer Science and
System Analysis, Rabat, Morocco</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>ab_ahmadi@hotmail.com(BA)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>29</day><month>01</month><year>2013</year></pub-date><volume>06</volume><issue>01</issue><fpage>66</fpage><lpage>76</lpage><history><date date-type="received"><day>November</day>	<month>8,</month>	<year>2012</year></date><date date-type="rev-recd"><day>December</day>	<month>5,</month>	<year>2012</year>	</date><date date-type="accepted"><day>December</day>	<month>15,</month>	<year>2012</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
   Genetic algorithms offer very good performances for solving large optimization problems, especially in the domain of error-correcting codes. However, they have a major drawback related to the time complexity and memory occupation when running on a uniprocessor computer. This paper proposes a parallel decoder for linear block codes, using parallel genetic algorithms (PGA). The good performance and time complexity are confirmed by theoretical study and by simulations on BCH(63,30,14) codes over both AWGN and flat Rayleigh fading channels. The simulation results show that the coding gain between parallel and single genetic algorithm is about 0.7 dB at BER = 10<sup></sup>﹣<sup>5</sup> with only 4 processors. 
 
</p></abstract><kwd-group><kwd>Channel Coding; Linear Block Codes; Meta-Heuristics; Parallel Genetic Algorithms; Parallel Decoding Algorithms; Time Complexity; Flat Fading Channel; AWGN</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>The error correcting codes began with the introduction of Hamming codes [<xref ref-type="bibr" rid="scirp.27468-ref1">1</xref>] in the same period that the remarkable work of Shannon [<xref ref-type="bibr" rid="scirp.27468-ref2">2</xref>]. They consist in correcting data corruption when saved in storage media (erasure CD/ DVD, etc.) or transmitted over noisy communication channel. <xref ref-type="fig" rid="fig1">Figure 1</xref> shows the canonical system diagram of numerical communication.</p><p>The encoder takes the information symbols and adds to them redundancy symbols, carefully chosen such that a maximum of errors, which are infiltrated throughout the process of signal modulation, noisy transmission channel, and demodulation, can be corrected. The resulting binary code word is then transmitted over the noisy and memoryless channel under assumption that the sending messages are independent from the added noise. At the reception, the decoder attempts, given channel observations and using the redundancy symbols, to find the most probable message. The techniques used by the decoder are diverse. The most optimal criterion is Maximum Likelihood [<xref ref-type="bibr" rid="scirp.27468-ref3">3</xref>]. Given its high complexity (computation time, memory occupation), other suboptimal techniques with acceptable performance are used in practice like Turbo codes [<xref ref-type="bibr" rid="scirp.27468-ref4">4</xref>] and LDPC [<xref ref-type="bibr" rid="scirp.27468-ref5">5</xref>]. Several other decoders developed were inspired from the artificial intelligence field as Han decoding which using algorithm A<sup>*</sup> [<xref ref-type="bibr" rid="scirp.27468-ref6">6</xref>], Genetic Algorithms (GAs) [<xref ref-type="bibr" rid="scirp.27468-ref7">7</xref>] and Neural Networks</p><p>[<xref ref-type="bibr" rid="scirp.27468-ref8">8</xref>]. In 2007, it was shown that decoders based on GAs have good performance and time complexity lower than those of classical algebraic decoders [<xref ref-type="bibr" rid="scirp.27468-ref9">9</xref>]. In 2008, the performance of these decoders has been further improved by using iterative decoding for product block codes in two dimensions [<xref ref-type="bibr" rid="scirp.27468-ref10">10</xref>]. In 2012, we made an extension of concatenated codes by passing to three dimensions [<xref ref-type="bibr" rid="scirp.27468-ref11">11</xref>]. In this last work, we have proposed two iterative decoding algorithms based on GAs, which can be applied to any arbitrary 3D binary product block codes, without the need of a Hard-In Hard-Out decoder.</p><p>The first decoder outperforms the Chase-Pyndiah [<xref ref-type="bibr" rid="scirp.27468-ref12">12</xref>] one. The second algorithm, which uses the List-Based SISO Decoding Algorithm (LBDA) based on order-i reprocessing [<xref ref-type="bibr" rid="scirp.27468-ref13">13</xref>], is more efficient than the first one. We have also showed that the two proposed decoders are less complex than both Chase-Pyndiah algorithm for codes with large correction capacity, and LBDA for large i parameter.</p><p>All these proposed decoders have been designed to run on a single processor machines. Their instructions are executed sequentially and then so slowly. In addition, we do not take advantage of the parallel nature of GAs, which is a major advantage related to their exploration and convergence. So, the aim of this new work is to overcome these drawbacks by applying Parallel Genetic Algorithms (PGAs) to decoding linear block codes. Thus,</p><p>we have developed a new decoder using parallel genetic algorithms, which runs on a parallel computer with multiple processors and a shared memory, or on a distributed system. So, it reduces the time complexity and increases little performance.</p><p>This paper is organized as follows. Section 2 presents some background on Linear Block Codes, Parallel System, and Genetic Algorithms. Section 3 describes the proposed Parallel Genetic Algorithms Decoder (PGAD), studies its time complexity and compares it with the one of SGAD. In Section 4 we discuss the simulation results obtained for PGAD. Finally, we give in Section 5 our conclusions and perspectives of this work.</p></sec><sec id="s2"><title>2. Background</title><sec id="s2_1"><title>2.1. Linear Block Codes</title><p>Let <img src="8-9701711\ee4ba96e-2d1f-4c78-b713-aa3db6f61977.jpg" /> be the binary alphabet and <img src="8-9701711\71a1bc54-4bb7-4672-9a3c-4a3ae54e0c93.jpg" /></p><p>The set of all words of length n i.e.:</p><p><img src="8-9701711\723f5d5c-2946-4dda-9020-dbb5b2be0264.jpg" /></p><p>A linear code C of length n on <img src="8-9701711\79ed3355-1e52-4526-a4c1-2542e15f7ce9.jpg" /> is a subspace of the vector space <img src="8-9701711\73651673-167d-4ada-8703-96a411f79115.jpg" /> [<xref ref-type="bibr" rid="scirp.27468-ref14">14</xref>]. i.e.:</p><p><img src="8-9701711\aa275adf-0340-42e0-b4fd-c48f97ac36e6.jpg" /></p><p>Let <img src="8-9701711\3505e7d7-d2ca-4748-b877-d91cf86c961a.jpg" /> such that <img src="8-9701711\dee6146f-0578-442e-98bb-c45b8f449574.jpg" /> and</p><p><img src="8-9701711\cc436f81-1ffd-4c46-afbd-ab76609e356b.jpg" />. The Hamming distance between x and ynoted<img src="8-9701711\d90208dc-3a1e-453d-bc6f-f1324876cec6.jpg" />, is defined by:</p><p><img src="8-9701711\41f7a94b-ddb0-420b-be56-590a7d2357ef.jpg" /></p><p>The minimum Hamming distance d of a code C is the Smallest non zero distance between all its vectors, taken two by two. i.e.:</p><disp-formula id="scirp.27468-formula148008"><label>(1)</label><graphic position="anchor" xlink:href="8-9701711\0fdcb289-c724-471b-8447-8c5ace89621f.jpg"  xlink:type="simple"/></disp-formula><p>Let <img src="8-9701711\9dd7a2fc-30f0-4f75-bfa5-404a7325986f.jpg" /> be the dimension of code C. C is then said <img src="8-9701711\07b90448-29cd-4153-9545-b2edcb52c4e9.jpg" />-linear code. The code rate is the ratio <img src="8-9701711\0865438f-6d04-441d-ab24-91a3d1a1ef59.jpg" /></p><p>Let <img src="8-9701711\4479cb37-56b7-478b-9831-86dfb9a4fbc4.jpg" /> be a basis of C. Since<img src="8-9701711\d60a40fb-cf5c-4c4e-bf96-c82457dfcf47.jpg" />, Then length (b<sub>i</sub>) = n. The matrix G for which rows are the basis vectors is called generating matrix of the code C. It can be written as:</p><p><img src="8-9701711\1633511d-feb0-4d65-810f-32e737fd2a6a.jpg" /></p><p>Thus, we have:</p><p><img src="8-9701711\9d8f4f4e-8e57-4b66-996e-36fd07f04cce.jpg" />i.e. <img src="8-9701711\d6a4de95-77f4-48ee-8be5-39d5568b5136.jpg" /></p><p><img src="8-9701711\729f447d-bfe5-4566-a640-6f301d2248c5.jpg" />such that <img src="8-9701711\e15e4a60-91be-478e-a620-dca548943df5.jpg" /> i.e:</p><p><img src="8-9701711\523bd770-f01c-4b20-9972-419f3931ec58.jpg" /></p></sec><sec id="s2_2"><title>2.2. Parallel Systems</title><p>The choice of parallel machines or distributed systems is more imposed for applications requiring a very high processing power and/or a big memory space. There are plenty of parallel systems which are classified as below [<xref ref-type="bibr" rid="scirp.27468-ref15">15</xref>].</p><sec id="s2_2_1"><title>2.2.1. Taxonomy of Parallel Systems</title><p>These systems have been classified by Flynn (1972) according to two independent concepts: the stream of instructions and the stream of data used by these instructions. There are four possible combinations:</p><p>• SISD (Single Instruction, Single Data): The machine executes one instruction on one data at each clock cycle. It is not really a parallel machine but a classical computer (Von Newman).</p><p>• SIMD (Single Instruction Multiple Data): A processor having a single Control Unit (CU) and multiple Arithmetical and Logical Units (ALUs) executes the same instruction on different data at each clock cycle.</p><p>• MISD (Multiple Instruction, Single Data): Systems running multiple instructions on the same data at each clock cycle.</p><p>• MIMD (Multiple Instruction Multiple Data): These systems are multiple independent processors i.e. each processor has its CU and its ALU. At the same clock cycle, each processor executes a different instruction on a different data. These instructions can be synchronous or asynchronous. The majority of parallel systems are MIMD. The MIMD system can be either a Multiprocessor or a Multi-computer or a hybrid of them. We explain in the next subsections the architecture of each one.</p></sec><sec id="s2_2_2"><title>2.2.2. Multiprocessor</title><p>It is a MIMD parallel system with certain number of autonomous processors (CU+ALU) and a single shared memory. i.e. All processors use a common physical memory which composed of several memory blocks <xref ref-type="fig" rid="fig2">Figure 2</xref>. These blocks are interconnected with the processor and between them [<xref ref-type="bibr" rid="scirp.27468-ref15">15</xref>].</p><p>If two processors want to communicate, it suffices that the first one writes data (or message) in the memory and the other one recuperates it. So their programming is easy since the programmer does not have to focus on the explicit communication (message exchange) between the different processors. These allowed multiprocessors making a great success. However, it would be difficult to build a multiprocessor when the number of its communicating elements (processors and memory blocks) is very important. Indeed, the interconnection of all these elements is not always an easy task.</p></sec><sec id="s2_2_3"><title>2.2.3. Multi-Computer</title><p>A multi-computer is also a MIMD system but relatively simple to build. It contains a number of computers (CU + ALU + private memory) linked together by an interconnection network. Each computer has its own memory <xref ref-type="fig" rid="fig3">Figure 3</xref>. This reduces significantly the number of elements to be interconnected. The communication between computers is achieved by exchanging messages as primitives Send/Receive, programmed and integrated by the programmer in its application [<xref ref-type="bibr" rid="scirp.27468-ref15">15</xref>]. This may complicate more his task. The following points must be taken into account for each parallel programming:</p><p>• For an efficient communication between different elements (processors and memory blocks) of a parallel or distributed system, the suitable choice of the topology, routing and switching mode of its interconnection network affects its performance remarkably.</p><p>• To benefit from the advantages of a multiprocessor and those of a multi-computer and minimize the disadvantages of each one of them, hybrid systems have been designed.</p><p>• To take advantage of parallel systems, we must execute on them parallel programs or containing a significant part of parallel instructions.</p></sec></sec><sec id="s2_3"><title>2.3. Genetic Algorithms</title><p>The Genetic Algorithm (GA), initiated in 1970 by Holland [<xref ref-type="bibr" rid="scirp.27468-ref16">16</xref>] is an Evolutionary Algorithm (EA) inspired from the natural biological evolution. It use search stochastic techniques to solve problems not having an analytical resolution or when the time to resolve them by classical algorithms is not reasonable [<xref ref-type="bibr" rid="scirp.27468-ref17">17</xref>]. Their applications cover, in addition to error correcting codes in telecommunication, several other fields as optimization, artificial intelligence, economic markets, etc. As shown in algorithm below [<xref ref-type="bibr" rid="scirp.27468-ref18">18</xref>], an EA especially a GA has an iterative character:</p><p>t=0;</p><p>initialize and evaluate [P(t)] ;</p><p>while not stop-condition do P’(t)=variation [P(t)] ;</p><p>Evaluate [P’(t)] ;</p><p>P(t+1) =select [P’(t), P(t)];</p><p>t=t+1;</p><p>end while.</p><p>It generates an intermediate population <img src="8-9701711\d4820236-3e27-42f9-8977-8850eef68b9e.jpg" /> by applying variation operators (often stochastic) on individuals (which may be here, information sequences or codewords) of the current population P(t). Then, it evaluates the quality (of being solution) of individuals from <img src="8-9701711\31b480da-97aa-4a56-b3b7-63a2ee217361.jpg" /><sub> </sub>using a criterion known as fitness. It finally creates the new population P(t+1) in which individuals are selected from those of <img src="8-9701711\e43a5867-22fc-47ec-92e1-b42a8abe3987.jpg" /> and eventually from P(t). The process is repeated until the stopping condition is satisfied. In general, the process is stopped when the optimal solution is found or when the maximum number of iterations is reached.</p><p>The Genetic Algorithms can be singles (SGA) or Parallels (PGA).</p><sec id="s2_3_1"><title>2.3.1. Single Genetic Algorithms</title><p>The previous general algorithm can be adapted in SGA as follows:</p><p>Generate an initial population of n individuals randomly;</p><p>while not stop-condition do Calculate the fitness f (x) for any individual x;</p><p>while not Filled-New-Population do Select two parent individuals;</p><p>Cross them to have a new(s) individual(s);</p><p>The new individuals undergo eventual mutations;</p><p>Insert the new individual in the new population;</p></sec><sec id="s2_3_2"><title>end while</title><p>Replace the old population by the new one;</p></sec><sec id="s2_3_3"><title>end while.</title><p>The three classical operators inspired from natural evolution to generate a new population from the current one in both SGA and PGA are selection, crossover and mutation:</p><p>• The selection operator describes how to select the parents in the current population to cross them and generate new individuals (offspring) which will be inserted in the new population. The individuals are sorted in ascending order of their fitness to give more chances to the best ones (fittest) to be selected (assuming that better parents reproduce better children). However, there are cases where the crossing of bad parents can generate good offspring. The most popular selection methods are: Proportional, Linear Ranking, Whitley’s Linear Ranking and Uniform Ranking [<xref ref-type="bibr" rid="scirp.27468-ref19">19</xref>].</p><p>• The crossover operator generates new individuals inheriting from their parents. i.e. Their genes are a mixture of those of their parents. There are several crossing techniques that can be either generic (robust) i.e. applied in a wide variety of problems, or specific to particular problems, or hybrid techniques combining generic and specific ones.</p><p>• As in natural evolution, the genes of some individuals may undergo changes (mutations). This occurs in very rare cases. The mutation plays a very important role in the convergence of SGA and PGA algorithms. Indeed, it will prevent their premature convergence by guiding them to explore other more promising areas and avoid a local optimum.</p></sec><sec id="s2_3_4"><title>2.3.2. Parallel Genetic Algorithms</title><p>The PGAs are GAs running on parallel systems discussed in the second subsection.Their purpose is not only accelerating the convergence and/or use a large memory space but also improve the performance. There are two models of PGAs: 1) Island model (or network model) which runs an independent GA with a sub-population on each processor, and the best individuals are communicated either to all other sub-populations or to neighboring population [<xref ref-type="bibr" rid="scirp.27468-ref20">20</xref>]; 2) Cellular model (or neighborhood model) which runs an individual on each processor, and cross with the best individual among its neighbors [<xref ref-type="bibr" rid="scirp.27468-ref21">21</xref>]. In fact, the second model is a particular case of the first one. Indeed, its population is reduced to a single individual on each processor.</p><p>The general algorithm of PGAs is given below:</p><p>Generate an initial population of n individuals randomly;</p><p>while not stop-condition do Calculate the fitness f (x) for any individual x;</p><p>if Interval-Exchange then Exchange of individuals;</p></sec><sec id="s2_3_5"><title>end if</title><p>while not Filled-New-Population do Select individual parents;</p><p>Cross them to make new people;</p><p>New individuals undergo eventual mutations;</p><p>Insert new individuals in the new population;</p></sec><sec id="s2_3_6"><title>end while.</title><p>Replace the old population by the new one;</p></sec><sec id="s2_3_7"><title>end while.</title></sec></sec></sec><sec id="s3"><title>3. The Proposed Parallel Decoder Based on Genetic Algorithms</title><p>This work is a parallelization of the decoder that we have already used in [9,10], and [<xref ref-type="bibr" rid="scirp.27468-ref11">11</xref>] by exploiting some techniques of parallel genetic algorithms used in other domains like Optimization and Artificial Intelligence. It can be run on a multiprocessor where the data exchanged are saved in global or shared variables, or on a multi-computer which exchange data between its processors via a network.</p><p>Let <img src="8-9701711\c0416363-62ed-4aba-a04f-b1cf78389539.jpg" />and <img src="8-9701711\ca1cef91-37ed-4355-9934-5a38c5f862d8.jpg" /> be respectively the fading vector and the received sequence (associated to the transmitted sequence) at the decoder input of a binary linear block code C(n,k,d) with a generator matrix G. The parameters N<sub>p</sub>, N<sub>e</sub>, N<sub>c</sub>, N<sub>m</sub>, N<sub>s</sub>, N<sub>g</sub> are respectively the population size, elite number, offspring number, migrant number, processor number and maximum number of generations such that <img src="8-9701711\bd1fbb8e-02c5-4160-a4c4-d4c1e6ca2c41.jpg" /><sub> </sub>is a positive integer.</p><sec id="s3_1"><title>3.1. The PGAD Algorithm</title><p>The sub-algorithm which will run in parallel on each processor is given below:</p><sec id="s3_1_1"><title>• Step 0: Initialization</title><p>• Sort the elements of the received vector R in descending order of their magnitude to produce another vector R<sup>(1)</sup> i.e. find a permutation π<sub>1</sub> such that</p><p><img src="8-9701711\18cbb536-c42f-4750-a630-90c2dea2156d.jpg" />and<img src="8-9701711\bbd25d36-052f-4646-a254-dbe7933b87da.jpg" />. This will put reliable elements in the first ranks. <img src="8-9701711\59ba59fc-462b-4b09-b999-32f1b63e4ec9.jpg" />is the permutation of F by <img src="8-9701711\4f545f2d-e1f5-4808-83b6-622748c2d99c.jpg" /> i.e.<img src="8-9701711\90f35e49-9891-4cc6-b04a-cc21deba0398.jpg" />. Then, permute G by <img src="8-9701711\066876f3-fafa-4fc9-bb47-de682e85f3fe.jpg" /> to produce G′ such that the first k columns of G′ are linearly independent i.e.</p><p><img src="8-9701711\3d562912-bf96-421d-a6eb-58b9172fceae.jpg" />. The two vectors <img src="8-9701711\8cdc7317-e472-49ae-8cd2-4cfb82093bf5.jpg" /> and <img src="8-9701711\ad9cf294-b28a-4d13-a890-bace183872f7.jpg" /> are permuted by <img src="8-9701711\1a02d367-bec7-40be-b171-435d91ccfa87.jpg" /> to <img src="8-9701711\89512995-9391-4c28-91c0-430867cf4e1c.jpg" /> and <img src="8-9701711\55d1dd33-482f-4b04-ad13-48172ac9fe55.jpg" /> So,</p><p><img src="8-9701711\276464e2-2bc9-4824-bed3-8250268227b1.jpg" />and</p><p><img src="8-9701711\8ae91b6e-8925-4011-b9bf-28b81aaa9540.jpg" />, with</p><p><img src="8-9701711\4cf11932-4f13-4d3f-93bd-a172ac756ad6.jpg" />.</p><p>• Quantize the first k bits of <img src="8-9701711\b61d8e1a-0472-4987-8831-be7f27de674d.jpg" /> to obtain binary vector r and randomly generate N<sub>p</sub> − 1 information vectors of k bits each one. These vectors form with vector r the initial population of N<sub>p</sub> individuals<img src="8-9701711\5f0df096-253b-4931-98a7-5f02bbe15668.jpg" />;</p></sec><sec id="s3_1_2"><title>Step 1: Reproduction</title><p>gen←0 (gen is the current generation number).</p><p>While (gen &lt; N<sub>g</sub>) do</p><p>• Encode individuals of the current population, using G′ to obtain code words: C<sub>i</sub> = I<sub>i</sub>G′ (1 ≤ i ≤ N<sub>p</sub>);</p><p>• Compute individual fitness, defined as Euclidian distance between C<sub>i</sub> and<img src="8-9701711\fc000afa-9273-4708-9c5a-cca746a9f7f6.jpg" />:</p><p>• <img src="8-9701711\5b359df0-29fc-4a9f-a31a-ac5bc870726b.jpg" /></p><p>• Sort the current population individuals in descending order of their fitness;</p><p>• Copy the N<sub>e</sub> best individuals (elites) from the current population to the new one;</p><p>• Select parents from the N<sub>p</sub> − N<sub>e</sub> individuals of the current population;</p><p>• Cross with probability p<sub>c</sub> the selected parents to generate N<sub>c</sub> new individuals;</p><p>• Mutate the new individuals with a probability p<sub>m</sub> if their parents are crossed;</p><p>• Insert these N<sub>c</sub> new individuals with their fitness in the new population <xref ref-type="fig" rid="fig4">Figure 4</xref>;</p><p>• Send the best <img src="8-9701711\15ece272-59d0-48fb-9617-92dad4ef0c05.jpg" /> individuals (with their fitness) to the new populations of N<sub>s</sub> − 1 other processors as shown in <xref ref-type="fig" rid="fig5">Figure 5</xref>;</p><p>• Receive N<sub>m</sub> migrant elites (with their fitness) from the previous population of each N<sub>s</sub> − 1 other processors, to complete the new population as shown in <xref ref-type="fig" rid="fig6">Figure 6</xref>;</p><p>• Replace the current population with the new one;</p><p>• gen←gen+1;</p></sec><sec id="s3_1_3"><title>end while</title></sec><sec id="s3_1_4"><title>Step 2: Decision</title><p>Get the best individuals <img src="8-9701711\207ff089-fb83-4935-93db-9557e317d477.jpg" /> of last populations of all processors. The best one D′ of them is the closest to R′. i.e.<img src="8-9701711\e9c936b4-1017-4117-882e-4312bf586ac9.jpg" />.</p><p>So, the decided codeword is<img src="8-9701711\576b3ec8-2f06-414e-ae96-e567c1ffaef2.jpg" />.</p><p>The flowchart of the previous algorithm is illustrated in Figures 7 and 8.</p></sec></sec><sec id="s3_2"><title>3.2. The PGAD Characteristics</title><p>The main elements characterizing a basic PGA are [<xref ref-type="bibr" rid="scirp.27468-ref19">19</xref>]: evolution mode, reproduction operators (crossover and mutation), selection and replacement policy of individuals (local and foreign) and migration.</p><sec id="s3_2_1"><title>3.2.1. Evolution Mode</title><p>It defines the granularity of the evolution step in a sub-algorithm of the PGA. i.e. how the new population is created from the current one. There are two techniques that are often used. The first one is the generational GA (GGA) where the new population replaces all the old ones. The second technique inserts only a few new (generated) individuals in the current population. In our implementation, we have used the GGA evolution mode with elitism.</p></sec><sec id="s3_2_2"><title>3.2.2. Reproducing Operators</title><p>To generate N<sub>c</sub> individuals <img src="8-9701711\f1551dd2-7601-4190-8103-466464441828.jpg" /> in the new population, we have used, like in our works [<xref ref-type="bibr" rid="scirp.27468-ref10">10</xref>], and [<xref ref-type="bibr" rid="scirp.27468-ref11">11</xref>], these operators:</p><p>• Selection of two individuals as parents (P,Q) using the following linear ranking:</p><disp-formula id="scirp.27468-formula148009"><label>(2)</label><graphic position="anchor" xlink:href="8-9701711\c65b3a85-bbc8-4592-a3f2-beb6956a1e99.jpg"  xlink:type="simple"/></disp-formula><p>where weight<sub>i</sub> is the ith individual weight and weight<sub>max</sub> is the weight assigned to the fittest (closest) individual.</p><p>• Let p<sub>c</sub>, p<sub>m</sub> be respectively, the probabilities of crossover and mutation, and let Rand be a uniformly random value between 0 and 1, generated at each time.</p><p>if Rand &lt; p<sub>c</sub> then</p><p><img src="8-9701711\12b2a924-a991-45b6-9148-2324b9ff6846.jpg" /></p><disp-formula id="scirp.27468-formula148010"><label>(3)</label><graphic position="anchor" xlink:href="8-9701711\5a58e976-0895-4bf5-af84-58d07299b282.jpg"  xlink:type="simple"/></disp-formula><p>and then</p><p><img src="8-9701711\dbc01e91-62bf-444d-b0be-11cf030b9a6e.jpg" /></p><p>else</p><p><img src="8-9701711\3ca0a15a-dc1a-4d4e-9f6e-4b9f9e8c60b9.jpg" /></p><p>end if.</p><p>We note that on an AWGN (Additive White Gaussian Noise Channel) channel, we have</p><p><img src="8-9701711\3ada4ebd-984e-4510-8a00-5a7931997225.jpg" />.</p></sec><sec id="s3_2_3"><title>3.2.3. Selection and Replacement Strategies</title><p>They define the selection of individuals to replace in the current population of a sub-algorithm PGA and those to migrate from other processors. The individuals can be replaced by new local ones or by the migrant ones:</p><p>• The main replacement policies are [<xref ref-type="bibr" rid="scirp.27468-ref19">19</xref>]: 1) Inverse Proportional; where the worst individual is more likely to be replaced; 2) Uniform Random; where all individuals have the same chance of being replaced; 3) Worst; where the worst individual is always replaced. In some problems, it is replaced only if it is worse than the new one; 4) Generational; where the entire current population is replaced by a new one. In our work, we keep the best local individuals (elitism) and the bad ones are replaced by new local offspring and by the migrants from other processors.</p><p>• There are two cases to choose migrant individuals: choose the best ones, or choose them randomly. In our algorithm, we chose the best migrants.</p></sec><sec id="s3_2_4"><title>3.2.4. Migration</title><p>This is an operation that helps to diversify and enrich the new population of a sub-algorithm which runs in a processor by migrant individuals from other cooperator processors of the PGA. There are two parameters characterizing the migration operation: Migration Gap and Migration Rate. The first one specifies the frequency of exchange of individuals. i.e. The number of steps that a sub-algorithm must run before sending or receiving migrant individuals. It can also specify the probability of migration at each stage. The second migration parameter defines the number of exchanged individuals (migrants). The exchange (send/receive) of individuals is done in two modes: synchronous or asynchronous.</p><p>The synchronous mode suspends, periodically, the execution of a sub-algorithm of the PGA and waits for the receiving migrant individuals from other nodes before continuing its execution. In asynchronous mode, the sub-algorithm does not wait. Once the migrant individuals arrive, it deals with them.</p><p>In our algorithm, we send/receive at each new population the <img src="8-9701711\860cc401-2d9f-4dfa-b079-eafd5be7c43b.jpg" /> first best individualsto/from every other processor according to the asynchronous mode. To reduce the number of messages that flow through the network connecting processors, the number of migrant individuals should be less than the number of individuals locally generated for each new population. i.e.<img src="8-9701711\6244faa0-1116-44a4-ab49-ba62f671609a.jpg" />.</p></sec><sec id="s3_2_5"><title>3.2.5. Heterogeneity</title><p>A PGA is called homogeneous if its nodes run the same type of algorithm. Otherwise, it is called heterogeneous. Our PGAD is homogeneous. Indeed, all nodes are symmetric and perform the same genetic algorithm having same parameters and operators.</p></sec></sec><sec id="s3_3"><title>3.3. PGAD Time Complexity</title><p>We give in <xref ref-type="table" rid="table1">Table 1</xref> the complexity of the different stages of the proposed decoding algorithm PGAD in the order oftheir appearance in the flowcharts of Figures 7 and 8 before deducting its global complexity.</p><p>We note that:</p><p>• The crossover operation will be made almost always, since its probability is close to 1. So its time complexity is O(kN<sub>c</sub>).</p><p>• The complexity of mutation operation is neglected. Indeed, this operation will occur rarely since its probability is close to 0.</p><p>The total time complexity of PGAD is then:</p><p><xref ref-type="table" rid="table1">Table 1</xref>. Time complexities of different steps of the PGAD.</p><p><img src="8-9701711\707425f6-f002-4585-8481-1e20ed412974.jpg" /><img src="8-9701711\1329eca2-6f50-415f-84e5-8d5b91c673dc.jpg" /> (4)</p><p>From the formula (4), it is clear that the complexity of PGAD is lower than that of SGAD. Indeed, there are terms that are common to both decoders (initialization and sorting at the end of the loop). The term N<sub>s</sub>lnN<sub>s</sub> can be neglected when the processor number is small. The difference between SGAD and PGAD consists in the crossing, coding, and fitness computing in the loop. For each generation, we must cross parents to have N<sub>p</sub> ‒ N<sub>e</sub> new individuals in the case of SGAD against only N<sub>c</sub> in PGAD (N<sub>c</sub> &lt; N<sub>p</sub> ‒ N<sub>e</sub>). Likewise we encode in the loop only N<sub>c</sub> individuals in our decoder against N<sub>p</sub> ‒ N<sub>e</sub> in SGAD. For the fitness in the loop, it is also computed for N<sub>c</sub> individuals instead of N<sub>p</sub> ‒ N<sub>e</sub>.</p><p>From the foregoing, we can summarize the advantages of our decoder as follows:</p><p>• Improvement of performance. Indeed, It corrects errors better than simple algorithms studied in [9,10] as shown in simulation section.</p><p>• Reducing the time complexity of the decoding process: 1) It is run in parallel on multiple processors for almost the same number or lower of total individuals (N<sub>g</sub>N<sub>p</sub>) used in a single decoder; 2) It reduces the time of encoding and fitness computing, since the algorithm receives (N<sub>p</sub> − N<sub>e</sub> − N<sub>c</sub>) migrant individuals (encoded) with their fitness already computed; 3) It reduces the reproduction time since the number of parents to cross is reduced to N<sub>c</sub>(N<sub>c</sub> &lt; N<sub>p</sub> − N<sub>e</sub>).</p></sec></sec><sec id="s4"><title>4. Simulation Results</title><p>Our PGAD is run on 4 processors (N<sub>s</sub> = 4). To study the performance of the presented PGAD decoder, we have simulated a binary communication system with BPSK modulation and both AWGN and Rayleigh fading channels. We give in this section, the impact of each parameter N<sub>g</sub>, N<sub>p</sub>, p<sub>c</sub>, p<sub>m</sub>, N<sub>e</sub>, N<sub>c</sub> and code rate on the performance of our decoder and we finish with a comparison with the SGAD decoder. The chosen code is the linear block BCH(63,30,14) code. The minimum number of sent erroneous frames is 30. The performance will be given as figures showing the Bit Error Rate (BER) versus the energy per bit to noise power spectral density ratio E<sub>b</sub>/N<sub>0</sub>.</p><p>The figures corresponding to each channel are given in <xref ref-type="table" rid="table2">Table 2</xref>.</p><sec id="s4_1"><title>4.1. Effect of Generation Number and Population Size</title><p>Generally, increasing the number of evaluated code <xref ref-type="table" rid="table2">Table 2</xref>. Simulation figures corresponding to each channel.</p><p><img src="8-9701711\d73de155-107b-4047-899b-a4e568e94c1d.jpg" /></p><p>words N<sub>p</sub>N<sub>g</sub>, the probability to find the codeword closest to the input sequence becomes high. This makes it possible to improve the BER performances. The effect of increasing the number of evaluated code words on the BER improvement for code BCH(63,30,14) at the 12th iteration is presented in Figures 9 and 10. The values N<sub>g</sub> = 100 and N<sub>p</sub> = 100 can be the optimal values in a large range E<sub>b</sub>/N<sub>0</sub>. The other genetic parameters for the first optimization are: N<sub>p</sub> = 100, N<sub>c</sub> = 80, N<sub>e</sub> = 5, p<sub>c</sub> = 0.99, p<sub>m</sub> = 0.03 and N<sub>g</sub> = 100, N<sub>c</sub> = 80, p<sub>c</sub> = 0.99, p<sub>m</sub> = 0.03 for the second one.</p></sec><sec id="s4_2"><title>4.2. Crossover Rate Effect</title><p>The crossover is a very important operation insofar as it allows a large exploration, and an effective exploitation. In Indeed, it creates new individuals may be good solutions to the problem. For most problems, the probability of crossover is high. This is the case also for the error correcting. The <xref ref-type="fig" rid="fig1">Figure 1</xref>1 shows that among the studied probabilities p<sub>c</sub>= 0.99 offers the best performance. For this simulation, we have fixed the other parameters as follows: N<sub>g</sub> = 10, N<sub>p</sub> = 100, N<sub>c</sub> = 80, N<sub>e</sub> = 5, and p<sub>m</sub> = 0.03.</p></sec><sec id="s4_3"><title>4.3. Mutation Rate Effect</title><p>The effect of mutation rate for BCH(63,30,14) is depicted in <xref ref-type="fig" rid="fig1">Figure 1</xref>2. It is shown that p<sub>m</sub> = 0.03 is the optimal BER value for all SNRs. One reason of this value close to 0 may be the stability of members in vicinity of optima for low mutation rates. The fixed values are: N<sub>g</sub> = 100, N<sub>p</sub> = 100, N<sub>c</sub> = 80, N<sub>e</sub> = 5, and p<sub>c</sub> = 0.99.</p></sec><sec id="s4_4"><title>4.4. Elite Number Effect</title><p>Among the best individuals of the current population, some may survive and move to the new population. This can be justified by the fact that their elitism may give birth to other best descendants. As shown in the <xref ref-type="fig" rid="fig1">Figure 1</xref>3, the greater the number of elites survived, more performances improve. However, when we exceed five elites the performances begin to decline. We deduce that worse individuals can also create, by crossover and mutation, better individuals. So we choose N<sub>e</sub> = 5. The fixed values for this simulation are: N<sub>g</sub> = 100, N<sub>p</sub> = 100, N<sub>c</sub> = 80, p<sub>c</sub> = 0.99 and p<sub>m</sub> = 0.03.</p></sec><sec id="s4_5"><title>4.5. Offspring Number and Migration Rate Effects</title><p>The number of individuals migrating from each nodeis</p><p><img src="8-9701711\f51f0110-33ce-4305-88c7-ca284e1fd09c.jpg" />So when this number decreases, the number of individuals created locally N<sub>c</sub> increases. From the curves plotted in <xref ref-type="fig" rid="fig1">Figure 1</xref>4, performances increase when N<sub>c</sub> increases up to a threshold</p><p>N<sub>c</sub> = 80. We also note that when there is no exchange of individuals (N<sub>c</sub> = 95 i.e. the number of migrant individuals is equal to 0) the performance is worse than with the exchange. The fixed values of parameters are: N<sub>g</sub> = 100, N<sub>p</sub> = 100, N<sub>e</sub> = 5, p<sub>c</sub> = 0.99 and p<sub>m</sub> = 0.03.</p></sec><sec id="s4_6"><title>4.6. Code Rate Effect</title><p>We have studied the performance of the following BCH codes: (63,30), (63,39), (63,45), and (63,51). From the <xref ref-type="fig" rid="fig1">Figure 1</xref>5, we note that when the rate decreases, performance increases. This is explained by the fact that when the code length n increases for the same dimension k; the number of redundancy bits (check) increases. i.e. it corrects better with more redundancy; which makes sense. In this simulation, we adopted the optimal values in <xref ref-type="table" rid="table3">Table 3</xref> previously found.</p></sec><sec id="s4_7"><title>4.7. Performance Comparison between PGAD and SGAD</title><p>We have studied the performance of our PGAD on a Gaussian channel AWGN and flat Rayleigh fading channel with flat fading using the same parameters in <xref ref-type="table" rid="table3">Table 3</xref>. We remark from Figures 16 and 17 that the parallel decoder not only reduces the time complexity, but also has good performance compared to simple decoder studied in [<xref ref-type="bibr" rid="scirp.27468-ref9">9</xref>] and just for 4 processors.</p></sec></sec><sec id="s5"><title>5. Conclusion</title><p>We have presented a new decoder based on parallel genetic algorithms which can be applied to any linear block code. The simulations show that it provides better performance than a decoder based on SGA and the gain is</p><p><xref ref-type="table" rid="table3">Table 3</xref>. Time complexities of different steps of the PGAD. <img src="8-9701711\91c8a1c9-2fe5-4e9a-a182-6f95a0aa2897.jpg" /></p><p>about 0.7 dB with 4 processors only. This is due to its parallel architecture which can exploit and explore more individuals and avoid the premature convergence to local optimum. In addition, this decoder has a lower complexity because it runs on multiple processors simultaneously, and because it reduces the time of encoding and fitness computing, and the time of generation of new individuals. Its performance can be further improved by adjusting algorithm parameters and characteristics (processor number, topology, migration, selection and replacement, ...) and by parallelizing tasks running on the same processor, or by putting it in hybrid with other decoders. We could also envisage an iterative decoding based on PGAs.</p></sec><sec id="s6"><title>REFERENCES</title></sec></body><back><ref-list><title>References</title><ref id="scirp.27468-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">R. W. Hamming, “Error Detecting and Error Correcting Codes,” Bell System Technical Journal, Vol. 29, No. 2, 1950, pp. 47-160.</mixed-citation></ref><ref id="scirp.27468-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">C. E. Shannon, “A Mathematical Theory of Communication,” Bell System Technical Journal, Vol. 27, 1948, pp. 379-423, pp. 623-656.</mixed-citation></ref><ref id="scirp.27468-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">S. Roman, “Introduction to Coding and Information Theory,” Spring Verlag, New York, 1996.</mixed-citation></ref><ref id="scirp.27468-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">C. Berrou and A. Glavieux, “Near Optimum Error Correcting Coding and Decoding: Turbo Codes,” IEEE Transactions on Communications, Vol. 44, No. 10, 1996, pp. 1261-1271. doi:10.1109/26.539767</mixed-citation></ref><ref id="scirp.27468-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">D. J. C. Mackay and R. M. Neal, “Good Codes Based on Very Sparse Matrices,” 5th IMA Conference on Cryptography and Coding. Lecture Notes in Computer Science number 1025, October 1995, Springer, Berlin, pp. 100-111. 
doi:10.1007/3-540-60693-9_13</mixed-citation></ref><ref id="scirp.27468-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Y. S. Han, C. R. P. Hartmann and C.-C. Chen, “Efficient Maximum Likelihood Soft-Decision Decoding of Linear Block Codes Using Algorithm A*,” Technical Report SU-CIS-91-42, Syracuse University, Syracuse, 1991.</mixed-citation></ref><ref id="scirp.27468-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">H. S. Maini, K. G. Mehrotra, C. Mohan and S. Ranka, “Genetic Algorithms for Soft Decision Decoding of Linear Block Codes,” Journal of Evolutionary Computation, Vol. 2, No. 2, 1994, pp. 145-164. 
doi:10.1162/evco.1994.2.2.145</mixed-citation></ref><ref id="scirp.27468-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">J. L. Wu, Y. H. Tseng and Y. M. Huang, “Neural Networks Decoders for Linear Block Codes,” International Journal of Computational Engineering Science, Vol. 3, No. 3, 2002, pp. 235-255. 
doi:10.1142/S1465876302000629</mixed-citation></ref><ref id="scirp.27468-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">F. El Bouanani, H. Berbia, M. Belkasmi and H. Ben-Azza, “Comparison between the Decoders of Chase, OSD and Those Based on Genetic Algorithms,” 21 Colloquium of GRETSI (Group of Study and Signal and Pictures Processing), Troyes, 11-14 September 2007, pp. 1153-1156.</mixed-citation></ref><ref id="scirp.27468-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">M. Belkasmi, H. Berbia and F. El Bouanani, “Iterative Decoding of Product Block Codes Based on the Genetic Algorithms,” 7th International ITG Conference on Source and Channel Coding (SCC’08), Ulm, 14-16 January 2008, pp. 1-6.</mixed-citation></ref><ref id="scirp.27468-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">A. Ahmadi, F. El Bouanani, H. Ben-Azza and Y. Benghabrit, “Reduced Complexity Iterative Decoding of 3D-Product Block Codes Based on Genetic Algorithms,” Journal of Electrical and Computer Engineering, Vol. 2012, 2012, Article ID: 609650.</mixed-citation></ref><ref id="scirp.27468-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">R. Pyndiah, A. Glavieux, A. Picart and S. Jacq, “Near Optimum Decoding of Product Codes,” IEEE Proceedings of Global Telecommunications Conference, San Francisco, 28 November-2 December 1994, Vol. 1, pp. 339-343.</mixed-citation></ref><ref id="scirp.27468-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">P. A. Martin, D. P. Taylor and M. P. C. Fossorier, “Soft-Input Soft-Output List-Based Decoding Algorithm,” IEEE Transactions on Communications, Vol. 52, No. 2, 2004, pp. 252-264.</mixed-citation></ref><ref id="scirp.27468-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">S. Lin and D. Costello, “Error Control Coding: Fundamentals and Applications,” Prentice-Hall, Upper Saddle River, 1983.</mixed-citation></ref><ref id="scirp.27468-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">A. Tanenbaum, “Computer Architecture,” Dunod, Paris, 2001.</mixed-citation></ref><ref id="scirp.27468-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">J. H. Holland, “Adaptation in Natural and Artificial Systems,” University of Michigan Press, Ann Arbor, 1975.</mixed-citation></ref><ref id="scirp.27468-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">D. E. Goldberg, “Genetic Algorithms in Search, Optimization, and Machine Learning,” Addison-Wesley, Boston, 1989.</mixed-citation></ref><ref id="scirp.27468-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">E. Alba and M. Tomassini, “Parallelism and Evolutionary Algorithms,” IEEE Transactions on Evolutionary Computation, Vol. 6, No. 5, 2002, pp. 443-462.</mixed-citation></ref><ref id="scirp.27468-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">E. Alba and J. M. Troya. “A Survey of Parallel Distributed Genetic Algorithms,” Complexity, Vol. 4, No. 4, 1999, pp. 31-52. 
doi:10.1002/(SICI)1099-0526(199903/04)4:4&lt;31::AID-CPLX5&gt;3.0.CO;2-4</mixed-citation></ref><ref id="scirp.27468-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">T. Starkweather, D. Whitley and K. Mathias, “Optimization Using Distributed Genetic Algorithm,” Springer Verlag, New York, 1991, pp. 176-185. 
doi:10.1007/BFb0029750</mixed-citation></ref><ref id="scirp.27468-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">V. S. Gordon and D. Whitley, “A Machine-Independent Analysis of Parallel Genetic Algorithms,” Complex Systems, Vol. 8, 1994, pp. 181-214.</mixed-citation></ref></ref-list></back></article>