SRES: Stochastic Ranking Evolutionary Strategy#
Many different constraint 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 [18].
The stochastic ranking is proposed as follows:

Together with the effective evolutionary strategy search algorithm, this provides a powerful method to optimize constrained problems.
[1]:
from pymoo.algorithms.soo.nonconvex.sres import SRES
from pymoo.problems import get_problem
from pymoo.optimize import minimize
problem = get_problem("g1")
algorithm = SRES(n_offsprings=200, rule=1.0 / 7.0, gamma=0.85, alpha=0.2)
res = minimize(problem,
algorithm,
("n_gen", 200),
seed=1,
verbose=False)
print("Best solution found: \nX = %s\nF = %s\nCV = %s" % (res.X, res.F, res.CV))
Best solution found:
X = [0.99997468 0.99997319 0.99987926 0.99997708 0.99907074 0.99951752
0.9993391 0.99993842 0.99990203 2.99798795 2.99785281 2.99928644
0.99962097]
F = [-14.99153712]
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.
API#
- class pymoo.algorithms.soo.nonconvex.sres.SRES(self, PF=0.45, **kwargs)[source]
Stochastic Ranking Evolutionary Strategy (SRES)
- Parameters:
- PF: float
The stochastic ranking weight for choosing a random decision while doing the modified bubble sort.