# Enhanced Hybrid Algorithms for Inverse Problem Solutions in Computed Tomography
## 3 Description of Optimization Algorithms
### Jellyfish Search  
This algorithm is an attempt to mimic the behavior of jellyfish in the ocean. Although these creatures do not possess brains, their food acquisition strategy can be quite complex, especially if there are large numbers of them. Jellyfish search simulates different kinds of jellyfish movements such as following ocean currents, passive and active movements inside jellyfish swarm and convergence into a jellyfish bloom. The articles [22; 23; 24] provide more information on the details of the algorithm and its applications. Jellyfish Search algorithm, as the name implies, mimics the way jellyfish search for their food source. It recognizes two different type of movements performed by the swarm of jellyfishes**--**moving alongside the ocean current** and **moving inside the swarm**. The latter is further divided into two types of movement--_active_ and _passive_. Figure 1: ABC algorithm’s block scheme. Moving alongside the ocean current resembles movement in random directions, it's described with following formula:  
\[X_{i}(t+1)=X_{i}(t)+rand(0,1)\times(X^{*}-\beta\times rand(0,1)\times\mu) \tag{6}\]  
where \(X^{*}\) is the jellyfish currently with the best location in the swarm; \(\mu\) is the mean location of all jellyfish; \(\beta>0\) is a distribution coefficient. Movement inside swarm  
Each type of movement within this movement has its own distinct following characteristics:  
1. Type A motions (Passive motions) During passive motions, jellyfishes move around their current positions. The new position of each jellyfish is determined by: \[X_{i}(t+1)=X_{i}(t)+\gamma\times\ rand(0,1)\times(U_{b}-L_{b})\] (7) where \(U_{b}\) and \(L_{b}\) are the upper and the lower bound of search spaces, respectively; \(\gamma=0.1\) is a motion coefficient. 2. Type B motions (Active motions) During active motions, a jellyfish compare the quality of food sources it explores to the one explored by other, randomly chosen jellyfish, then, then the jellyfish moves towards the better food source. The update of the position is performed in a following way: for jellyfish \(i\) a random jellyfish \(j\) is chosen. Food source quality each of them explore is compared and a vector from the worse to the better one is created. The vector is used to guide jellyfish \(i\) towards the better food source. It is described with the following formula:  
\[X_{i}(t+1)=X_{i}(t)\xrightarrow{\longrightarrow} \tag{8}\] \[\xrightarrow{\longrightarrow}\] (9) \[\xrightarrow{\longrightarrow}\] (10) \[\xrightarrow{\longrightarrow}\]  
where \(\mathcal{F}\) is an objective function of location \(X\). Time control mechanism  
The movement of the swarm is controlled by the time control mechanism, which regulates what kind of movement a jellyfish should perform. Said system consists of a function \(c(t)\) which is a random value that fluctuates from 0 to 1 over time. \[c(t)=\left|\left(1-\frac{t}{Max_{iter}}\right)\times(2\times rand(0,1)-1)\right| \tag{11}\]  
where \(t\) is the iteration number and \(Max_{iter}\) is the maximum number of iterations. If \((c(t))\leq 0.5\), the jellyfish follow the ocean current. Otherwise, they move inside a swarm. The type of movement inside a swarm is determined by the value of \((1-c(t))\). If it is less than \(rand(0,1)\), the jellyfish exhibit type A motion. Otherwise, the jellyfish exhibit type B motion. Population initialization  
Jellyfish search uses the logistic map, rather than random positions for the initialization of the population. That is to ensure better diversion and minimize the risk of converging prematurely. \[X_{i+1}=\eta X_{i}(1-X_{i}) \tag{12}\]  
\(X_{i}\) is the logistic chaotic value of location of the \(ith\) jellyfish; \(X_{0}\) is a random value used for generating initial population of jellyfish, \(X_{0}\in(0,1)\), \(X_{0}\
ot\in\{0.0,\,0.25,\,0.75,\,0.5,\,1.0\}\), and parameter \(\eta\) is set to 4.0.