DE is one of the members of evolutionary algorithm family having attractive feature of solving optimization problem. The main steps in DE algorithm are- initialization of a set of solution, mutation, recombination and selection.

### Initialization

In the initialization phase a random set of probable solution for each parameter is generated within the search space. If an objection function with *D* real parameters is to be optimized for an initial population of size *NP*, the parameters vector takes the form \(\varvec{X}_{i,G} = \left[ {\varvec{x}_{1,i,G} ,\varvec{x}_{2,i,G} , \ldots ,\varvec{x}_{D,i,G} } \right]\) with \(i=1,2,\ldots,NP\) and *G* is the generation number. With the upper and lower bounds for each parameter defined as \(x_{j}^{L} \le x_{j,i,1} \le x_{j}^{U}\), the random parameters in each generation should lie within the interval \(\,\left[ {x_{j}^{L} ,x_{j}^{U} } \right]\). As each initialization phase generates different random set of solutions, several runs are to be conducted to obtain the optimal solution for a given problem.

### Mutation

Three target vectors \(\varvec{x}_{r1,G} ,\,\,\varvec{x}_{r2,G} ,\) and \(\varvec{x}_{r3,G}\) are randomly selected from a given parameter vector \(\varvec{X}_{i,G}\) for the mutation phase keeping in mind that the indices *r*1, *r*2, *r*3 and *i* are distinct. These three vectors along with mutation factor *M*
_{
F
} are used to generate the donor vector following the strategy *DE*/*rand*/1 as:

$$\varvec{v}_{i,G + 1} = \varvec{x}_{r1,G} + M_{F} \left( {\varvec{x}_{r2,G} - \varvec{x}_{r3,G} } \right) .$$

(19)

