multisolve

Solve an OPTI optimization problem using a simple multi-start algorithm (beta functionality - to be upgraded)

Syntax

x = multisolve(optiObj)

x = multisolve(optiObj,x0)

x = multisolve(optiObj,x0,divisions)

x = multisolve(optiObj,x0,divisions,penalty)

x = multisolve(optiObj,x0,divisions,penalty,solveAll)

[x,fval,exitflag,info] = solve(optiObj,x0)

Description

x = multisolve(optiObj) solves the optimization problem specified by the OPTI object optiObj using a multi-start algorithm and returns the solution x. See below for a description of the algorithm.

x = multisolve(optiObj,x0) tells the multi-start algorithm to automatically search and solve multiple points around x0 for improved solutions.

x = multisolve(optiObj,x0,divisions) [divisions is a scalar] specifies the number of divisions each variable is searched within Phase 1. The default will attempt to search around 100 points, but this value will increase rapidly on higher dimensional problems. For an ND problem, a division of 10 will result in 10^N search points in Phase 1. The more points may help find a solution, but will significantly increase search time.

x = multisolve(optiObj,x0,divisions) [divisions is a vector] the first element is a the divisions for Phase 1, and the second element the divisions for Phase 2. See above for a description.

x = multisolve(optiObj,x0,divisions,penalty)specifies the penalty factor applied to constraint violations. The default is 1e4. Larger values will be required for objective functions that exceed this value.

x = multisolve(optiObj,x0,divisions,penalty,solveAll)specifies at each search point an optimization is also performed. Significantly longer to execute, but covers the search area quite comprehensively (aka exhaustively...).

[x,fval,exitflag,info] = multisolve(optiObj,x0) also returns the objective function value at the solution, an exitflag indicating the solver's reason for returning, as well as an information structure, described below.

Return Arguments

See the solve page for a description of the return arguments.

Multi-Start Algorithm

The multi-start algorithm is a naive implementation which basically divides the problem search space into regions, then exhaustively searches it for a number of best points (Phase 1). From these points it sub-divides up the region further, and searches again for a number of best points (Phase 2). A number of optimization runs are also solved at a selection of points, and the best solution returned. A couple of heuristics are used to improve the chance of finding the solution, however the algorithm is very basic. For a graphical description, see the example plots on the multiplot page.

Basically sits as a template structure for a student interested in writing a rigorous multi-start solver! Contact me if you are interested in this project.