<?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="nlm-ta">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/s100302332</article-id>
<article-id pub-id-type="publisher-id">sensors-10-02332</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>An Adaptive Fault-Tolerant Event Detection Scheme for Wireless Sensor Networks</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Yim</surname><given-names>Sung-Jib</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Choi</surname><given-names>Yoon-Hwa</given-names></name><xref ref-type="corresp" rid="c1-sensors-10-02332">★</xref></contrib>
<aff id="af1-sensors-10-02332">Department of Computer Engineering, Hongik University, 72-1 Sangsu-Dong, Mapo-Gu, Seoul, Korea; E-Mail: <email>yimsungjib@gmail.com</email></aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-10-02332">
<label>★</label>Author to whom correspondence should be addressed; E-Mail: <email>yhchoi@cs.hongik.ac.kr</email>; Tel.: +82-2-320-1688.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2010</year></pub-date>
<pub-date pub-type="epub">
<day>19</day>
<month>3</month>
<year>2010</year></pub-date>
<volume>10</volume>
<issue>3</issue>
<fpage>2332</fpage>
<lpage>2347</lpage>
<history>
<date date-type="received">
<day>20</day>
<month>1</month>
<year>2010</year></date>
<date date-type="rev-recd">
<day>25</day>
<month>2</month>
<year>2010</year></date>
<date date-type="accepted">
<day>10</day>
<month>3</month>
<year>2010</year></date></history>
<permissions>
<copyright-statement>© 2010 by the authors; licensee Molecular Diversity Preservation International, Basel, Switzerland.</copyright-statement>
<copyright-year>2010</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 an adaptive fault-tolerant event detection scheme for wireless sensor networks. Each sensor node detects an event locally in a distributed manner by using the sensor readings of its neighboring nodes. Confidence levels of sensor nodes are used to dynamically adjust the threshold for decision making, resulting in consistent performance even with increasing number of faulty nodes. In addition, the scheme employs a moving average filter to tolerate most transient faults in sensor readings, reducing the effective fault probability. Only three bits of data are exchanged to reduce the communication overhead in detecting events. Simulation results show that event detection accuracy and false alarm rate are kept very high and low, respectively, even in the case where 50% of the sensor nodes are faulty.</p></abstract>
<kwd-group>
<kwd>sensor networks</kwd>
<kwd>fault tolerance</kwd>
<kwd>event detection</kwd>
<kwd>adaptive</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Wireless sensor networks often consist of a large number of small sensor nodes that cooperate to monitor real-world events and enable applications such as target tracking, military tactical surveillance, and emergency health care [<xref ref-type="bibr" rid="b1-sensors-10-02332">1</xref>]. The detection and reporting of the occurrence of an interesting event is one of the important tasks of sensor networks. Due to limitations in available resources, such as power, memory and computing capability, sensor nodes deployed in a harsh environment, operating in an unattended mode, are prone to failure. Faulty nodes might issue an alarm even though they are not in an event region. They degrade the network reliability, unless some provisions are made to tolerate them.</p>
<p>Several distributed schemes for detecting events in the presence of faulty sensor nodes have been proposed in [<xref ref-type="bibr" rid="b2-sensors-10-02332">2</xref>–<xref ref-type="bibr" rid="b5-sensors-10-02332">5</xref>]. Krishnamachari and Iyengar [<xref ref-type="bibr" rid="b2-sensors-10-02332">2</xref>] have mathematically proven that the majority voting is an optimal decision for the given model to detect events and correct faults. A single binary variable is used to represent a local event detection, resulting in low communication cost. Their simulation results show that 85∼95% of faults can be reduced when fault rate is about 10%. Luo <italic>et al.</italic> [<xref ref-type="bibr" rid="b3-sensors-10-02332">3</xref>] proposed a fault-tolerant energy-efficient event detection paradigm for wireless sensor networks. For a given detection error bound, minimum neighbors are selected to minimize the communication volume. Both Bayesian and Neyman-Pearson detection methods are presented. A localized event boundary detection scheme, exploiting the notion that readings from the event region and the normal region have different means but the same standard deviation due to noise, has been proposed in [<xref ref-type="bibr" rid="b4-sensors-10-02332">4</xref>]. Actual sensor readings, encoded in 32 bits each, are transmitted and used in making a decision. The corresponding estimation may be more precise at the cost of increased communication overhead. Jin <italic>et al.</italic> [<xref ref-type="bibr" rid="b5-sensors-10-02332">5</xref>] have employed a variable length event coding mechanism in event and event boundary detection to balance the communication cost and the estimation quality. Sensor nodes near the event boundary send the original sensor readings of 32 bits (with a 1-bit flag), whereas all others nodes use only two bits of message, instead.</p>
<p>In [<xref ref-type="bibr" rid="b6-sensors-10-02332">6</xref>], a fault-tolerant event boundary detection algorithm using a clustering technique based on maximum spanning trees is presented. Difference in sensor readings between any two sensor nodes is represented as the distance between them. Using the distances sensor nodes are classified into two clusters. With some additional computation on the clusters, event boundary nodes are determined.</p>
<p>Most of the proposed event detection schemes based on a statistical model of noise may work effectively for a relatively low fault probability. As the fault probability increases, however, their performance degrades considerably. Moreover, the actual performance might differ significantly from the estimated one if faults behave differently from the model.</p>
<p>In this paper, we present a distributed adaptive fault-tolerant event detection scheme for wireless sensor networks. It achieves high performance for a wide range of fault probabilities by employing a filter for tolerating transient faults and by dynamically adjusting the threshold for event detection depending on the fault status of sensor nodes. Confidence levels are used to manage the status of sensor nodes. Sensor nodes with a permanent fault (or behaving incorrectly for an extended period of time) are isolated from the network and reinstated later if some required conditions on confidence levels are met. Due to the adaptability of the proposed scheme both high event detection accuracy and low false alarm rate can be maintained even with increasing number of faults.</p>
<p>The remainder of the paper is organized as follows. In Section 2, the system model and fault model are briefly described. Section 3 presents our adaptive event detection scheme employing a dynamic threshold selection. Filtering transient faults is also proposed to reduce the effective fault probability of sensor nodes. Simulation results are shown in Section 4. Conclusions are made in Section 5.</p></sec>
<sec>
<label>2.</label>
<title>System Model and Fault Model</title>
<p>As the system model we assume that sensor nodes are randomly deployed in the target area and all sensor nodes have the same transmission range <italic>r</italic>. Each sensor node receives the sensor readings of neighboring nodes and makes a decision on an event locally in a distributed manner. We define the average node degree <italic>d</italic> to represent the connectivity of the network. For convenience an event region is a circle with radius <italic>l</italic>. The proposed adaptive scheme, however, is expected to perform well even with different event region shapes. Each sensor node is assumed to know the range of normal sensor readings, and thus can make a decision on its own whether the sensed data lies in the range of normal readings or not and report a 1(abnormal) or 0(normal) accordingly. Apparently a faulty sensor or an event may produce abnormal data, and thus they are indistinguishable based on the readings of a single sensor node. All the sensor readings are assumed to be binary, without loss of generality. In the case of arbitrary values, comparison diagnosis presented in [<xref ref-type="bibr" rid="b7-sensors-10-02332">7</xref>, <xref ref-type="bibr" rid="b8-sensors-10-02332">8</xref>] may be used instead.</p>
<p>Three different types of faults in sensor readings, depending on their temporal behavior, are considered in this paper: permanent, transient, and intermittent [<xref ref-type="bibr" rid="b9-sensors-10-02332">9</xref>–<xref ref-type="bibr" rid="b11-sensors-10-02332">11</xref>]. In the case of a permanent fault, we assume that it causes an incorrect reading, either 1 or 0, consistently, with the same probability of 0.5, irrespective of the region it is in. Transient faults are assumed to be independent both spatially and temporally. A special type of intermittent fault which generates erroneous data periodically is also taken into account to estimate the adaptability of the proposed scheme. Although we focus on faulty sensors in this paper, the proposed scheme can possibly be extended to cover faulty communications with some degradation in performance by modeling faults in communication as sensor faults in the associated sensor nodes.</p>
<p>Sensor networks are assumed to conduct fault detection periodically to manage fault status of sensor nodes. The period, however, is expected to be long enough to reduce the overhead incurred. Nevertheless the event detection performance can be maintained extremely high as long as most of the faulty sensors nodes are identified and isolated.</p></sec>
<sec>
<label>3.</label>
<title>Adaptive Event Detection Scheme</title>
<p>In this section, we first describe the confidence levels of sensor nodes to be used in the proposed event detection scheme. We then present our adaptive event detection scheme using the confidence levels defined. Some erroneous readings due to transient faults will be corrected by employing a moving average filter to further enhance event detection performance. For convenience we list the notation to be used in this paper.</p>
<table-wrap position="anchor">
<caption>
<p>Notation</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><italic>v<sub>i</sub></italic></td>
<td align="left" valign="top">sensor node</td></tr>
<tr>
<td align="left" valign="top">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></td>
<td align="left" valign="top">sensor reading at node <italic>v<sub>i</sub></italic> at time <italic>k</italic></td></tr>
<tr>
<td align="left" valign="top">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></td>
<td align="left" valign="top">filtered output of the input 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (to tolerate most transient faults)</td></tr>
<tr>
<td align="left" valign="top"><italic>R<sub>i</sub></italic></td>
<td align="left" valign="top">threshold test result at <italic>v<sub>i</sub></italic> based on <italic>x<sub>i</sub></italic> and <italic>x′<sub>j</sub>s</italic> (<italic>i.e.</italic>, neighbors’)</td></tr>
<tr>
<td align="left" valign="top"><italic>H<sub>i</sub></italic></td>
<td align="left" valign="top">threshold test result at <italic>v<sub>i</sub></italic> based on <italic>y<sub>i</sub></italic> and <italic>y′<sub>j</sub>s</italic></td></tr>
<tr>
<td align="left" valign="top"><italic>D<sub>i</sub></italic></td>
<td align="left" valign="top">final decision on an event at <italic>v<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><italic>F<sub>i</sub></italic></td>
<td align="left" valign="top">fault status of <italic>v<sub>i</sub></italic> (good, faulty)</td></tr>
<tr>
<td align="left" valign="top"><italic>F<sub>ij</sub></italic></td>
<td align="left" valign="top">fault status of <italic>v<sub>j</sub></italic> from the viewpoint of <italic>v<sub>i</sub></italic> (good, faulty)</td></tr>
<tr>
<td align="left" valign="top"><italic>d<sub>i</sub></italic></td>
<td align="left" valign="top">node degree of <italic>v<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></td>
<td align="left" valign="top">effective node degree of <italic>v<sub>i</sub></italic> at time <italic>k</italic> (<italic>i.e.</italic>, number of neighboring nodes with <italic>F<sub>ij</sub></italic> = 0</td></tr>
<tr>
<td align="left" valign="top"><italic>l</italic></td>
<td align="left" valign="top">radius of an event region</td></tr>
<tr>
<td align="left" valign="top"><italic>r</italic></td>
<td align="left" valign="top">transmission range</td></tr>
<tr>
<td align="left" valign="top"><italic>d</italic></td>
<td align="left" valign="top">average node degree of a sensor network (<italic>i.e.</italic>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mrow>
<mml:mi>N</mml:mi></mml:mfrac></mml:mrow></mml:math></inline-formula>)</td></tr>
<tr>
<td align="left" valign="top"><italic>d<sup>k</sup></italic></td>
<td align="left" valign="top">average effective node degree of a sensor network at time <italic>k</italic> (<italic>i.e.</italic>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>k</mml:mi></mml:msup>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:mrow>
<mml:mi>N</mml:mi></mml:mfrac></mml:mrow></mml:math></inline-formula>)</td></tr>
<tr>
<td align="left" valign="top"><italic>M</italic></td>
<td align="left" valign="top">window size for tolerating transient faults</td></tr>
<tr>
<td align="left" valign="top"><italic>δ</italic></td>
<td align="left" valign="top">threshold for filtering transient faults</td></tr>
<tr>
<td align="left" valign="top"><italic>c<sub>i</sub></italic></td>
<td align="left" valign="top">self confidence level of <italic>v<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><italic>w<sub>ij</sub></italic></td>
<td align="left" valign="top">confidence level of <italic>v<sub>j</sub></italic> from the viewpoint of <italic>v<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><italic>p<sub>p</sub></italic></td>
<td align="left" valign="top">permanent fault probability</td></tr>
<tr>
<td align="left" valign="top"><italic>p<sub>t</sub></italic></td>
<td align="left" valign="top">transient fault probability</td></tr>
<tr>
<td align="left" valign="top"><italic>θ</italic></td>
<td align="left" valign="top">threshold for event detection</td></tr></tbody></table></table-wrap>
<sec>
<label>3.1.</label>
<title>Confidence Levels</title>
<p>In order to describe confidence levels of a sensor node and its neighbors a sensor network is modeled here as a weighted directed graph, <italic>G</italic>(<italic>V;E</italic>), where <italic>V</italic> represents the set of sensor nodes and <italic>E</italic> represents the set of edges connecting sensor nodes. Two nodes <italic>v<sub>i</sub></italic> and <italic>v<sub>j</sub></italic> are said to be connected if the distance between them dist(<italic>v<sub>i</sub>, v<sub>j</sub></italic>) is less than or equal to <italic>r</italic> (transmission range). Each node <italic>v<sub>i</sub></italic> is assigned a self-confidence level <italic>c<sub>i</sub></italic>. Each edge <italic>e<sub>ij</sub></italic> is also assigned a weight <italic>w<sub>ij</sub></italic>, indicating the confidence level of <italic>v<sub>j</sub></italic> from the viewpoint of <italic>v<sub>i</sub></italic>. The confidence levels will be used to isolate potentially faulty sensor nodes from the rest of the network. They are also used to reinstate an isolated node if the confidence levels associated with it satisfy the required conditions to be addressed shortly. We use <italic>c<sub>min</sub></italic> and <italic>c<sub>max</sub></italic> to denote the range of the confidence level <italic>c<sub>i</sub></italic>. Also <italic>w<sub>min</sub></italic> and <italic>w<sub>max</sub></italic> will be used to indicate the range of <italic>w<sub>ij</sub></italic>.</p>
<p>An illustration is given in <xref ref-type="fig" rid="f1-sensors-10-02332">Figure 1</xref>, where six nodes are neighbors of the node <italic>v</italic><sub>3</sub> (<italic>i.e.</italic>, six nodes are located within the communication range of <italic>v</italic><sub>3</sub>) and confidence levels <italic>c<sub>i</sub></italic> and <italic>w<sub>ij</sub></italic> are assumed to be in the range of 0 to 1. In the figure, from the viewpoint of node <italic>v</italic><sub>3</sub>, <italic>v</italic><sub>2</sub> and <italic>v</italic><sub>4</sub> are nodes with the highest confidence while <italic>v</italic><sub>5</sub> is a node with the lowest confidence. Among the six neighboring nodes of <italic>v</italic><sub>3</sub>, <italic>v</italic><sub>5</sub> is the most likely to be faulty, and will be ignored from <italic>v</italic><sub>3</sub> if <italic>w<sub>min</sub></italic> = 0.</p>
<p>The confidence levels will be updated each time a fault detection or event detection is performed. All the <italic>c<sub>i</sub></italic> and <italic>w<sub>ij</sub></italic> are initialized to 1 (<italic>i.e.</italic>, <italic>c<sub>max</sub></italic> and <italic>w<sub>max</sub></italic>). They are increased or decreased by <italic>α</italic> (0 <italic>&lt; α &lt;</italic> 1) when the required conditions to be explained later are met.</p></sec>
<sec>
<label>3.2.</label>
<title>Filtering Transient Faults</title>
<p>Event detection performance will degrade as the fault probability <italic>p</italic> increases. Hence reducing the effective <italic>p</italic> is desirable to make an event detection scheme robust to faults occurring in sensor networks. In order to do that, we use the confidence levels defined above to isolate faulty nodes and employ a modified moving average filter, to be discussed here, to correct some erroneous sensor readings due to transient faults.</p>
<p>Let 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> represent sensor reading at node <italic>v<sub>i</sub></italic> at time <italic>k</italic>. Then the filter we employ takes an average of the last <italic>M</italic> readings, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, and sets the output 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> to 1 if it passes a given threshold <italic>δ</italic>. Hence the output 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<italic>i.e.</italic>, filtered output at node <italic>v<sub>i</sub></italic>) can be expressed as follows:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi></mml:msubsup>
<mml:mo>≥</mml:mo>
<mml:mi>M</mml:mi>
<mml:mi>δ</mml:mi>
<mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>otherwise</mml:mtext>
<mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>Parameters, <italic>M</italic> (<italic>i.e.</italic>, window size) and <italic>δ</italic> (threshold) need to be properly chosen, depending on applications, for the best performance. They can be dynamically adjusted to enhance adaptability. As long as most of erroneous readings due to transient faults can be corrected, however, a high event detection performance can be obtained as will be shown in the simulation results in Section 4. Due to the fact that an event may cause abnormal sensor readings for an extended period of time, most transient faults can be filtered unless they occur repeatedly within the window. Although the types of faults may differ depending on applications, most random transient faults can be corrected even with a small window size. The resulting reduction in effective fault probability can affect positively on event detection performance.</p>
<p><xref ref-type="table" rid="t1-sensors-10-02332">Table 1</xref> shows how erroneous readings due to some transient faults are corrected when <italic>M</italic> = 4 and <italic>δ</italic> = 0.75. For <italic>i</italic> = 1, the filter at node <italic>v</italic><sub>1</sub> will generate 0's even if 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mn>4</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mn>6</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula> are 1. In the case of <italic>i</italic> = 5, where an event occurs at time 1 and <italic>v</italic><sub>5</sub> is assumed to be in the event region, the output becomes 1 with a delay of two cycles. That is, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mn>5</mml:mn>
<mml:mn>3</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula> becomes 1.</p>
<p>Both <italic>x′<sub>j</sub>s</italic> and <italic>y′<sub>j</sub>s</italic> will be used in event detection as shown in <xref ref-type="fig" rid="f2-sensors-10-02332">Figure 2</xref>, where two identical blocks are employed to perform threshold tests (to be addressed shortly) with <italic>x′<sub>j</sub>s</italic> and <italic>y′<sub>j</sub>s</italic>, respectively. The resulting binary decisions, <italic>R<sub>i</sub></italic> and <italic>H<sub>i</sub></italic>, will be given to the subsequent decision block to make a final decision <italic>D<sub>i</sub></italic> on an event.</p>
<p>In the majority voting in [<xref ref-type="bibr" rid="b2-sensors-10-02332">2</xref>], only the upper left threshold test block is employed like most other schemes, although the block could be functionally different. In our proposed event detection scheme both <italic>R<sub>i</sub></italic> and <italic>H<sub>i</sub></italic> are used. The final decision <italic>D<sub>i</sub></italic> on an event will be made based on <italic>H<sub>i</sub></italic>, while <italic>R<sub>i</sub></italic> is used as a warning of an event.</p></sec>
<sec>
<label>3.3.</label>
<title>Dynamic Threshold Selection</title>
<p>In this subsection, we present our adaptive event detection scheme, focusing on the threshold test block in <xref ref-type="fig" rid="f2-sensors-10-02332">Figure 2</xref>, where the confidence levels introduced in the previous subsection will be used to dynamically adjust the threshold for event detection. The confidence levels, updated each time event detection/fault detection is performed, are utilized to isolate potentially faulty sensor nodes and reinstate them if some given conditions are met. The resulting changes are to be reflected in the number of neighboring nodes (<italic>i.e.</italic>, the effective node degree 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> at time <italic>k</italic>) of each node <italic>v<sub>i</sub></italic>, and it will in turn modify the threshold <italic>θ</italic> for the next event detection cycle. In order to realize this adaptivity, each sensor node <italic>v<sub>i</sub></italic> holds its fault status <italic>F<sub>i</sub></italic>, its self-confidence level <italic>c<sub>i</sub></italic>, the confidence levels of its neighboring nodes <italic>w<sub>ij</sub></italic>, and the fault status of node <italic>v<sub>j</sub></italic> from the viewpoint of <italic>v<sub>i</sub></italic>, <italic>F<sub>ij</sub></italic>.</p>
<p>The proposed event detection scheme, where the threshold <italic>θ</italic> is dynamically adjusted depending on the effective node degree, can be depicted as follows. Majority voting is used in the threshold test. <italic>F<sub>i</sub></italic> and <italic>F<sub>ij</sub></italic> are initialized to 0 (good).</p>
<table-wrap position="anchor">
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">Adaptive Event Detection Scheme
<list list-type="order">
<list-item>
<p>Obtain sensor reading <italic>x<sub>i</sub></italic> and filter it to get <italic>y<sub>i</sub></italic></p></list-item>
<list-item>
<p>Obtain sensor readings <italic>x<sub>j</sub></italic>, filtered outputs <italic>y<sub>j</sub></italic>, and <italic>F<sub>j</sub></italic> from neighbors</p></list-item>
<list-item>
<p>Set the threshold θ to <italic>d<sub>i</sub></italic>/2</p></list-item>
<list-item>
<p>Determine <italic>b<sub>i</sub></italic>, the number of neighbors with <italic>x<sub>j</sub></italic> = <italic>x<sub>i</sub></italic></p>
<p>Determine <italic>q<sub>i</sub></italic>, the number of neighbors with <italic>y<sub>j</sub></italic> = <italic>y<sub>i</sub></italic></p></list-item>
<list-item>
<p>If <italic>q<sub>i</sub></italic> ≥ <italic>θ</italic>, then <italic>H<sub>i</sub></italic> ← <italic>y<sub>i</sub></italic>, else <italic>H<sub>i</sub></italic> ← ¬<italic>y<sub>i</sub></italic></p>
<p>If <italic>b<sub>i</sub></italic> ≥ θ, then <italic>R<sub>i</sub></italic> ← <italic>x<sub>i</sub></italic>, else <italic>R<sub>i</sub></italic> ← ¬<italic>x<sub>i</sub></italic></p></list-item>
<list-item>
<p>Report an event (<italic>i.e.</italic>, <italic>D<sub>i</sub></italic> = 1) if <italic>H<sub>i</sub></italic>=1</p>
<p>Report a warning if <italic>R<sub>i</sub></italic> = 1</p></list-item>
<list-item>
<p>Update the confidence levels <italic>c<sub>i</sub></italic> and <italic>w<sub>ij</sub></italic></p></list-item></list></td></tr></tbody></table></table-wrap>
<p>In steps 1 and 2, each sensor node receives its own and neighbors’ sensor readings (including filtered ones). Steps 3 to 5 are functions to be performed in the two threshold test blocks in <xref ref-type="fig" rid="f2-sensors-10-02332">Figure 2</xref>. In step 3, the threshold value for majority voting to be used in step 5 is determined. Step 5 will set <italic>R<sub>i</sub></italic> (<italic>H<sub>i</sub></italic>) to either 0 or 1 depending on the number of matching neighbors obtained in step 4. <italic>R<sub>i</sub></italic> and <italic>H<sub>i</sub></italic> at node <italic>v<sub>i</sub></italic> can be set against its own readings if the node fails to pass the threshold. In step 6, the decision on an event will be made. <italic>R<sub>i</sub></italic> = 1 will be taken as a warning since it might occur due to transient faults. If it is an indication of an event, the decision on an event will be made at the time <italic>H<sub>i</sub></italic> becomes 1. The warning must be given to its neighboring nodes to shorten the cycle time momentarily so that an event can be reported quickly. Confidence levels are updated in step 7. The confidence level of <italic>v<sub>j</sub></italic> from the viewpoint of <italic>v<sub>i</sub></italic>, <italic>w<sub>ij</sub></italic>, is updated according to <xref ref-type="table" rid="t2-sensors-10-02332">Table 2</xref>.</p>
<p>As shown in <xref ref-type="table" rid="t2-sensors-10-02332">Table 2</xref>, <italic>w<sub>ij</sub></italic> is increased by <italic>α</italic> only when <italic>F<sub>j</sub></italic> = 0 (good) and <italic>D<sub>i</sub></italic> = <italic>y<sub>j</sub></italic>. In other words, confidence level of <italic>v<sub>j</sub></italic> from the viewpoint of <italic>v<sub>i</sub></italic> becomes higher when both <italic>v<sub>i</sub></italic> and <italic>v<sub>j</sub></italic> have similar sensor readings and <italic>v<sub>j</sub></italic> is currently in the good state. The second and fourth rows decrease <italic>w<sub>ij</sub></italic> by <italic>α</italic> since <italic>F<sub>j</sub></italic> = 1 (faulty).</p>
<p>The third row can be explained using the following three representative cases among others. It lowers the confidence level of its neighboring node <italic>v<sub>j</sub></italic> only when <italic>D<sub>i</sub></italic> is equal to 0.</p>
<list list-type="simple">
<list-item>
<p>Case 1: Suppose that two good nodes <italic>v<sub>i</sub></italic> and <italic>v<sub>j</sub></italic> are neighboring each other and each of them is surrounded by sufficient number of good nodes to pass the threshold test. The first case occurs when <italic>v<sub>j</sub></italic> becomes faulty and sends a 1 as shown in <xref ref-type="fig" rid="f3-sensors-10-02332">Figure 3</xref>. In this case, <italic>v<sub>i</sub></italic> will have <italic>D<sub>i</sub></italic> = 0, <italic>y<sub>j</sub></italic> = 1, and <italic>F<sub>j</sub></italic> = 0 (until <italic>v<sub>j</sub></italic> sets <italic>F<sub>j</sub></italic> to 1). Hence the conditions are met. The desired action at node <italic>v<sub>i</sub></italic>, as far as confidence level is concerned, is to lower the confidence level of <italic>v<sub>j</sub></italic> (<italic>i.e.</italic>, <italic>w<sub>ij</sub></italic>).</p></list-item>
<list-item>
<p>Case 2: The conditions can also be met when two good nodes, <italic>v<sub>i</sub></italic> and <italic>v<sub>j</sub></italic>, neighboring each other are located in such a way that only one of them is in the event region, as illustrated in <xref ref-type="fig" rid="f4-sensors-10-02332">Figure 4</xref>. In the figure, <italic>v<sub>i</sub></italic> is in the event region and receives a 1 from <italic>v</italic><sub>1</sub> through <italic>v</italic><sub>4</sub> and will eventually report an event (<italic>i.e.</italic>, <italic>D<sub>i</sub></italic> = 1). Meanwhile, <italic>v<sub>j</sub></italic> also makes the right decision of no-event (<italic>i.e.</italic>, <italic>D<sub>j</sub></italic> = 0). When <italic>y<sub>i</sub></italic> = 1 and <italic>y<sub>j</sub></italic> = 0, as expected, <italic>v<sub>i</sub></italic> will have <italic>D<sub>i</sub></italic> = 1, <italic>y<sub>j</sub></italic> = 0, and <italic>F<sub>j</sub></italic> = 0, satisfying the conditions. The conditions are also met for <italic>v<sub>j</sub></italic> since <italic>D<sub>j</sub></italic> = 0, <italic>y<sub>i</sub></italic> = 1, and <italic>F<sub>i</sub></italic> = 0. The correct action in case 2, as far as confidence level is concerned, is as follows: (a) at node <italic>v<sub>i</sub></italic>, <italic>w<sub>ij</sub></italic> needs to be increased, (b) at node <italic>v<sub>j</sub></italic>, <italic>w<sub>ji</sub></italic> also needs to be increased.</p></list-item>
<list-item>
<p>Case 3: It occurs when faulty nodes in close proximity, claiming to be good, are in an event region as shown in <xref ref-type="fig" rid="f5-sensors-10-02332">Figure 5</xref> such that their readings are 0 as opposed to 1 (abnormal). Suppose that two nodes in the event region, <italic>v<sub>i</sub></italic> and <italic>v<sub>j</sub></italic>, are neighboring each other and <italic>v<sub>j</sub></italic> is one of the faulty nodes. Apparently <italic>v<sub>j</sub></italic> may have <italic>D<sub>j</sub></italic> = 0 since <italic>v</italic><sub>6</sub> and <italic>v</italic><sub>7</sub> are likely to report a 0 since they are outside the event region. Both <italic>v<sub>i</sub></italic> and <italic>v<sub>j</sub></italic> meet the conditions. The proper actions in this case are (a) at node <italic>v<sub>i</sub></italic>, where <italic>D<sub>i</sub></italic> = 1, <italic>y<sub>j</sub></italic> = 0, and <italic>F<sub>j</sub></italic> = 0, <italic>w<sub>ij</sub></italic> has to be lowered, (b) at node <italic>v<sub>j</sub></italic>, where <italic>D<sub>j</sub></italic> = 0, <italic>y<sub>i</sub></italic> = 1, and <italic>F<sub>i</sub></italic> = 0, <italic>w<sub>ji</sub></italic> needs to be increased to eventually change <italic>F<sub>j</sub></italic> to 1.</p></list-item></list>
<p>For node <italic>v<sub>i</sub></italic> the above cases can be divided into two groups, depending on the value of <italic>D<sub>i</sub></italic>. The first group (<italic>D<sub>i</sub></italic> = 0) includes case 1, case 2(b), and case 3(b). Although the three cases in the first group cannot be distinguished based on the given information, the desired actions may differ. Only case 1 wants to lower the confidence level. The second group (<italic>D<sub>i</sub></italic> = 1) includes case 2(a) and case 3(a), requesting conflicting actions. The third row in the table allows only case 1 to update the confidence level, ignoring all other cases. The reasons for taking this action are as follows. Confidence levels are maintained to isolated nodes with permanent faults or nodes behaving incorrectly for some extended period of time. Hence it is primarily intended to handle case 1. All other cases are related to events, which in general consume a relatively small portion of the entire monitoring time. In the case of an event, due to the conflicting requests, correctly updating confidence levels needs some additional information on the exact boundary of the event region, requiring more sophisticated computations. Hence momentarily stopping the updates in the case of an event may be appropriate since the network continues its monitoring function with most of the faulty nodes isolated.</p>
<p>Based on <xref ref-type="table" rid="t2-sensors-10-02332">Table 2</xref> the confidence level <italic>w<sub>ij</sub></italic> is updated as follows.
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>max</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>if</mml:mtext>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>≠</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>and</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>or</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>min</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>if</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>and</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>otherwise</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>It is increased or decreased by <italic>α</italic> each time the conditions are met. The value of <italic>α</italic> needs to be chosen depending on the types of faults and applications. If <italic>α</italic> is relatively small, a node with transient faults is highly unlikely to be removed from the neighbor list. As <italic>α</italic> increases, however, it can be removed with an increased probability. Even if it is isolated, the node with only transient faults will be reinstated in our adaptive scheme.</p>
<p>A potentially faulty neighboring node <italic>v<sub>j</sub></italic> of node <italic>v<sub>i</sub></italic> will be removed from the effective neighbor list of <italic>v<sub>i</sub></italic> as follows. If <italic>F<sub>ij</sub></italic> = 0 (good) and <italic>w<sub>ij</sub></italic> = <italic>w<sub>min</sub></italic>, <italic>F<sub>ij</sub></italic> is set to 1 (faulty) and <italic>v<sub>j</sub></italic> is removed from <italic>v<sub>i</sub></italic>’s effective neighbor list. On the other hand, if <italic>F<sub>ij</sub></italic> = 1 (faulty) and <italic>w<sub>ij</sub></italic> = <italic>w<sub>max</sub></italic>, <italic>F<sub>ij</sub></italic> will be set to 0 (good) and <italic>v<sub>j</sub></italic> will rejoin the <italic>v<sub>i</sub></italic>’s effective neighbor list. Once a node is removed from the list (<italic>i.e.</italic>, <italic>w<sub>ij</sub></italic> = <italic>w<sub>min</sub></italic>), it can rejoin the list only when <italic>w<sub>ij</sub></italic> is increased and reaches <italic>w<sub>max</sub></italic>. Similarly, once a removed node rejoins the effective neighbor list, it will remain there unless <italic>w<sub>ij</sub></italic> reaches <italic>w<sub>min</sub></italic> again.</p>
<p>Similarly the self-confidence level of <italic>v<sub>i</sub></italic>, <italic>c<sub>i</sub></italic>, is also updated in step 7. It is lowered if the decision made at <italic>v<sub>i</sub></italic>, <italic>D<sub>i</sub></italic>, is different from its own sensor reading filtered, <italic>y<sub>i</sub></italic>, except for an event.</p>
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>max</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>if</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>≠</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>min</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>otherwise</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>
<p>Fault status <italic>F<sub>i</sub></italic> changes depending on the self confidence level <italic>c<sub>i</sub></italic>. <italic>F<sub>i</sub></italic> will be set to 1 (faulty) when <italic>c<sub>i</sub></italic> becomes <italic>c<sub>min</sub></italic>. Once it is set to 1, it will stay there until <italic>c<sub>i</sub></italic> reaches <italic>c<sub>max</sub></italic> again.</p>
<p>In the case where a good sensor node has more faulty neighbors, the node might be determined to be faulty, as illustrated in <xref ref-type="fig" rid="f6-sensors-10-02332">Figure 6</xref>, where <italic>c<sub>i</sub></italic> for <italic>v<sub>i</sub></italic> will be lowered due to the inequality <italic>D<sub>i</sub></italic> ≠ <italic>y<sub>i</sub></italic>. It, however, will highly likely be determined to be a good node with time. The node, <italic>v</italic><sub>3</sub>, a neighbor of <italic>v<sub>i</sub></italic>, will determine itself to be faulty if it cannot pass the threshold such that its confidence level <italic>c</italic><sub>3</sub> reaches 0. In the figure, <italic>v</italic><sub>3</sub> has more good neighbors than faulty ones. Hence <italic>D</italic><sub>3</sub> is highly unlikely to be <italic>y</italic><sub>3</sub>. Once <italic>F</italic><sub>3</sub> is set to 1, <italic>v<sub>i</sub></italic> will remove <italic>v</italic><sub>3</sub> from its neighbor list. As a result, its effective node degree 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> will be lowered. If this also happens at <italic>v</italic><sub>4</sub>, for example, the node is also removed from the list, and the node degree of <italic>v<sub>i</sub></italic> is further lowered. Finally, <italic>v<sub>i</sub></italic> passes the threshold, changes its fault status to 0 (good) some cycles later, and it can then be treated as a good node. If a larger number of faulty nodes are in close proximity, this recovery might not happen. The case, however, is extremely unlikely since our adaptive scheme removes faulty nodes as soon as identified. Unless all the nodes become faulty almost simultaneously, such a situation is unlikely to occur.</p></sec></sec>
<sec sec-type="results">
<label>4.</label>
<title>Simulation Results</title>
<p>Computer simulation is conducted to evaluate the performance of the proposed event detection scheme. Our simulated sensor network consists of 1,024 sensor nodes, randomly deployed in a 32 × 32 square region. Initially each node has about 12 neighboring nodes on average (<italic>i.e.</italic>, <italic>d</italic> ≈ 12) in the simulation. Event region is assumed to be a circle with radius <italic>l</italic> = 2<italic>r</italic>, where <italic>r</italic> is the transmission range of each sensor node. Nodes with a permanent fault are assumed to consistently report an unusual reading (similar to stuck-at-1) or a normal reading (similar to stuck-at-0) with the same probability of 0.5, irrespective of the regions they are in. Both permanent and transient faults are considered and their probabilities are denoted by <italic>p<sub>p</sub></italic> and <italic>p<sub>t</sub></italic>, respectively. Hence the overall fault probability <italic>p</italic> is equal to <italic>p<sub>p</sub></italic> + <italic>p<sub>t</sub></italic>. In filtering transient faults, <italic>M</italic> (window size) and <italic>δ</italic> (threshold) are set to 4 and 0.75, respectively. In the simulation, three different values of <italic>α</italic>, 0.1, 0.2 and 0.3, are chosen for comparison purposes.</p>
<p>Three metrics, DA(event detection accuracy), FAR (false alarm rate) and ERDR (event region detection rate), are used to evaluate the performance of the proposed event detection scheme. FAR is defined as the ratio of the number of nodes reporting an event, in the case of no event, to the total number of sensor nodes. DA is the ratio of the number of times that events are detected to the total number of event occurrences. ERDR is the ratio of the number of nodes, in the event region, reporting an event (<italic>i.e.</italic>, <italic>D<sub>i</sub></italic> = 1) to the total number of nodes in the event region. Our objective is to keep high DA and low FAR simultaneously even when the fault probability is high. Although ERDR is not the main concern in this paper, statistical data for event region detection are obtained for future research.</p>
<p><xref ref-type="table" rid="t3-sensors-10-02332">Table 3</xref> shows DA for the proposed event detection scheme for various values of <italic>p<sub>t</sub></italic> when <italic>p<sub>p</sub></italic> is increased by 0.01 every 20 cycles up to 0.5. Based on the results we can claim that DA can be maintained high even with increasing number of faults.</p>
<p><xref ref-type="fig" rid="f7-sensors-10-02332">Figure 7</xref> shows FAR with increasing permanent fault probability <italic>p<sub>p</sub></italic> for various values of transient fault probability <italic>p<sub>t</sub></italic> when <italic>α</italic> = 0.2. To see how the proposed scheme adapts to the increase in the number of faults, <italic>p<sub>p</sub></italic> is increased by 0.01 every 20 cycles. FAR is kept very close to zero even when <italic>p<sub>p</sub></italic> is 0.5. In the case of <italic>p<sub>t</sub></italic> = 0.1 and <italic>p<sub>p</sub></italic> = 0.2, for example, FAR is about 0.00006. That is, only 0.06 nodes out of 1,024 make a false alarm even in the combined fault probability of 0.3. Sensor nodes with a permanent fault (producing erroneous data repeatedly for an extended period of time) can hardly affect the decision making process since they will be isolated from the network until they exhibit normal behavior again. In addition, the increase in transient fault probability <italic>p<sub>t</sub></italic>, up to 0.2, does not cause any notable performance degradation due to the effective filtering of transient faults.</p>
<p>We have compared the performance of the proposed scheme with that of the majority voting. The results for <italic>p<sub>t</sub></italic> = 0.1, 0.0 ≤ <italic>p<sub>p</sub></italic> ≤ 0.5, and <italic>α</italic> = 0.2 are shown in <xref ref-type="fig" rid="f8-sensors-10-02332">Figure 8</xref>. Unlike the proposed scheme, FAR for the majority voting increases with <italic>p<sub>p</sub></italic>, exhibiting a significant amount of false alarms. These false alarms will waste the network resources, resulting in a considerable reduction in network lifetime. On the other hand, ERDR for our scheme is lower than that of the majority voting. The reason for this degradation in ERDR is that correcting erroneous readings by employing a filter may reduce the number of non-event sensor nodes incorrectly reporting a 1 (abnormal). In fact incorrect readings due to faulty sensor nodes near but outside an event region may affect positively on the event detection.</p>
<p>Similar simulation is done to compare the performance for three different values of <italic>α</italic>: 0.1, 0.2 and 0.3. The resulting FAR and ERDR are shown in <xref ref-type="fig" rid="f9-sensors-10-02332">Figure 9</xref>, where the number in the parenthesis represents the value of <italic>α</italic>. As can be seen, the best performance is obtained for <italic>α</italic> = 0.1, although the performance difference between 0.1 and 0.2 is marginal. A notable degradation in performance can be observed for <italic>α</italic> = 0.3. This stems from the fact that some good nodes are removed from the neighbor list due to transient faults.</p>
<p>In the proposed adaptive scheme, a sensor node <italic>v<sub>i</sub></italic> treats a potentially faulty sensor node <italic>v<sub>j</sub></italic> as a faulty node at the time the confidence level <italic>w<sub>ij</sub></italic> reaches 0. The resulting reduction in effective node degree of each sensor node, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, will accordingly change the threshold <italic>θ</italic> to adapt to the new network topology. Consequently faulty nodes can only affect the decision making process until they are identified and isolated. Due to the dynamic threshold selection, high event detection performance can be maintained even with increasing fault probability as shown in <xref ref-type="fig" rid="f10-sensors-10-02332">Figure 10</xref>, where <italic>p<sub>p</sub></italic> is increased by 0.01 every 40 cycles and an event is assumed to occur every 40 cycles. As expected, the average node degree <italic>d<sup>k</sup></italic> (at time <italic>t</italic> = <italic>k</italic>) decreases and the number of false alarm nodes slowly increases with <italic>p<sub>p</sub></italic>. The number of false alarm nodes moves up and down periodically due to the artificially generated periodic events.</p>
<p>Another simulation is performed to show how the proposed scheme adapts to a special type of fault, producing erroneous readings periodically for some period of time. For simplicity, each node is assumed to have such an intermittent fault with probability of 0.2 every 80 cycles, producing incorrect readings for 40 cycles. The results are shown in <xref ref-type="fig" rid="f11-sensors-10-02332">Figure 11</xref>, where the number of nodes that make a wrong decision soars up to more that 12 at the time such a fault occurs, but goes down to below 4 after a few threshold adjustments. Once the erroneous data due to the faults disappear, the threshold goes back to the original position, as expected.</p>
<p>The proposed adaptive scheme has the potential to adapt to different fault patterns. The performance of the scheme will further be investigated by generating various types of faults discussed in [<xref ref-type="bibr" rid="b12-sensors-10-02332">12</xref>].</p></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>In this paper, we proposed an adaptive fault-tolerant event detection scheme for wireless sensor networks. It maintains high performance, in terms of detection accuracy and false alarm rate, for a wide range of fault probabilities, by employing a dynamically adjusted threshold and a filter for tolerating transient faults. Simulation results show that the scheme mitigates the negative influence of various types of faults by exploiting adaptation to temporal behavior of faults. Although we focused on faulty sensors, the scheme can be extended to cover faults in communication with minor modifications. Only three bits of information are exchanged each event detection cycle to reduce the communication cost. More extensive simulation is currently being conducted to estimate how the scheme performs for various event region shapes.</p></sec></body>
<back>
<ack>
<p>This work was supported by the Korea Research Foundation Grant funded by the Korean Government (KRF-2008-313-D00902).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-10-02332"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Akyildiz</surname><given-names>I.F.</given-names></name><name><surname>Su</surname><given-names>W.</given-names></name><name><surname>Sankarasubramaniam</surname><given-names>Y.</given-names></name><name><surname>Cyirci</surname><given-names>E.</given-names></name></person-group><article-title>Wireless sensor networks: a survey</article-title><source>Comput. Net</source><year>2002</year><volume>38</volume><fpage>393</fpage><lpage>422</lpage><pub-id pub-id-type="doi">10.1016/S1389-1286(01)00302-4</pub-id></citation></ref>
<ref id="b2-sensors-10-02332"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Krishnamachari</surname><given-names>B.</given-names></name><name><surname>Iyengar</surname><given-names>S.</given-names></name></person-group><article-title>Distributed Bayesian algorithms for fault-tolerant event region detection in wireless sensor networks</article-title><source>IEEE Trans. Comput</source><year>2004</year><volume>53</volume><fpage>241</fpage><lpage>250</lpage><pub-id pub-id-type="doi">10.1109/TC.2004.1261832</pub-id></citation></ref>
<ref id="b3-sensors-10-02332"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Luo</surname><given-names>X.</given-names></name><name><surname>Dong</surname><given-names>M.</given-names></name><name><surname>Huang</surname><given-names>Y.</given-names></name></person-group><article-title>On distributed fault-tolerant detection in wireless sensor networks</article-title><source>IEEE Trans. Comput</source><year>2006</year><volume>55</volume><fpage>58</fpage><lpage>70</lpage><pub-id pub-id-type="doi">10.1109/TC.2006.13</pub-id></citation></ref>
<ref id="b4-sensors-10-02332"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ding</surname><given-names>M.</given-names></name><name><surname>Chen</surname><given-names>D.</given-names></name><name><surname>Xing</surname><given-names>K.</given-names></name><name><surname>Cheng</surname><given-names>X.</given-names></name></person-group><article-title>Localized fault-tolerant event boundary detection in sensor networks</article-title><source>IEEE Infocom</source><year>2005</year><volume>2</volume><fpage>902</fpage><lpage>913</lpage></citation></ref>
<ref id="b5-sensors-10-02332"><label>5.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Jin</surname><given-names>G.</given-names></name><name><surname>Nittel</surname><given-names>S.</given-names></name></person-group><article-title>NED: an efficient noise-tolerant event and event boundary detection algorithm in wireless sensor networks</article-title><conf-name>7th International Conference on Mobile Data Management (MDM’06)</conf-name><conf-loc>Nara, Japan</conf-loc><year>2006</year><fpage>153</fpage><lpage>160</lpage></citation></ref>
<ref id="b6-sensors-10-02332"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname><given-names>C.-R.</given-names></name><name><surname>Liang</surname><given-names>C.-K.</given-names></name></person-group><article-title>A fault-tolerant event boundary detection algorithm in sensor networks</article-title><source>ICOIN</source><year>2007</year><volume>5200</volume><fpage>406</fpage><lpage>414</lpage></citation></ref>
<ref id="b7-sensors-10-02332"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lee</surname><given-names>M.H.</given-names></name><name><surname>Choi</surname><given-names>Y.-H.</given-names></name></person-group><article-title>Fault detection of wireless sensor networks</article-title><source>Comput. Commun</source><year>2008</year><volume>31</volume><fpage>3469</fpage><lpage>3475</lpage><pub-id pub-id-type="doi">10.1016/j.comcom.2008.06.014</pub-id></citation></ref>
<ref id="b8-sensors-10-02332"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Choi</surname><given-names>J.Y.</given-names></name><name><surname>Yim</surname><given-names>S.-J.</given-names></name><name><surname>Huh</surname><given-names>Y.</given-names></name><name><surname>Choi</surname><given-names>Y.-H.</given-names></name></person-group><article-title>A distributed adaptive scheme for detecting faults in wireless sensor networks</article-title><source>WSEAS Trans. Commun</source><year>2009</year><volume>8</volume><fpage>269</fpage><lpage>278</lpage></citation></ref>
<ref id="b9-sensors-10-02332"><label>9.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Koren</surname><given-names>I.</given-names></name><name><surname>Krishna</surname><given-names>C.M.</given-names></name></person-group><source>Fault-Tolerant Systems</source><publisher-name>Morgan Kaufmann</publisher-name><publisher-loc>San Fransisco, CA, USA</publisher-loc><year>2007</year></citation></ref>
<ref id="b10-sensors-10-02332"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname><given-names>J.</given-names></name><name><surname>Duh</surname><given-names>D.</given-names></name><name><surname>Wang</surname><given-names>T.</given-names></name><name><surname>Chang</surname><given-names>L.</given-names></name></person-group><article-title>Fast and simple on-line sensor fault detection scheme for wireless sensor networks</article-title><source>Lect. Note. Comput. Sci</source><year>2007</year><volume>4808</volume><fpage>444</fpage><lpage>455</lpage></citation></ref>
<ref id="b11-sensors-10-02332"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Elhadef</surname><given-names>M.</given-names></name><name><surname>Boukerche</surname><given-names>A.</given-names></name><name><surname>Elkadiki</surname><given-names>H.</given-names></name></person-group><article-title>A distributed fault identification protocol for wireless and mobile ad hoc networks</article-title><source>J. Par. Dist. Comput</source><year>2008</year><volume>68</volume><fpage>321</fpage><lpage>335</lpage><pub-id pub-id-type="doi">10.1016/j.jpdc.2007.05.016</pub-id></citation></ref>
<ref id="b12-sensors-10-02332"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ni</surname><given-names>K.</given-names></name></person-group><article-title>Sensor network data fault types</article-title><source>ACM Trans. Sensor Net</source><year>2009</year><volume>5</volume><fpage>1</fpage><lpage>29</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-10-02332" position="float">
<label>Figure 1.</label>
<caption>
<p>An illustration of confidence levels.</p></caption>
<graphic xlink:href="sensors-10-02332f1.gif"/></fig>
<fig id="f2-sensors-10-02332" position="float">
<label>Figure 2.</label>
<caption>
<p>Proposed event detection scheme.</p></caption>
<graphic xlink:href="sensors-10-02332f2.gif"/></fig>
<fig id="f3-sensors-10-02332" position="float">
<label>Figure 3.</label>
<caption>
<p>Case 1 for the third row in <xref ref-type="table" rid="t2-sensors-10-02332">Table 2</xref>.</p></caption>
<graphic xlink:href="sensors-10-02332f3.gif"/></fig>
<fig id="f4-sensors-10-02332" position="float">
<label>Figure 4.</label>
<caption>
<p>Case 2 for the third row in <xref ref-type="table" rid="t2-sensors-10-02332">Table 2</xref>.</p></caption>
<graphic xlink:href="sensors-10-02332f4.gif"/></fig>
<fig id="f5-sensors-10-02332" position="float">
<label>Figure 5.</label>
<caption>
<p>Case 3 for the third row in <xref ref-type="table" rid="t2-sensors-10-02332">Table 2</xref>.</p></caption>
<graphic xlink:href="sensors-10-02332f5.gif"/></fig>
<fig id="f6-sensors-10-02332" position="float">
<label>Figure 6.</label>
<caption>
<p>A good node failing to pass the threshold due to neighboring faulty nodes.</p></caption>
<graphic xlink:href="sensors-10-02332f6.gif"/></fig>
<fig id="f7-sensors-10-02332" position="float">
<label>Figure 7.</label>
<caption>
<p>FAR with increasing <italic>p<sub>p</sub></italic> for various values of <italic>p<sub>t</sub></italic>.</p></caption>
<graphic xlink:href="sensors-10-02332f7.gif"/></fig>
<fig id="f8-sensors-10-02332" position="float">
<label>Figure 8.</label>
<caption>
<p>Comparison between the proposes scheme and majority voting(MV) with increasing <italic>p<sub>p</sub></italic> when <italic>p<sub>t</sub></italic> = 0.1.</p></caption>
<graphic xlink:href="sensors-10-02332f8.gif"/></fig>
<fig id="f9-sensors-10-02332" position="float">
<label>Figure 9.</label>
<caption>
<p>ERDR and FAR for three different values of <italic>α</italic> when <italic>p<sub>t</sub></italic> = 0.1.</p></caption>
<graphic xlink:href="sensors-10-02332f9.gif"/></fig>
<fig id="f10-sensors-10-02332" position="float">
<label>Figure 10.</label>
<caption>
<p>Average node degree <italic>d<sup>k</sup></italic> and the number of false alarms when <italic>p<sub>p</sub></italic> increases up to 0.5 and <italic>p<sub>t</sub></italic> = 0.2.</p></caption>
<graphic xlink:href="sensors-10-02332f10.gif"/></fig>
<fig id="f11-sensors-10-02332" position="float">
<label>Figure 11.</label>
<caption>
<p>Average node degree <italic>d<sup>k</sup></italic> and the number of false alarms when intermittent faults occur simultaneously every 80 cycles with the probability of 0.2.</p></caption>
<graphic xlink:href="sensors-10-02332f11.gif"/></fig>
<table-wrap id="t1-sensors-10-02332" position="float">
<label>Table 1.</label>
<caption>
<p>An illustration of filtering transient faults when <italic>M</italic> = 4 and <italic>δ</italic> = 0.75.</p></caption>
<table frame="box" rules="groups">
<thead>
<tr>
<th align="center" valign="middle"><italic>i</italic></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>3</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>4</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>5</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>6</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>3</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>4</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>5</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th>
<th align="center" valign="middle">
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>6</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">2</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">3</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td></tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td></tr>
<tr>
<td align="center" valign="top">5</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-10-02332" position="float">
<label>Table 2.</label>
<caption>
<p>Updating <italic>w<sub>ij</sub></italic> at node <italic>v<sub>i</sub></italic>.</p></caption>
<table frame="box" rules="groups">
<thead>
<tr>
<th align="center" valign="middle"><italic>D<sub>i</sub></italic> = <italic>y<sub>j</sub></italic></th>
<th align="center" valign="middle"><italic>F<sub>j</sub></italic></th>
<th align="center" valign="middle"><italic>w<sub>ij</sub></italic></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">yes</td>
<td align="center" valign="top">0(good)</td>
<td align="center" valign="top">up</td></tr>
<tr>
<td align="center" valign="top">yes</td>
<td align="center" valign="top">1(faulty)</td>
<td align="center" valign="top">down</td></tr>
<tr>
<td align="center" valign="top">no</td>
<td align="center" valign="top">0(good)</td>
<td align="center" valign="top">down for <italic>D<sub>i</sub></italic> = 0</td></tr>
<tr>
<td align="center" valign="top">no</td>
<td align="center" valign="top">1(faulty)</td>
<td align="center" valign="top">down</td></tr></tbody></table></table-wrap>
<table-wrap id="t3-sensors-10-02332" position="float">
<label>Table 3.</label>
<caption>
<p>DA for various values of <italic>p<sub>p</sub></italic> and <italic>p<sub>t</sub></italic>.</p></caption>
<table frame="box" rules="cols">
<thead>
<tr>
<th align="center" valign="top" rowspan="2">2*<italic>p<sub>p</sub></italic></th>
<th colspan="5" align="center" valign="bottom"><italic>p<sub>t</sub></italic>
<hr/></th></tr>
<tr>
<th align="center" valign="middle">0.00</th>
<th align="center" valign="middle">0.05</th>
<th align="center" valign="middle">0.10</th>
<th align="center" valign="middle">0.15</th>
<th align="center" valign="middle">0.20</th></tr>
<tr>
<th align="left" valign="bottom" colspan="6">
<hr/></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">0.00</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td></tr>
<tr>
<td align="center" valign="top">0.10</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td></tr>
<tr>
<td align="center" valign="top">0.20</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">0.999</td></tr>
<tr>
<td align="center" valign="top">0.30</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">0.995</td></tr>
<tr>
<td align="center" valign="top">0.40</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">1.000</td>
<td align="center" valign="top">0.993</td>
<td align="center" valign="top">0.949</td></tr>
<tr>
<td align="center" valign="top">0.50</td>
<td align="center" valign="top">0.999</td>
<td align="center" valign="top">0.999</td>
<td align="center" valign="top">0.997</td>
<td align="center" valign="top">0.933</td>
<td align="center" valign="top">0.753</td></tr></tbody></table></table-wrap></sec></back></article>