Another way of generating the donor vector \(\varvec{v}_{i,G + 1}\) is to follow the *DE*/*Best*/2/*bin* which incorporates four different random vectors plus the best solution of the current generation as:

$$\varvec{v}_{i,G + 1} = \varvec{x}_{best,G} + M_{F} \left( {\varvec{x}_{r1,G} + \varvec{x}_{r2,G} - \varvec{x}_{r3,G} - \varvec{x}_{r4,G} } \right)$$

(20)

In this work, Eq. (20) is employed for the mutation phase.

### Recombination

In the recombination phase trial vector \(u_{j,i,G + 1}\) is generated which gets updated by the donor vector having probability *C*
_{
R
}.

$$u_{j,i,G + 1} = \left\{ {\begin{array}{*{20}l} {v_{j,i,G + 1} } \hfill &\quad {if\;rand_{j,i} \le C_{R} \;or\;j = I_{rand} } \hfill \\ {x_{j,i,G} } \hfill & \quad {if\;rand_{j,i} > C_{R} \;and\;j \ne I_{rand} } \hfill \\ \end{array} } \right.$$

(21)

Here, *rand*
_{
i,j
} is a random number within the range [0, 1] and *I*
_{
rand
} is a random integer chosen from \([1,2,\ldots,D]\).

### Selection

In the selection phase a comparison is made between the target vector and trial vector and the ones with the best value is selected and forwarded to the next generation.

$$\varvec{x}_{i,G + 1} = \left\{ {\begin{array}{*{20}l} {\varvec{u}_{i,G + 1} } \hfill &\quad {if\;J(\varvec{u}_{i,G + 1} ) \le J(\varvec{x}_{i,G} )} \hfill \\ {\varvec{x}_{i,G} } \hfill &\quad {otherwise} \hfill \\ \end{array} } \right.$$

(22)

The mutation, recombination and selection phases continue until a pre-specified stopping criterion is fulfilled. The overall working procedure of the DE algorithm is presented in the flowchart of Fig. 6.

### Objective function

The small signal control of SOFC is initially formulated as a dual-objective optimization problem which is then converted into a single objective function with the help of weighting factor, *w*. DE is employed to minimize the single-objective fitness function which is made up of the eigenvalues of the closed loop system matrix. The closed loop system matrix is again dependent on the PI controller gains as discussed later. The objectives are defined as:

$$\begin{aligned} J_{1} & = \sum\limits_{i = 1}^{n} {\left( {\sigma_{i} - \sigma_{0} } \right)^{2} } \\ J_{2} & = \sum\limits_{i = 1}^{n} {\left( {\zeta_{0} - \zeta_{i} } \right)^{2} } \\ J & = (J_{1} + w*J_{2} ) \\ \end{aligned}$$

(23)

Here, \(\sigma_{i}\) is the real part of the *i*th eigenvalues, \(\sigma_{0}\) is the desired value of the real part of the eigenvalues, \(\zeta_{i}\) and \(\zeta_{0}\) are the actual and desired values of the damping ratios respectively and *w* is the weighting factor which is taken as 0.1 in this work. Optimization of *J*
_{1} will ensure that the real parts of the eigenvalues are lying near the desired location and that of *J*
_{2} will make sure that sufficient damping has been injected to the system dynamics. So, minimization of *J* will ensure that both *J*
_{1} and *J*
_{2} objectives are fulfilled simultaneously and an optimized set of controller gains is obtained.

### Reference generation

The change in the reference value of the SOFC current should yield a change in the reference values of the controllable variables, i.e., partial pressures of hydrogen and oxygen. If the left hand sides of Eqs. (9–10) are equated to zero, the resulting steady state relationships in linearized form are obtained as:

$$\Delta P_{{h_{2} r}} = - \frac{{ 2K_{r} }}{{K_{{h_{2} }} }}\Delta I_{fcref}$$

(24)

$$\Delta P_{{O_{2} r}} = - \frac{{ K_{r} }}{{K_{{O_{2} }} }}\Delta I_{fcref}$$

(25)

Thus a direct link has been established between the reference values of the cell current and partial pressures.

### Controller configuration and the closed loop system

Once the controllers are incorporated into the system it turns out into a closed loop system which are depicted in Fig. 5. With the introduction of these PI controllers two new state variables are generated as follows:

$$\Delta \dot{n}_{{h_{2} }}^{in} = H_{y1} \Delta P_{{h_{2} }} + H_{y2} \Delta T + H_{y3} \Delta I_{fc} + H_{y4} \Delta n_{{h_{2} }}^{in}$$

(26)

$$\Delta \dot{n}_{{O_{2} }}^{in} = O_{x1} \Delta P_{{O_{2} }} + O_{x2} \Delta T + O_{x3} \Delta I_{fc} + O_{x4} \Delta n_{{O_{2} }}^{in}$$

(27)

Detail expressions of the linearizing constants \(H_{y1}\), \(H_{y2}\), \(H_{y3}\), \(H_{y4}\), \(O_{x1}\), \(O_{x2}\), \(O_{x3}\) and \(O_{x4}\) are listed in the “Appendix” which show that these constants are function of controller gains. The closed loop system in linearized form can be represented as:

$$\Delta \varvec{\dot{\bar{x}}} = A_{sys} \Delta \bar{\varvec{x}} + B_{sys} \Delta I_{fcref}$$

(28)

The matrices *A*
_{
sys
} and *B*
_{
sys
} are given as:

$$\begin{aligned} A_{sys} & = \left[ {\begin{array}{*{20}c} {\frac{{ - T^{0} }}{{T_{0} \tau_{{H_{2} }}^{0} }}} & 0 & 0 & { - \frac{{\left( {K_{{h_{2} }} P_{{h_{2} }}^{0} - n_{{h_{2} }}^{in0} + 2I_{fc}^{0} K_{r} } \right)}}{{K_{{h_{2} }} T_{0} \tau_{{H_{2} }}^{0} }}} & { - \frac{{2K_{r} T^{0} }}{{K_{{h_{2} }} T_{0} \tau_{{H_{2} }}^{0} }}} & {\frac{{T^{0} }}{{T_{0} K_{{h_{2} }} \tau_{{H_{2} }}^{0} }}} & 0 \\ 0 & {\frac{{ - T^{0} }}{{T_{0} \tau_{{O_{2} }}^{0} }}} & 0 & { - \frac{{\left( {K_{{O_{2} }} P_{{O_{2} }}^{0} - n_{{O_{2} }}^{in0} + I_{fc}^{0} K_{r} } \right)}}{{K_{{O_{2} }} T_{0} \tau_{{O_{2} }}^{0} }}} & { - \frac{{K_{r} T^{0} }}{{K_{{O_{2} }} T_{0} \tau_{{O_{2} }}^{0} }}} & 0 & {\frac{{T^{0} }}{{T_{0} K_{{O_{2} }} \tau_{{O_{2} }}^{0} }}} \\ 0 & 0 & {\frac{{ - T^{0} }}{{T_{0} \tau_{{h_{2} O}}^{0} }}} & { - \frac{{\left( {K_{{h_{2} O}} P_{{h_{2} O}}^{0} - 2I_{fc}^{0} K_{r} } \right)}}{{K_{{h_{2} O}} T_{0} \tau_{{h_{2} O}}^{0} }}} & {\frac{{2K_{r} T^{0} }}{{K_{{h_{2} O}} T_{0} \tau_{{h_{2} O}}^{0} }}} & 0 & 0 \\ {T_{ph} } & {T_{po} } & {T_{pw} } & {T_{pt} } & {T_{pi} } & {T_{pnh} } & {T_{pno} } \\ 0 & 0 & 0 & 0 & {\frac{{ - 1}}{{T_{el} }}} & 0 & 0 \\ {H_{y1} } & 0 & 0 & {H_{y2} } & {H_{y3} } & {H_{y4} } & 0 \\ 0 & {O_{x1} } & 0 & {O_{x2} } & {O_{x3} } & 0 & {O_{x4} } \\ \end{array} } \right] \\ B_{sys} & = \left[ {\begin{array}{*{20}c} 0 & 0 & 0 & 0 & {\frac{1}{{T_{el} }}} & {\frac{{2K_{r} K_{ihy} }}{{K_{{h_{2} }} }}} & {\frac{{K_{r} K_{iox} }}{{K_{{O_{2} }} }}} \\ \end{array} } \right]^{T} \\ \end{aligned}$$

As the system eigenvalues now become dependent on the PI controller gains, any change in the numerical values of these gains will modify the closed loop eigenvalues. So, there is every possibility that for a certain set of controller gains the closed loop eigenvalues as well as the system small signal dynamic response will give optimal response.