I manage the mutation coefficient F for adaptive differential evolution.

Population constructs an instance of me with an initial value (or range of values) for F, the crossover probability CR, and the population size Np.

If you want the lower bound of F to be the critical value for my CR and Np, set it to zero, like this: (0, 1). I will not run in adaptive mode in that case, ignoring the keyword setting.

ParametersadaptiveSet True to use adaptive mode. My attribute scale is the amount to scale F down by with each call to down. A single F value will shrink slower than the lower end of a uniform random variate range.
Instance Variable limited Gets set True when a call to down failed to reduce F anymore, and gets reset to False if and when up gets called thereafter.
Method __init__ FManager(F, CR, Np, adaptive=False)
Method __repr__ My string representation is just my F value or range.
Method lowest 0 Property: The lower bound or sole value of F.
Method lowest Property setter for the lower bound or sole value of F.
Method highest 0 Property: The upper bound or sole value of F.
Method highest Property setter for the upper bound or sole value of F.
Method get Returns F if it is a single coefficient, or a uniform variate in U(F[0], F[1]) otherwise.
Method down Adapts F downward. Call this when none of your challengers are winning their tournaments.
Method up Adapt F upward. Call this when at least one of your challengers has won its tournament.
limited =
Gets set True when a call to down failed to reduce F anymore, and gets reset to False if and when up gets called thereafter.
def __init__(self, F, CR, Np, adaptive=False):

FManager(F, CR, Np, adaptive=False)

def __repr__(self):

My string representation is just my F value or range.

@property
def lowest 0(self):

Property: The lower bound or sole value of F.

@lowest.setter
def lowest(self, value):

Property setter for the lower bound or sole value of F.

@property
def highest 0(self):

Property: The upper bound or sole value of F.

@highest.setter
def highest(self, value):

Property setter for the upper bound or sole value of F.

def get(self):

Returns F if it is a single coefficient, or a uniform variate in U(F[0], F[1]) otherwise.

If I am running in adaptive mode, returns the adapted value of F. Otherwise, always returns the original value you provided to my constructor and the adapting is done just to determine if my (hidden) F value has reached its lower limit.

def down(self):

Adapts F downward. Call this when none of your challengers are winning their tournaments.

If F is a range for uniform variates, the lower limit is what is adjusted downward. If the lower limit reaches the critical value, then the upper limit begins to adjust downward as well, keeping it above the lower limit.

The critical value was defined by Zaharie, as described in Das and Suganthan, "Differential Evolution: A Survey of the State-of-the-Art," IEEE Transactions on Evolutionary Computation, Vol. 15, No. 1, Feb. 2011.

def up(self):

Adapt F upward. Call this when at least one of your challengers has won its tournament.

If F is a range for uniform variates, the lower limit is what is adjusted upward, and the upper limit is returned to its original value.

API Documentation for ade, generated by pydoctor at 2022-11-17 13:13:22.