SECTION A. FOLKLORE AND SUGGESTIONS

The following are suggestions on which method to choose for various problems.Since the performance of each of these methods varies significantly with the function to be optimized and with the starting points and accuracy given, in cases where the optimization is not prohibitively expensive and the results are very important (as opposed to a Monte Carlo study for example) it has been suggested that several methods be tried with a number of different starting points. For problems in which only one or two methods will be used, the following folklore may be useful. The default method of DFP is probably the best general purpose method for most problems (especially if analytic derivatives can be supplied by the user). Nevertheless, it tends to stop prematurely at times and is not as robust as GRADX. SSVM is in the same family and may beat DFP in many cases. If the function's analytic second derivatives are not too complicated or expensive, GRADX (with or without stretching) may be recommended. In either GRADX or DFP, stretching is recommended when the function evaluation is inexpensive (relative to eigenvalue calculations or several matrix products) or when the parameters are very symmetric (i.e. really a lower dimension problem than stated). Stretching should also be applied to all large dimensional problems (NP greater than 6 for GRADX or greater than 12 for DFP). When GRADX is used with symmetric numerical derivatives, it is advisable that some form of stretching should be used. When the function to be optimized is not at all approximately quadratic, POWELL or (for small dimensional problems, i.e. NP less than 15) NMSIMP should be used first to produce fairly good starting values, then, if possible, DFP or GRADX can be tried. GRADX, with analytic or numerical derivatives, will most likely be more expensive than DFP but may be able to converge to a better answer in very difficult problems. PATERN and RNSRCH are not usually the first choice for optimization but can be useful if the function is very flat and other methods do not work because of inaccurate numerical derivatives. The H matrix returned by DFP as an approximation to the inverse second derivatives is only reasonably accurate at best and will probably be of very little value when termination occurs in only a few iterations. When NP is less than 7 or 8 NMSIMP has proven to be rather successful and efficient in function evaluations. In constrained optimization GRADX tends to be less effective than DFP. GRADX may, in such cases, terminate with "BACKTRACK CYCLE EXCEEDED" more frequently than in unconstrained problems.

Note that it is useful to consider several tricks that may improve the behavior of the function to be optimized. First, if we wish to optimize f(x), it may be useful to replace it with

ef(x)

which preserves the signs of the derivatives of the original function.

Secondly, if the function to be minimized is nonnegative and very flat, it may be useful to replace it with a power of the original function; this will tend to reduce flatness. None of these devices are without hazards, but they are worth some consideration.

SECTION B. COMMON BLOCKS

Following is a list of all pertinent COMMON blocks and the section in which they are referenced.

COMMON BLOCK/NAME/CONTENTS                         SECTION 
COMMON/BARMA1/IP,IQ,IBJ,IT,IROOTS                  18.1
COMMON/BARMA2/Y                                    18.1
COMMON/BARMA3/YY                                   18.1
COMMON/BARMA4/EPSIL                                18.1
COMMON/BCLUST3/JCLI,JCLJ                           not for general users
COMMON/BDFP/STPMIN,FOPT                            3.1
COMMON/BFIDIF/FDFRAC,FDMIN                         2.1,3.1,9.1
COMMON/BGENALG2/NC,INITGEN,IPAIR,IMATE,KTERL,IMUTE,ITEST,IHOWMAN   16.3
COMMON/BGENALG3/XMUTE,ALPH1,BET1,BACC,PM4,SHRINK1,EXPAND           16.3
COMMON/BGENALG5/JNITGEN,JPAIR,JTERL,JTEST          17.3
COMMON/BGENALG6/YMUTE,BCC                          17.3
COMMON/BGEN1/IVAL								   not for general users
COMMON/BGENRAN1/PM4                                not for general users
COMMON/BGENRAN2/ALPHA3,BETA3,GAMMA3,EPS3,ETA3,DELTA3   16.4	
COMMON/BGLOB1/XL1,XH1                              16.1
COMMON/BGLOB2/IERCTL                               16.2
COMMON/BGRADX/JP,JBINV                             not for general users
COMMON/BGRDX1/NTRM,NBHHH,LBHHH,KBHHH               2.2
COMMON/BGRDX2/RTM,EIG,RTMULT                       2.1
COMMON/BGRDX3/ACTI,ACTW,ZFUL,BETM                  2.1
COMMON/BINPUT/INFLG                                3.2
COMMON/BLNSR/STEP1,STPACC,NLNSR                    2.1, 3.1, 4.1
COMMON/BNEL/STP1,VAR,KONVGE,NRST                   5.1
COMMON/BNLYSA/KEY1,TRUE,LABEL,KPARM,IREP           not for general users
COMMON/BNLYS1/NMETH,NPARMT,NEST,NCOMP,NOUT,MAXREP  not used currently
COMMON/BNLYS2/INLIST,NEWPAG,NLIST,CLIST            not used currently
COMMON/BNLYS3/IPARM,JREP,MLABEL,IMETH              not for general users
COMMON/BNLYS5/KREP,METH,LP,NSIZE,RE,FE,PROD,RLOG,REP,REPL,DF,BAR,DENOM not for gen'l use
COMMON/BNLYS6/FMT3(20),TITLE(20)                   not for general users
COMMON/BNLYS6/FMT3(20),TITLE(20)                   not for general users
COMMON/BNLYSA/KEY1,TRUE,LABEL,KPARM,IREP           not for general users
COMMON/BNOBS/NOBS                                  1.4
COMMON/BNORMPRB/PRIB                               not for general users
COMMON/BNWRP1/IVFLIM,INVLIM                        11.
COMMON/BNWRP2/EPCOR,EPSVRT                         11.
COMMON/BNWRP3/JNRP1,JNRP2,JNRP3                    11.
COMMON/BOPT/IVER,LT,IFP,ISP,NLOOP,IST,ILOOP        2.1, 3.1
COMMON/BOPT1/NPARS,JH,JFP,JFP1,JSP,JSP1,JA1,JS,JBHHH not for general use
COMMON/BOPT2/ACC,R,PM1,IVAL,ITERL,ITERC,MX,IER     not for general users
COMMON/BOPT3/JSMP,JF,JSPD                          not for general users
COMMON/BOPT5/PM2,JTHET,JPHI,JRAN,JSAVE,JMOV        not for general users
COMMON/BOPT6/DELTAZ,SDELTA,RHO                     7.
COMMON/BOPT7/ALPHA,BETA,OMEGA,EPSTIL,RH,DELTIL,SIGMA,BIGL,AKAPPA 8.1
COMMON/BOPT8/IV8,IV3                               8.1
COMMON/BOPT9/JX1,JD0,JD1,JTEMV,JG0,JG1,JV,JP,JQ,JSS not for general users
COMMON/BOUT1/IMODIF                                not for general users
COMMON/BPAT/STPSIZ,SHRINK                          6.1
COMMON/BPENLT/PM1,MXX,JN,NC3,NC4,ITERLC,NC         not for general users
COMMON/BPNLT1/SHRK,XL1,XL2,IVERS1                  1.10
COMMON/BPREC/RSMALL,ABSMAL                         not for general users
COMMON/BPRM/IPRM(np)                               1.9
COMMON/BPRM2/XPRM(np)                              1.9
COMMON/BPRINT/IPT,NFILE,NDIG,NPUNCH,JPT,MFILE      1.1
COMMON/BPROB/IPROB,JPROB                           10.
COMMON/BPROB2/KPROB                                not for general users
COMMON/BREAD/NREAD                                 1.1
COMMON/BSPD/ISPD                                   2.1
COMMON/BSSVM1/THETAA,PHII,SHRIP1,SHRIP2,EPSS       2.2,9.1
COMMON/BSTACK/AINT(i2)                             1.
COMMON/BSTAK/NQ,NTOP                               1.
COMMON/BSTOP/NVAR1,ISTOP(3)                        1.1
COMMON/BSTOP1/JSTOP(2)                             1.10
COMMON/BSTR/ST2,F2,ST3,F3,IEDGE                    not for general users
COMMON/BVAL/VAL                                    not for general users
COMMON/CDATA/PHI,PHIN                              not for general users
COMMON/CNSTS/PI,SQ2,SQ2PI,SQ2PIL                   not for general users
COMMON/CONST/RT2PI,RT2                             not for general users
COMMON/HERMIT/Q(12),Y(12)                          not for general users
COMMON/BHETRO/NDIM,N,K1,K2                         13.3
COMMON/MNCRL/B,XM,SI,CV                            not for general users 
COMMON/ROOT/RT2                                    not for general users
COMMON/USERP1/DATA(n,k)                            10.
COMMON/USERP2/NDIM,KDIM                            10.
COMMON/USERP3/ICJACK                               not for general users
COMMON/USERQ1/DATA(1)                              10.7
COMMON/USERQ2/IDATA(1)                             10.7
COMMON/USERQ3/N,K,NCAT                             10.7
COMMON/USER1/Q(1)                                  10.
COMMON/USER1/X1(1)                                 10.
COMMON/USER1/X2(1)                                 10.
COMMON/USSER0/Q(1)                                 10.
COMMON/USSER1/P(1)                                 10.
COMMON/USSER2/X1(1)                                10.
COMMON/USSER3/X2(1)                                10.
COMMON/USSER4/X3(1)                                10.
COMMON/USSER5/N,K1,K2,K3                           10. 

