Iterated Chaining

Iterated Chaining

This method involves the use of a Chaining procedure inspired by Nevergrad .Where you initialize the final solution vector of one algorithm, as the initial population of the other algorithm and continue this procedure for a number of times. Thus, any algorithm can be “Chained” together. One of the disadvantages of chaining is that cost can easily diverge, and thus we have introduced an Early Stopping mechanism similar to those in Deep Learning libraries such as Keras/Tensorflow or PyTorch.

Use tolerance and n_obs parameters to control the Early Stopping.

Parameters

tolerance:int Tolerance value is for how much we can tolerate a divergence in our loss/cost value. The higher the tolerance the more we tolerate essentially ,vice-versa.

n_obs:int N_obs is used for calculating the average costs over the given number of observations.

rounds:int We refer to the iterations of Iterated Chaining as rounds, so as to prevent confusion with respect to the iterations parameter of the algorithm_1/2 local searches running inside it.

def run(self,algorithm_1, algorithm_2)

algorithm_1 Algorithm 1 here is the initial algorithm that can be passed here from the fliscopt algorithm implementations. Think of it as a WEAK algorithm. This algorithm passes it’s calculated solution to algorithm_2. Thus, a weak algorithm is better since it can provide more diversity artificially. algorithm_2 Algorithm 2 here is the initial algorithm that can be passed here from the fliscopt algorithm implementations. Think of it as a relatively STRONG algorithm. A Strong algorithm refers to an algorithm that is better than algorithm_1 . We use a RS + Hill Climb combination in our experiments.

The main idea is that combining such algorithms can often result in a cost which is less than that of it’s two constituents.


© 2022 Fliscopt

Powered by Hydejack v8.5.1