## 2 Optimization of Concrete Rectangular Cross-Sections
### Optimization Methodology
#### 2.6.2 Modified Version (MPFA) of the Firefly Algorithm  
(i) Parallelization and migration.  
The authors included a parallel computing strategy based on dividing the whole population into subpopulations. Each subpopulation searches for the optimum design of the best solution found in the subpopulation up to that point, taking exploration and exploitation into account. A code was implemented in MATLAB(r) (see the Appendix A) to address the parallel strategy using the parfor MATLAB(r) command to distribute the work among processors [33].  
Along with the parallel computing strategy, another strategy is needed to enable the firefly subpopulations to communicate with each other, so that the information that resides in each subpopulation can be shared by the rest of the subpopulations. In this way, the authors prevent the parallel computing strategy from merely dividing the population into subpopulations that seek the optimal design independently.  
A way to do this is by migrating fireflies among subpopulations. The migration process must ensure that information passes among subpopulations without bias, in order not to force the search in a specific direction. The migration strategy implemented is based on several steps: (i) the one with the best of all the designs achieved up to that point is chosen as the origin subpopulation; (ii) individuals from the origin subpopulation are chosen randomly; (iii) destination subpopulations are chosen randomly, and (iv) the individuals of the destination subpopulations are substituted for the individuals of the origin subpopulation.  
As the origin subpopulation is the one that has the best design of those found up to that point in the process of searching for the global optimum, there is a bias in the information that is transmitted. In fact, if the origin subpopulation is close to a local optimum, then the movement of the fireflies in that direction is forced by bringing individuals who are close to that local optimum to other subpopulations. However, this bias does not occur due to the second modification introduced in the FA, which is as follows.  
(ii) Small random displacements.  
Two small random displacements on the variables \(z\) and \(\theta\) are developed; one for the brightest firefly of each subpopulation (local, small, random displacement, LSRD), and another for the brightest firefly of the whole population (global, small, random displacement, GSRD).  
\[z^{k+1}=z^{k}+\alpha^{2}\left(rand-\frac{1}{2}\right)\left(z^{U}-z^{L}\right) \tag{22}\]  
\[\theta^{k+1}=\theta^{k}+\alpha^{2}\left(rand-\frac{1}{2}\right)\left(\theta^{U} -\theta^{L}\right) \tag{23}\]  
These LSRD and GSRD displacements are essential to improve the performance of the algorithm as was verified by the authors after running many examples, some of which are included in this work.  
This improvement is due to the fact that LSRD does not only increase the firefly's mobility but also that of the whole subpopulation that follows its movements. Additionally, the brightest firefly of the subpopulation may cease to be so due to this LSRD. Furthermore, it is possible that the subpopulation considered as the origin is no longer so because the brightest firefly may now belong to another subpopulation. Finally, GSRD is necessary when a high number of subpopulations are considered because of the low number of fireflies in each subpopulation, which reduces the effect of LSRD. As a consequence, the combined effect of both LSRD and GSRD helps biases disappear and exploration to improve, decreasing the probability of the process ending at a local minimum.  
These basic operations were implemented in MATLAB@and are summarized in Figure 2.