*5.1. HBO*

A new meta-heuristic optimization technique based on human-behavior called Heapbased optimizer (HBO) has been created by Qamar Askari in [40]. The HBO technique is based on the hierarchy of corporate rank (CRH) and the interplay of individuals in this hierarchy, HBO's mathematical model is based on three phases: interplay between employees and their direct manager, interplay amongst coworkers, and employee self-contribution. Unlike numerous of previous meta-heuristics algorithms, the relative fitness of search agents is used to organize them in a hierarchy, and the notion of minimum or maximum heap is used to allow interplay between them while maintaining their relative difference. Furthermore, a factor termed Gamma (γ) is established to help the algorithm avoid premature convergence without compromising the exploitation capability by allowing it to escape local optima. The pseudo-code of the HBO technique is indicated in Algorithm 1.

To prove the efficiency and performance of the HBO technique, it has been tested and compared with seven well-known algorithms and 97 diverse test functions involving 29 CEC-BC-2017 functions. The exploitative and explorative behavior of HBO has assessed from the obtained results of using 24 unimodal and 44 multimodal functions. Experiments and the Friedman mean rank test reveal that HBO outperforms and takes first place.

**Algorithm 1**. HBO [40]

```
1. Initialize general parameters, N, D, Tmax, and (Li, Ui)
2. Generate a random population P of N search agents
3. Building the heap
4. Algorithm 1; Heapify_Up (i)
5. Input: i (the index of the node we are trying to heapify)
6. Assuming that the rest of the nodes fulfill the heap property
7. while i 	= root and heap[i].key < heap[parent (i)].key do
8. swap(heap[i], heap[parent (i)])
9. i ← parent (i)
10. end
11. Algorithm 2; Build_Heap (P, N)
12. Input: P, N
13. for i ← 1 to N do
14. heap[i].value ← i
15. heap[i].key ← f (Xi)
16. Heapify_Up (i)
17. end
18. Update Search agents positions repeatedly
19. Algorithm 3; HBO_Main_Body
20. for t ← 1 to Tmax do
21. Compute γ, p1, p2
22. for I ← N down to 2 do
23. i ← heap[I].value
24. bi ← heap[parent (I)].value
25. ci ← heap[colleague(I)].value
26. →
             B ← →
                  xc1
27. →
              S ← →
                  xb1
28. for k ← 1 to D do
29. p ← rand ()
30. xk
                    temp ← update xk
                                 i (t)
31. end
32. if f(→
                       x temp) < f(→
                               x i(t)) then
33. →
                         x i(t + 1) ←→
                                  x i(t)
34. end
35. Heapify_Up (I)
36. end
37. end
38. return xheap[1].value
```