SRES: Stochastic Ranking Evolutionary Strategy

Many different constrained handling methods have been proposed in the past. One way of addressing constraints in evolutionary strategy is to change the selection operator and give infeasible solutions a chance to survive. The survival is based on stochastic ranking, and thus the method is known as Stochastic Ranking Evolutionary Strategy [20].

The stochastic ranking is proposed as follows:


Together will the effective evolutionary strategy search algorithm, this provides a powerful method to optimize constrained problems.

from pymoo.algorithms.soo.nonconvex.sres import SRES
from pymoo.factory import get_problem
from pymoo.optimize import minimize

problem = get_problem("g01")

algorithm = SRES(n_offsprings=200, rule=1.0 / 7.0, gamma=0.85, alpha=0.2)

res = minimize(problem,
               ("n_gen", 200),

print("Best solution found: \nX = %s\nF = %s\nCV = %s" % (res.X, res.F, res.CV))
Best solution found:
X = [0.99995553 0.99988099 0.99985606 0.99997611 0.99991687 0.99954272
 0.99973107 0.99983691 0.99996852 2.99983999 2.99860277 2.99892966
F = [-14.99386859]
CV = [0.]

An improved version of SRES, called ISRES, has been proposed to deal with dependent variables. The dependence has been addressed by using the differential between individuals as an alternative mutation.


class pymoo.algorithms.soo.nonconvex.sres.SRES(self, PF=0.45, **kwargs)

Stochastic Ranking Evolutionary Strategy (SRES)

PF: float

The stochastic ranking weight for choosing a random decision while doing the modified bubble sort.