Initial Search 
Use the Userdefined Feasible Domain Bounds. Subdivide each domain of each variable into N subdivisions.
Then create an Mdimensional grid of the search space. This will generate N^M search points. It is
potentially a timeconsuming search, so use as few subdivisions as needed. The minimum subdivisions
would be 3, which would only test the Upper, Midpoint, and Lower bound. The number of subdivisions (preferred)
should be odd, so as to capture the midpoint in the seach (which should be the most probable best point).
The minimum practical subdivision would be 5. Note: Information on the feasible domain usually not predictable. One benefit of this process, is early detection of invalid portions of the process range. When modeling the Objective Process for Optimization, it is a good idea to generate a special "error" return value; then handle and store these invalid results in a way as to not jeopardize the entire search process. 
Sort the Results 
The grid of results should be sorted wrt a penalty function. Penalty functions generally do a poor job
of identifying the best answer, but with careful consideration, it can trim bad answers effectively. In
the sorting process, there are three levels of sorting, not to be done concurrently.

Shrink the Domain(s) 

Repeat the Search Process 
