In certain optimization problems it may be desirable to break up the optimization into an iterative sequence of two steps:in STEP1 the function is optimized with respect to a subset consisting of NP1 (.LT. NP) variables, holding the remaining NP - NP1 con- stant, and in STEP2 the function is optimized with respect to a second subset of NP2 variables, holding the first subset of NP - NP1 variables constant. NP1 + NP2 may be less than NP or equal to NP. In the former case, the variables designated by the last NP-NP1-NP2 entries in the IPRM array (see below) are not altered in either optimization. After the initial STEP1, the values of the variables to be held constant in any step are set to their values obtained by optimizing with respect to them in the previous step. In order to be able to take advantage of this method, the user should be familiar with Section 1.9. Warning: In general, convergence cannot be guaranteed in algorithms of this type. See M.J.D. Powell, On Search Directions for Minimization Algorithms, Mathematical Programming, 11 (1973), 193-201.

1. In the MAIN program, the user should include the following statements:

      NP1 = Number of variables in STEP1
      NP2 = Number of variables in STEP2
      IPRM(1) =
        . . .
      IPRM(NP) =
C IPRM must contain the permutation of the original variables such that the
C first NP1 elements of IPRM represent the indices of variables
C for STEP1 optimization the next NP2 the variables for STEP2, with the
C last NP-NP1-NP2 to remain unaltered.If NP=5,NP1=3,NP2=2, and IPRM contains
C 1,5,4,2, 3, STEP1 will optimize with respect to X(1), X(5), and X(4) and
C STEP2 with respect to X(2) and X(3).
      X(1) =
        . . .
      X(NP) =
C or some other labelling

Notes: Unlike the case discussed in Section 1.9, the subroutine PRMCHK must not be called before calling SEQOPT. SEQOPT itself calls PRMCHK when needed. For explanation of the arguments of SEQOPT see 4 below.


SEQOPT permits the user to specify different algorithms for STEP1 and STEP2. Let S1 and S2 denote the storage requirements of the two algorithms referenced in the CALL SEQOPT statement. Then the storage requirement for using SEQOPT is NQ=i2 = 4*NP+MAX(S1,S2)

3. The user must include the subroutine PERM (See Section 1.9.2).

4. Arguments of SEQOPT

X = vector of variables
NP = number of variables
NP1 = number of variables in STEP1
NP2 = number of variables in STEP2
F = function value
METH1 = algorithm to be used in STEP1
METH2 = algorithm to be used in STEP2
ITERL1 = iteration limit in STEP1
ITERL2 = iteration limit in STEP2
ITERL3 = iteration limit for SEQOPT itself; i.e. the maximum number of times that the sequence "STEP1 followed by STEP2" will be executed
MAX = See Section 1
ACC1 = Accuracy desired in STEP1
ACC2 = Accuracy desired in STEP2
ACC3 = Accuracy desired for terminating sequential optimi- zation
IER = Termination flag. If provided within STEP1 or STEP2, see section for relevant algorithm. If provided by SEQOPT,then
IER = -17 Invalid permutation in STEP2
IER = -18 Invalid permutation in STEP1
IER = -19 Iteration limit for sequential optimization exceeded
IER = -20 Invalid ITERL3
IER = -21 No stopping criterion enabled for SEQOPT
IER = -22 Invalid NP1
FUNC = Function name

5. The use of the NVAR1 option (See Section 1.1) is unlikely to be sensible in SEQOPT. If the user sets NVAR1, convergence will be tested only on the first NVAR1 variables in both STEP1 and STEP2.

6. Additional options


JSTOP(1) = 0 to enable SEQOPT to stop when the step size from the previous STEP2 to the current STEP2 is less than ACC3 (relatively) for each variable.
JSTOP(1) = 1 to disable stopping criterion 1. Default = 0.
JSTOP(2) = 0 to enable SEQOPT to stop when the relative function improvement from the previous STEP2 to the current STEP2 is less than ACC3.
JSTOP(2) = 1 to disable stopping criterion 2. Default = 0. Thus SEQOPT itself may have a stopping criterion different from that used by the algorithms in STEP1 and STEP2.

Return to
|Sect. 13.2|Sect. 13.3|Beginning|