**Algorithm 1:** SWIPT algorithm

**Ensure:** *i* is CH and *j* ∈N \{*i*} 1: Initialize *R*tar *<sup>i</sup>* ← min*j*{*Rij*} 2: **repeat** 3: **if** *PS is used* **then** 4: *α<sup>j</sup>* ← 2*R*tar *<sup>i</sup>* /*Ts* <sup>−</sup> <sup>1</sup> *σ*2*Ts <sup>η</sup>jζjgijhjPTe* from Equation (7) 5: **else if** *TS is used* **then** 6: *<sup>α</sup><sup>j</sup>* <sup>←</sup> *<sup>R</sup>*tar *i Ts* log2 - <sup>1</sup><sup>+</sup> *<sup>η</sup>jζ<sup>j</sup> gijhjPTe <sup>σ</sup>*2*Ts* from Equation (8) 7: **end if** 8: Update *E*add *<sup>i</sup>* according to Equation (9) 9: Update *R*swipt *<sup>i</sup>* according to Equation (11) 10: *R*tar *<sup>i</sup>* <sup>←</sup> *<sup>R</sup>*swipt *<sup>i</sup>* <sup>+</sup>*R*tar *i* 2 11: **until** *R*swipt *<sup>i</sup>* ≥ *<sup>R</sup>*tar *i* 12: Return *αj*, ∀*j* ∈N \{*i*}
