Download KNITRO User`s Manual

Transcript
KNITRO Documentation, Release 9.1
The number of start points tried by multi-start is specified with the option ms_maxsolves. By default, KNITRO
will try min(200, 10*n), where n is the number of variables in the problem. Users may override the default by setting
ms_maxsolves to a specific value.
The ms_maxbndrange option applies to variables unbounded in at least one direction (i.e., the upper or lower
bound, or both, is infinite) and keeps new start points within a total range equal to the value of ms_maxbndrange.
The ms_startptrange option applies to all variables and keeps new start points within a total range equal
to the value of ms_startptrange, overruling ms_maxbndrange if it is a tighter bound. In general, use
ms_startptrange to limit the multi-start search only if the initial start point supplied by the user is known to
be the center of a desired search area. Use ms_maxbndrange as a surrogate bound to limit the multi-start search
when a variable is unbounded.
The ms_num_to_save option allows a specific number of distinct feasible points to be saved in a file named
KNITRO_mspoints.log. Each point results from a KNITRO solve from a different starting point, and must
satisfy the absolute and relative feasibility tolerances. Different start points may return the same feasible point, and the
file contains only distinct points. The option ms_savetol determines that two points are distinct if their objectives
or any solution components (including Lagrange multipliers) are separated by more than the value of ms_savetol
using a relative tolerance test. More specifically, two values x and y are considered distinct if:
|x − y| ≥ max(1, |x|, |y|) ∗ ms_savetol.
The file stores points in order from best objective to worst. If objectives are the same (as defined by ms_savetol),
then points are ordered from smallest feasibility error to largest. The file can be read manually, but conforms to a fixed
property/value format for machine reading.
Instead of using multi-start to search for a global solution, a user may want to use multi-start as a mechanism for
finding any locally optimal or feasible solution estimate of a nonconvex problem and terminate as soon as one such
point is found. The ms_terminate option, provides the user more control over when to terminate the multi-start
procedure.
If ms_terminate = optimal the multi-start procedure will stop as soon as the first locally optimal solution is found
or after ms_maxsolves – whichever comes first. If ms_terminate = feasible the multi-start procedure will
instead stop as soon as the first feasible solution estimate is found or after ms_maxsolves – whichever comes first.
If ms_terminate = maxsolves, it will only terminate after ms_maxsolves.
The option ms_seed can be used to change the seed used to generate the random initial points for multistart.
2.4.5 Multistart callbacks
The multistart procedure provides two callback utilities for the callable library API.
int
KNITRO_API KTR_set_ms_process_callback (KTR_context_ptr
KTR_callback * const
kc,
fnPtr);
int
KNITRO_API KTR_set_ms_initpt_callback (KTR_context_ptr
KTR_ms_initpt_callback * const
kc,
fnPtr);
The first callback can be used to perform some user task after each multistart solve and is set by calling
KTR_set_ms_process_callback(). You can use the second callback to specify your own initial points for
multistart instead of using the randomly generated KNITRO initial points. This callback function can be set through
the function KTR_set_ms_initpt_callback().
See the KNITRO API section in the Reference Manual for details on setting these callback functions and the prototypes
for these callback functions.
2.4. Multistart
41