I. Introduction
The concept of cooperative algorithms was proposed to have a more efficient search mechanism in comparison to the individual instances of the same algorithm. Cooperation is based on having multiple algorithm instances searching the search space (either serially or in parallel) and exchanging information useful information. This implies that the search space is decomposed between the different algorithms [1], [2]. The decomposition is either explicit by dividing the problem variables between the different cooperating instances or implicit by having the different instances search different parts of the search space due to different initialization, different parameters settings or both.