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.99999552 0.99995705 0.99995392 0.99988342 0.99990366 0.99983088
0.99988264 0.99975641 0.99968556 2.999569 2.99942706 2.9989723
0.9999679 ]
F = [-14.99594502]
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 – The stochastic ranking weight for bubble sort decisions.
**kwargs – Additional strategy parameters.