A simple n-dimensional random search algorithm.
The Random search algorithm was the first method that based its optimization strategy on a stochastic process.
Only one solution
is kept during the evolution process. In each iteration, the solution
is modified by adding a random vector
. In this way the new solution is modeled under the following expression:
Considering that the solution
has d dimensions
, each coordinate is modified
by the random disturbance
modeled by a
Gaussian probability distribution defined as:
where
and
, represent the standard deviation and the mean value,
respectively for dimension i. Since the value of
adds a modification around
, the mean value is considered zero
.
Once
has been calculated, it is tested whether the new position improves the quality of the previous solution
.
In this way, if the quality of
is better than
, the value of
is accepted as the new solution, otherwise
remains unchanged.
To install this library from GitHub run the following commands in the terminal:
$ git clone https://github.com/angelgaspar/randomsearch.git
$ cd randomsearch
$ python setup.py install
If you have pip installed run the following commands in the terminal:
$ pip install randomsearch
This is an usage example:
import randomsearch as rs
def your_function(x):
return -(x[0] ** 2 + x[1] ** 2) + 4
a, b = rs.optimize(function=your_function, dimensions=2, lower_boundary=[-14, -14], upper_boundary= [10, 10], max_iter=10000, maximize=True)
print(a, ",", b)Note: The optimize function returns the best fitness and the best solution.
If you want to minimize a function maximize should be False.

