SECTION 1.0 INTRODUCTION TO GENERAL ORGANIZATION OF GQOPT
1.0.0 Running the Various Compilers.
Each of the compilers comes with a Library Manager and a Linker. We provide the GQOPT Library which contains all of GQOPT. Users need only compile their MAIN program and link it with the linker to the library.
There are substantial, and perhaps increasing differences among compilers. As a result, GQOPT versions suitable for one compiler will generally not work for other compilers.
: The underlying programming convention in many parts of GQOPT is that a work array of specified length must be declared in the labeled COMMON block COMMON/BSTACK/AINT( ). This same COMMON block occurs in many GQOPT routines, but is dimensioned AINT(1), so as to avoid having to recompile many routines for every different problem. While this is technically a violation of standards, it is extremely useful and convenient. However, a user has determined that the recently released Version 6.0 of the Digital Visual Fortran does not permit this practice, since its LINKER apparently automatically checks for bounds violations. We know of no other compiler that shares this feature. An immediate remedy is to suppress bounds checking or, less conveniently, to dimension AINT in every subroutine as well as every MAIN program sufficiently large so that it will serve the user for all problems to be solved (e.g., AINT(60000)). A version of GQOPT that gets around this in a still different way is being developed and should be available within a short time.
1.0.1 Source Files
The following source files comprise GQOPT, but not all versions of GQOPT contain exactly the same configuration of subroutines. In particular, in the (old) Microsoft version the SUBROUTINES DERF, GAUS, RAND, and ZNORM are in file RAND.FOR and not GAUS.FOR.
Name Subroutines contained in it
ARMAPQ .FOR ARMAPQ
ASCINT .FOR ASCINT
AUTOC .FOR AUTOC
AUTOCOV .FOR AUTOCOV
BIVAR2 .FOR BIVAR2 HRRRR9 GRRRR9 GAUS1A GAUS1B
CLUSHIER.FOR CLUSHIER FINDMIN FORMCLUST FINALCENT FORMCENT DISTANCE
CLUSTER .FOR CLUSTER DETERCTD MARKSD CALCE CALCNEW CALCNEWC CALCNEWK DISTNC
CNTR .FOR CNTR
COCHRANQ.FOR CHISPR
CONOPT .FOR CONOPT CONOPP CONFNC PNLT2 OPTOU2
CONTNG .FOR CONTNG
CONVOLVE.FOR GAUSA CONVOLVE
CUMDIS .FOR SORT1
DENSPLOT.FOR DENSPLOT SORT2C
DENS4 .FOR DENS
DFLT .FOR DFLT
DFP .FOR DFP DFPP FPSTEW PUNCH
DISCCONV.FOR DISCCONV
DISEQ1 .FOR DISEQ1 DISEFP DISESP
DISEQ2 .FOR DISEQ2
DISEQ3 .FOR DISEQ3
DTRM .FOR DTRM
FP .FOR FP SP FPP DERIV
FRIED .FOR FRIED
GAJORE .FOR GAJORE
GAMLOG .FOR CHISPR GAMLOG SMIRNV
GAUS .FOR DERF GAUS RAND ZNORM
GAUSSEID.FOR EQUS
GAUSLA .FOR GAUSLA
GENALG .FOR GENALG GENALG1 PAIRING TESTCONV MUTATE KILLPOP MATING
CHECKVAL CHECKFUN SORTGEN CROSS CHECKFU2 SHFTPOP
GENRAN .FOR SELPOINT EVAPOINT TERMIN SORTGEN1 PRTGEN7 KILLPT XMOD
GJR .FOR GJR
GJRR .FOR GJRR
GLOB1 .FOR GLOB1 YGEN
GLOB2 .FOR PRT1A PRT2A PRT3A PRT4A PRT5A PRT6A PRT7A PRT8A
PRT1B PRT2B PRT3B PRT4B PRT5B PRT6B PRT7B PRT8B
PRTVCA PRTVCB EXPREP
GRADX .FOR GRADX GRADXX SBHHH SBHSCH BFORM BFU ZFU FPPP
HETER1 .FOR HETER1
INTASC .FOR INTASC
KERREG .FOR KERREG KERREG1 KERREG2 FNABSC ZVAL
KLSM1 .FOR XMB1 KLSMR1 SRND1
KLSM2 .FOR KLSMR2 SORT4
KRUSKALW.FOR CHISPR SORT3A COUNTTIE CONV KRUSKALW
LINPROA .FOR PREPIV PIVTLP PIVROW OPTTST2 LINPROA OPTTST1
LINPROFS.FOR PREPFS PIVFS OPTTST COMPACT LINPROFS
LNSR .FOR LNSR DLNSR STR STRCH
LOGJACK .FOR LOGJACK
MATEV2 .FOR MATEV2
MATP .FOR MATP MATPT DOTV VEC MOVE ZZD
MATVRT .FOR MATVRT
MONCARL .FOR MONCARL
MVARNORM.FOR MVARNORM
MUKAI .FOR MUKAI MUKK
NEWRAP .FOR NEWRAP NWRPXX JACOB OPTOU4 SLVEQ1 VERSIV SLV
NORMPRB .FOR NORMPRB MONCARL1
OPT .FOR OPT TRATIO OPTMOV OPTOU0 OPTOU1 LABEL PERM1 PRMCHK
DBPM OPTOUT
PATERN .FOR PATERN PATER EXPLOR RNSRCH RNSRXX RXX NMSIMP NELMED
PLOTCURV.FOR PLOTCURV
POLYCHO .FOR POLYCHO
POWELL .FOR POWELL POWEL
PRINCOMP.FOR PRINCOMP
PROB1A .FOR PROB1A PRFP1A PRSP1A PROB1S PROB2A PRFP2A PRSP2A TOB2A TOSP2A
TOFP2A ENSCRM DESCRM OPTOU3
PROB2AJ .FOR PROB2AJ
PROBJACK.FOR PROBJACK PROB1J TOB2AJ
PROOTS .FOR PROOTS
QUADR .FOR GAUSA NEWCT1 NEWCT2 NEWCT3 BIV2 GAULG1 GAULG2 GAULG3 DUTT2
DUTT3 CLARK2 CLARK3 D2 D3 AAMAX BIINT TRINT
QUINTA .FOR QUINT
RANDOM .FOR RANDOM RANSET
RANDVAR .FOR EXPON CAUCHY RAYLEI PARETO LOGIST
RECURS .FOR RECURS
REGFAL .FOR REGFAL
REGR .FOR GJR REGR
RESRG1 .FOR RESRG1 RESRG2 FTEST
RRAND .FOR RRAND
RRND .FOR RRND
RROT .FOR RROT
SEQOPT .FOR SEQOPT SEQOPP COPYXS CYCPRM UNPRM
SHPWLK .FOR SORT1
SIMEQ1 .FOR SIMEQ1
SMLCLN .FOR SMLCLN
SORT1 .FOR SORT1
SORT2 .FOR SORT2
SORT3 .FOR SORT3
SPEAR1 .FOR SPEAR1
SRAND .FOR RRAND
SRND .FOR SRND
SSVM .FOR SSVM SXSXS SSRCH
STIRLING.FOR STIRLING STIRLOG
TAUK .FOR TAUK
TAU3 .FOR TAU3
TESTMEAN.FOR TESTMEAN
TIMSER00.FOR SPEC00 SPECTRAL DATACHK CXFFT CXINVFFT FFTCXS PERIOD00
AUTOCOV SINES REVERSE REAL2FFT
TAU3 .FOR TAU3
TRAVSAL .FOR TRAVSAL GENINT1 PAIR TSTCNV MUTA KILL MATE
SORTABN SORTPERM CROSSOV GENVEC
WEDDLE .FOR WEDDLE
WALDWOLF.FOR WALDWOLF
WILCOXON.FOR CHISPR SORT3A
WMW .FOR WMW
Note: In the Lahey Compiler version the following name changes are in effect: QUINT is called QUINTA, RRAND is called RRND, SRAND is called SRND.
INDEX to GQOPT
Subrout. File Subrout. File Subrout. File
AAMAX quadr GLOB1 glob1 PRT3A glob2
ARMAPQ armapq GLOB2 glob2 PRT3B glob2
ASCINT ascint GRADX gradx PRT4A glob2
AUTOC autoc GRADXX gradx PRT4B glob2
AUTOCOV timser00 GRRRR9 bivar2 PRT5A glob2
BFORM gradx HETER1 heter1 PRT5B glob2
BIINT quadr HRRRR9 bivar2 PRT6A glob2
BIV2 quadr INTASC intasc PRT6B glob2
BIVAR2 bivar2 JACOB newrap PRT7A glob2
CALCE cluster KERREG kerreg PRT7B glob2
CALCNEWC cluster KERREG1 kerreg PRT8A glob2
CALCNEWK cluster KERREG2 kerreg PRT8B glob2
CAUCHY randvar KILL travsal PRTVCA glob2
CHECKFUN genalg KILLPOP genalg PRTVCB glob2
CHECKFU2 genalg KILLPT genran PUNCH dfp
CHECKVAL genalg KLSMR1 klsm1 QUINTA quint
CHISPR gamlog KNAP knap RAND gaus
CLARK2 quadr KRUSKALW kruskalw RANDOM random
CLARK3 quadr LABEL opt RANSET random
CLUSTER cluster LINPROA linproa REAL2FFT timser00
CNTR cntr LINPROFS linprofs REGFAL regfal
COMPACT linprofs LNSR lnsr REGR regr
CONFNC conopt LOGIST randvar RESRG1 resrg1
CONOPP conopt LOGJACK logjack RESRG2 resrg1
CONOPT conopt MARKSD cluster REVERSE timser00
CONTNG contng MATE travsal RNSRCH patern
CONV wilcoxon MATEV2 matev2 RNSRXX patern
COPYXS seqopt MATING genalg RAND rrand
COCHRANQ cochranq MATP matp RAYLEI randvar
CONVOLVE convolve MATPT matp RXX patern
CROSS genalg MATVRT matvrt SBHHH gradx
CROSSOV travsal MONCARL moncarl SBHRCH gradx
COUNTTIE kruskalw MONCARL1 normprb SELPOINT genran
CUMDIS cumdis MOVE matp SEQOPP seqopt
CYCPRM seqopt MUKAI mukai SEQOPT seqopt
CXFFT timser00 MUKK mukai SHFTPOP genalg
CXINVFFT timser00 MUTA travsal SHPWLK shpwlk
D2 quadr MUTATE genalg SIMEQ1 simeq1
D3 quadr MVARNORM mvarnorm SINES timser00
DATACHK timser00
DENSPLOT densplot NEWCT1 quadr
DERF gaus NEWCT2 quadr SLV newrap
DERIV fp NEWCT3 quadr SLVEQ1 newrap
DESCRM prob1a NEWRAP newrap SMIRNV gamlog
DFLT dflt NMSIMP patern SORTABN travsal
DFP dfp NORMPRB normprb SORTGEN genalg
DFPP dfp NWRPXX newrap SORTGEN1 genran
DISCCONV discconv OPT opt SORTPERM travsa
DISEFP diseq1 OPTMOV opt SORT1 sort1
DISEQ1 diseq1 OPTOU0 opt SORT1A wilcoxon
DISESP diseq1 OPTOU1 opt SORT2 sort2
DISEQ2 diseq2 OPTOU2 conopt SORT3 sort3
DISEQ3 diseq3 OPTOU3 prob1a SORT3A wilcoxon
DISTANCE clushier OPTOU4 newrap SP fp
DISTNC cluster OPTOUT opt SPEC00 timser00
DLNSR lnsr OPTTST linprofs SPECTRAL timser00
DOTV matp OPTTST1 linproa SPEAR1 spear1
DTRM dtrm OPTTST2 linproa SRAND srand
DUTT2 quadr PAIR travsal SRND klsm1
DUTT3 quadr PAIRING genalg SSRCH ssvm
ENSCRM prob1a PARETO randvar SSVM ssvm
EQUS gausseid PATER patern STR lnsr
EVAPOINT genran PATERN patern STRCH lnsr
EXPLOR patern PERIOD00 timser00 SXSXS ssvm
EXPON randvar PERM1 opt TAUK tauk
EXPREP glob2 PIVFS linprofs TAU3 tau3
FFTCXS timser00 PIVROW linproa TERMIN genran
FINALCENT clushier PIVTLP linproa TESTCONV genalg
FINDRANG cluster PLOTCURV plotcurv TESTMEAN testmean
FINDMIN clushier PNLT2 conopt TOB2A prob1a
FNABSC kerreg TOB2AJ probjack
FORMCENT clushier POLYCHO polycho TOFP2A prob1a
FORMCLUS clushier POWEL powell TOSP2A prob1a
FP dfp POWELL powell TRATIO opt
FPP dfp PREPFS linprofs TRAVSAL travsal
FRIED fried PREPIV linproa TRINT quadr
FTEST resrg1 PRFP1A prob1a TSTCNV travsal
PRSP1A prob1a UNPRM seqopt
PRMCHK opt VEC matp
FPPP gradx PROB1A prob1a VERS newrap
FPSTEW dfp PROB1J probjack
GAJORE gajore PROB1S prob1a WALDWOLF waldwolf
GAMLOG gamlog PROB2A prob1a WEDDLE weddle
GAULG1 quadr PROB2AJ probjack
GAULG2 quadr PROBJACK probjack
GAULG3 quadr PROOTS proots WILCOXON wilcoxon
GAUS gaus PRSP1A prob1a WMW wmw
GAUSSEID gausseid PRSP2A prob1a YGEN glob1
GAUS1A bivar2 PRTGEN7 genran XMB1 klsm1
GAUS1B bivar2 PRT1A glob2 XMOD genran
GAUSA quadr PRT1B glob2 XPROB normprob
GAUSLA gausla PRT2A glob2 ZNORM gaus
GENALG genalg PRT2B glob2 ZVAL kerreg
GENALG1 genalg ZZD matp
GENINT1 travsal
GENRAN genran
GENVEC travsal
GJR regr
A number of test MAIN programs are also provided. Parentheses indicate the optimization methods or modules used:
Name For testing
GQT1A .FOR Estimation of a simple disequilibrium model (DISEQ1.FOR)
GQ4T5 .FOR Estimation of a Tobit model (PROB1A.FOR)
GQT8A .FOR Optimization with POWELL, PATERN, RNSRCH
GQ4T10 .FOR Estimation of Logit model (PROB1A.FOR)
GQ4T11 .FOR Optimization with GRADX, DFP for Probit (GRADX,DFP,
PROB1A) (RNSRCH.FOR) and Nelder-Mead Simplex
(NMSIMP.FOR) algorithms
GQT13 .FOR Contour plotter (CNTR.FOR)
GQ4T17A .FOR Solving of equations
QUAD3A .FOR Integration; testing QUADR
BIVAR3 .FOR Integration; testing BIVAR2
SIMTEST .FOR Simultaneous equations estimation
AUTOTEST.FOR Autocorrelation of residuals estimation
QUINT1 .FOR Trivariate integration
SHAPWLK1.FOR Shapiro-Wilk Statistic
CUMTST .FOR Compute Cumulative sample distribution
TESTSORT.FOR Test sort algorithm
GAMLOGT .FOR Compute Smirnov limit probability
CHITST .FOR Compute Chi Squared Probabilities
GLOB1A .FOR Global optimization: To test GLOB1
GLOB2A .FOR Global optimization: To test GLOB2
WEDDLETS.FOR Weddle-rule numerical integration
KNAPTST .FOR Integer programming
GAUSLAT .FOR Gauss-Laguerre integration
LINTESFS.FOR Linear programming
LINTESTA.FOR Linear programming
ASCITEST.FOR ASCII to integer conversion
XMBTEST .FOR Normal deviate generation
WMWTEST .FOR Wilcoxon-Mann-Whitney test
CHITST .FOR Chi square distribution
XROOTS .FOR Find the roots of a polynomial
XMATTST .FOR Invert matrix by several methods
XDENS4 .FOR Density estimation
XKERREG .FOR Kernel regression
XTIMSER .FOR Time series analysis (autocovariance, periodogram,
spectrum)
POLTEST .FOR To test polychotomous variable estimation
XGAJORE .FOR Solve linear equation
XRAND .FOR To test RANDOM
XDENSPL .FOR To test density plotting for an X and a Y variable
XDENSPL1.FOR The same
XRANDVAR.FOR To generate variates by various distributions
XNORMPRB.FOR To calculate the intercept of a plane such that the
multivariate normal probability of being under it is a given
number
YNORMPRB.FOR To caculate the probability from the multivariate normal
of falling in the intersection of half-spaces
XGENALG .FOR To find an approximate global mininimum
XTRAVSAL.FOR To find an approximate solution to a traveling salesman problem
XPLOTCRV.FOR To plot a time series
XGAUSSEI.FOR To solve equations by Gauss-Seidel
XGENRAN .FOR To optimize functions using a genetic algorithm
XCONVOLV.FOR To compute the convolution of two distributions
XDISCCON.FOR To compute a discrete convolution
XKRUSKAL.FOR To compute the Kruskal-Wallis test
XWILCOX .FOR To compute the Wilcoxon test
XTESTMEA.FOR To test for significant differences between two means
XINVGAUS.FOR To invert the normal distribution
XTOBJACK.FOR For tobit jackknife
STIRTEST.FOR For the Stirling approcimation
XPROBJACK.FOR To compute a probit jackknife
XRECURS .FOR For recursive residuals
XPRINCMP.FOR To compute principal components
XRROT .FOR To compute the robust rank order test
XCLUSTHI.FOR For hierarchical clustering
XCLUSTER.FOR For cluster analysis
XLOGJACK.FOR For the logit jackknife
1.0.2 Running GQOPT
The general procedure is for the user to compile his MAIN program and function subroutine and then link the resulting object codes with the appropriate parts of GQOPT. The name of the GQOPT Library depends on the particular version that is being used.
On a Sun workstation, the procedure is
f90 MAIN.F libgq710.a
On an RS/6000 workstation, the procedure is
xlf MAIN.F gqrs710.a
On a DEC workstation, the procedure is
f90 MAIN.F libdc710.a
The following table gives the list of object modules that are needed to run each particular algorithm. If the user wishes to run a program that calls two or more algorithms, the object modules needed are always the union of the object modules listed next to the name of each algorithm. In addition to the needed modules in the table below, the user should remember that if he/she uses SEQOPT, CONOPT, PROBIT, TOBIT, LOGIT, DISEQU, at least one optimizing algorithm (i.e, one of DFP, GRADX, POWELL, PATERN, MUKAI, RNSRCH, SSVM, NMSIMP) is also needed.
To Run Need Object Files
Algor- O C R M F L D G P S P R N M S C P M D N R S
ithm P N A A P N F R O S A N M U E O R A I E E L
T T N T S P A W V T S S K Q N O T S W G V
R D P R D E M E R I A O O B E E R F M
X L R C M I P P 1 V Q A A I
L N H P T T A 2 1 P L N
DFP x x x x x
GRADX x x x x x x
POWELL x x x x
PATERN x x
NMSIMP x x x
MUKAI x x x x
SSVM x x x x
RNSRCH x x x
CNTR x x
SEQOPT x x
CONOPT x x
PROBIT x x x
TOBIT x x x
LOGIT x x
DISEQU x x x
NEWRAP x
REGFAL x
SLVMIN x x