# Control Parameters That Influence the Multistart Algorithm

Control parameters

The multistart module defines several parameters that influence the multistart algorithm. These parameters have a similar functionality as options of a solver, e.g., CPLEX. The most important parameters, with their default setting, are shown in this table.

Table 50 Control parameters in the multistart module

Parameter

Default

Range

Subsection

IterationLimit

5

{1,maxint}

Specifying an Iteration Limit

TimeLimit

0

{0,maxint}

Specifying a Time Limit

TimeLimitSingleSolve

0

{0,maxint}

Specifying a Time Limit

ThreadLimit

0

{0,maxint}

UseOpportunisticAlgorithm

0

{0,1}

Deterministic Versus Opportunistic

NumberOfBestSolutions

1

{1,1000}

Getting Multiple Solutions

ShrinkFactor

0.95

[0,1]

Shrinking the Clusters

UsePresolver

1

{0,1}

Combining Multistart and Presolver

UseInitialPoint

1

{0,1}

Using a Starting Point

UseConstraintConsensusMethod

0

{-1,1}

Improving the Sample Points

MaximalVariableBound

1000

[0,inf)

Unbounded Variables

ShowSolverProgress

0

{0,1}

Solver Progress

The parameters that are not self-explanatory are explained in this section; the last column in the table refers to the subsection that discusses the corresponding parameter.

## Specifying an Iteration Limit

Parameter IterationLimit

The parameter IterationLimit can be used to set a limit on the number of iterations used by the multistart algorithm. This limit is used in the basic algorithm and in the first phase of the dynamic algorithm.

## Specifying a Time Limit

Parameter TimeLimit

The parameter TimeLimit can be used to set a limit on the total elapsed time (in seconds) used by the multistart algorithm. The default value of 0 has a special meaning; in that case there is no time limit.

Parameter TimeLimitSingleSolve

It is also possible to set a time limit for every single solve started by the multistart algorithm by using the parameter TimeLimitSingleSolve. Also the default value of 0 of this parameter has a special meaning; in that case there is no time limit.

Parameter ThreadLimit

The parameter ThreadLimit controls the number of threads that should be used by the multistart algorithm. Each thread will be used to solve one NLP using an asynchronous solver session. At its default setting of 0, the algorithm will automatically use the maximum number of threads, which is limited by the number of cores on the machine and the amount of solver sessions allowed by the AIMMS license.

## Deterministic Versus Opportunistic

Parameter UseOpportunisticAlgorithm

By default the multistart algorithm runs in deterministic mode. Deterministic means that multiple runs with the same model using the same parameter settings and the same solver on the same computer will reproduce the same results. The number of NLP problems solved by the multistart algorithm will then also be the same. In contrast, opportunistic implies that the results, and the number of NLP problems solved, might be different. Usually the opportunistic mode provides better performance. The parameter UseOpportunisticAlgorithm can be used to switch to the opportunistic mode. Note that the multistart algorithm will always be deterministic if the algorithm uses only one thread.

## Getting Multiple Solutions

Parameter NumberOfBestSolutions

By default the multistart algorithm will return one solution, namely the best solution that the algorithm finds. By setting the parameter NumberOfBestSolutions to a value higher than 1, the multistart algorithm will store the best $$n$$ solutions found in the solution repository (see Managing the Solution Repository). Here $$n$$ denotes the value of this parameter.

## Shrinking the Clusters

Parameter ShrinkFactor

The clusters created by the multistart algorithm would normally grow as more and more points are assigned to the clusters. As a side effect, a new sample point is then more likely to be directly assigned to a cluster, in which case no NLP is solved for that sample point, thereby increasing the chance that it ends up in the wrong cluster. To overcome this problem, the multistart algorithm automatically shrinks all clusters after each iteration by a constant factor which is specified by the parameter ShrinkFactor.

## Combining Multistart and Presolver

Parameter UsePresolver

By default the multistart algorithm starts by applying the AIMMS Presolver to the NLP problem. By preprocessing the problem, the ranges of the variables might become smaller which has a positive effect on the multistart algorithm as then the randomly generated sample points are more likely to be good starting points. The parameter UsePresolver can be used to switch off the preprocessing step.

## Using a Starting Point

Parameter UseInitialPoint

Sometimes the level values, assigned to the variables before solving the NLP problem, provide a good starting point. By default the multistart algorithm will use this initial point as the first sample point but only in the first iteration. This behavior is controlled by the parameter UseInitialPoint.

## Improving the Sample Points

Parameter UseConstraintConsensusMethod

The sample points are randomly generated by using the intervals defined by the lower and upper bounds of the variables. Such a sample point is very likely to be infeasible with respect to the constraints. The constraint consensus method, which is described in [Chi04], tries to find an approximately feasible point for a sample point. Using this method might slow down the multistart algorithm but the chance of generating (almost) feasible sample points increases. The constraint consensus method can be activated by using the parameter UseConstraintConsensusMethod. If this parameter is set to 1 then the constraint consensus method will be used whenever possible, and if it is set to -1 then it will never be used. At its default value of 0, the algorithm automatically decides when to use the constraint consensus method.

## Unbounded Variables

Parameter MaximalVariableBound

A multistart algorithm requires that all variable bounds are finite. Therefore the multistart algorithm in AIMMS will use a fixed value for all infinite upper and lower variable bounds. This fixed value is specified by the parameter MaximalVariableBound. The value of this parameter might be updated automatically in case the dynamic algorithm is used.

## Solver Progress

Parameter ShowSolverProgress

By default the progress window will only show general progress information for the multistart algorithm, including the objective value, the number of iterations, the elapsed time, etc. By switching on the parameter ShowSolverProgress also progress information by the NLP solver will be displayed. If multiple solver sessions are (asynchronous) executing at the same time then only the progress information of one of them will be shown.