*3.3. Offloading Algorithms*

The offloading algorithms aim to find a suitable processor (locally or remotely) to execute a task given a certain constraint. In wearables, offloading can be done at two stages: from wearables to edge devices or from edge device to fog/cloud devices [34]. The offloading device keeps on checking the estimated available power and compares it with the forested power demands. The offloading algorithms are invoked whenever the power demands exceed the available power (harvested and stored) and the energy consumed by the communication unit is less than the energy consumed by task processing. This concept is illustrated in Figure 4. Offloading can be combined with advanced techniques for power management such as sleep, dynamic voltage and frequency scaling (DVFS), and approximated computing [35].

**Figure 4.** Principles of energy-aware offloading algorithm.
