差分進化
もし、 r i < C R {\displaystyle r_{i}<CR} または i = R {\displaystyle i=R} であれば y i = a i + F × ( b i − c i ) {\displaystyle y_{i}=a_{i}+F\times (b_{i}-c_{i})} とし、そうでなければ y i = x i {\displaystyle y_{i}=x_{i}} とする。 (本質的には、更新位置は中間エージェント z = a + F × ( b − c ) {\displaystyle \mathbf {z} =\mathbf {a} +F\times (\mathbf {b} -\mathbf {c} )} とエージェント x {\displaystyle \mathbf {x} } のバイナリクロスオーバー(binary crossover) の出力である。 もし、 f ( y ) < f ( x ) {\displaystyle f(\mathbf {y} )<f(\mathbf {x} )} であればその位置のエージェントを更新された解に置換、すなわち x {\displaystyle \mathbf {x} } と y {\displaystyle \mathbf {y} } を入れ替える。
最も大きい適合度または最も小さい目的関数値を持つエージェントを集団から選び、それを最適解として返す。