## 3 The Proposed Coyote Optimization Algorithm  
### Original Coyote Optimization Algorithm  
In the COA, Coyote community is equally disunited into \(N_{pack}\) packs, and each pack contains \(N_{coyote}\) coyotes. Therefore, the population size is the result of multiplication of \(N_{pack}\) and \(N_{coyote}\). The initial generation for each pack among the population can be performed by using the following popular model:  
\[Sol_{d,p}=Sol_{\text{min}}+\mu_{1}.(Sol_{\text{max}}-Sol_{\text{min}});\ \ d=1,\ \ldots,\ N_{coyote}\ \&\ p=1,\ \ldots,\ N_{pack} \tag{12}\]  
where:  
\[Sol_{\text{min}}=\big{[}x_{j,\text{min}}\big{]}\ ;\ j=1,\ldots,\ NCV \tag{13}\]  
\[Sol_{\text{max}}=\big{[}x_{j,\text{max}}\big{]}\ ;\ j=1,\ldots,\ NCV \tag{14}\]where \(Sol_{d,p}\) is the social condition of the \(dth\) coyote in the \(pth\) pack corresponding to the \(ith\) solution in the pack \(p\). \(Sol_{min}\) and \(Sol_{max}\) represent upper and lower bounds of the social conditions; \(x_{j,min}\) and \(x_{j,max}\) are the lowest value and highest value of the \(jth\) control variable; and \(NCV\) is number of control variables. The initialization step of COA is ended by the two following tasks: calculate quality of each solution \(Fitness_{d,p}\), and determine the best solution in each pack, \(Sol_{best,p}\). In order to produce new social condition for each coyote, COA produces a center condition for each pack that is similar to a center solution, \(Sol_{center,p}\). The center solution \(Sol_{center,p}\) collects center variables in each pack. Thus, there are two cases for each center variable in the center solution due to the number of coyotes in each pack. For the case of odd number of coyotes, the center variable of the coyote \((N_{coyote}+1)/2\) is picked up, but for the case of even number of coyotes, the variable of coyote \(N_{coyote}/2\) is taken. After determining the center solution for each pack, solutions are newly updated by the following rule:  
\[Sol_{d,p}^{new}=Sol_{d,p}+\mu_{2}.(Sol_{best,p}-Sol_{r1,p})+\mu_{3}.(Sol_{ center,p}-Sol_{r2,p}) \tag{15}\]  
It is not sure that each variable \(x_{j,d,p}^{new}\) of new solution \(Sol_{d,p}^{new}\) always exactly satisfies lower limit \(x_{j,min}\) and upper limit \(x_{j,max}\). Thus, each variable must be verified and corrected by using the following equation:  
\[x_{j,d,p}^{new}=\left\{ \begin{array}{ll}x_{j,\min}&\text{if}\ \ x_{j,d,p}^{new}<x_{j,\min}\\ x_{j,\max}&\text{if}\ \ x_{j,d,p}^{new}>x_{j,\max};\ j=1,\ \ldots,\ NCV;\ \ d=1,\ \ldots,N_{coyote};\ \ p=1,\ \ldots,\ N_{pack}\\ x_{j,d,p}^{new}&\text{else}\end{array} \right. \tag{16}\]  
Similar to other metaheuristic algorithms such as PSO, BA, and CSA, COA also uses the selection technique for retaining more effective solutions and abandoning solutions with worse quality. New solutions are evaluated by calculating fitness function, and old solutions are replaced with these new ones in case that fitness function is improved better. The description is mathematically modeled as follows:  
\[\text{Sol}_{d,p}=\left\{ \begin{array}{ll}Sol_{d,p}^{new}&\text{if}\ \ Fitness_{d,p}^{ new}\leq Fitness_{d,p}\\ Sol_{d,p}&\text{else}\end{array} \right. \tag{17}\]  
\[Fitness_{d,p}=\left\{ \begin{array}{ll}Fitness_{d,p}^{new}\ \text{if}\ Fitness_{d,p}^{ new}\leq Fitness_{d,p}\\ Fitness_{d,p}\text{else}\end{array} \right. \tag{18}\]  
For replacing the worst social condition in each pack, COA produces a new social condition, and then its quality is evaluated. In case that its quality is more effective than the worst condition, which is being existed in the pack, the worst one is replaced. Otherwise, the worst condition cannot be eliminated unintentionally. The new condition \(Sol_{p}^{new}\) is also corresponding to a new solution in which the \(jth\) variable \(x_{j}\) of \(Sol_{p}^{new}\) can be found by the following way:  
\[x_{j,p}^{new}=\left\{ \begin{array}{ll}x_{j,r1,p}^{new}&\text{if}\ \ \mu_{4}<Pro_{1}\\ x_{j,r2,p}^{new}&\text{if}\ \ \mu_{4}>Pro_{1}+Pro_{2}\\ x_{j,r}&\text{otherwise}\end{array} \right.