<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s120810990</article-id>
<article-id pub-id-type="publisher-id">sensors-12-10990</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>A Comparison between Metaheuristics as Strategies for Minimizing Cyclic Instability in Ambient Intelligence</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Romero</surname><given-names>Leoncio A.</given-names></name><xref ref-type="aff" rid="af1-sensors-12-10990"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-12-10990"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Zamudio</surname><given-names>Victor</given-names></name><xref ref-type="aff" rid="af1-sensors-12-10990"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-12-10990"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Baltazar</surname><given-names>Rosario</given-names></name><xref ref-type="aff" rid="af1-sensors-12-10990"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Mezura</surname><given-names>Efren</given-names></name><xref ref-type="aff" rid="af2-sensors-12-10990"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Sotelo</surname><given-names>Marco</given-names></name><xref ref-type="aff" rid="af1-sensors-12-10990"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Callaghan</surname><given-names>Vic</given-names></name><xref ref-type="aff" rid="af3-sensors-12-10990"><sup>3</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-12-10990">
<label>1</label> Division of Research and Postgraduate Studies, Leon Institute of Technology, Leon, Guanajuato 37290, Mexico; E-Mails: <email>charobalmx@yahoo.com.mx</email> (R.B.); <email>masotelof@gmail.com</email> (M.S.)</aff>
<aff id="af2-sensors-12-10990">
<label>2</label> Laboratorio Nacional de Informatica Avanzada, Xalapa, Veracruz 91000, Mexico; E-Mail: <email>emezura@lania.mx</email></aff>
<aff id="af3-sensors-12-10990">
<label>3</label> School of Computer Science and Electronic Engineering, University of Essex, Wivenhoe Park CO4 3SQ, UK; E-Mail: <email>vic@essex.ac.uk</email></aff>
<author-notes>
<corresp id="c1-sensors-12-10990">
<label>*</label>Authors to whom correspondence should be addressed; E-Mails: <email>leoncior@acm.org</email> (L.A.R.); <email>vic.zamudio@ieee.org</email> (V.Z.).</corresp></author-notes>
<pub-date pub-type="collection">
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>08</day>
<month>08</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>8</issue>
<fpage>10990</fpage>
<lpage>11012</lpage>
<history>
<date date-type="received">
<day>03</day>
<month>06</month>
<year>2012</year></date>
<date date-type="rev-recd">
<day>03</day>
<month>07</month>
<year>2012</year></date>
<date date-type="accepted">
<day>10</day>
<month>07</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>In this paper we present a comparison between six novel approaches to the fundamental problem of cyclic instability in Ambient Intelligence. These approaches are based on different optimization algorithms, Particle Swarm Optimization (PSO), Bee Swarm Optimization (BSO), micro Particle Swarm Optimization (<italic>μ</italic>-PSO), Artificial Immune System (AIS), Genetic Algorithm (GA) and Mutual Information Maximization for Input Clustering (MIMIC). In order to be able to use these algorithms, we introduced the concept of <italic>Average Cumulative Oscillation</italic> (ACO), which enabled us to measure the average behavior of the system. This approach has the advantage that it does not need to analyze the topological properties of the system, in particular the loops, which can be computationally expensive. In order to test these algorithms we used the well-known discrete system called the Game of Life for 9, 25, 49 and 289 agents. It was found that PSO and <italic>μ</italic>-PSO have the best performance in terms of the number of agents locked. These results were confirmed using the Wilcoxon Signed Rank Test. This novel and successful approach is very promising and can be used to remove instabilities in real scenarios with a large number of agents (including nomadic agents) and complex interactions and dependencies among them.</p></abstract>
<kwd-group>
<kwd>cyclic instability</kwd>
<kwd>ambient intelligence</kwd>
<kwd>locking</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Any computer system can have errors and Ambient Intelligence is not exempt from them. Cyclical instability is a fundamental problem characterized by the presence of unexpected oscillations caused by the interaction of the rules governing the agents involved [<xref ref-type="bibr" rid="b1-sensors-12-10990">1</xref>–<xref ref-type="bibr" rid="b4-sensors-12-10990">4</xref>].</p>
<p>The problem of cyclical instability in Ambient Intelligence is a problem that has received little attention by the designers of intelligent environments [<xref ref-type="bibr" rid="b2-sensors-12-10990">2</xref>,<xref ref-type="bibr" rid="b5-sensors-12-10990">5</xref>]. However in order to achieve the vision of AmI this problem must be solved.</p>
<p>In the literature there are several strategies reported based on analyzing the connectivity among the agents due to their rules. The first one the Instability Prevention System INPRES is based on analyzing the topological properties of the Interaction Network. The Interaction Network is the digraph associated to the system and captures the dependencies of the rules between agents. INPRES finds the loops and locks a subset of agents on a loop, preventing them to change their state [<xref ref-type="bibr" rid="b1-sensors-12-10990">1</xref>–<xref ref-type="bibr" rid="b4-sensors-12-10990">4</xref>]. INPRES has been tested successfully in system with low density of interconnections and static rules (nomadic devices and time variant rules are not allowed). However when the number of agents involved in the system increases (with high dependencies among them) or when the agents are nomadic, the approach suggested by INPRES is not practical, due to the computational cost.</p>
<p>Additionally Action Selection Algorithms map the relationship between agents, rules and selection algorithms, into a simple linear system [<xref ref-type="bibr" rid="b6-sensors-12-10990">6</xref>]. However this approach has not been tested in real or simulated scenarios nor nomadic agents.</p>
<p>The approach presented in this paper translates the problem of cyclic instability into a problem of intelligent optimization, moving from exhaustive search techniques to metaheuristics searching.</p>
<p>In this paper we compare the results of <italic>Particle Swarm Optimization</italic> (PSO), <italic>Bee Swarm Optimization</italic> (BSO), <italic>micro Particle Swarm Optimization</italic> (<italic>μ</italic>-PSO), <italic>Artificial Immune System</italic> (AIS), <italic>Genetic Algorithm</italic> (GA) and <italic>Mutual Information Maximization for Input Clustering</italic> (MIMIC) when applied to the problem of cyclic instability. These algorithms find a good set of agents to be locked, in order to minimize the oscillatory behavior of the system. This approach has the advantage that there is no need to analyze the dependencies of the rules of the agents (as in the case of INPRES). We used the game of life [<xref ref-type="bibr" rid="b7-sensors-12-10990">7</xref>] to test this approach, where each cell represents an agent of the system.</p></sec>
<sec>
<label>2.</label>
<title>Cyclic Instability in Intelligent Environments</title>
<p>The scenarios of intelligent environments are governed by a set of rules, which are directly involved in the unstable behavior, and can lead the system to multiple changes over a period of time. These changes can cause interference with other devices, or unwanted behavior [<xref ref-type="bibr" rid="b1-sensors-12-10990">1</xref>–<xref ref-type="bibr" rid="b4-sensors-12-10990">4</xref>].</p>
<p>The state of a system <italic>s(t)</italic> is defined as the logarithm base 10 of the binary vectors of the agents. A turned-on agent was represented with 1 while a shut-down agent will be represented with 0. The representation of the state of the system is shown in <xref rid="FD1" ref-type="disp-formula">Equation (1)</xref>:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:mtext mathvariant="italic">s</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">t</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo mathvariant="italic">log</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">s</mml:mtext>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>s</italic>(<italic>t</italic>) is the state of the system at time <italic>t</italic>, and <italic>s</italic> is base-10 representation of the binary number of the state of the system.</p></sec>
<sec>
<label>3.</label>
<title>Optimization Algorithms</title>
<sec>
<label>3.1.</label>
<title>Particle Swarm Optimization</title>
<p>The Particle Swarm Optimization (PSO) algorithm was proposed by Kennedy and Everhart [<xref ref-type="bibr" rid="b8-sensors-12-10990">8</xref>,<xref ref-type="bibr" rid="b9-sensors-12-10990">9</xref>]. It is based on the choreography of a flock of birds [<xref ref-type="bibr" rid="b8-sensors-12-10990">8</xref>–<xref ref-type="bibr" rid="b13-sensors-12-10990">13</xref>], wing a social metaphor [<xref ref-type="bibr" rid="b14-sensors-12-10990">14</xref>] where each individual brings their knowledge to get a better solution. There are three factors that influence the change of the particle state or behavior:
<list list-type="bullet">
<list-item>
<p>Knowledge of the environment or adaptation is the importance given to past experiences.</p></list-item>
<list-item>
<p>Experience or local memory is the local importance given to best result found.</p></list-item>
<list-item>
<p>The experience of its neighbors or neighborhood memory is the importance given to the best result achieved by their neighbors.</p></list-item></list></p>
<p>The basic PSO algorithm [<xref ref-type="bibr" rid="b9-sensors-12-10990">9</xref>] uses two equations. <xref rid="FD2" ref-type="disp-formula">Equation (2)</xref>, which is used to find the velocity, describes the size and direction of the step that will be taken by the particles and is based on the knowledge achieved until that moment.</p>
<p>
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:semantics id="sm2">
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">v</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">wv</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">c</mml:mtext>
<mml:mn>1</mml:mn></mml:msub>
<mml:msub>
<mml:mtext mathvariant="italic">r</mml:mtext>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">l Best</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">c</mml:mtext>
<mml:mn>2</mml:mn></mml:msub>
<mml:msub>
<mml:mtext mathvariant="italic">r</mml:mtext>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">g Best</mml:mtext>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>where:
<list list-type="simple">
<list-item>
<p><italic>v<sub>i</sub></italic> is the velocity of the i-th particle, <italic>i</italic> = 1, 2 …, <italic>N</italic>,</p></list-item>
<list-item>
<p><italic>N</italic> is the number of the population,</p></list-item>
<list-item>
<p><italic>w</italic> is the environment adjustment factor,</p></list-item>
<list-item>
<p><italic>c</italic><sub>1</sub> is the memory factor of neighborhood,</p></list-item>
<list-item>
<p><italic>c</italic><sub>2</sub> is memory factor,</p></list-item>
<list-item>
<p><italic>r</italic><sub>1</sub> and <italic>r</italic><sub>2</sub> are random numbers in range [0, 1],</p></list-item>
<list-item>
<p><italic>lBest</italic> is the best local particle founded for the i-th particle,</p></list-item>
<list-item>
<p><italic>gBest</italic> is the best general particle founded until that moment for all particles.</p></list-item></list></p>
<p><xref rid="FD3" ref-type="disp-formula">Equation (3)</xref> updates the current position of the particle to the new position using the result of the velocity equation.</p>
<p>
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">v</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>x<sub>i</sub></italic> is the position of the i-th particle.</p>
<p>The PSO algorithm [<xref ref-type="bibr" rid="b9-sensors-12-10990">9</xref>] is shown in the Algorithm 1:
<array>
<tbody>
<tr>
<td align="left" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 1</bold> PSO Algorithm.</td></tr>
<tr>
<td align="left" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Data:</bold> <italic>P</italic> ∈ [<xref ref-type="bibr" rid="b3-sensors-12-10990">3</xref>, <xref ref-type="bibr" rid="b6-sensors-12-10990">6</xref>] (number of particles), <italic>c</italic><sub>1</sub> ∈ <italic>R, c</italic><sub>2</sub> ∈ <italic>R, w</italic> ∈ [0, 1], <italic>G</italic> (maximum allowed function evaluations).</td></tr>
<tr>
<td align="left" valign="top"><bold>Result:</bold> <italic>GBest</italic> (best solution found)
<list list-type="order">
<list-item>
<p>Initialize particles ' position and velocity randomly;</p></list-item>
<list-item>
<p>For <italic>g</italic> = 1 to <italic>G</italic> do</p>
<list list-type="alpha-lower">
<list-item>
<p>Recalculate best particles position <italic>gBest</italic></p></list-item>
<list-item>
<p>Select the local best position <italic>lBest</italic></p></list-item>
<list-item>
<p>For each X<italic>ig, i</italic> = 1, …, <italic>P do</italic></p>
<list list-type="roman-lower">
<list-item>
<p>Recalculate particle speed</p></list-item>
<list-item>
<p>Recalculate particle position</p></list-item></list></list-item></list></list-item></list></td></tr>
<tr>
<td align="left" valign="top">
<hr/></td></tr></tbody></array></p></sec>
<sec>
<label>3.2.</label>
<title>Binary PSO</title>
<p>Binary PSO [<xref ref-type="bibr" rid="b13-sensors-12-10990">13</xref>,<xref ref-type="bibr" rid="b14-sensors-12-10990">14</xref>] was designed to work in binary spaces. Binary PSO select the <italic>lBest</italic> and <italic>gBest</italic> particles in the same way as PSO. The main difference between binary PSO and normal PSO are the equations that are used to update the particle velocity and position. The equation for updating the velocity is based on probabilities but these probabilities must be in the range [0, 1]. A mapping is established for all real values of velocity to the range [0, 1]. The normalization <xref rid="FD4" ref-type="disp-formula">Equation (4)</xref> used here is a sigmoid function.</p>
<p>
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm4" display="block">
<mml:semantics id="sm4">
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">v</mml:mtext>
<mml:mrow>
<mml:mtext>ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">t</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">sigmoid</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">v</mml:mtext>
<mml:mrow>
<mml:mtext>ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">t</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">v</mml:mtext>
<mml:mrow>
<mml:mtext>ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula>and <xref rid="FD5" ref-type="disp-formula">Equation (5)</xref> is used to update the new particle position.</p>
<p>
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm5" display="block">
<mml:semantics id="sm5">
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">t</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:msub>
<mml:mtext mathvariant="italic">ifr</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:mtext mathvariant="italic">sigmoid</mml:mtext>
<mml:mspace width="0.2em"/>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">v</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">t</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mspace width="0.2em"/>
<mml:mtext mathvariant="italic">in other case</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>r<sub>ij</sub></italic> is a random vector with uniform values in the range [0, 1].</p></sec>
<sec>
<label>3.3.</label>
<title>Micro PSO</title>
<p><italic>μ</italic>-PSO algorithm [<xref ref-type="bibr" rid="b15-sensors-12-10990">15</xref>,<xref ref-type="bibr" rid="b16-sensors-12-10990">16</xref>] is a modification made to the original PSO algorithm in order to work with small populations (See Algorithm 2). This algorithm use replacement and mutation to be included in the original PSO algorithm, and allow to the algorithm avoid local optima.</p></sec>
<sec>
<label>3.4.</label>
<title>Bee Swarm Optimization</title>
<p>BSO algorithm [<xref ref-type="bibr" rid="b14-sensors-12-10990">14</xref>] is based on PSO and Bee algorithm (See Algorithm 3). It uses a local search algorithm to intensify the search. This algorithm was proposed by Sotelo [<xref ref-type="bibr" rid="b14-sensors-12-10990">14</xref>], where the changes made to PSO allowed finding a new best Global in the current population.</p>
<p>
<array>
<tbody>
<tr>
<td align="left" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 2</bold> <italic>μ</italic>-PSO Algorithm.</td></tr>
<tr>
<td align="left" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Data:</bold> <italic>P</italic> ∈ [<xref ref-type="bibr" rid="b3-sensors-12-10990">3</xref>, <xref ref-type="bibr" rid="b6-sensors-12-10990">6</xref>] (population size). <italic>R</italic> &gt; 0 (Replacement generation), <italic>N</italic> &gt; 0 (Number of restart particles), <italic>M</italic> ∈ [0, 1] (Mutation Rate;, <italic>c</italic><sub>1</sub> ∈ <italic>R, c</italic><sub>2</sub> ∈ <italic>R, w</italic> ∈ [0, 1], <italic>Neighborhoods</italic> &gt; 0, <italic>MaxFes</italic> (maximum allowed function evaluations).</td></tr>
<tr>
<td align="left" valign="top"><bold>Result:</bold> <italic>GBest</italic> (best solution found)</td></tr>
<tr>
<td align="left" valign="top">
<list list-type="order">
<list-item>
<p>Initialize particles' position, velocity and neighborhood randomly;</p></list-item>
<list-item>
<p><italic>Set cont</italic> = 1 <italic>and G</italic> = <italic>MaxFes/P</italic></p></list-item>
<list-item>
<p><italic>For g</italic> = 1 <italic>to G do</italic></p>
<list list-type="alpha-lower">
<list-item>
<p><italic>If</italic> (<italic>cont</italic> == <italic>R</italic>)</p>
<list list-type="roman-lower">
<list-item>
<p>Reinitialization of<italic>N worst particles</italic></p></list-item>
<list-item>
<p><italic>Set cont</italic> = 1</p></list-item></list></list-item></list></list-item>
<list-item>
<p>Recalculate best particles position <italic>gBest</italic></p></list-item>
<list-item>
<p>Select the local best position in the neighborhood <italic>lBest</italic></p></list-item>
<list-item>
<p>For each <italic>Xig, i</italic> = 1, …, <italic>P do</italic></p>
<list list-type="alpha-lower">
<list-item>
<p>Recalculate particle speed</p></list-item>
<list-item>
<p>Recalculate particle position</p></list-item></list></list-item>
<list-item>
<p>Perform mutation to each particle with a probability of <italic>P</italic>(<italic>M</italic>);</p></list-item>
<list-item>
<p><italic>Set cont</italic> = <italic>cont</italic> + 1</p></list-item></list></td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr></tbody></array>
<array>
<tbody>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 3</bold> BSO Intensifier.</td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top">
<list list-type="order">
<list-item>
<p><italic>Generate two new bees looking around to gBest</italic>.</p></list-item>
<list-item>
<p><italic>Evaluate the fitness for generated bees in the D variables</italic>.</p></list-item>
<list-item>
<p><italic>Select the generated bee with best fitness</italic>.</p>
<list list-type="alpha-lower">
<list-item>
<p><italic>If the fitness of selected bee is better than gBest</italic></p>
<list list-type="roman-lower">
<list-item>
<p><italic>Set the value and position of gBest as the bee</italic>.</p></list-item></list></list-item>
<list-item>
<p><italic>Otherwise increases gBest age</italic>.</p></list-item></list></list-item></list></td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr></tbody></array></p>
<p>Another variant of this algorithm consists in applying the steps in each comparison of a bee with the local best.</p>
<p>In the future we will refer to BSO algorithm with the global best enhancer as BSO1, while BSO algorithm with local the best enhancer will be known as BSO2.</p></sec>
<sec>
<label>3.5.</label>
<title>Artificial Immune System</title>
<p>The Artificial Immune System (AIS) [<xref ref-type="bibr" rid="b17-sensors-12-10990">17</xref>] is a metaheuristic based on the Immune System behavior of living things [<xref ref-type="bibr" rid="b14-sensors-12-10990">14</xref>], particularly of mammals [<xref ref-type="bibr" rid="b17-sensors-12-10990">17</xref>].</p>
<p>One of the main functions of the immune system is to keep the body healthy. A variety of harmful microorganisms (called pathogens) can invade the body. Antigens are molecules that are expressed on the surface of pathogens that can be recognized by the immune system and are also able to initiate the immune response to eliminate the pathogen cells [<xref ref-type="bibr" rid="b17-sensors-12-10990">17</xref>].</p>
<p>Artificial immune systems have various types of model (See Algorithm 4). In our case we use the one that implements the clonal selection algorithm, which emulates the process by which the immune system, in the presence of a specific antigen, stimulates only those lymphocytes that are more similar [<xref ref-type="bibr" rid="b17-sensors-12-10990">17</xref>].</p>
<p>The steps of the algorithm are described below:
<array>
<tbody>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 4</bold> Artificial Immune System Algorithm.</td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Data:</bold> <italic>tam</italic> number of antibodies, <italic>n</italic> antibodies to select, <italic>d</italic> number of new antibodies, <italic>B</italic> multiplication factor Beta, <italic>Iterations</italic> number of executions of the metaheuristic.</td></tr>
<tr>
<td align="left" valign="top"><bold>Result:</bold> <italic>sol</italic> antibodies
<list list-type="order">
<list-item>
<p><italic>sol</italic> ← <italic>Generate(tam)</italic> {Initiates the population according to the initial population selected and gains the fitness of each of their antibodies}</p></list-item>
<list-item>
<p><italic>Sort(sol)</italic> {Sort antibodies based in fitness}</p></list-item>
<list-item>
<p><bold>For</bold> <italic>i</italic> = <italic>1</italic> to <italic>Iterations</italic> <bold>do</bold></p>
<list list-type="alpha-lower">
<list-item>
<p><italic>sol</italic>-best ← <italic>Select(sol,n)</italic> {Select the <italic>n</italic> best antibodies}</p></list-item>
<list-item>
<p><italic>sol-copied</italic>← <italic>Copy(sol-best,B)</italic> {Copy <italic>B</italic> times the best antibodies}</p></list-item>
<list-item>
<p><italic>sol-hyper</italic> ← <italic>Hypermutability(sol-copied)</italic> {Hypermutability the copied antibodies}</p></list-item>
<list-item>
<p><italic>sol-best</italic> ← <italic>Select(sol-hyper, n)</italic> {Select the <italic>n</italic> best antibodies obtained by hypermutability}</p></list-item>
<list-item>
<p><italic>sol</italic> ← <italic>sol</italic>+<italic>sol-best</italic> {Add the best antibodies obtained to antibodies}</p></list-item>
<list-item>
<p><italic>sol-new</italic> ← <italic>Generate(d)</italic> {<italic>d</italic> new antibodies are generated according to the initial population selected}</p></list-item>
<list-item>
<p><italic>sol</italic> ← <italic>Replace(Sol, sol-new)</italic> {Replace d worst antibodies of population with the newest generated antibodies}</p></list-item>
<list-item>
<p><italic>Sort (sol)</italic> {Sort antibodies based on fitness}</p></list-item>
<list-item>
<p><italic>Resize(sol, tam)</italic> {Resize the number of antibodies that have the same number when the metaheuristic begin}</p></list-item></list></list-item></list></td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr></tbody></array></p></sec>
<sec>
<label>3.6.</label>
<title>Genetic Algorithm</title>
<p>The genetic algorithm (GA) [<xref ref-type="bibr" rid="b18-sensors-12-10990">18</xref>] is a search technique proposed by John Holland based on the theory of evolution by Darwin [<xref ref-type="bibr" rid="b18-sensors-12-10990">18</xref>–<xref ref-type="bibr" rid="b20-sensors-12-10990">20</xref>]. This technique is based on the selection mechanisms that nature uses, according to which the fittest individuals in a population are those who survive, to adapt more easily to changes in their environment.</p>
<p>A fairly comprehensive definition of a genetic algorithm is proposed by John Koza [<xref ref-type="bibr" rid="b21-sensors-12-10990">21</xref>]:</p>
<p>“It is a highly parallel mathematical algorithm that transforms a set of individual mathematical objects with respect to time using operations patterned according to the Darwinian principle of reproduction and survival of the fittest and after naturally have arisen from a series of genetic operations from which highlights the sexual recombination. Each of these mathematical objects is usually a string of characters (letters or numbers) of fixed length that fits the model of chains of chromosomes and is associated with a certain mathematical function that reflects their ability”.</p>
<p>The GA seeks solutions in the space of a function through simple evolution. In general, the individual fitness of a population tends to reproduce and survive to the next generation, thus improving the next generation. Either way, inferior individuals can, with a certain probability, survive and reproduce. In Algorithm 5, a genetic algorithm is presented in a summary form [<xref ref-type="bibr" rid="b19-sensors-12-10990">19</xref>].</p>
<array>
<tbody>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 5</bold> Genetic Algorithm.</td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Data:</bold> <italic>t</italic> (population size), <italic>G</italic> (maximum allowed function evaluations).</td></tr>
<tr>
<td align="left" valign="top"><bold>Result:</bold> <italic>Best Individual</italic> (Best Individual of last population).
<list list-type="order">
<list-item>
<p><italic>P</italic> ← <italic>Initialize-population(t)</italic> {Generate (randomly) an initial population }</p></list-item>
<list-item>
<p><italic>Evaluate(P)</italic> {Calculate the fitness of each individual}</p></list-item>
<list-item>
<p><italic>For g</italic> = <italic>1 to G do</italic></p>
<list list-type="alpha-lower">
<list-item>
<p><italic>P</italic> ' ← <italic>Select(P)</italic> {Choose the best individuals in the population and pass them to the next generation}</p></list-item>
<list-item>
<p><italic>P</italic> ' ← <italic>Cross(P)</italic> {Cross population to generate the rest of next population}</p></list-item>
<list-item>
<p><italic>P</italic> ' ← <italic>Mutation(P</italic>″) {Mutate one individual of population randomly chosen}</p></list-item>
<list-item>
<p><italic>Evaluate(P</italic> ') {Calculate the fitness of each individual of new population}</p></list-item>
<list-item>
<p><italic>P</italic> ← <italic>P</italic> ') {Replace the old population with new population}</p></list-item></list></list-item></list></td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr></tbody></array>
<sec>
<label>3.6.1.</label>
<title>Clones and Scouts</title>
<p>In order to increase performance of the GA the concept of clones and explorers is taken [<xref ref-type="bibr" rid="b22-sensors-12-10990">22</xref>]. A clone is one individual whose fitness is equal to the best individual fitness. When it reaches a certain percentage of clones a percentage of the worst individuals in the population is then mutated. Mutated individuals are named scouts. The application of clones and explorers is in addition to the mutation carried by the GA generation.</p>
<p>The algorithm to implement and explorers clones is shown in the Algorithm 6 [<xref ref-type="bibr" rid="b22-sensors-12-10990">22</xref>].</p>
<array>
<tbody>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 6</bold> Clones and Scouts Algorithm.</td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top">
<list list-type="order">
<list-item>
<p><italic>Define PC</italic> (<italic>Clones percentage</italic>)</p></list-item>
<list-item>
<p>Count the number of individuals who have the same fitness value than the best individual of current population and calculate<italic>PAC (</italic>Accumulative Percentage of Clones)</p></list-item>
<list-item>
<p><italic>Define PE (</italic>Scouts percentage)</p></list-item>
<list-item>
<p><italic>If PAC</italic> ≥ <italic>PC</italic></p>
<list list-type="alpha-lower">
<list-item>
<p>Select the worst<italic>N</italic> (<italic>PE</italic>) individuals of the current population, where <italic>N</italic> is the size of the population of individuals</p></list-item>
<list-item>
<p>Mutate selected individuals</p></list-item></list></list-item></list></td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr></tbody></array></sec></sec></sec>
<sec>
<label>4.</label>
<title>Mutual Information Maximization for Input Clustering</title>
<p>The Mutual Information Maximization for Input Clustering (MIMIC) [<xref ref-type="bibr" rid="b14-sensors-12-10990">14</xref>,<xref ref-type="bibr" rid="b23-sensors-12-10990">23</xref>–<xref ref-type="bibr" rid="b25-sensors-12-10990">25</xref>] is part of the algorithms known as EDAs (Estimation of Distribution Algorithms). These algorithms aim to get the probabilistic distribution of a population based on a set of samples, searching for the permutation associated to the lowest value of the Kullback–Leibler divergence (see <xref rid="FD6" ref-type="disp-formula">Equation (6)</xref>). This value is used to calculate the similarity between two different sets of samples:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm6" display="block">
<mml:semantics id="sm6">
<mml:mrow>
<mml:msubsup>
<mml:mtext mathvariant="italic">H</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext>
<mml:mi>π</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">h</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">X</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">in</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mtext mathvariant="italic">j</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">n</mml:mtext>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mtext mathvariant="italic">h</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">ij</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">ij</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula>where:
<list list-type="simple">
<list-item>
<p><italic>h</italic> (<italic>x</italic>) = − Σ<italic><sub>x</sub> p</italic> (<italic>X</italic> = <italic>x</italic>) log <italic>p</italic> (<italic>X</italic> = <italic>x</italic>) is Shannon's entropy of <italic>X</italic> variable</p></list-item>
<list-item>
<p><italic>h</italic> (<italic>X</italic>|<italic>Y</italic>) = − Σ<italic><sub>x</sub> p</italic> (<italic>X</italic>|<italic>Y</italic>) log <italic>p</italic> (<italic>Y</italic> = <italic>y</italic>), where</p></list-item>
<list-item>
<p><italic>h</italic> (<italic>X</italic>|<italic>Y</italic> = <italic>y</italic>) = − Σ<italic><sub>X</sub> p</italic> (<italic>X</italic> = <italic>x</italic>|<italic>Y</italic> = <italic>y</italic>) log (<italic>X</italic> = <italic>x</italic>|<italic>Y</italic> = <italic>y</italic>), is the <italic>X</italic> entropy given <italic>Y</italic>.</p></list-item></list></p>
<p>This algorithm suppose that the different variables have a bivariate dependency described by <xref rid="FD7" ref-type="disp-formula">Equation (7)</xref>.</p>
<p>
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="mm7" display="block">
<mml:semantics id="sm7">
<mml:mrow>
<mml:msubsup>
<mml:mtext mathvariant="italic">p</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext>
<mml:mi>π</mml:mi></mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">p</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">i</mml:mtext>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">i</mml:mtext>
<mml:mn>2</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">▪</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">p</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">i</mml:mtext>
<mml:mn>2</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">i</mml:mtext>
<mml:mn>3</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:mo>…</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">p</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">in</mml:mtext>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">in</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">p</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="italic">in</mml:mtext></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>π</italic> = (<italic>i</italic>1, <italic>i</italic>2, …, <italic>in</italic>)is an index permutation.</p>
<p>The algorithm can be seen in Algorithm 7:
<array>
<tbody>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top"><bold>Algorithm 7</bold> MIMIC Algorithm.</td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top">
<list list-type="order">
<list-item>
<p><italic>Initialize a population (array) of individuals with random values on d dimensions in the problem space</italic></p></list-item>
<list-item>
<p><italic>Select a subpopulation through a selection method</italic></p></list-item>
<list-item>
<p><italic>Calculate Shannon</italic>'<italic>s entropy for each variable</italic>.</p></list-item>
<list-item>
<p><italic>Generate a permutation</italic>
<mml:math id="mm8" display="inline">
<mml:semantics id="sm8">
<mml:mrow>
<mml:msubsup>
<mml:mtext mathvariant="italic">p</mml:mtext>
<mml:mtext mathvariant="italic">l</mml:mtext>
<mml:mi>π</mml:mi></mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">x</mml:mtext>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mrow></mml:semantics></mml:math></p>
<list list-type="alpha-lower">
<list-item>
<p><italic>Choose variable with lowest entropy</italic>.</p></list-item>
<list-item>
<p><italic>For the next variables choose i<sub>k</sub></italic> = <italic>argmin<sub>j</sub>h<sub>l</sub></italic> (<italic>X<sub>j</sub></italic>|<italic>X<sub>ik</sub></italic><sub>+1</sub>) <italic>Where j</italic> ≠ <italic>i<sub>k</sub></italic>+<italic><sub>i</sub></italic>, …,<italic>in</italic></p></list-item></list></list-item>
<list-item>
<p><italic>Sample the new population using the generated permutation</italic>
<mml:math id="mm9" display="inline">
<mml:semantics id="sm9">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>π</mml:mi></mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mrow></mml:semantics></mml:math></p></list-item>
<list-item>
<p><italic>Loop until a criterion is met</italic>.</p></list-item></list></td></tr>
<tr>
<td align="center" valign="top">
<hr/></td></tr></tbody></array></p></sec>
<sec>
<label>5.</label>
<title>Test Instances</title>
<p>The Game of Life [<xref ref-type="bibr" rid="b7-sensors-12-10990">7</xref>] was used as test instance for the problem of cyclical instability affecting intelligent environments. This is because it has been shown in many cases that the Game of Life system exhibits oscillatory behavior in spite of the few rules used for this. In addition the environment is extremely simple and may take from a few to a large number of agents acting within the system.</p>
<p>The game of life is a cellular automata created by John Conway [<xref ref-type="bibr" rid="b7-sensors-12-10990">7</xref>]. This is a set of cells which, based on a set of simple rules, can live, die or multiply. Depending on the initial conditions, the cells form different patterns during the course of the game. The rules of the game are as follows [<xref ref-type="bibr" rid="b7-sensors-12-10990">7</xref>] :
<list list-type="order">
<list-item>
<p><italic>Survival</italic>: if a cell is in state 1 and has 2 or 3 neighbors in state 1, then the cell remains in state 1</p></list-item>
<list-item>
<p><italic>Birth</italic>: if a cell is in state 0 and has exactly 3 neighbors in state 1, the next time step the cell goes to state 1.</p></list-item>
<list-item>
<p><italic>Deaths</italic>: a cell in state 1 goes to state 0 if it has 0 or 1 neighbors, or if it has 4 or more neighbors.</p></list-item></list></p>
<p>From the game of life, we have examples of oscillating behavior. From these we take the follow configurations as benchmark.</p>
<p><xref ref-type="fig" rid="f1-sensors-12-10990">Figure 1</xref> presents the simplest known oscillator in the Game of Life called Blinker. This oscillator with 3 alive cells fits neatly into a 3 × 3 grid with 9 potential agents in this scenario.</p>
<p>The settings in <xref ref-type="fig" rid="f2-sensors-12-10990">Figure 2</xref> was determined randomly and was found to be a stable scenario. This configuration changes during the early stages but later reaches a stable state. The number of cells or agents in this configuration is 49 since the grid used is 7 × 7.</p>
<p>The configuration presented in <xref ref-type="fig" rid="f3-sensors-12-10990">Figure 3</xref> is known as Toad. This oscillator is a bit more complex than the Blinker in terms of the number of agents involved or affected by the oscillation. However it has also a period of 2 like Blinker. This oscillator fits into a grid of 4 × 4, thereby containing 16 agents within the system.</p>
<p>The previous scenarios can be considered as simple configurations, as intelligent environments can contain a larger number of devices or agents involved, and the evaluation of the system is crucial to determine whether the proposed solution can work with more complex scenarios. In the following examples we will introduce complex configurations called <italic>Pulsar</italic> and <italic>10 Cell Row</italic> shown in <xref ref-type="fig" rid="f4-sensors-12-10990">Figures 4</xref> and <xref ref-type="fig" rid="f5-sensors-12-10990">5</xref>. In these configurations there are 289 cells or agents on a 17 × 17 grid, allowing complex behavior and potential oscillations on them.</p></sec>
<sec>
<label>6.</label>
<title>Using Optimization Algorithms to Solve the Problem of Cyclic Instability</title>
<p>In order to solve the problem of cyclic instability using different optimization algorithms we need to minimize the amplitude of the oscillations. In the ideal case this would result in a stable system. Additionally we are interested on affecting the fewest number of agents (agents locked).</p>
<p>In order to test these approaches we used the Game of Life because it is a well know system that possesses proven oscillatory behavior in very simple environment with simple agents and few rules. For the test we consider a Game of Life with open boundary conditions. The open boundary condition in our case is considered cold (in terms of the heat entropy) and all cells outside the grid are considered dead. We enriched the game of life with additional conditions: a list of agents that are allowed to be locked. All techniques can lock them according to their results. This is because priority agents (such as alarms, security systems, <italic>etc.</italic>) should not be disabled.</p>
<p>Each solution vector represents the list of blocked agents where the aim is to minimize the <italic>Average Cumulative Oscillation</italic> (ACO) of the system in a given period of time. The ACO is calculated using the following <xref rid="FD8" ref-type="disp-formula">Equation (8)</xref> [<xref ref-type="bibr" rid="b26-sensors-12-10990">26</xref>].</p>
<p>
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="mm10" display="block">
<mml:semantics id="sm10">
<mml:mrow>
<mml:mtext mathvariant="italic">o</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mtext mathvariant="italic">i</mml:mtext>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">n</mml:mtext>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">S</mml:mtext>
<mml:mtext mathvariant="italic">i</mml:mtext></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mtext mathvariant="italic">S</mml:mtext>
<mml:mrow>
<mml:mtext mathvariant="italic">i</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mtext mathvariant="italic">n</mml:mtext>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>o</italic> is the Average Cumulative Oscillation, <italic>n</italic> is the game of life generations, <italic>S<sub>i</sub></italic> is the state of the system at the time <italic>i</italic>, <italic>S<sub>i</sub></italic><sub>+1</sub> is the state of the system at the time <italic>i</italic> + 1.</p>
<p>The best solution should not only minimize the amplitude of oscillation but also the number of agents locked. In these experiments the percentage of agents that can be locked is included as a parameter. This is important because as this percentage grows the systems becomes more disabled.</p>
<p>In these experiments we consider systems whose adjacency matrix are of 3 × 3, 4 × 4,7 × 7, and 17 × 17. In all the cases the maximum percentage of locked agents set to 20%.</p>
<p>If an algorithm can not find a better solution in terms of the amplitude of the oscillations, no agents will be locked. If a solution is good in terms of the amplitude of the oscillation but the percentage of locked agents is bigger than the maximum permitted, the solution will be penalized by adding a constant value (in our case the value is 10) to the value of the Average Cumulative Oscillation (ACO).</p>
<p>In our experiments we set a parameter of 3,000 functions calls as the measure of success of the algorithms, <italic>i.e.</italic>, the system has 3,000 opportunities to find a better solution. If after 3,000 functions calls a better solution is not found, the system is deemed to have failed.</p></sec>
<sec sec-type="results">
<label>7.</label>
<title>Experimental Results</title>
<p>For the test performed with PSO and BSO for all test instances we used the parameters shown in <xref ref-type="table" rid="t1-sensors-12-10990">Table 1</xref>.</p>
<p>The parameters used for the <italic>μ</italic>PSO are shown in <xref ref-type="table" rid="t2-sensors-12-10990">Table 2</xref>.</p>
<p>The parameters used for AIS are shown in <xref ref-type="table" rid="t3-sensors-12-10990">Table 3</xref>.</p>
<p>The parameters used for GA are shown in <xref ref-type="table" rid="t4-sensors-12-10990">Table 4</xref>.</p>
<p>For the test performed with MIMIC for all test instances we used the parameters shown in <xref ref-type="table" rid="t5-sensors-12-10990">Table 5</xref>.</p>
<p><xref ref-type="table" rid="t6-sensors-12-10990">Table 6</xref> shows the level of oscillation obtained for each of the instances taken from the Game of Life. The value obtained assumed that the system remain unchanged during its evolution, <italic>i.e.</italic>, from the initial conditions, the system is allowed to evolve according to the rules of the scenario itself without interference for the entire time of evaluation.</p>
<p>With the parameters described before, we obtain the results shown in <xref ref-type="table" rid="t7-sensors-12-10990">Tables 7</xref> and <xref ref-type="table" rid="t8-sensors-12-10990">8</xref>. The best result obtained with 100 executions for each test instance is shown.</p>
<p><xref ref-type="table" rid="t9-sensors-12-10990">Table 9</xref> shows the numbers of agents blocked, which correspond to the results obtained with the OAP shown in <xref ref-type="table" rid="t7-sensors-12-10990">Tables 7</xref> and <xref ref-type="table" rid="t8-sensors-12-10990">8</xref>.</p>
<p>In order to see the cyclic instability and how it is removed, for each test instance we show the evolution of the system before and after locking. In <xref ref-type="fig" rid="f6-sensors-12-10990">Figure 6</xref> the oscillatory behavior of instance 1 (Blinker) is shown and in <xref ref-type="fig" rid="f7-sensors-12-10990">Figure 7</xref> the instabilities are successfully removed from the instance 1 (Blinker). In <xref ref-type="fig" rid="f7-sensors-12-10990">Figure 7</xref> different evolutions can be seen, because for this scenario different sets of locked agents can achieve system stability.</p>
<p>In the case of instance 2 (Non-oscillating) shown in <xref ref-type="fig" rid="f8-sensors-12-10990">Figure 8</xref> although the system does not oscillate the techniques were able to find different configurations for this scenario that remain stable while decrease the value of the Average Cumulative Oscillation. The behavior of instance 2 (non-oscillating) after locking is shown in <xref ref-type="fig" rid="f9-sensors-12-10990">Figure 9</xref>.</p>
<p>As for instance 3 (Toad), the oscillatory behavior shown in <xref ref-type="fig" rid="f10-sensors-12-10990">Figure 10</xref> looks very similar to instance 1 (Blinker).</p>
<p>In the same way as in instance 1(Blinker), instability was eliminated successfully for instance 3 (Toad) as shown in <xref ref-type="fig" rid="f10-sensors-12-10990">Figure 10</xref>. As shown in <xref ref-type="table" rid="t7-sensors-12-10990">Tables 7</xref> and <xref ref-type="table" rid="t8-sensors-12-10990">8</xref>, different values of the ACO were obtained for this scenario because there are different vectors of locked agents that allow to stabilize the system. This explains why different system evolution is shown in <xref ref-type="fig" rid="f11-sensors-12-10990">Figure 11</xref> after applying the locking.</p>
<p>In <xref ref-type="fig" rid="f12-sensors-12-10990">Figure 12</xref> the oscillatory behavior of instance 4 (Pulsar) is shown, which is a more complex behavior in relation to those shown above.</p>
<p>While in the above instances the best values obtained by the techniques are very similar, this trend is no longer maintained for the instance 5 (Pulsar). The is because the size of the instance considerably increases the number of possible combinations.</p>
<p>Most importantly, despite the difference in the results between the various techniques, it was possible to stabilize the system with different combinations of locked agents, showing that depending on the scenario there may be more than one set of locked agents with which the system can become stable. This is showcased by the different results obtained for the instance 4 (Pulsar) in the level of instability (refer to Figure 13), where we can see how quickly the system stabilizes in each of the different configurations achieved by the optimization techniques.</p>
<p>The oscillatory behavior of the instance 5 (10 cell row) is shown in <xref ref-type="fig" rid="f14-sensors-12-10990">Figure 14</xref>. It is seen that the oscillation began quickly in contrast to the Instance 4 (Pulsar), whose oscillation is seen until after a certain period of time.</p>
<p>For the instance 5 (10 cell row), again the number of agents represented is therefore significant. The performance results are similar to those described for instance 4 (Toad) and the best results obtained by the techniques vary with respect to each other. The behavior without oscillation is shown in <xref ref-type="fig" rid="f15-sensors-12-10990">Figure 15</xref>. The difference between the behavior of each algorithm responds to the different sets of locked agents by each of the techniques.</p>
<p><xref ref-type="table" rid="t10-sensors-12-10990">Table 10</xref> shows the comparison among the results obtained by different algorithms. To determine whether an algorithm outperforms another, the Wilcoxon signed rank test was performed. The best performing algorithms are those that exceed a greater number of algorithms in the results obtained for the ACO and the number of locked agents.</p>
<p>Despite the similarity of results of some algorithms based on Table 10, it can be said that the GA was able to obtain smaller values relative to the values of the ACO. But if we take into account the number of locked agents, the algorithms PSO and <italic>μ</italic>-PSO are those who achieved best results. This becomes more important because the algorithms PSO and <italic>μ</italic>-PSO achieve system stability, which makes them better by allowing most of the devices continue to work normally.</p></sec>
<sec sec-type="conclusions">
<label>8.</label>
<title>Conclusions and Future Work</title>
<p>From our experiments we found that all the algorithms were able to find a vector of locked agents that prevent the system from oscillating. Additionally, Wilcoxon test showed that GA gave better results but not in terms of time and number of agents locked—rather, PSO and <italic>μ</italic>-PSO gave the better results in that sense. MIMIC consistently violated the restriction of maximum permitted percentage of agents locked. MIMIC is based on estimating the distribution of data and for that reason needs a larger number of data (in our case the amount of list of agents locked), and that is the main reason the time spent for the algorithm to find a solution increased significantly.</p>
<p>An important advantage of this proposal compared to others found in the literature is the way by which the system is evaluated, since it only sees the general state of the environment regardless of its topology. Because of this, the evaluation time of the scenarios can be significantly reduced regardless of the number of agents that form part of the system. Additionally, the possibility of a proposal able to work with any scenario can be more clearly distinguished in real time, which helps to improve their operation.</p>
<p>This approach based on the concept of <italic>Average Cumulative Oscillation</italic> opens the possibility for other algorithms to be applied to the problem of cyclic instability, in general algorithms for discrete optimization. In particular we are interested in testing this approach for the case of nomadic and weighted agents and with different percentage of locked agents. Also it is possible to improve the estimation of the oscillation in order to discriminate between stable systems with abrupt changes and systems with small oscillations, because in some cases it is possible to get small values of <italic>Average Cumulative Oscillation</italic> in oscillating systems. We hope to report these results in future.</p></sec></body>
<back>
<ack>
<p>The authors want to thank Jorge Soria for their comments and suggestions to his work. Leoncio Romero acknowledges the support of the National Council for Science and Technology CONACyT. Additionally, E. Mezura acknowledges the support from CONACyT through project No. 79809.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-10990"><label>1.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Zamudio</surname><given-names>V.M.</given-names></name></person-group><article-title>Understanding and Preventing Periodic Behavior in Ambient Intelligence</article-title><source>Ph.D. Thesis</source><publisher-name>University of Essex</publisher-name><publisher-loc>Southend-on-Sea, UK</publisher-loc><year>2008</year></citation></ref>
<ref id="b2-sensors-12-10990"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zamudio</surname><given-names>V.</given-names></name><name><surname>Callaghan</surname><given-names>V.</given-names></name></person-group><article-title>Facilitating the ambient intelligent vision: A theorem, representation and solution for instability in rule-based multi-agent systems</article-title><source>Int. Trans. Syst. Sci. Appl.</source><year>2008</year><volume>4</volume><fpage>108</fpage><lpage>121</lpage></citation></ref>
<ref id="b3-sensors-12-10990"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zamudio</surname><given-names>V.</given-names></name><name><surname>Callaghan</surname><given-names>V.</given-names></name></person-group><article-title>Understanding and avoiding interaction based instability in pervasive computing environments</article-title><source>Int. J. Pervasive Comput. Commun.</source><year>2009</year><volume>5</volume><fpage>163</fpage><lpage>186</lpage><pub-id pub-id-type="doi">10.1108/17427370910976043</pub-id></citation></ref>
<ref id="b4-sensors-12-10990"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Zamudio</surname><given-names>V.</given-names></name><name><surname>Baltazar</surname><given-names>R.</given-names></name><name><surname>Casillas</surname><given-names>M.</given-names></name></person-group><article-title>c-INPRES: Coupling analysis towards locking optimization in ambient intelligence</article-title><conf-name>Proceedings of the 6th International Conference on Intelligent Environments IE10</conf-name><conf-sponsor>Monash University (Sunway campus)</conf-sponsor><conf-loc>Kuala Lumpur, Malaysia</conf-loc><conf-date>July 2010</conf-date></citation></ref>
<ref id="b5-sensors-12-10990"><label>5.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Egerton</surname><given-names>A.</given-names></name><name><surname>Zamudio</surname><given-names>V.</given-names></name><name><surname>Callaghan</surname><given-names>V.</given-names></name><name><surname>Clarke</surname><given-names>G.</given-names></name></person-group><source>Instability and Irrationality: Destructive and Constructive Services within Intelligent Environments</source><publisher-name>Essex University</publisher-name><publisher-loc>Southend-on-Sea, UK</publisher-loc><year>2009</year></citation></ref>
<ref id="b6-sensors-12-10990"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gaber</surname><given-names>J.</given-names></name></person-group><article-title>Action selection algorithms for autonomous system in pervasive environment: A computational approach</article-title><source>ACM Trans. Auton. Adapt. Syst.</source><year>2011</year><comment>1921641.1921651</comment></citation></ref>
<ref id="b7-sensors-12-10990"><label>7.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Nápoles</surname><given-names>J.E.</given-names></name></person-group><article-title>El juego de la Vida: Geometría Dinámica</article-title><source>M.S. Thesis</source><publisher-name>Universidad de la Cuenca del Plata</publisher-name><publisher-loc>Corrientes, Argentina</publisher-loc></citation></ref>
<ref id="b8-sensors-12-10990"><label>8.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Carlise</surname><given-names>A.</given-names></name><name><surname>Dozier</surname><given-names>G.</given-names></name></person-group><article-title>An off-the-shelf PSO</article-title><conf-name>Proceedings of the Particle Swarm Optimization Workshop</conf-name><conf-loc>Indianapolis, IN, USA</conf-loc><conf-date>April 2001</conf-date></citation></ref>
<ref id="b9-sensors-12-10990"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Eberhart</surname><given-names>R.C.</given-names></name><name><surname>Shi</surname><given-names>Y.</given-names></name></person-group><article-title>Particle swarm optimization: Developments, applications and resources</article-title><conf-name>Proceedings of the Evolutionary Computation</conf-name><conf-loc>Seoul, Korean</conf-loc><conf-date>May 2001</conf-date><fpage>82</fpage><lpage>86</lpage></citation></ref>
<ref id="b10-sensors-12-10990"><label>10.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Coello</surname><given-names>C.A.</given-names></name><name><surname>Salazar</surname><given-names>M.</given-names></name></person-group><article-title>MOPSO: A proposal for multiple Objetive Particle Swarm Optimization</article-title><conf-name>Proceedings of the Evolutionary Computation</conf-name><conf-loc>Honolulu, HI, USA</conf-loc><conf-date>May 2002</conf-date><fpage>1051</fpage><lpage>1056</lpage></citation></ref>
<ref id="b11-sensors-12-10990"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Das</surname><given-names>S.</given-names></name><name><surname>Konar</surname><given-names>A.</given-names></name><name><surname>Chakraborty</surname><given-names>U.K.</given-names></name></person-group><article-title>Improving particle swarm optimization with differentially perturbed velocity</article-title><conf-name>Proceedings of the 2005 Conference on Genetic and Evolutionary Computation (GECCO)</conf-name><conf-loc>Washington, DC, USA</conf-loc><conf-date>May 2005</conf-date><fpage>177</fpage><lpage>184</lpage></citation></ref>
<ref id="b12-sensors-12-10990"><label>12.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Parsopoulos</surname><given-names>K.</given-names></name><name><surname>Vrahatis</surname><given-names>M.N.</given-names></name></person-group><article-title>Initializing the particle swarm optimizer using the nonlinear simplex method</article-title><source>Advances in Intelligent Systems, Fuzzy Systems, Evolutionary Computation</source><publisher-name>WSEAS Press</publisher-name><publisher-loc>Interlaken, Switzerland</publisher-loc><year>2002</year></citation></ref>
<ref id="b13-sensors-12-10990"><label>13.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Khali</surname><given-names>T.M.</given-names></name><name><surname>Youssef</surname><given-names>H.K.M.</given-names></name><name><surname>Aziz</surname><given-names>M.M.A.</given-names></name></person-group><article-title>A binary particle swarm optimization for optimal placement and sising of capacitor banks in radial distribution feeders with distored substation voltages</article-title><conf-name>Proceedings of the AIML 06 International Conference</conf-name><conf-loc>Queensland, Australia</conf-loc><conf-date>September 2006</conf-date></citation></ref>
<ref id="b14-sensors-12-10990"><label>14.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Sotelo</surname><given-names>M.A.</given-names></name></person-group><article-title>Aplicacion de Metaheuristicas en el Knapsack Problem</article-title><source>M.S. Thesis</source><publisher-name>Leon Institute of Technology</publisher-name><publisher-loc>Guanajuato, Mexico</publisher-loc><year>2010</year></citation></ref>
<ref id="b15-sensors-12-10990"><label>15.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Fuentes Cabrera</surname><given-names>C.J.</given-names></name><name><surname>Coello Coello</surname><given-names>C.A.</given-names></name></person-group><article-title>Handling constraints in particle swarm optimization using a small population size</article-title><conf-name>Proceeding of the 6th Mexican International Conference on Artificial Intelligence</conf-name><conf-loc>Aguascalientes, Mexico</conf-loc><conf-date>November 2007</conf-date></citation></ref>
<ref id="b16-sensors-12-10990"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Viveros Jiménez</surname><given-names>F.</given-names></name><name><surname>Mezura Montes</surname><given-names>E.</given-names></name><name><surname>Gelbukh</surname><given-names>A.</given-names></name></person-group><article-title>Empirical analysis of a micro-evolutionary algorithm for numerical optimization</article-title><source>Int. J. Phys. Sci.</source><year>2012</year><volume>7</volume><fpage>1235</fpage><lpage>1258</lpage></citation></ref>
<ref id="b17-sensors-12-10990"><label>17.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Cruz Cortés</surname><given-names>N.</given-names></name></person-group><article-title>Sistema inmune artificial para solucionar problemas de optimización</article-title><comment>Available online: <ext-link xlink:href="http://cdigital.uv.mx/bitstream/123456789/29403/1/nareli.pdf" ext-link-type="uri">http://cdigital.uv.mx/bitstream/123456789/29403/1/nareli.pdf</ext-link> (accessed on 3 June 2012)</comment></citation></ref>
<ref id="b18-sensors-12-10990"><label>18.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Holland</surname><given-names>J.</given-names></name></person-group><source>Adaptation in Natural and Artificial Systems</source><publisher-name>MIT Press</publisher-name><publisher-loc>Cambridge, MA, USA</publisher-loc><year>1992</year></citation></ref>
<ref id="b19-sensors-12-10990"><label>19.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Houck</surname><given-names>C.R.</given-names></name><name><surname>Joines</surname><given-names>J.A.</given-names></name><name><surname>Kay</surname><given-names>M.G.</given-names></name></person-group><source>A Genetic Algorithm for Function Optimization: A Matlab Implementation</source><comment>Technical Report NCSU-IE-TR-95-09</comment><publisher-name>North Carolina State University</publisher-name><publisher-loc>Raleigh, NC, USA</publisher-loc><year>1995</year></citation></ref>
<ref id="b20-sensors-12-10990"><label>20.</label><citation citation-type="web"><person-group person-group-type="author"><name><surname>Coello Coello</surname><given-names>C.A.</given-names></name></person-group><article-title>Introducción a la Computación Evolutiva</article-title><comment>Available online: <ext-link xlink:href="http://delta.cs.cinvestav.mx/ccoello/genetic.html" ext-link-type="uri">http://delta.cs.cinvestav.mx/ccoello/genetic.html</ext-link> (accessed on 3 June 2012)</comment></citation></ref>
<ref id="b21-sensors-12-10990"><label>21.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Koza</surname><given-names>J.R.</given-names></name></person-group><source>Genetic Programming: On the Programming of Computers by Means of Natural Selection</source><publisher-name>MIT Press</publisher-name><publisher-loc>Cambridge, MA, USA</publisher-loc><year>1992</year></citation></ref>
<ref id="b22-sensors-12-10990"><label>22.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Soria-Alcaraz</surname><given-names>J.A.</given-names></name><name><surname>Carpio-Valadez</surname><given-names>J.M.</given-names></name><name><surname>Terashima-Marin</surname><given-names>H.</given-names></name></person-group><article-title>Academic timetabling desing using hyper-heuristics</article-title><source>Soft Comput. Intell. Control Mob. Robot</source><year>2010</year><volume>318</volume><fpage>43</fpage><lpage>56</lpage></citation></ref>
<ref id="b23-sensors-12-10990"><label>23.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>De Bonet</surname><given-names>J.S.</given-names></name><name><surname>Isbell</surname><given-names>C.L.</given-names><suffix>Jr.</suffix></name><name><surname>Paul</surname><given-names>V.</given-names></name></person-group><source>MIMIC: Finding Optima by Estimating Probability Densities</source><publisher-name>Advances in Neural Proessing Systems MIT Press</publisher-name><publisher-loc>Cambridge, MA, USA</publisher-loc><year>1997</year></citation></ref>
<ref id="b24-sensors-12-10990"><label>24.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bosman</surname><given-names>P.A.N.</given-names></name><name><surname>Thierens</surname><given-names>D.</given-names></name></person-group><article-title>Linkage information processing in distribution estimation algorithms</article-title><source>Dep. Comput. Sci.</source><year>1999</year><volume>1</volume><fpage>60</fpage><lpage>67</lpage></citation></ref>
<ref id="b25-sensors-12-10990"><label>25.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Larrañaga</surname><given-names>P.</given-names></name><name><surname>Lozano</surname><given-names>J.A.</given-names></name><name><surname>Mohlenbein</surname><given-names>H.</given-names></name></person-group><article-title>Algoritmos de Estimación de Distribuciones en Problemas de Optimización Combinatoria</article-title><source>Inteligencia Artificial, Revista Iberoamericana de Inteligencia Artificial</source><year>2003</year><volume>7</volume><fpage>149</fpage><lpage>168</lpage></citation></ref>
<ref id="b26-sensors-12-10990"><label>26.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Romero</surname><given-names>L.A.</given-names></name><name><surname>Zamudio</surname><given-names>V.</given-names></name><name><surname>Baltazar</surname><given-names>R.</given-names></name><name><surname>Sotelo</surname><given-names>M.</given-names></name><name><surname>Callaghan</surname><given-names>V.</given-names></name></person-group><article-title>A comparison between PSO and MIMIC as strategies for minimizing cyclic instabilities in ambient intelligence</article-title><conf-name>Proceedings of the 5th International Symposium on Ubiquitous Computing and Ambient Intelligence UCAmI</conf-name><conf-loc>Riviera Maya, Mexico</conf-loc><conf-date>5–9 December 2011</conf-date></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-12-10990" position="float">
<label>Figure 1.</label>
<caption>
<p>Blinker.</p></caption>
<graphic xlink:href="sensors-12-10990f1.gif"/></fig>
<fig id="f2-sensors-12-10990" position="float">
<label>Figure 2.</label>
<caption>
<p>Non-oscillating.</p></caption>
<graphic xlink:href="sensors-12-10990f2.gif"/></fig>
<fig id="f3-sensors-12-10990" position="float">
<label>Figure 3.</label>
<caption>
<p>Toad.</p></caption>
<graphic xlink:href="sensors-12-10990f3.gif"/></fig>
<fig id="f4-sensors-12-10990" position="float">
<label>Figure 4.</label>
<caption>
<p>Pulsar.</p></caption>
<graphic xlink:href="sensors-12-10990f4.gif"/></fig>
<fig id="f5-sensors-12-10990" position="float">
<label>Figure 5.</label>
<caption>
<p>10 cell row.</p></caption>
<graphic xlink:href="sensors-12-10990f5.gif"/></fig>
<fig id="f6-sensors-12-10990" position="float">
<label>Figure 6.</label>
<caption>
<p>Oscillatory behavior of the instance 1 (Blinker).</p></caption>
<graphic xlink:href="sensors-12-10990f6.gif"/></fig>
<fig id="f7-sensors-12-10990" position="float">
<label>Figure 7.</label>
<caption>
<p>Instabilities are successfully removed for instance 1 (Blinker) using all algorithms.</p></caption>
<graphic xlink:href="sensors-12-10990f7.gif"/></fig>
<fig id="f8-sensors-12-10990" position="float">
<label>Figure 8.</label>
<caption>
<p>Behavior of the instance 2 (Non-oscillating).</p></caption>
<graphic xlink:href="sensors-12-10990f8.gif"/></fig>
<fig id="f9-sensors-12-10990" position="float">
<label>Figure 9.</label>
<caption>
<p>Behavior of the instance 2 (Non-oscillating) after locking with all algorithms.</p></caption>
<graphic xlink:href="sensors-12-10990f9.gif"/></fig>
<fig id="f10-sensors-12-10990" position="float">
<label>Figure 10.</label>
<caption>
<p>Oscillatory behavior of the instance 3 (Toad).</p></caption>
<graphic xlink:href="sensors-12-10990f10.gif"/></fig>
<fig id="f11-sensors-12-10990" position="float">
<label>Figure 11.</label>
<caption>
<p>Instabilities are successfully removed for the instance 3 (Toad) using all algorithms.</p></caption>
<graphic xlink:href="sensors-12-10990f11.gif"/></fig>
<fig id="f12-sensors-12-10990" position="float">
<label>Figure 12.</label>
<caption>
<p>Oscillatory behavior of the instance 4 (Pulsar).</p></caption>
<graphic xlink:href="sensors-12-10990f12.gif"/></fig>
<fig id="f13-sensors-12-10990" position="float">
<label>Figure 13.</label>
<caption>
<p>Instabilities are successfully removed for the instance 4 (Pulsar) using all algorithms.</p></caption>
<graphic xlink:href="sensors-12-10990f13.gif"/></fig>
<fig id="f14-sensors-12-10990" position="float">
<label>Figure 14.</label>
<caption>
<p>Oscillatory behavior of the instance 5 (10 cell row).</p></caption>
<graphic xlink:href="sensors-12-10990f14.gif"/></fig>
<fig id="f15-sensors-12-10990" position="float">
<label>Figure 15.</label>
<caption>
<p>Instabilities are successfully removed for the instance 5 (10 cell row) using all algorithms.</p></caption>
<graphic xlink:href="sensors-12-10990f15.gif"/></fig>
<table-wrap id="t1-sensors-12-10990" position="float">
<label>Table 1.</label>
<caption>
<p>Parameters used in PSO and BSO.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle"><bold>Parameter</bold></th>
<th align="left" valign="middle"><bold>Value</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">Particles</td>
<td align="left" valign="middle">45</td></tr>
<tr>
<td align="left" valign="middle"><italic>w</italic></td>
<td align="left" valign="middle">1</td></tr>
<tr>
<td align="left" valign="middle"><italic>c</italic><sub>1</sub></td>
<td align="left" valign="middle">0.3</td></tr>
<tr>
<td align="left" valign="middle"><italic>c</italic><sub>2</sub></td>
<td align="left" valign="middle">0.7</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-12-10990" position="float">
<label>Table 2.</label>
<caption>
<p>Parameters of <italic>μ</italic>-PSO.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle"><bold>Parameter</bold></th>
<th align="left" valign="middle"><bold>Value</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">Particles</td>
<td align="left" valign="middle">6</td></tr>
<tr>
<td align="left" valign="middle"><italic>w</italic></td>
<td align="left" valign="middle">1</td></tr>
<tr>
<td align="left" valign="middle"><italic>c</italic><sub>1</sub></td>
<td align="left" valign="middle">0.3</td></tr>
<tr>
<td align="left" valign="middle"><italic>c</italic><sub>2</sub></td>
<td align="left" valign="middle">0.7</td></tr>
<tr>
<td align="left" valign="middle">Replacement generation</td>
<td align="left" valign="middle">100</td></tr>
<tr>
<td align="left" valign="middle">Number of restart particles</td>
<td align="left" valign="middle">2</td></tr>
<tr>
<td align="left" valign="middle">Mutation Rate</td>
<td align="left" valign="middle">0.1</td></tr></tbody></table></table-wrap>
<table-wrap id="t3-sensors-12-10990" position="float">
<label>Table 3.</label>
<caption>
<p>Parameters of AIS.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle"><bold>Parameter</bold></th>
<th align="left" valign="middle"><bold>Value</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">Antibodies</td>
<td align="left" valign="middle">45</td></tr>
<tr>
<td align="left" valign="middle">Antibodies to select</td>
<td align="left" valign="middle">20</td></tr>
<tr>
<td align="left" valign="middle">New Antibodies</td>
<td align="left" valign="middle">20</td></tr>
<tr>
<td align="left" valign="middle">Factor Beta</td>
<td align="left" valign="middle">2</td></tr></tbody></table></table-wrap>
<table-wrap id="t4-sensors-12-10990" position="float">
<label>Table 4.</label>
<caption>
<p>Parameters of GA.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle"><bold>Parameter</bold></th>
<th align="left" valign="middle"><bold>Value</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">Chromosomes</td>
<td align="left" valign="middle">45</td></tr>
<tr>
<td align="left" valign="middle">Mutation percentage</td>
<td align="left" valign="middle">0.15</td></tr>
<tr>
<td align="left" valign="middle">Elitism</td>
<td align="left" valign="middle">0.2</td></tr>
<tr>
<td align="left" valign="middle">Clones percentage</td>
<td align="left" valign="middle">0.3</td></tr>
<tr>
<td align="left" valign="middle">Scouts percentage</td>
<td align="left" valign="middle">0.8</td></tr></tbody></table></table-wrap>
<table-wrap id="t5-sensors-12-10990" position="float">
<label>Table 5.</label>
<caption>
<p>Parameters used in MIMIC.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle"><bold>Parameter</bold></th>
<th align="left" valign="middle"><bold>Value</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">Individuals</td>
<td align="left" valign="middle">100</td></tr>
<tr>
<td align="left" valign="middle">Elitism</td>
<td align="left" valign="middle">0.5</td></tr></tbody></table></table-wrap>
<table-wrap id="t6-sensors-12-10990" position="float">
<label>Table 6.</label>
<caption>
<p>Instance.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle"><bold>Instance</bold></th>
<th align="center" valign="middle"><bold>Matrix</bold></th>
<th align="center" valign="middle"><bold># of Agents</bold></th>
<th align="left" valign="middle"><bold><italic>S</italic><sub>0</sub></bold></th>
<th align="left" valign="middle"><bold><italic>S</italic></bold><italic><sub>f</sub></italic></th>
<th align="left" valign="middle"><bold>ACO</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">1 (Blinker)</td>
<td align="center" valign="middle">3 × 3</td>
<td align="center" valign="middle">9</td>
<td align="left" valign="middle">1.748188027</td>
<td align="left" valign="middle">1.7481880270062005</td>
<td align="left" valign="middle">0.416164</td></tr>
<tr>
<td align="left" valign="middle">2 (Non-oscillating)</td>
<td align="center" valign="middle">7 × 7</td>
<td align="center" valign="middle">49</td>
<td align="left" valign="middle">12.284241189</td>
<td align="left" valign="middle">0.0</td>
<td align="left" valign="middle">0.196199</td></tr>
<tr>
<td align="left" valign="middle">3 (Toad)</td>
<td align="center" valign="middle">4 × 4</td>
<td align="center" valign="middle">16</td>
<td align="left" valign="middle">3.6261349786353887</td>
<td align="left" valign="middle">3.6261349786353887</td>
<td align="left" valign="middle">0.974857</td></tr>
<tr>
<td align="left" valign="middle">4 (Pulsar)</td>
<td align="center" valign="middle">17 × 17</td>
<td align="center" valign="middle">289</td>
<td align="left" valign="middle">54.30350121388617</td>
<td align="left" valign="middle">75.43697161100698</td>
<td align="left" valign="middle">2.916489</td></tr>
<tr>
<td align="left" valign="middle">5 (10 cell row)</td>
<td align="center" valign="middle">17 × 17</td>
<td align="center" valign="middle">289</td>
<td align="left" valign="middle">44.85304503100554</td>
<td align="left" valign="middle">50.04149156221928</td>
<td align="left" valign="middle">2.23957</td></tr></tbody></table></table-wrap>
<table-wrap id="t7-sensors-12-10990" position="float">
<label>Table 7.</label>
<caption>
<p>ACO Results (A).</p></caption>
<table frame="hsides" rules="none">
<thead>
<tr>
<th align="left" valign="middle"><bold>Instance</bold></th>
<th colspan="4" align="center" valign="middle"><bold>Average Cumulative Oscillation</bold></th></tr>
<tr>
<th colspan="5" align="center" valign="middle">
<hr/></th></tr>
<tr>
<th align="left" valign="middle"/>
<th align="left" valign="middle">PSO</th>
<th align="left" valign="middle">MIMIC</th>
<th align="left" valign="middle">BSO1</th>
<th align="left" valign="middle">BSO2</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">1 (Blinker)</td>
<td align="left" valign="middle">0.0173</td>
<td align="left" valign="middle">0.4161648288</td>
<td align="left" valign="middle">0.0173</td>
<td align="left" valign="middle">0.0173</td></tr>
<tr>
<td align="left" valign="middle">2 (Non-oscillating)</td>
<td align="left" valign="middle">0.0036684768</td>
<td align="left" valign="middle">10.0040328723</td>
<td align="left" valign="middle">0.0013180907</td>
<td align="left" valign="middle">6.96E–4</td></tr>
<tr>
<td align="left" valign="middle">3 (Toad)</td>
<td align="left" valign="middle">0.0027436818</td>
<td align="left" valign="middle">10.0005786421</td>
<td align="left" valign="middle">0.0031827703</td>
<td align="left" valign="middle">0.0027436818</td></tr>
<tr>
<td align="left" valign="middle">4 (Pulsar)</td>
<td align="left" valign="middle">0.0039470374</td>
<td align="left" valign="middle">10.000434825</td>
<td align="left" valign="middle">0</td>
<td align="left" valign="middle">0</td></tr>
<tr>
<td align="left" valign="middle">5 (10 cell row)</td>
<td align="left" valign="middle">0.0461757189</td>
<td align="left" valign="middle">10.040107898</td>
<td align="left" valign="middle">1.58E–7</td>
<td align="left" valign="middle">0</td></tr></tbody></table></table-wrap>
<table-wrap id="t8-sensors-12-10990" position="float">
<label>Table 8.</label>
<caption>
<p>ACO Results (B).</p></caption>
<table frame="hsides" rules="none">
<thead>
<tr>
<th align="left" valign="middle"><bold>Instance</bold></th>
<th align="left" valign="top"><bold>Average</bold></th>
<th align="left" valign="middle"><bold>Cumulative</bold></th>
<th align="left" valign="middle"><bold>Oscillation</bold></th></tr>
<tr>
<th colspan="4" align="center" valign="middle">
<hr/></th></tr>
<tr>
<th align="left" valign="middle"/>
<th align="left" valign="middle">AIS</th>
<th align="left" valign="middle">GA</th>
<th align="left" valign="middle"><italic>μ</italic>PSO</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">1 (Blinker)</td>
<td align="left" valign="middle">0.0173</td>
<td align="left" valign="middle">0.0173</td>
<td align="left" valign="middle">0.0173</td></tr>
<tr>
<td align="left" valign="middle">2 (Non-oscillating)</td>
<td align="left" valign="middle">0.00239</td>
<td align="left" valign="middle">4.77E–6</td>
<td align="left" valign="middle">4.77E–6</td></tr>
<tr>
<td align="left" valign="middle">3 (Toad)</td>
<td align="left" valign="middle">0.00253</td>
<td align="left" valign="middle">0.00253</td>
<td align="left" valign="middle">0.0025307973</td></tr>
<tr>
<td align="left" valign="middle">4 (Pulsar)</td>
<td align="left" valign="middle">6.12E–4</td>
<td align="left" valign="middle">5.24E–13</td>
<td align="left" valign="middle">4.3E–4</td></tr>
<tr>
<td align="left" valign="middle">5 (10 cell row)</td>
<td align="left" valign="middle">0.0472</td>
<td align="left" valign="middle">1.60E–10</td>
<td align="left" valign="middle">0.0256051082</td></tr></tbody></table></table-wrap>
<table-wrap id="t9-sensors-12-10990" position="float">
<label>Table 9.</label>
<caption>
<p>Locked Agents.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle"><bold>Instance</bold></th>
<th colspan="8" align="center" valign="middle"><bold># of Locked Agents</bold></th></tr>
<tr>
<th colspan="9" align="center" valign="middle">
<hr/></th></tr>
<tr>
<th align="left" valign="top"/>
<th align="center" valign="middle">Allow</th>
<th align="center" valign="middle">PSO</th>
<th align="center" valign="middle">BSO1</th>
<th align="center" valign="middle">BSO2</th>
<th align="center" valign="middle">AIS</th>
<th align="center" valign="middle">GA</th>
<th align="center" valign="middle"><italic>μ</italic>-PSO</th>
<th align="center" valign="middle">MIMIC</th></tr></thead>
<tbody>
<tr>
<td align="left" valign="middle">1 (Blinker)</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">0</td></tr>
<tr>
<td align="left" valign="middle">2 (Non-oscillating)</td>
<td align="center" valign="middle">9</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">9</td>
<td align="center" valign="middle">8</td>
<td align="center" valign="middle">4</td>
<td align="center" valign="middle">12</td>
<td align="center" valign="middle">8</td>
<td align="center" valign="middle">19</td></tr>
<tr>
<td align="left" valign="middle">3 (Toad)</td>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">9</td></tr>
<tr>
<td align="left" valign="middle">4 (Pulsar)</td>
<td align="center" valign="middle">57</td>
<td align="center" valign="middle">26</td>
<td align="center" valign="middle">43</td>
<td align="center" valign="middle">56</td>
<td align="center" valign="middle">31</td>
<td align="center" valign="middle">53</td>
<td align="center" valign="middle">28</td>
<td align="center" valign="middle">141</td></tr>
<tr>
<td align="left" valign="middle">5 (10 cell row)</td>
<td align="center" valign="middle">57</td>
<td align="center" valign="middle">31</td>
<td align="center" valign="middle">38</td>
<td align="center" valign="middle">44</td>
<td align="center" valign="middle">33</td>
<td align="center" valign="middle">57</td>
<td align="center" valign="middle">18</td>
<td align="center" valign="middle">139</td></tr></tbody></table></table-wrap>
<table-wrap id="t10-sensors-12-10990" position="float">
<label>Table 10.</label>
<caption>
<p>Comparison among algorithms based on Wilcoxon test.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle"><bold>Algorithm</bold></th>
<th colspan="4" align="center" valign="middle"><bold>Number of Algorithms</bold></th></tr>
<tr>
<th colspan="5" align="center" valign="middle">
<hr/></th></tr>
<tr>
<th align="center" valign="middle"/>
<th colspan="2" align="center" valign="middle">by ACO Value</th>
<th colspan="2" align="center" valign="middle">by # of locked Agents</th></tr>
<tr>
<th colspan="5" align="center" valign="middle">
<hr/></th></tr>
<tr>
<th align="center" valign="middle"/>
<th align="center" valign="middle">Overcome</th>
<th align="center" valign="middle">Not Overcome</th>
<th align="center" valign="middle">Overcome</th>
<th align="center" valign="middle">Not Overcome</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle">PSO</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">1</td></tr>
<tr>
<td align="center" valign="middle">BSO1</td>
<td align="center" valign="middle">2</td>
<td align="center" valign="middle">4</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td></tr>
<tr>
<td align="center" valign="middle">BSO2</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td>
<td align="center" valign="middle">3</td></tr>
<tr>
<td align="center" valign="middle"><italic>μ</italic>PSO</td>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">6</td>
<td align="center" valign="middle">0</td></tr>
<tr>
<td align="center" valign="middle">AIS</td>
<td align="center" valign="middle">4</td>
<td align="center" valign="middle">2</td>
<td align="center" valign="middle">4</td>
<td align="center" valign="middle">2</td></tr>
<tr>
<td align="center" valign="middle">GA</td>
<td align="center" valign="middle">6</td>
<td align="center" valign="middle">0</td>
<td align="center" valign="middle">1</td>
<td align="center" valign="middle">5</td></tr>
<tr>
<td align="center" valign="middle">MIMIC</td>
<td align="center" valign="middle">0</td>
<td align="center" valign="middle">6</td>
<td align="center" valign="middle">0</td>
<td align="center" valign="middle">6</td></tr></tbody></table></table-wrap></sec></back></article>
