## 1 Introduction
### Energy Management Techniques for Extending WSN Lifetime  
As earlier stated, energy efficiency is a critical aspect in most WSN applications because of the energy constrain of sensor nodes and the need to prolong WSN lifetime. [PERSON] et al. [10] provide several different definitions of network lifetime depending on the specific application, the objective function and the network topology considered. However, we will stick to the definition of network lifetime as being the total amount of time during which the WSN is capable of effectively performing its functions and meeting up with the application's requirements. In that light, a WSN composed of battery-powered sensor nodes without energy harvesting capabilities is considered dead when it is unable to forward any data to the base station [11]. The lifetime for such WSNs is constrained by the battery of the individual sensor nodes in the WSN [12]. Thus, the critical issues to be considered when maximizing WSN lifetime are how to reduce the energy consumption of the nodes or how to replenish their energy sources in an efficient and realistic way [12; 13]. The quest to prolong WSN lifetime has in recent years led to a plethora of energy management techniques in the literature. The techniques can be broadly classified as energy conservation techniques (data-driven and duty cycling) [9], energy balancing techniques (energy-efficient routing protocols and mobile sink) [14], energy harvesting techniques (solar, vibration, RF, wind and thermal) [15] and associated predictive energy management approaches [16]. In this paper, we focus on energy conservation techniques. Conserving the energy of sensor nodes requires a compromise between various activities at both the node and network levels [11; 17; 18; 19]. This can be accomplished by implementing energy-efficient protocols that are aimed at minimizing the energy consumption during network activities and/or implementing power management schemes that involve switching off node components that are not temporarily needed. The reason is that a large amount of energy is consumed by node components (CPU, radio, sensor, etc.) even in the idle mode [12]. The techniques for minimizing energy consumption at the node level include duty cycling techniques (radio optimization, sleep/wake-up schemes, dynamic voltage frequency scaling), and data-driven approaches (data compression, data aggregation, data prediction, hierarchical sensing, adaptive sampling, and model-based active sensing) [12; 13; 20]. A detailed review and a commonly adopted taxonomy of energy conservation strategies used for preserving WSN lifetime is presented in [12; 13; 17; 18; 19; 20]. Duty cycling techniques reduce the sensor node's energy consumption by turning off the sensor node's hardware components when they are not needed and waking them up whenever necessary [21]. This establishes a small duty cycle for the nodes based on events occurring in the monitored environment [22]. Thus, techniques based on duty cycling rely on the fact that active nodes do not need to keep their radios, processor, and sensing devices continuously on. According to the survey by [PERSON] et al. [12], duty cycling is achieved by two complementary approaches, with one approach taking advantage of the redundancy in WSNs by adaptively selecting only a minimum subset of nodes to remain active for maintaining connectivity, while the other approach ensures that active nodes do not maintain their radio and sensors continuously on by constantly switching them off (i.e., put it in the low-power sleep mode) when there is no network activity. The authors termed the former topology control and the latter power management. Data-driven techniques can be classified into either data reduction or energy-efficient data acquisition schemes depending the problem they address [12; 23; 24]. The data reduction schemes on the one hand are primarily involved in reducing the number of data transmissions and the amount of data transmitted, as data moves from the sensor nodes to the base station.