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 [24].

The stochastic ranking is proposed as follows:

a7f9da0fd55e4beaac66b0c50708bb1a

Together will 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.9999636  0.99979318 0.9999096  0.99993688 0.99983798 0.99980735
 0.99984689 0.9998614  0.99911544 2.99950279 2.99939546 2.99834092
 0.99869988]
F = [-14.99242467]
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)

Stochastic Ranking Evolutionary Strategy (SRES)

Parameters
PF: float

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