This is a simple sample program:

      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION A0(5)
      CHARACTER*8 ALABEL(5)
      COMMON/BSTACK/AINT(155)
      COMMON/BSTAK/NQ,NTOP
      COMMON/DATA/PI2
C This demonstrates how to pass data to the FUNC subroutine.
      COMMON/BOPT/IX,LT,IFP,ISP,NLOOP,IST,ILOOP
C This COMMON block card is needed only if some option is being used.
      EXTERNAL DFP,FUNC1
C
C Next statement for PC and workstation versions only
C
      CALL DFLT
      PI2=3.14159265D0**2
      NQ=155
      IST=0
C This demonstrates how to use one of the options. (a very useful one).
      NP = 5
      MX=2
      ITERL =150
      ACC=1.D-8
      DO I = 1,NP
      A0(I) = .5
      END DO
      CALL LABEL (ALABEL,5)
      CALL OPT(A0,NP,FU0,DFP,ITERL,MX,IER,ACC,FUNC1,ALABEL)
      CALL OPTOUT(0)
C This option is very useful.
      STOP
      END
      SUBROUTINE FUNC1(X0,NP,FU0,*)
      IMPLICIT REAL*8(A-H,O-Z)
      DIMENSION X0(5 )
      COMMON/DATA/PI2
      FU0=PI2
      DO I = 1,5
      FU0 = FU0 + X0(I)**2 + X0(I)**3 + X0(I)**4
      END DO
      RETURN
      END

SECTION C. MAINTENANCE OF GQOPT ---Not of interest to the general user

Description of COMMON blocks:

