Basically, GlobalSearch takes a problem you've defined, which consists of an objective function and a solver, then repeatedly runs the solver on a larger number of points. Suppose your solver is called solver (it could be fmincon or fminsearch or whatever):
- It starts with a starting point you seed, called x0 and runs the solver.
- It looks to see how far the solver moved from x0 to find the end point; this creates a "basin" in which the solution it found should "attract" starting points. Basically, points inside this basin should move to the end point it founds. This first run determines the guess for the basin size.
- It then generates a bunch of test points, randomly around the solution space, then uses the basin size it found earlier to make a basin. It also assigns to all the points a "score" based on the objective function and constraints.
- It then iteratively runs trial points outside the basins to try and basically block out all of the solution space into a series of basins with an optimal point in them. It also adjusts the basin size at this point, if necessary.
- Imagine picking points in the space, then seeing where the solver goes and drawing a circle about that distance from the solution. Do this over and over again under your whole space is filled with circles.
The "solution" it finds is basically the best point in the best basin at the end of the day.