1. A search method for optimizing an objective function, wherein the objective function assesses the quality of a candidate solution, said method comprising: selecting one or more variables of an objective function as pivot variables; generating a template upper bound function from the objective function, wherein the pivot variables are held fixed; looping over all combinations of candidate values of the pivot variables and searching one or more candidate solutions using the template upper bound function, wherein instances of the pivot variables in the template upper bound function are substituted with a combination for each iteration; and, selecting one or more best solutions from search results.