COMMON/BGENRAN2/ALPHA3,BETA3,GAMMA3,EPS3,ETA3,DELTA3
ALPHA3 = Used in generating points, between 0.0 and 1.0 (e.g.,0.02)
BETA3  = Used in generating points, between 0.0 and 1.0 (e.g., 0.5)
GAMMA3 = Used in generating points, between 0.0 and 1.0 (e.g., 0.1)
EPS3   = Expansion of search region factor (> 0.0) (e.g.,0.01)
ETA3   = Test for printing (> 0.0) (e.g., 0.003)
DELTA3 = Shrinkage factor for search region (< 0.5) (e.g., 0.1) 
COMMON/BGLOB1/XL1,XH1 
XL1 = Array of lower bounds for search
XH1 = Array of upper bounds for search 
COMMON/BGLOB2/IERCTL
IERCTL = Number of function errors permitted before termination in GLOB2 
COMMON/BNORMPRB/PRIB
PRIB = for internal communication of PROB in NORMPRB
COMMON/BNWRP1/IVFLIM,INVLIM
IVFLIM = limit on step shrinkages in NEWRAP
INVLIM = limit on Jacobian modifications in case of singularity 
COMMON/BNWRP2/EPCOR,EPSVRT
EPCOR = amount by which diagonal of singular Jacobian is modified
EPSVRT = matrix inversion accuracy 
COMMON/BSMLQ2/IG,NBEG,NEND,IAUTO,ISDIAG,IJAC 
IG = number of equations in system
NBEG = index of first observation to be used
NEND = index of last observation to be used
IAUTO = 0 if no autocorrelations of residuals are to be estimated 1 otherwise
ISDIAG = 0 if covariance matrix is not diagonal,1 if it is.If 2, user must set IQQ2
for covariance restrictions.
IJAC = 1 if the user provides the Jacobian array in SUBROUTINE SIMEQ3 and the
Jacobian does not vary with the observations,
IJAC =2 if the Jacobian does vary with the observations. 
COMMON/BSMLQ3/IQQ2(10,10)
IQQ2 = matrix to contain covariance matrix restrictions 
COMMON/BSMLQ4/MP 
MP = should be set to NP, the total number of parameters in the problem 
COMMON/BSTACK/A(1)
A = A double precision array for scratch (or dynamic) storage. It must be given sufficient space in users calling program to supply scratch storage for the method selected. 
COMMON/BSTAK/NQ,NTOP
NQ = The total storage avail in array A. i.e. dimension of A.
NTOP = Pointer to current top of storage being used. Thus first available scratch
location is NTOP+1. When more scratch space is required the value of NTOP must be
incremented to NTOP + additional storage. Note that scratch storage may be reserved
by any program (including the user's) at any time but, for efficiency, the storage
should be released (decrement NTOP) before returning from the program or package,
as the case may be. OPT saves the previous top of storage (LASTOP) and releases all
its storage by setting NTOP=LASTOP on exit.
COMMON/BOPT/IX,LT,IFP,ISP,NLOOP,IST,ILOOP
LT = 0 if analytic first partials were supplied.
LT = 1 otherwise (LT is set to 0 in the BLOCK DATA, but is changed to 1 during the
first use of numerical derivatives).
ILOOP = Number of times the method has looped on the current step.
When this reaches NLOOP an error will occur. 
COMMON/BOPT1/NPARS,JH,JFP,JFP1,JSP,JSP1,JA1,JS,JBHHH 
NPARS = ...
JH = Pointer to H matrix (if used). Output by OPTOUT(1).
JFP = Pointer to 1st derivatives (if used). Output by OPTOUT(3).
JFP1 = Pointer to alternate 1st derivatives (if used).
JSP = Pointer to 2nd derivatives (if used). Output by OPTOUT(2).
JSP1 = Pointer to inverse 2nd derivaties only when GRADX ends with IER greater than
0 (else a non-zero ALF has been added)
JA1 = Pointer to alternate X-vector (always used).
JS = Pointer to direction of linear search (if used). OPTOUT(5).
JBHHH = Pointer to derivatives if NBHHH procedure used. 
COMMON/BOPT2/ACC,R,PM1,IVAL,ITERL,ITERC,MX,IER
ACC = Accuracy requested by the user.
R = Current step size along the direction of search. Varies in importance with the method selected.
PM1 = 1 for maximum, -1 for minimum. Set by OPT.
IVAL = Number of function evaluations to date.
= Maximum iterations permitted by user before error.
ITERC = Current number of iterations taken.
MX = 1 for maximum, 2 for minimum.
IER = Error flag. If, while calculating analytic derivatives, the user wants to stop the optimization, he can set the error flag, IER (in COMMON BOPT2), to -2 while in FP or SP and the optimization routine will return with termination flag -2. 
COMMON/BOPT3/JSMP,JF,JSPD
JSMP = Pointer to simplex used by POWEL or NELMED. Output by OPTOUT(4).
JF = Pointer to function values associated with JSMP (NELMED).
JSPD = Pointer to diagonal of 2nd derivative approx. (DFP). Output by OPTOUT(6). 
COMMON/BOPT5/PM2,JTHET,JPHI,JRAN,JSAVE
PM2 = -1 for maximum, 1 for minimum
JTHET = Pointer to temporary storage for X-array
JPHI = Pointer to random trial point
JRAN = Pointer to random perturbation
JSAVE = Pointer to temporary save area
COMMON/BOPT9/JX1,JD0,JD1,JTEMV,JG0,JG1,JV,JP,JQ,JSS 
JX1 = Pointer to new X-vector
JD0 = Pointer to H-matrix
JD1 = Pointer to new H-matrix
JTEMV = Pointer to H*GRADIENT
JG0 = Pointer to gradient
JG1 = Pointer to new gradient
JV = Pointer to V-vector
JP = Pointer to step
JQ = Pointer to change in gradient
JSS = Pointer to search direction 
COMMON/BPENLT/PM1,MXX,JN,NC3,NC4,ITERLC,NC 
PM1 = 1 for maximum, -1 for minimum
MXX = 1 for maximum, 2 for minimum
JN = Pointer to constraint values
NC3 = Same as NC1
NC4 = Same as NC2
ITERLC = Counts CONOPT passes
NC = NC1 + NC2 
COMMON/BCLUST3/JCLI,JCLJ 
For internal communication in CLUSHIER
COMMON/BPREC/RSMALL,ABSMAL 
RSMALL = Relative precision of computer. Default = 1.D-14
ABSMAL = Absolute precision of computer. Default = 1.D-35
COMMON/BGRADX/JP,JBINV 
JP = Pointer to eigenvectors of 2nd derivative (GRADX).
JBINV = Pointer to ellipsoid of IVER = 2. (GRADX). 
COMMON/BREGR00/EPSTOL 
EPSTOL = The precision used in inverting X'X (Default = 1.D-15) 
COMMON/BSTR/ST2,F2,ST3,F3,IEDGE 
ST2 = Distance from A0 along del to 2nd point used by STR1.
F2 = Function value at 2nd point for STR1.
ST3 = Distance from A0 along del to 3rd point used by STR1.
F3 = Function value at 3rd point for STR1.
IEDGE = 1, if bracketing failed (see comment in STR) 0, otherwise 
COMMON/BPRINT/IPT,NFILE,NDIG,NPUNCH,JPT,MFILE
NDIG = 6, 7 or 8 for 6 elements per line in 1PD16.8 format. = 3, 4 or 5 for 8 elements per line in 1PD12.4 format. = 0, 1 or 2 for 10 elements per line in 1PD9.1 format.

NPUNCH = Device number for 'punched' output. Default is 9.
NFILE = Device number for output. Default is 8. 
COMMON/BOUT1/IMODIF
IMODIF = 1 if the covariance matrix is to be used by OPTOUT or OPTMOV. = 0 otherwise
COMMON/BVAL/VAL
VAL = The optimized value This is used to pass the value to OPTOUT and OPTMOV.
COMMON/BPRM2/XPRM(1) 
XPRM = The array used in function calls with permutation of variables. All calls use this array to insure that constrained variables remain unchanged. 
COMMON/CNSTS/PI,SQ2,SQ2PI,SQ2PIL 
PI = 3.14159265
SQ2 = squareroot of 2.0 SQ2PI = squareroot of 2.*PI
SQ2PIL = natural logarithm of SQ2PI 
COMMON/FNABSC1/CONFF 
CONFF = Confidence level in ZVAL 
COMMON/MNCRL/B,XM,SI,CV
For internal communication in MONCARL for the A, SIG, XMU, COV arrays
COMMON/USERP3/ICJACK
For internal communication in PROBJACK and LOGJACK

SECTION D. ERROR CODES

IER CONOPT  SEQOPT  GRADX   DFP      POWELL   NMSIMP   PATERN   RNSRCH   MUKAI 
- 1                 ITERL   ITERL    ITERL    ITERL    ITERL    ITERL    ITERL
- 2                 FP,SP   FP                                           FP
- 3                 INPUT   INPUT    INPUT    INPUT    INPUT    INPUT    INPUT
- 4                 SCRATCH SCRATCH  SCRATCH  SCRATCH  SCRATCH  SCRATCH  SCRATCH
- 5                 STRAY                                                STRAY
- 6                 R31
- 7                 BACKTRCK
- 8                 EIGENVAL
- 9                 FUNC    FUNC     FUNC     FUNC     FUNC     FUNC     FUNC
-10                                           RESTART
-11                                           SIMPLEX
-12                                           SIMPLEX
-13                 STOPCRI STOPCRI  STOPCRI  STOPCRI  STOPCRI           STOPCRI
-14                         H-MAT
-15                                                             STOPCRI
-16                                                                      GRAD'NT
-17         PERM
-18         PERM
-19         ITERLG
-20         ITERL3
-21         STOPCRI
-22         NP1
-23         NP
-24                                                                      GRAD'NT
-34 NC1,NC2
-35 ITERLG
-36 FUNC
-37 CONSTR
-42         LIN.SRCH

ERROR CODES CONTINUED

    PROBIT  TOBIT   LOGIT   SSVM     REGFAL    NEWRAP   INTEG   UTILITY  SIMEQ 
-1                                   ITERL     ITERL
-2                                                              SINGUL
-3                          INPUT    INPUT     INPUT    INPUT   INPUT
-4                                             SCRATCH
-9                          FUNC
-38 MORE THAN 1 SELECTED
-39                         LIN.SRCH
-40                         FUNC
-41                         PQ,DEN
-50 to -64                                                               INPUT
-65                                                                      PRMCHK
-66                                            JACOB                     JACOB
-67                                            SINGULR                   COVAR
-68                                            EQ.ERROR
-69                                            DIVERGE
-70                                                                      SIMEQ2
-71                                                                      COVAR
-72                                                                      AUTOCOR 

ERROR CODES CONTINUED

    REGRES   GLOB1    GLOB2    CONTING    ROMB   GENALG   MONCARL  NORMPRB
- 1                   ITERL
- 3                                       INPUT  INPUT             INPUT
- 5                                              STRAY
- 7                                                                BAD A&B
-10                                              FUNC 
-67 SINGUL                                                COVAR    COVAR
-73 COVAR
-74 Y-VAR
-80          FUNC
-81          FUNC
-82          FUNC
-83          FUNC
-84                   FUNC
-85                   FUNC
-86                   BOUNDS
-99                   INTERNL
-100                           EXP.FRQ.          FUNC
-101                           EXP.FRQ.          ITERL
-102                           FISHER
-103                           EXP.FRQ.
-104                                       NO CONV. 
    DETAILED ERROR MESSAGES

    A AND B DO NOT BRACKET SOLUTION

      Occurrence: NORMPRB
      Meaning:    The function values at the extreme points of
                  the initial search region have the same sign
      Remedy:     Increase the initial search region

    A MUST BE POSITIVE---QUITTING

      Occurrence: RANDVAR
      Meaning:    The A specified for the exponential density
                  is nonpositive
      Remedy:     Correct the input

    A AND B MUST BE POSITIVE

      Occurrence: RANDVAR
      Meaning:    The A or the B specified for the Pareto was
                  nonpositive
      Remedy:     Correct the input

    ASYMPTOTIC VARIANCES ARE NOT ALL POSITIVE--ERROR IN T-RATIOS

      Occurrence: GRADX,DFP
      Meaning:    Obvious
      Remedy:     Refine location of optimum. Compute derivatives
                  analytically.  Failing that, change values of FDFRAC
                  and FDMIN by factors of 10 upwards or downwards.

    AX ≥ BX---QUITTING

      Occurrence: BIVAR3
      Meaning:    Obvious
      Remedy:     Obvious

    BACKTRACK CYCLE EXCEEDED

      Occurrence: GRADX
      Meaning:    An apparent saddlepoint with repeated step-size shrink-
                  ages unable to find an improvement. Often an optimum
                  and mistakenly diagnosed as a saddlepoint due to in-
                  accurate derivatives.
      Remedy:     Use analytic derivatives. Failing that, alter FDFRAC
                  and FDMIN by factors of 10 upwards and downwards.

    BHHH PROCEDURE VALID ONLY FOR LIKELIHOOD MAXIMIXATION --- NBHHH RESET
       TO ZERO

      Occurrence: GRADX
      Meaning:    The user asked for the BHHH procedure in a minimization
                  problem.
      Remedy:     GRADX automatically resets NBHHH and no further action is
                  necessary.

    CONSTRAINED OPTIMIZATION TERMINATED

      Occurrence: CONOPT
      Meaning:    optimization encountered an error termination (other than
                  exceeding the iteration limit)
      Remedy:     Analyze why optimization failed

    CONSTRAINT ERROR AFTER CONOPT PASS

      Occurrence: CONOPT
      Meaning:    After normal return is made from optimization, the
                  constraints are evaluated. This evaluation failed.
      Remedy:     Should not happen normally.

    CONSTRAINT ERROR AT END OF CONSTRAINED OPTIMIZATION

      Occurrence: CONOPT
      Meaning:    After CONOPT termination (normal or abnormal) a con-
                  straint could not be evaluated
      Remedy:     Should not happen with a normal termination. With ab-
                  normal termination analyze cause of CONOPT failure.


    CONTINUAL STRAYING INTO FORBIDDEN REGION

      Occurrence: GRADX,MUKAI,GENALG
      Meaning:    Repeated attempts are made to take a step into a region where
                  the function is undefined
      Remedy:     Attempt optimization from alternative starting points
                  or in GENALG vary the run-time parameters

    COVARIANCE DET <= 0

      Occurrence: SIMEQ
      Meaning:    The determinant of the sample covariance matrix is
                  nonpositive
      Remedy:     Check the data. Possibly use a new starting point.

    COVARIANCE MATRIC IS NOT POSITIVE DEFINITE

      Occurrence: REGR
      Meaning:    Sigma-squared times X'X has some nonpositive elements
      Remedy:     Check the data in X

    COVARIANCE MATRIC NOT POSITIVE DEFINITE

      Occurrence: NORMPRB
      Meaning:    A bad covariance matrix was specified
      Remedy:     Correct the input

    COVARIANCE MATRIC IS NOT POSITIVE DEFINITE

      Occurrence: MONCARL
      Meaning:    A bad covariance matrix was specified
      Remedy:     Correct the input

    COVARIANCE MATRIX SINGULAR

      Occurrence: SIMEQ
      Meaning:    The sample covariance matrix could not be inverted
      Remedy:     Check the data. Possibly use a new starting point.
                  Check SIMUL2. Possibly use another matrix inversion
                  routine.

    DELX <= 0---QUITTING

      Occurrence: BIVAR3
      Meaning:    Obvious
      Remedy:     Obvious

    EIGENVALUES DID NOT CONVERGE

      Occurrence: GRADX
      Meaning:    Obvious
      Remedy:     Increase values of variables in COMMON/BPREC/RSMALL,ABSMAL

    EIGENVALUES NOT ALL POSITIVE

      Occurrence: NORMPRB, PRINCOMP
      Meaning:    A bad covariance matrix was specified
      Remedy:     Correct the input

    ERROR IN EVALUATING EQUATIONS

      Occurrence: NEWRAP
      Meaning:    An error occurred in evaluating G(X) in the Newton
                  Raphson algorithm
      Remedy:     Choose a different starting point or change IVFLIM,
                  INVLIM, EPCOR

    ERROR IN FINDING JACOBIAN

      Occurrence: NEWRAP
      Meaning:    Error occurred in finding the Jacobian
      Remedy:     Alter the values in COMMON/BFIDIF/FDFRAC,FDMIN
                  or try a new starting point.

    ERROR IN FUNCTION CLARK:COVARIANCE MATRIX NOT POSITIVE DEFINITE. CLARK=
      -999.0

      Occurrence: CLARK2
      Meaning:    The correlation R12 is greater than 1.0 in absolute value
      Remedy:     Correct the input value for R12

    ERROR IN FUNCTION DUTT2: COVARIANCE MATRIX NOT POSITIVE DEFINITE.DUTT2=
      -999.0

      Occurrence: DUTT2
      Meaning:    The correlation R12 is greater than 1.0 in absolute value
      Remedy:     Correct the input value for R12

    ERROR IN K1 or K2 or NP...EXECUTION TERMINATED

      Occurrence: DISEQ1, DISEQ3
      Meaning:    K1+K2+2 must be .GE. NP
      Remedy:     Check input parameters

    ERROR IN SIMPLEX SHRINKAGE

      Occurrence: NMSIMP
      Meaning:    Function error occurred in simplex shrinkage
      Remedy:     Attempt optimization from alternative starting points.

    ERROR RETURN FROM SIMUL2

      Occurrence: SIMEQ
      Meaning:    An error condition was detected in computing the
                  residuals and a RETURN 1 was executed
      Remedy:     Check data. Possibly try a new starting point.
    
	ESTIMATED COVARIANCE MATRIX IS NOT POSITIVE DEFINITE

      Occurrence: RECURS
      Meaning:    Self-explanatory
	  Remedy:     Check data input
	  
    EXCESSIVE R31 LOOPS

      Occurrence: GRADX
      Meaning:    The quadratic approximation to the function indicates
                  deterioration,despite repeated shortening of the step-
                  size.
      Remedy:     Use analytic derivatives. Failing that, alter FDFRAC
                  and FDMIN by factors of 10 upwards and downwards.

    EXPAND INVALID--RESET TO 0.1

      Occurrence: GENALG
      Meaning:    EXPAND was not strictly between 0 and 1; it has
                  been automatically reset to 0.1
      Remedy:     If you do not like 0.1, correct input error

    FAILURE OF GQOPT--T-RATIOS OR H MATRIX MAY BE UNRELIABLE

      Occurrence: GRADX,DFP
      Meaning:    Optimization failed
      Remedy:     Analyze causes of failure.

    FUNCTION CANNOT BE EVALUATED AT POINT PASSED

      Occurrence: GLOB1
      Meaning:    The point passed to GLOB1 causes a FUNC error
      Remedy:     Change the point passed to GLOB1

    FUNCTION ERROR AFTER CONOPT PASS

      Occurrence: CONOPT
      Meaning:    After normal return is made from optimization,the
                  function is evaluated. This evaluation failed.
      Remedy:     Should not happen normally.

    FUNCTION ERROR AFTER ILOOP SHRINKAGES

      Occurrence: SSVM
      Meaning:    The proposed step results in function errors after
                  repeated shrinkages of the step size.
      Remedy:     Use different starting points are change algorithms.

    FUNCTION ERROR AFTER RESETTING H-MATRIX

      Occurrence: SSVM
      Meaning:    If shrinkages do not help, SSVM resets the H-matrix
                  and thus tries a different direction. This attempt
                  has failed.
      Remedy:     Change starting points or algorithms.

    FUNCTION ERROR AT END OF CONSTRAINED OPTIMIZATION

      Occurrence: CONOPT
      Meaning:    After CONOPT termination (normal or abnormal) the
                  function could not be evaluated
      Remedy:     Should not happen with normal termination. With abnormal
                  termination analyze cause of CONOPT failure.

    FUNCTION ERROR IN FIRST FUNC CALL

      Occurrence: GRADX, DFP, POWELL,NMSIMP,PATERN,RNSRCH,MUKAI,SSVM
      Meaning:    The very first call to FUNC resulted in an error return
      Remedy:     Attempt optimization from alternative starting points.

    FUNCTION ERROR IN FIRST CALL OF FUNC IN SEQOPT

      Occurrence: SEQOPT
      Meaning:     The very first call to FUNC caused an error return.
      Remedy:      Attempt optimization from alternative starting points.

    FUNCTION ERROR IN NIPOP GENERATION

      Occurrence: GENALG
      Meaning:    Some function evaluations in generating the
                  initial population failed.
      Remedy:     Check the function subroutine

    FUNCTION ERROR IN FP OR SP

      Occurrence: GRADX,DFP,SSVM
      Meaning:    The attempt to evaluate derivatives resulted in an
                  error return -- must be on or near the boundary of
                  the search space.
      Remedy:     Attempt optimization from alternative starting points.
                  If using numerically evaluated derivatives, replace
                  them with analytic derivatives.

    FUNCTION ERROR IN SEARCH

      Occurrence: GLOB1
      Meaning:    A FUNC error occurred in the search
      Remedy:     Change the bounds of the search region

    FUNCTION ERROR ON FIRST CALL

      Occurrence: GLOB2
      Meaning:    The first call to FUNC caused a function error
      Remedy:     Change the point passed to GLOB2

    GRADIENT INACCURATE---DOES NOT POINT UPHILL

      Occurrence: MUKAI
      Meaning:    After repeated shrinkages of step, the function does
                  not improve in the direction of the gradient
      Remedy:     Use analytic derivatives.

    HIGH ORDER COEFFICIENT IS ZERO

      Occurrence: PROOTS
      Meaning:    You are trying to find the roots of an nth order
                  polynomial, but the coefficient of x**n is zero
      Remedy:     Check you data

    IF ONLY 2 CATEGORIES, USE PROBIT

      Occurrence: POLYCHO
      Meaning:    For polychotomous response you should have at least
                  3 categories
      Remedy:     Check input or use probit

    ILLEGAL INPUT FOR ALPH1 OR BET1

      Occurrence: GENALG
      Meaning:    Must have 0<BET1<1 and 0<ALPH1<=1
      Remedy:     Fix input error

    ILLEGAL INPUT FOR NP,NIPOP,NGOOD,NC, OR INITGEN

      Occurrence: GENALG
      Meaning:    NP<=1 or NIPOP<=1 or NGOOD<=1 or NC<1 or
                  INITGEN<1 or INITGEN>4
      Remedy:     Correct input

    ILLEGAL INPUT FOR NP,NIPOP,NGOOD
	
      Occurrence: GENALG
      Meaning:    NIPOP must be > NPOP + NGOOD and NPOP must be
                  > NGOOD
      Remedy:     Fix input error

    ILLEGAL INPUT FOR XL OR XH
	
      Occurrence: GENALG
      Meaning:    An XL value is >= than the corresponding XH value
      Remedy:     Fix input error

    ILLEGAL INPUT PARAMETERS TO OPTMOV

      Occurrence: OPTMOV
      Meaning:    N must be between 0 and 7 and NSIZE must be positive
      Remedy:     Fix value of N or NSIZE.

    ILLEGAL MUTATION RATE

      Occurrrence: GENALG
      Meaning:     XMUTE must be <=0 and <=0.5
      Remedy:      Fix input error

    ILLEGAL N-VALUE

      Occurrence: SHPWLK, TAUK
      Meaning:    N<2 or N>50  for SHPWLK or N<3 or N>2000 for
                  TAUK
      Remedy:     Reset N

    INITIAL SIMPLEX COULD NOT BE BUILT WITH 10 REDUCTIONS OF STEP SIZE

      Occurrence: NMSIMP
      Meaning:    Function errors occurred in attempt to construct
                  initial simplex
      Remedy:     Attempt optimization from alternative starting points.

    INPUT ERROR

      Occurrence: NORMPRB
      Meaning:    ANSL is >= ANSH or NDIM > 20
      Remedy:     Correct the input

    INPUT ERROR---CHECKEPCOR,ACC,ITERL,EPSVRT,IVFLIM,INVLIM 

      Occurrence: Numerous routines
      Meaning:    Invalid parameter(s) passed
      Remedy:     Correct erroneous parameter(s)

    INSUFFICIENT DEGREES OF FREEDOM

      Occurrence: ARMAPQ
      Meaning:    IQ+IP+1 is >= IT-IP
      Remedy:     Check data input

    INSUFFICIENT STORAGE FOR T-RATIO. REQUEST IGNORED

      Occurrence: GRADX,DFP,SSVM
      Meaning:    T-ratios require an extra NP*NP locations in the AINT
                  array
      Remedy:     Increase dimension of AINT and value of NQ.

    INVALID H MATRIX INPUT

      Occurrence: DFP
      Meaning:    The attempt to read in a previously saved H matrix failed
                  because the NP value in the previous and current runs are
                  not identical
      Remedy:     Check input file and current setting of NP.

    INVALID ITERLG

      Occurrence: CONOPT
      Meaning:    ITERLG is nonpositive
      Remedy:     Correct the value of ITERLG.

    INVALID NC1 OR NC2

      Occurrence: CONOPT
      Meaning:    NC1 or NC2 is nonpositive
      Remedy:     Correct the value of NC1 or NC2.

    INVALID NP1 IN SEQOPT

      Occurrence: SEQOPT
      Meaning:    NP1 is less than or equal to 0
      Remedy:     Reset NP1.

    INVALID PERMUTATION IN FIRST OPTIMIZATION

      Occurrence: SEQOPT
      Meaning:    The permutation given to SEQOPT for selecting the
                  first subset of variables is invalid
      Remedy:     Check the IPERM array.

    INVALID PERMUTATION IN SECOND OPTIMIZATION

      Occurrence: SEQOPT
      Meaning:    The permutation in the second optimization is
                  invalid. This is impossible if there was no
                  error in the permutation for the first optimiza-
                  tion. Program must have been overwritten.
      Remedy:     Check user's program.

    IP AND IQ ARE BOTH = 0---USE REGR

      Occurrence: ARMAPQ
      Meaning:    There is neither a moving average nor a autoregressive
                  part
      Remedy:     Use ordinary regression

    ITERATION LIMIT EXCEEDED

      Occurrence: GRADX,DFP,POWELL,NMSIMP,PATERN,RNSRCH,MUKAI,SSVM,
                  GENALG
      Meaning:    Obvious
      Remedy:     Reset ITERL

    ITERATION LIMIT FOR SEQUENTIAL OPTIMIZATION EXCEEDED

      Occurrence: SEQOPT
      Meaning:    The number of switches in optimization between the two
                  subsets of variables exceeded ITERL3
      Remedy:     Reset ITERL3

    ITERL3 IS .LE. 0. NO OPTIMIZATION IS DONE

      Occurrence: SEQOPT
      Meaning:    Obvious
      Remedy:     Set ITERL3 greater than 0.

    JACOBIAN IS SINGULAR

      Occurrence: NEWRAP
      Meaning:    Obvious
      Remedy:     Change the values in COMMON/BFIFIF/FDFRAC,FDMIN

    JACOBIAN SINGULAR

      Occurrence: SIMEQ
      Meaning: Obvious
      Remedy:  Check the IQQ1 array in a linear system. Possibly
               use a new starting point.

     K1+K2+2 MUST BE .GE. NP...EXECUTION TERMINATED

      Occurrence: DISEFP,DISESP
      Meaning: Obvious
      Remedy: Check input parameters

     K1+K2+K3+3 MUST EQUAL NP...EXECUTION TERMINATED

      Occurrence: DISEQ2
      Meaning: Obvious
      Remedy: Check input parameters

     K1, K2, K3 MUST BE .GE. 1

      Occurrence: DISEQ2
      Meaning: Obvious
      Remedy: Check input parameters

    LINESEARCH FAILURE

      Occurrence: SSVM, GRADX
      Meaning:    Function error occurred in the linesearch algorithm
      Remedy:     Change the values of SHRIP1 and/or SHRIP2

    MATRIX APPEARS TO BE SINGULAR

      Occurrence: GAJORE
      Meaning:    Matrix is singular or ill conditioned
      Remedy:     Check inpout or use a different algorithm

    MATRIX X'X IS SINGULAR

      Occurrence: REGR, RECURS
      Meaning:    The X'X matrix could not be inverted
      Remedy:     Check the data in X

    NEGATIVE VARIANCE IN TOBIT

      Occurrence: ENSCRM
      Meaning:    User has initialized the variance to a negative
                  number
      Remedy:     Initialize variance to a positive number

    NO FEASIBLE SOLUTION EXISTS
      Occurrence: LINPROFS
      Meaning:   LINPROFS has determined that your problem has no
                  feasible solution
      Remedy:     Examine the specification of your problem

    NO FEASIBLE SOLUTION FOUND

      Occurrence: LINPROA
      Meaning:    The problem to be solved requires a b vector
                  that is nonnegative, and you provided a b-vector
                  with some negative element(s).
      Remedy:     Examine the specification of your problem
	  
    No positive distances---quitting

      Occurrence: CLUSHIER
      Meaning:    Distances between cluster are not positive
      Remedy:     Recompile program
	  
    NO STOPPING CRITERION ENABLED FOR GQOPT--NO OPTIMIZATION DONE

      Occurrence: GRADX,DFP,POWELL,NMSIMP,PATERN,RNSRCH,MUKAI,SSVM
      Meaning:    All relevant ISTOP( ) elements are set to 1
      Remedy:     Reset ISTOP( ) to zero.

    NO STOPPING CRITERION ENABLED FOR NEWRAP--EXECUTION TERMINATED

      Occurrence: NEWRAP
      Meaning:    Both ISTOP(1) and ISTOP(2) have been set = 1
      Remedy:    Reset ISTOP( ) to zero.

    NO STOPPING CRITERION ENABLED FOR RNSRCH--NO OPTIMIZATION DONE

      Occurrence: RNSRCH
      Meaning:    ISTOP(1) and ISTOP(3) are both set equal to 1. (ISTOP(2)
                  is irrelevant for RNSRCH)
      Remedy:     Reset at least one of the ISTOP( ) elements to zero.

    NO STOPPING CRITERION ENABLED FOR SEQOPT

      Occurrence: SEQOPT
      Meaning:    JSTOP(1) and JSTOP(2) are both 1
      Remedy:     Reset at least one JSTOP( ) to zero.

    NOT ENOUGH SCRATCH STORAGE

      Occurrence: CONOPT,GRADX,DFP,POWELL,NMSIMP,PATERN,RNSRCH,MUKAI,
                  SSVM
      Meaning:    Working array AINT and NQ are too small
      Remedy:     Increase DIMENSION of AINT and value of NQ.

    NP IS NOT EQUAL TO K+NCAT-1

      Occurrence: POLYCHO
      Meaning:    The number of parameters in a polychotomous response
                  model must equal the number of beta coefficients +
                  the number of categories - 1
      Remedy:     Fix the data input

    NP MUST NOT EXCEED 200...EXECUTION TERMINATED

      Occurrence: DISEFP,DISESP
      Meaning: Obvious
      Remedy: Check input parameters

    NPT IS NOT EVEN---QUITTING

      Occurrence: BIVAR3
      Meaning:    Obvious
      Remedy:     Obvious

    NUMBER OF PERMISSIBLE RESTARTS EXCEEDED

      Occurrence: NMSIMP
      Meaning:    Stopping criterion satisfied, yet final optimality
                  check fails after NRST restarts.
      Remedy:     In COMMON/BNEL/STP1,VAR,CONVGE,NRST reset NRST.
                  Also attempt optimization from alternative starting
                  points.

    OPTIMAL POINT FOUND; BUT MATRIX H IS NOT CORRECT

      Occurrence: GRADX
      Meaning:    An apparent optimum, but eigenvalue computation did not
                  converge
      Remedy:     Increase value of variables in COMMON/BPREC/RSMALL,ABSMAL
    
	OPTIMIZATION FAILED WITH ALL OBSERVATIONS

      Occurrence: Jackknife algorithms
      Meaning:    Could not optimize when all observations are included
      Remedy:     Change parameters for optimization algorithm
	  
    OPTMOV ARRAY X NOT AVAILABLE

      Occurrence: GRADX,DFP,POWELL,NMSIMP,SSVM
      Meaning:    OPTMOV was asked to deliver an array not compatible
                  with the optimization algorithm used
      Remedy:     Check HANDBOOK for what arrays are available.

    PERSISTENT FUNCTION ERROR ON FIRST FUNCTION EVALUATION
      Occurrence: GLOB1
      Meaning:    The first FUNC evaluation causes a FUNC error
      Remedy:     Change bounds of evaluation region

    PERSISTENT FUNCTION ERROR ON SECOND FUNCTION EVALUATION

      Occurrence: GLOB1
      Meaning:    The second FUNC evaluation caused a FUNC error
      Remedy:     Change bounds of evaluation region

    PERSISTENT FUNCTION ERRORS -- MAY WISH TO RESET IERCTL

      Occurrence: GLOB2
      Meaning:    FUNC errors are consistently encountered
      Remedy:     Reset bounds of search area

    PRMCHK ERROR IN SMLCLN

      Occurrence: SMLCLN (SIMEQ)
      Meaning:    An invalid variable permutation was given to SMLCLN
      Remedy:     Correct the permuation

    PQ,DEN1 OR DEN2 ERROR

      Occurrence: SSVM
      Meaning:    (a) The change in the gradient is orthogonal
                      to the proposed step (PQ)
                  (b) The H-matrix is not positive definite (for
                      minimization) (DEN1)
                  (c) The change in the gradient is conjugate
                      with the step relative to the H-matrix.
      Remedy:     Replace numerical derivatives with analytic ones.
                  Alternatively, decompose problem and use SEQOPT.

    RANK ASSIGNMENT FAILURE

      Occurrence: SPEAR1
      Meaning:    A test on the sum of the ranks has failed
      Remedy:     Check your assignment of ranks to the raw data

    REGR REQUIRES K.LE.30

      Occurrence: REGR
      Meaning:    The number of independent variables exceeds 30
      Remedy:     Either reduce the number of independent variables or
                  redimension SUBROUTINES REGR and GJR and recompile.

    REINVERSION FAILED

      Occurrence: LINPROA
      Meaning:    Attempt to invert the array of coefficients
                  for the nonbasic variables failed
      Remedy:     None

    SCREENING OF INPUT PARAMETERS HAS DISCOVERED ERRORS

      Occurrence: SIMEQ (SMLCLN)
      Meaning:    IQQ1 or IQQ2 or IG or NBEG or NEND are set erroneously
                  (see IER numbers in HANDBOOK, Section 14)
      Remedy:     Correct the erroneous input data


    SEQOPT NOT PERMITTED IF NP EXCEEDS 200

      Occurrence: SEQOPT
      Meaning:    NP is too large
      Remedy:     Increase dimensions of arrays SS1 and SS2 in SEQOPP
                  and statement IF(NP.LE.200) GOTO 1.

    SIG MUST BE POSITIVE

      Occurrence: RANDVAR
      Meaning:    SIG specified for the Cauchy or Rayleigh densities
                  was nonpositive
      Remedy:     Correct the input

    SMALL GRADIENT WITHOUT MEETING TERMINATION CRITERIA

      Occurrence: MUKAI
      Meaning:    The norm of the gradient is less than RSMALL (default=
                  1.D-14) but gradient stopping criterion is inhibited
      Remedy:     Set ISTOP(2)=0.

    SOLUTION UNBOUNDED
	
      Occurrence: LINPROA and LINPROFS
      Meaning:    The linear programming problem is unbounded
      Remedy:     Examine the specification of the problem

    SOME ROOTS ARE INSIDE UNIT CIRCLE

      Occurrence: ARMAPQ
      Meaning:    The moving average part has roots inside the unit
                  circle
      Remedy:     Check data input or respecify model or inhibit
                  root calculation

    STARTING VALUE OF X IS OUT OF BOUNDS (LB AND UB)
    GLOB2 IS QUITTING. RESPECIFY X SO THAT LB(I).LT.X(I).LTUB(I)

      Occurrence: GLOB2
      Meaning:    Starting point is out of bounds
      Remedy:     Respecify starting point
	  
    TOBIT MAY NOT BE SELECTED WITH PROBIT OR LOGIT

      Occurrence: PROBIT,TOBIT,LOGIT
      Meaning:    User has set IPROB=1 or 2 and ITOB=1, requesting that
                  tobit and either probit or logit both be computed.
      Remedy:     Set one of these variables=0.

    SEQOPT NOT PERMITTED IF NP EXCEEDS 200

      Occurrence: SEQOPT
      Meaning:    NP is too large
      Remedy:     Increase dimensions of arrays SS1 and SS2 in SEQOPP
                  and statement IF(NP.LE.200) GOTO 1.

    SHRINK INVALID--reset to 0.9

      Occurrence: GENALG
      Meaning:    SHRINK must be strictly between 0 and 1; it has
                  been automaticall reset to 0.9
      Remedy:     If you do not like 0.9. fix input error


    SMALL GRADIENT WITHOUT MEETING TERMINATION CRITERIA

      Occurrence: MUKAI
      Meaning:    The norm of the gradient is less than RSMALL (default=
                  1.D-14) but gradient stopping criterion is inhibited
      Remedy:     Set ISTOP(2)=0.

    T-RATIO IS VALID ONLY FOR SUCCESSFUL GRADX AND DFP OPTIMIZATIONS.
    REQUEST IGNORED

      Occurrence: POWELL,NMSIMP,PATERN,RNSRCH,MUKAI
      Meaning:    T-ratios are computed only after GRADX or DFP
      Remedy:     Either use GRADX or DFP, or compute second derivative
                  matrix by calling DERIV and computing t-ratios your-
                  self.

    T-RATIO REQUESTED FOR MAXIMIZATION WITH NOBS NOT ZERO

      Occurrence: GRADX,DFP
      Meaning:    When NOBS is not zero, it is assumed that a sum-of-squares
                  minimization problem is at hand
      Remedy:     Reset NOBS or check if MX is correctly set.

    VALUE of IHOWMAN TOO HIGH

      Occurrence: GENALG
      Meaning:    IHOWMAN must be less than or equal to 9
      Remedy:     Correct the input

    VARIANCE IS ZERO

      Occurrence: AUTOCOV
      Meaning:    The time series is a constant
      Remedy:     Check data input

    Y IS CONSTANT

      Occurrence: REGR
      Meaning:    The dependent variables is a constant
      Remedy:     Check the dependent variable

Return to

|Sect. E|Beginning|