************************************************************************ * SUBROUTINE PHYBU ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR UNCONSTRAINED OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA NUMBER OF FUNCTIONS. * RI X(NF) VECTOR OF VARIABLES. * RO AF(NA) VECTOR CONTAINING VALUES OF THE APPROXIMATED * FUNCTIONS. * II IPAR(6) INTEGER PAREMETERS: * IPAR(1) MAXIMUM NUMBER OF ITERATIONS. * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS. * IPAR(3) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * IPAR(4) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * IPAR(5) A HYBRID METHOD USED. IPAR(5)=1-THE GAUSS-NEWTON * METHOD IS USED. IPAR(5)=2-THE STANDARD STRUCTURED VM METHOD * IS USED. IPAR(5)=3-THE HUSCHENS STRUCTURED VM METHOD IS USED. * IPAR(5)=4-A COMBINATION OF THE GAUSS-NEWTON AND THE BFGS * METHODS IS USED. * IPAR(6) CHOICE OF THE SCALING STRATEGY. IPAR(6)=1-SCALING IS * NOT USED. IPAR(6)=2-PERMANENT SCALING (IN ALL ITERATIONS) IS * USED. * RI RPAR(7) REAL PARAMETERS: * RPAR(1) MAXIMUM STEPSIZE. * RPAR(2) TOLERANCE FOR THE CHANGE OF VARIABLES. * RPAR(3) TOLERANCE FOR THE CHANGE OF FUNCTION VALUES. * RPAR(4) TOLERANCE FOR THE FUNCTION FALUE. * RPAR(5) TOLERANCE FOR THE GRADIENT NORM. * RPAR(6) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * RPAR(7) INITIAL TRUST REGION RADIUS. * RO F VALUE OF THE OBJECTIVE FUNCTION. * RO GMAX MAXIMUM ABSOLUTE VALUE OF A PARTIAL DERIVATIVE. * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT. * ABS(IPRNT)=1-PRINT OF FINAL RESULTS. * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS. * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL * RESULTS. * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION. * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN * MTESX (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN * MTESF (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB. * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG. * ITERM=6-IF THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY * ACCEPTABLE. * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NRES NUMBER OF RESTARTS. * IO NDEC NUMBER OF MATRIX DECOMPOSITION. * IO NREM NUMBER OF CONSTRAINT DELETIONS. * IO NADD NUMBER OF CONSTRAINT ADDITIONS. * IO NIT NUMBER OF ITERATIONS. * IO NFV NUMBER OF FUNCTION EVALUATIONS. * IO NFG NUMBER OF GRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PHYB HYBRID METHODS FOR UNCONSTRAINED AND LINEARLY CONSTRAINED * OPTIMIZATION. * * EXTERNAL SUBROUTINES : * SE FUN CONPUTATION OF THE VALUE OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL FUN(NF,KA,X,FA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND FA IS THE VALUE OF THE * APPROXIMATED FUNCTION. * SE DER CONPUTATION OF THE GRADIENT OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL DER(NF,KA,X,GA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND GA(NF) IS THE GRADIENT OF * THE APPROXIMATED FUNCTION. * SUBROUTINE PHYBU(NF,NA,X,AF,IPAR,RPAR,F,GMAX,IPRNT,ITERM) INTEGER NF,NA,IPAR(6),IPRNT,ITERM DOUBLE PRECISION X(*),AF(*),RPAR(7),F,GMAX INTEGER NB,NC,IA(1),LGA,LG,LH,LHA,LHB,LS,LXO,LGO INTEGER NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH COMMON /STAT/ NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH DOUBLE PRECISION RA(:) ALLOCATABLE RA ALLOCATE (RA(3*NF*(NF+5)/2)) NB=0 NC=0 * * POINTERS FOR AUXILIUARY ARRAYS * LGA=1 LG=LGA+NF LH=LG+NF LHA=LH+NF*(NF+1)/2 LHB=LHA+NF*(NF+1)/2 LS=LHB+NF*(NF+1)/2 LXO=LS+NF LGO=LXO+NF CALL PHYB(NF,NA,NB,NC,X,IA,RA,RA,RA,IA,RA,RA,RA,IA,RA,RA,RA, & AF,RA(LGA),RA(LG),RA(LG),RA(LH),RA(LHA),RA(LHB),RA(LS), & RA(LS),RA(LXO),RA(LGO),RPAR(1),RPAR(2),RPAR(3),RPAR(4), & RPAR(5),RPAR(7),GMAX,F,IPAR(1),IPAR(2),IPAR(5),IPAR(6), & IPRNT,ITERM) DEALLOCATE(RA) RETURN END ************************************************************************ * SUBROUTINE PHYBS ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR BOX CONSTRAINED OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA NUMBER OF FUNCTIONS. * II NB CHOICE OF SIMPLE BOUNDS. NB=0-SIMPLE BOUNDS SUPPRESSED. * NB>0-SIMPLE BOUNDS ACCEPTED. * RI X(NF) VECTOR OF VARIABLES. * II IX(NF) VECTOR CONTAINING TYPES OF BOUNDS. IX(I)=0-VARIABLE * X(I) IS UNBOUNDED. IX(I)=1-LOVER BOUND XL(I).LE.X(I). * IX(I)=2-UPPER BOUND X(I).LE.XU(I). IX(I)=3-TWO SIDE BOUND * XL(I).LE.X(I).LE.XU(I). IX(I)=5-VARIABLE X(I) IS FIXED. * RI XL(NF) VECTOR CONTAINING LOWER BOUNDS FOR VARIABLES. * RI XU(NF) VECTOR CONTAINING UPPER BOUNDS FOR VARIABLES. * RO AF(NA) VECTOR CONTAINING VALUES OF THE APPROXIMATED * FUNCTIONS. * II IPAR(6) INTEGER PAREMETERS: * IPAR(1) MAXIMUM NUMBER OF ITERATIONS. * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS. * IPAR(3) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * IPAR(4) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * IPAR(5) A HYBRID METHOD USED. IPAR(5)=1-THE GAUSS-NEWTON * METHOD IS USED. IPAR(5)=2-THE STANDARD STRUCTURED VM METHOD * IS USED. IPAR(5)=3-THE HUSCHENS STRUCTURED VM METHOD IS USED. * IPAR(5)=4-A COMBINATION OF THE GAUSS-NEWTON AND THE BFGS * METHODS IS USED. * IPAR(6) CHOICE OF THE SCALING STRATEGY. IPAR(6)=1-SCALING IS * NOT USED. IPAR(6)=2-PERMANENT SCALING (IN ALL ITERATIONS) IS * USED. * RI RPAR(7) REAL PARAMETERS: * RPAR(1) MAXIMUM STEPSIZE. * RPAR(2) TOLERANCE FOR THE CHANGE OF VARIABLES. * RPAR(3) TOLERANCE FOR THE CHANGE OF FUNCTION VALUES. * RPAR(4) TOLERANCE FOR THE FUNCTION FALUE. * RPAR(5) TOLERANCE FOR THE GRADIENT NORM. * RPAR(6) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * RPAR(7) INITIAL TRUST REGION RADIUS. * RO F VALUE OF THE OBJECTIVE FUNCTION. * RO GMAX MAXIMUM ABSOLUTE VALUE OF A PARTIAL DERIVATIVE. * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT. * ABS(IPRNT)=1-PRINT OF FINAL RESULTS. * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS. * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL * RESULTS. * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION. * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN * MTESX (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN * MTESF (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB. * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG. * ITERM=6-IF THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY * ACCEPTABLE. * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NRES NUMBER OF RESTARTS. * IO NDEC NUMBER OF MATRIX DECOMPOSITION. * IO NREM NUMBER OF CONSTRAINT DELETIONS. * IO NADD NUMBER OF CONSTRAINT ADDITIONS. * IO NIT NUMBER OF ITERATIONS. * IO NFV NUMBER OF FUNCTION EVALUATIONS. * IO NFG NUMBER OF GRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PHYB HYBRID METHODS FOR UNCONSTRAINED AND LINEARLY CONSTRAINED * OPTIMIZATION. * * EXTERNAL SUBROUTINES : * SE FUN CONPUTATION OF THE VALUE OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL FUN(NF,KA,X,FA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND FA IS THE VALUE OF THE * APPROXIMATED FUNCTION. * SE DER CONPUTATION OF THE GRADIENT OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL DER(NF,KA,X,GA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND GA(NF) IS THE GRADIENT OF * THE APPROXIMATED FUNCTION. * SUBROUTINE PHYBS(NF,NA,NB,X,IX,XL,XU,AF,IPAR,RPAR,F,GMAX,IPRNT, & ITERM) INTEGER NF,NA,NB,IX(*),IPAR(6),IPRNT,ITERM DOUBLE PRECISION X(*),XL(*),XU(*),AF(*),RPAR(7),F,GMAX INTEGER NC,LGA,LG,LGN,LH,LHA,LHB,LS,LXO,LGO INTEGER NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH COMMON /STAT/ NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH DOUBLE PRECISION RA(:) ALLOCATABLE RA ALLOCATE (RA(3*NF*(NF+6)/2)) NC=0 * * POINTERS FOR AUXILIUARY ARRAYS * LGA=1 LG=LGA+NF LGN=LG+NF LH=LGN+NF LHA=LH+NF*(NF+1)/2 LHB=LHA+NF*(NF+1)/2 LS=LHB+NF*(NF+1)/2 LXO=LS+NF LGO=LXO+NF CALL PHYB(NF,NA,NB,NC,X,IX,XL,XU,RA,IX,RA,RA,RA,IX,RA,RA,RA, & AF,RA(LGA),RA(LG),RA(LGN),RA(LH),RA(LHA),RA(LHB),RA(LS), & RA(LS),RA(LXO),RA(LGO),RPAR(1),RPAR(2),RPAR(3),RPAR(4), & RPAR(5),RPAR(7),GMAX,F,IPAR(1),IPAR(2),IPAR(5),IPAR(6), & IPRNT,ITERM) DEALLOCATE(RA) RETURN END ************************************************************************ * SUBROUTINE PHYBL ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR LINEARLY CONSTRAINED OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA NUMBER OF FUNCTIONS. * II NB CHOICE OF SIMPLE BOUNDS. NB=0-SIMPLE BOUNDS SUPPRESSED. * NB>0-SIMPLE BOUNDS ACCEPTED. * II NC NUMBER OF LINEAR CONSTRAINTS. * RI X(NF) VECTOR OF VARIABLES. * II IX(NF) VECTOR CONTAINING TYPES OF BOUNDS. IX(I)=0-VARIABLE * X(I) IS UNBOUNDED. IX(I)=1-LOVER BOUND XL(I).LE.X(I). * IX(I)=2-UPPER BOUND X(I).LE.XU(I). IX(I)=3-TWO SIDE BOUND * XL(I).LE.X(I).LE.XU(I). IX(I)=5-VARIABLE X(I) IS FIXED. * RI XL(NF) VECTOR CONTAINING LOWER BOUNDS FOR VARIABLES. * RI XU(NF) VECTOR CONTAINING UPPER BOUNDS FOR VARIABLES. * RI CF(NC) VECTOR CONTAINING VALUES OF THE CONSTRAINT FUNCTIONS. * II IC(NC) VECTOR CONTAINING TYPES OF CONSTRAINTS. * IC(KC)=0-CONSTRAINT CF(KC) IS NOT USED. IC(KC)=1-LOVER * CONSTRAINT CL(KC).LE.CF(KC). IC(KC)=2-UPPER CONSTRAINT * CF(KC).LE.CU(KC). IC(KC)=3-TWO SIDE CONSTRAINT * CL(KC).LE.CF(KC).LE.CU(KC). IC(KC)=5-EQUALITY CONSTRAINT * CF(KC).EQ.CL(KC). * RI CL(NC) VECTOR CONTAINING LOWER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CU(NC) VECTOR CONTAINING UPPER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CG(NF*NC) MATRIX WHOSE COLUMNS ARE NORMALS OF THE LINEAR * CONSTRAINTS. * RO AF(NA) VECTOR CONTAINING VALUES OF THE APPROXIMATED * FUNCTIONS. * II IPAR(6) INTEGER PAREMETERS: * IPAR(1) MAXIMUM NUMBER OF ITERATIONS. * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS. * IPAR(3) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * IPAR(4) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * IPAR(5) A HYBRID METHOD USED. IPAR(5)=1-THE GAUSS-NEWTON * METHOD IS USED. IPAR(5)=2-THE STANDARD STRUCTURED VM METHOD * IS USED. IPAR(5)=3-THE HUSCHENS STRUCTURED VM METHOD IS USED. * IPAR(5)=4-A COMBINATION OF THE GAUSS-NEWTON AND THE BFGS * METHODS IS USED. * IPAR(6) CHOICE OF THE SCALING STRATEGY. IPAR(6)=1-SCALING IS * NOT USED. IPAR(6)=2-PERMANENT SCALING (IN ALL ITERATIONS) IS * USED. * RI RPAR(7) REAL PARAMETERS: * RPAR(1) MAXIMUM STEPSIZE. * RPAR(2) TOLERANCE FOR THE CHANGE OF VARIABLES. * RPAR(3) TOLERANCE FOR THE CHANGE OF FUNCTION VALUES. * RPAR(4) TOLERANCE FOR THE FUNCTION FALUE. * RPAR(5) TOLERANCE FOR THE GRADIENT NORM. * RPAR(6) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PHYB. * RPAR(7) INITIAL TRUST REGION RADIUS. * RO F VALUE OF THE OBJECTIVE FUNCTION. * RO GMAX MAXIMUM ABSOLUTE VALUE OF A PARTIAL DERIVATIVE. * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT. * ABS(IPRNT)=1-PRINT OF FINAL RESULTS. * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS. * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL * RESULTS. * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION. * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN * MTESX (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN * MTESF (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB. * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG. * ITERM=6-IF THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY * ACCEPTABLE. * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NRES NUMBER OF RESTARTS. * IO NDEC NUMBER OF MATRIX DECOMPOSITION. * IO NREM NUMBER OF CONSTRAINT DELETIONS. * IO NADD NUMBER OF CONSTRAINT ADDITIONS. * IO NIT NUMBER OF ITERATIONS. * IO NFV NUMBER OF FUNCTION EVALUATIONS. * IO NFG NUMBER OF GRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PHYB HYBRID METHODS FOR UNCONSTRAINED AND LINEARLY CONSTRAINED * OPTIMIZATION. * * EXTERNAL SUBROUTINES : * SE FUN CONPUTATION OF THE VALUE OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL FUN(NF,KA,X,FA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND FA IS THE VALUE OF THE * APPROXIMATED FUNCTION. * SE DER CONPUTATION OF THE GRADIENT OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL DER(NF,KA,X,GA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND GA(NF) IS THE GRADIENT OF * THE APPROXIMATED FUNCTION. * SUBROUTINE PHYBL(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,AF,IPAR, & RPAR,F,GMAX,IPRNT,ITERM) INTEGER NF,NA,NB,NC,IX(*),IC(*),IPAR(6),IPRNT,ITERM DOUBLE PRECISION X(*),XL(*),XU(*),CF(*),CL(*),CU(*),CG(*),AF(*), & RPAR(7),F,GMAX INTEGER LCFD,LCR,LCZ,LGA,LG,LGN,LH,LHA,LHB,LS,LSN,LXO,LGO INTEGER NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH COMMON /STAT/ NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH INTEGER IA(:) DOUBLE PRECISION RA(:) ALLOCATABLE IA,RA ALLOCATE (IA(NC),RA(4*NF*(NF+5)/2+NF*NF+NC+1)) * * POINTERS FOR AUXILIUARY ARRAYS * LCFD=1 LCR=LCFD+NC+1 LCZ=LCR+NF*(NF+1)/2 LGA=LCZ+NF*NF LG=LGA+NF LGN=LG+NF LH=LGN+NF LHA=LH+NF*(NF+1)/2 LHB=LHA+NF*(NF+1)/2 LS=LHB+NF*(NF+1)/2 LSN=LS+NF LXO=LSN+NF LGO=LXO+NF CALL PHYB(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,IA,RA(LCFD), & RA(LCR),RA(LCZ),AF,RA(LGA),RA(LG),RA(LGN),RA(LH),RA(LHA), & RA(LHB),RA(LS),RA(LSN),RA(LXO),RA(LGO),RPAR(1),RPAR(2),RPAR(3), & RPAR(4),RPAR(5),RPAR(7),GMAX,F,IPAR(1),IPAR(2),IPAR(5),IPAR(6), & IPRNT,ITERM) DEALLOCATE(IA,RA) RETURN END ************************************************************************ * SUBROUTINE PHYB ALL SYSTEMS 99/01/22 * PURPOSE : * GENERAL VARIABLE METRIC SUBROUTINE FOR UNCONSTRAINED AND LINEARLY * CONSTRAINED OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * II NB NUMBER OF BOX CONSTRAINTS. * II NC NUMBER OF GENERAL LINEAR CONSTRAINTS. * RI X(NF) VECTOR OF VARIABLES. * II IX(NF) VECTOR CONTAINING TYPES OF BOUNDS. IX(I)=0-VARIABLE * X(I) IS UNBOUNDED. IX(I)=1-LOVER BOUND XL(I).LE.X(I). * IX(I)=2-UPPER BOUND X(I).LE.XU(I). IX(I)=3-TWO SIDE BOUND * XL(I).LE.X(I).LE.XU(I). IX(I)=5-VARIABLE X(I) IS FIXED. * RI XL(NF) VECTOR CONTAINING LOWER BOUNDS FOR VARIABLES. * RI XU(NF) VECTOR CONTAINING UPPER BOUNDS FOR VARIABLES. * RO CF(NC) VECTOR CONTAINING VALUES OF THE CONSTRAINT FUNCTIONS. * II IC(NC) VECTOR CONTAINING TYPES OF CONSTRAINTS. * IC(KC)=0-CONSTRAINT CF(KC) IS NOT USED. IC(KC)=1-LOVER * CONSTRAINT CL(KC).LE.CF(KC). IC(KC)=2-UPPER CONSTRAINT * CF(KC).LE.CU(KC). IC(KC)=3-TWO SIDE CONSTRAINT * CL(KC).LE.CF(KC).LE.CU(KC). IC(KC)=5-EQUALITY CONSTRAINT * CF(KC).EQ.CL(KC). * RI CL(NC) VECTOR CONTAINING LOWER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CU(NC) VECTOR CONTAINING UPPER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CG(NF*NC) MATRIX WHOSE COLUMNS ARE NORMALS OF THE LINEAR * CONSTRAINTS. * RA ICA(NC) VECTOR CONTAINING INDICES OF ACTIVE CONSTRAINTS. * RA CFD(NC) VECTOR CONTAINING INCREMENTS OF THE CONSTRAINT * FUNCTIONS. * RA CR(NF*(NF+1)/2) * RA CZ(NF*NC) * RO AF(NA) VECTOR CONTAINING VALUES OF THE APPROXIMATED * FUNCTIONS. * RU GA(NF) GRADIENT OF A PARTIAL FUNCTION. * RA G(NF) GRADIENT OF THE OBJECTIVE FUNCTION. * RA GN(NF) REDUCED GRADIENT OF THE OBJECTIVE FUNCTION. * RA H(NF*(NF+1)/2) GAUSS-NEWTON APPROXIMATION OF THE HESSIAN * MATRIX. * RA HH(NF*(NF+1)/2) VARIABLE METRIC APPROXIMATION OF THE SECOND * ORDER TERM. * RA B(NF*(NF+1)/2) AUXILIARY DENSE SYMMETRIC MATRIX. * MATRIX. * RA S(NF) DIRECTION VECTOR. * RA SN(NF) REDUCED DIRECTION VECTOR. * RA XO(NF) DIFFERENCE OF VECTORS OF VARIABLES. * RA GO(NF) DIFFERENCE OF GRADIENTS. * RI XMAX MAXIMUM STEPSIZE. * RI TOLX TOLERANCE FOR THE CHANGE OF VARIABLES. * RI TOLF TOLERANCE FOR THE CHANGE OF FUNCTION VALUES. * RI TOLB TOLERANCE FOR THE FUNCTION VALUE. * RI TOLG TOLERANCE FOR THE GRADIENT OF THE LAGRANGIAN FUNCTION. * RI XDEL TRUST-REGION RADIUS. * RO GMAX VALUE OF THE TERMINATION CRITERION. * RO F VALUE OF THE OBJECTIVE FUNCTION. * II MIT MAXIMUN NUMBER OF ITERATIONS. * II MFV MAXIMUN NUMBER OF FUNCTION EVALUATIONS. * II MET CHOICE OF THE UPDATE. MET=1-THE BFGS UPDATE. * MET=2-SPECIAL UPDATE. * II MET1 CHOICE OF THE SCALING STRATEGY. MET1=1-SCALING IS * NOT USED. MET1=2-PRELIMINARY SCALING (ONLY IN THE FIRST * ITERATION). MET1=3-CONTROLLED SCALING. MET1=4-INTERVAL * SCALING. MET1=5-PERMANENT SCALING (IN ALL ITERATIONS). * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT. * ABS(IPRNT)=1-PRINT OF FINAL RESULTS. * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS. * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL * RESULTS. * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION. * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN * MTESX (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN * MTESF (USUALLY TWO) SUBSEQUEBT ITERATIONS. * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB. * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG. * ITERM=6-IF THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY * ACCEPTABLE. * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NRES NUMBER OF RESTARTS. * IO NDEC NUMBER OF MATRIX DECOMPOSITION. * IO NREM NUMBER OF CONSTRAINT DELETIONS. * IO NADD NUMBER OF CONSTRAINT ADDITIONS. * IO NIT NUMBER OF ITERATIONS. * IO NFV NUMBER OF FUNCTION EVALUATIONS. * IO NFG NUMBER OF GRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PA2SQ1 COMPUTATION OF THE VALUE AND THE GRADIENT OF THE * OBJECTIVE FUNCTION WHICH IS DEFINED AS A SUM OF SQUARES * OF THE APPROXIMATED FUNCTIONS. * S PLLPB1 DETERMINATION OF THE INITIAL FEASIBLE POINT. * S PLNEWS IDENTIFICATION OF ACTIVE SIMPLE BOUNDS. * S PNSTEP DETERMINATION OF A SCALING FACTOR FOR THE BOUNDARY * STEP. * S PUDBM2 VARIABLE METRIC UPDATE. * S PUDFM1 VARIABLE METRIC UPDATE. * S PUDSD2 INITIATION OF A DENSE SYMMETRIC POSITIVE DEFINITE * MATRIX FOR A STRUCTURED VARIABLE METRIC METHOD. * S PUDSD3 INITIATION OF A DENSE SYMMETRIC POSITIVE DEFINITE * MATRIX FOR A COMBINED VARIABLE METRIC METHOD. * S PS0G01 STEPSIZE SELECTION USING TRUST REGION. * S PYADB4 ADDITION OF A GENERAL LINEAR CONSTRAINT. * S PYFUT1 TEST ON TERMINATION. * S PYRMB1 DELETION OF A GENERAL LINEAR CONSTRAINT. * S PYTRBD COMPUTATION OF REDUCED DIFFERENCES FOR THE VARIABLE * METRIC UPDATE. * S PYTRBG COMPUTATION OF THE REDUCED GRADIENT. * S PYTRBH COMPUTATION OF THE REDUCED HESSIAN MATRIX. * S PYTRBS COMPUTATION OF THE REDUCED DIRECTION VECTOR. * S MXPDGB BACK SUBSTITUTION AFTER THE GILL-MURRAY DECOMPOSITION. * S MXDPGD COMPUTATION OF A DIRECTION OF NEGATIVE CURVATURE AFTER * THE GILL-MURRAY DECOMPOSITION. * S MXPDGF GILL-MURRAY DECOMPOSITION OF A DENSE SYMMETRIC MATRIX. * S MXDPGN ESTIMATION OF THE MINIMUM EIGENVALUE AND THE * CORRESPONDING EIGENVECTOR AFTER THE GILL-MURRAY DECOMPOSITION. * RF MXDPGP VALUE OF THE QUADRATIC FORM AFTER THE GILL-MURRAY * DECOMPOSITION. * S MXDSDA A DENSE SYMMETRIC MATRIX IS AUGMENTED BY THE SCALED UNIT * MATRIX. * S MXDSDL DETERMINATION OF THE MINIMUM DIAGONAL ELEMENT OF A DENSE * SYMMETRIC MATRIX. * S MXDSMG GERSHGORIN BOUNDS FOR EIGENVALUES OF A DENSE SYMMETRIC * MATRIX. * S MXDSMI DENSE SYMMETRIC MATRIX A IS SET TO THE UNIT MATRIX. * RF MXDSMQ VALUE OF A QUADRATIC FORM FOR A DENSE SYMMETRIC MATRIX. * S MXVCOP COPYING OF A VECTOR. * S MXVDIR VECTOR AUGMENTED BY THE SCALED VECTOR. * RF MXVDOT DOT PRODUCT OF TWO VECTORS. * S MXVINA ABSOLUTE VALUES OF ELEMENTS OF AN INTEGER VECTOR. * S MXVNEG COPYING OF A VECTOR WITH CHANGE OF THE SIGN. * S MXVSET INITIATION OF A VECTOR. * * EXTERNAL SUBROUTINES : * SE FUN CONPUTATION OF THE VALUE OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL FUN(NF,KA,X,FA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND FA IS THE VALUE OF THE * APPROXIMATED FUNCTION. * SE DER CONPUTATION OF THE GRADIENT OF THE APPROXIMATED FUNCTION. * CALLING SEQUENCE: CALL DER(NF,KA,X,GA) WHERE NF IS A NUMBER * OF VARIABLES, KA IS THE INDEX OF THE APPROXIMATED FUNCTION, * X(NF) IS A VECTOR OF VARIABLES AND GA(NF) IS THE GRADIENT OF * THE APPROXIMATED FUNCTION. * * METHOD : * VARIABLE METRIC METHODS FOR DENSE UNCONSTRAINED AND LINEARLY * CONSTRAINED PROBLEMS. * SUBROUTINE PHYB(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,ICA,CFD, & CR,CZ,AF,GA,G,GN,H,HH,B,S,SN,XO,GO,XMAX,TOLX,TOLF,TOLB,TOLG, & XDEL,GMAX,F,MIT,MFV,MET,MET1,IPRNT,ITERM) INTEGER NF,NA,NB,NC,IX(*),IC(*),ICA(*),MIT,MFV,MET,MET1, & IPRNT,ITERM DOUBLE PRECISION X(*),XL(*),XU(*),CF(*),CL(*),CU(*),CFD(*),CG(*), & CR(*),CZ(*),AF(*),GA(*),G(*),GN(*),H(*),HH(*),B(*),S(*),SN(*), & XO(*),GO(*),XMAX,XDEL,TOLX,TOLF,TOLB,TOLG,GMAX,F DOUBLE PRECISION ETA0,ETA2,ETA5,ETA9,EPS4,EPS5,EPS7,EPS8,EPS9,FO, & FP,R,RO,P,PO,PP,GNORM,SNORM,RMAX,UMAX,DMAX,ALF,BET1,BET2,GAM1, & GAM2,DEL1,DEL2,PAR,RHO,RHO1,RHO2,CON,T,TU,E,TL,EU,EL,XDELO DOUBLE PRECISION MXVDOT,MXDPGP,MXDSMQ,MXDSDL INTEGER N,INEW,IOLD,KOLD,KREM,IER,INITS,ITERH,KDA,KD,LD,I,K,IDIR, & MODE,IPOM1,IPOM2,IND,MET3 INTEGER NTESX,NTESF,ITERS,IREST,IDECF,KIT,INF,MES1,MES2,MES3, & KC,KBC,KBF,ITERL,MAXST,NRED,MFG,IRES1,IRES2,MRED,MTESX,MTESF, & ITES,ITERD,KTERS,ISYS INTEGER NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH COMMON /STAT/ NRES,NDEC,NREM,NADD,NIT,NFV,NFG,NFH IF (ABS(IPRNT).GT.1) WRITE(6,'(1X,''ENTRY TO PHYB :'')') * * INITIATION * KBF = 0 KBC = 0 IF (NB.GT.0) KBF = 2 IF (NC.GT.0) KBC = 2 NRES=0 NDEC=0 NREM=0 NADD=0 NIT=0 NFV=0 NFG=0 NFH=0 ISYS=0 ITES=1 KREM=0 NREM=0 NADD=0 MTESX=2 MTESF=2 INITS=2 ITERM=0 ITERD=0 ITERS=2 ITERL=0 KTERS=3 IREST=-1 IRES1=999 IRES2=0 MRED=10 ETA0=1.0D-15 ETA2=1.0D-18 ETA5=1.0D-4 ETA9=1.0D 60 EPS4=0.10D 0 EPS5=0.90D 0 EPS7=1.0D-8 EPS8=0.5D 0 EPS9=1.0D-8 DEL1=0.9D 0 DEL2=1.1D 0 BET1=0.05D 0 BET2=0.75D 0 GAM1=2.0D 0 GAM2=1.0D 6 XDEL=0.0D 0 RMAX=ETA9 DMAX=ETA9 IF (TOLX.LE.0.0D 0) TOLX=1.0D-10 IF (TOLF.LE.0.0D 0) TOLF=1.0D-15 IF (TOLB.EQ.0.0D 0) TOLB=1.0D-15 IF (TOLG.LE.0.0D 0) TOLG=1.0D-5 IF (XMAX.LE.0.0D 0) XMAX=1.0D 16 IF (MET.LE.0) MET=4 IF (MET1.LE.0) MET1=3 MET3=MET-1 MES1=3 MES2=2 MES3=1 IF (MIT.LE.0) MIT=5000 IF (MFV.LE.0) MFV=5000 MFG=MFV KDA=1 KD= 2 LD=-1 KIT=NIT IPOM1=0 T=0.0D0 FO=0.0D0 N=NF * * INITIAL OPERATIONS WITH SIMPLE BOUNDS * IF (KBF.GT.0) THEN DO 10 I = 1,NF IF (IX(I).EQ.3.OR.IX(I).EQ.4) THEN IF (XU(I).LE.XL(I)) THEN XU(I) = XL(I) IX(I) = 5 ENDIF ELSE IF (IX(I).EQ.5.OR.IX(I).EQ.6) THEN XL(I) = X(I) XU(I) = X(I) IX(I) = 5 END IF IF (IX(I).EQ.1 .OR. IX(I).EQ.3) X(I) = MAX(X(I),XL(I)) IF (IX(I).EQ.2 .OR. IX(I).EQ.3) X(I) = MIN(X(I),XU(I)) 10 CONTINUE END IF * * INITIAL OPERATIONS WITH GENERAL LINEAR CONSTRAINTS * IF (KBC.GT.0) THEN K = 0 DO 20 KC = 1,NC IF (IC(KC).EQ.3.OR.IC(KC).EQ.4) THEN IF (CU(KC).LE.CL(KC)) THEN CU(KC) = CL(KC) IC(KC) = 5 ENDIF ELSE IF (IC(KC).EQ.5.OR.IC(KC).EQ.6) THEN CU(KC) = CL(KC) IC(KC) = 5 END IF CF(KC) = MXVDOT(NF,X,CG(K+1)) K = K + NF 20 CONTINUE END IF * * DETERMINATION OF AN INITIAL FEASIBLE POINT * IF (KBC.GT.0) THEN CALL MXVSET(NF,0.0D 0,G) CALL PLLPB1(NF,NC,X,IX,S,XL,XU,CF,CFD,IC,ICA,CL,CU,CG, & CR,CZ,G,GO,S,1,KBF,KBC,ETA9,EPS7,EPS9,UMAX,GMAX,N,ITERL) ELSE IF (KBF.GT.0) THEN DO 1 I=1,NF IF (IX(I).GE.5) IX(I)=-IX(I) IF (IX(I).LE.0) THEN ELSE IF ((IX(I).EQ.1.OR.IX(I).EQ.3).AND.X(I).LE.XL(I)) THEN X(I)=XL(I) ELSE IF ((IX(I).EQ.2.OR.IX(I).EQ.3).AND.X(I).GE.XU(I)) THEN X(I)=XU(I) ENDIF CALL PLNEWS(X,IX,XL,XU,EPS9,I,INEW) IF (IX(I).GT.10) IX(I)=10-IX(I) 1 CONTINUE ENDIF IF (ITERL.LT.0) ITERM=ITERL-10 IF (ITERM.NE.0) GO TO 11190 11110 CONTINUE * * MODEL DESCRIPTION * CALL PA2SQ1(NF,NA,X,F,AF,GA,G,H,ETA0,KDA,KD,LD,NFV,NFG) 11130 CONTINUE CALL PYTRBG(NF,N,IX,IC,ICA,CG,CR,CZ,G,GN,UMAX,GMAX,KBF,KBC, & IOLD,KOLD) IF (ABS(IPRNT).GT.1) & WRITE (6,'(1X,''NIT='',I5,2X,''NFV='',I5,2X,''NFG='',I5,2X, & ''F='', G16.9,2X,''G='',E10.3)') NIT,NFV,NFG,F,GMAX CALL PYFUT1(N,F,FO,UMAX,GMAX,DMAX,TOLX,TOLF,TOLB,TOLG,KD, & NIT,KIT,MIT,NFV,MFV,NFG,MFG,NTESX,MTESX,NTESF,MTESF,ITES,IRES1, & IRES2,IREST,ITERS,ITERM) IF(ITERM.NE.0) GO TO 11190 CALL PYRMB1(NF,N,IX,IC,ICA,CG,CR,CZ,G,GN,HH,EPS8,UMAX,GMAX, & KBF,KBC,IOLD,KOLD,KREM,IER,ITERM) 11140 CONTINUE CALL PYTRBH(NF,N,IX,CR,CZ,H,S,KBF,KBC,LD,ITERS) IF (MET3.EQ.0) THEN IND=0 IF(IREST.GT.0) THEN CALL MXDSMI(N,H) LD=MIN(LD,1) IDECF=-1 IND=1 ENDIF ELSE IF (MET3.LE.2) THEN CALL PUDSD2(N,H,HH,F,FO,ETA5,MET3,LD,IDIR,IDECF,IREST,IND) ELSE CALL PUDSD3(N,H,HH,IPOM1,IPOM2,LD,IDECF,ITERS,IREST,IND) ENDIF IF (IND.NE.0) THEN IF (KIT.LT.NIT) THEN NRES=NRES+1 KIT = NIT ELSE ITERM=-10 IF (ITERS.LT.0) ITERM=ITERS-5 IF (GMAX.LE.1.0D 2*TOLG) ITERM=-ITERM ENDIF ENDIF IF(ITERM.NE.0) GO TO 11190 * * DIRECTION DETERMINATION * IF (IDECF.LT.0) THEN IDECF=0 INF=0 ENDIF IF (IDECF.NE.0) THEN ITERD=-1 GO TO 12450 ENDIF GNORM=SQRT(MXVDOT(N,GN,GN)) C INITD=MAX(ABS(INITD),1) IF (XDEL.LE.0.0D 0) THEN * * INITIAL TRUST REGION BOUND * RHO1=MXDSMQ(N,H,GN,GN) RHO2=GNORM*GNORM IF (RHO1.LE.0.0D 0) THEN XDEL=GNORM ELSE XDEL=(RHO2/RHO1)*GNORM ENDIF XDEL=MIN(XDEL,4.0D 0*F/GNORM) XDEL=MIN(XDEL,XMAX) ENDIF * * INITIAL BOUNDS FOR THE PARAMETER T * NRED=0 IF (IDIR.LE.0) THEN T=0.0D 0 E=-MXDSDL(N,H,INF) CALL MXDSMG(N,H,EL,EU) TL=GNORM/XDEL-EU TU=GNORM/XDEL-EL ELSE IF (IDIR.EQ.1) THEN T=T*XDELO/XDEL TL=MAX(TL,GNORM/XDEL-EU) TU=GNORM/XDEL-EL ELSE IF (IDIR.EQ.2) THEN T=T*XDELO/XDEL TL=GNORM/XDEL-EU TU=MIN(TU,GNORM/XDEL-EL) ENDIF TL=MAX(TL,0.0D 0,E) TU=MAX(TL,TU) T=MAX(T,TL) T=MIN(T,TU) 12420 CONTINUE TL=MAX(TL,E) IF (T.LE.E.AND.NRED.NE.0) THEN * * THE PARAMETER T IS SHIFTED * T=SQRT(TL*TU) T=MAX(T,TL+0.1D 0*(TU-TL)) T=MIN(T,TL+0.9D 0*(TU-TL)) ENDIF ALF=ETA2 CALL MXVCOP(N*(N+1)/2,H,B) CALL MXDSDA(N,B,T) * * GILL-MURRAY DECOMPOSITION * CALL MXDPGF(N,B,INF,ALF,RHO) IF (INF.GT.0) THEN * * NEW ESTIMATION E IS COMPUTED (THE MATRIX IS NOT POSITIVE DEFINITE) * IF (E.GE.TU) THEN ITERD=-2 GO TO 12450 ELSE MODE=2 CALL MXDPGD(N,B,SN,INF) E=MAX(E,T-ALF/MXVDOT(N,SN,SN)) NRED=NRED+1 GO TO 12420 ENDIF ELSE * * STEP S IS COMPUTED * CALL MXVNEG(N,GN,SN) CALL MXDPGB(N,B,SN,0) SNORM=SQRT(MXVDOT(N,SN,SN)) MODE=1 ENDIF IF (TU-TL.LE.1.0D-8) THEN * * INTERVAL IS TOO SMALL * IF (T.NE.0.0D 0) THEN ITERD=5 ELSE ITERD=1 ENDIF GO TO 12440 ELSE IF (NRED.GE.20) THEN * * MAXIMUM NUMBER OF OLC REDUCTIONS * ITERD=6 GO TO 12440 ELSE IF (SNORM.GT.DEL2*XDEL) THEN * * STEP IS TOO LARGE * TL=MAX(TL,T) GO TO 12430 ELSE IF (SNORM.LT.DEL1*XDEL) THEN IF (T.NE.0.0D 0) THEN * * STEP IS TOO SMALL * TU=MIN(TU,T) ELSE * * STEP IS ACCEPTABLE * ITERD=1 GO TO 12440 ENDIF ELSE ITERD=3 GO TO 12440 ENDIF * * TRYING TO USE BOUNDARY STEP * CALL MXDPGN(N,B,XO,RHO,1) RHO1=MXVDOT(N,XO,SN) RHO2=MXVDOT(N,XO,XO) CALL PNSTEP(XDEL,SNORM,ABS(RHO1),RHO2,ALF) CON=(1.0D 0-DEL1)*(1.0D 0+DEL1) IF (ALF*ALF*RHO.LE.CON*(T*XDEL*XDEL-MXVDOT(N,GN,SN))) THEN IF (RHO1.LT.0.0D 0) ALF=-ALF CALL MXVDIR(N,ALF,XO,SN,SN) SNORM=XDEL ITERD=3 GO TO 12440 ELSE E=MAX(E,T-RHO) ENDIF 12430 CONTINUE IF (GNORM.LE.0.0D 0) THEN T=E ELSE * * NEW T IS COMPUTED USING ONE STEP OF THE NEWTON METHOD FOR * NONLINEAR EQUATION * CALL MXVCOP(N,SN,XO) CALL MXDPGB(N,B,XO,1) T=T+(SNORM*SNORM/MXDPGP(N,B,XO,XO))*(SNORM-XDEL)/XDEL ENDIF NRED=NRED+1 GO TO 12420 12440 CONTINUE PP=MXDSMQ(N,H,SN,SN)*0.5D 0 12450 CONTINUE IF (KD.GT.0) P=MXVDOT(N,GN,SN) IF (ITERD.LT.0) THEN ITERM=ITERD ENDIF * * TEST ON LOCALLY CONSTRAINED STEP * IF(SNORM.LE.0.0D 0) THEN IREST=MAX(IREST,1) ELSE IREST=0 ENDIF IF (IREST.EQ.0) THEN * * PREPARATION OF SIMPLE SEARCH * RMAX=XMAX/SNORM ENDIF IF(NIT.EQ.1) KIT=NIT IF(ITERM.NE.0) GO TO 11190 IF(IREST.NE.0) GO TO 11140 IF (MET3.EQ.3) THEN IF (IPOM1.EQ.0) THEN IF (ITERS.GT.0) THEN CALL MXVCOP(N*(N+1)/2,H,HH) ENDIF IPOM2=2 ENDIF ENDIF CALL PYTRBS(NF,N,NC,X,IX,XO,XL,XU,G,GO,CF,CFD,IC,CL,CU,CG,CZ,SN, & S,RO,FP,FO,F,PO,P,RMAX,KBF,KBC,KREM,INEW) * * LINE SEARCH * 11170 CONTINUE CALL PS0G01(R,F,FO,PO,PP,XDEL,XDELO,XMAX,RMAX,SNORM,BET1,BET2, & GAM1,GAM2,EPS4,EPS5,KD,LD,IDIR,ITERS,ITERD,MAXST,NRED,MRED, & KTERS,MES1,MES2,MES3,ISYS) IF (ISYS.EQ.0) GO TO 11174 CALL MXVDIR(NF,R,S,XO,X) CALL PA2SQ1(NF,NA,X,F,AF,GA,G,H,ETA0,KDA,KD,LD,NFV,NFG) C P=MXVDOT(NF,G,S) GO TO 11170 11174 CONTINUE KD=2 IF (ITERS.LE.0) THEN R=0.0D 0 F=FO P=PO CALL MXVCOP(NF,XO,X) IF (IDIR.EQ.0) THEN IREST=MAX(IREST,1) LD=KD GO TO 11140 ELSE LD=KD GO TO 11140 ENDIF ENDIF IF(KD.GT.LD) THEN CALL PA2SQ1(NF,NA,X,F,AF,GA,G,H,ETA0,KDA,KD,LD,NFV,NFG) ENDIF 11180 CONTINUE CALL PYTRBD(NF,N,X,IX,XO,G,GO,CZ,SN,R,F,FO,P,PO,DMAX,ITERS,KBF & ,KBC) * * VARIABLE METRIC UPDATE * IF (MET3.EQ.0) THEN ITERH=0 ELSE IF (MET3.LE.2) THEN CALL PUDBM2(NF,N,H,HH,S,XO,GO,GA,FO,PAR,MET1,MET3,IDECF,ITERH) ELSE CALL PUDFM1(N,HH,S,XO,GO,F,FO,ETA5,IPOM1,IPOM2,MET1,IDECF,ITERH) ENDIF CALL PYADB4(NF,N,NC,X,IX,XL,XU,CF,CFD,IC,ICA,CL,CU,CG,CR,CZ,H, & S,R,1.0D-8,1.0D-8,GMAX,UMAX,KBF,KBC,INEW,IER,ITERM) IF (IDIR.EQ.0) THEN IF (ITERH.NE.0) IREST=MAX(IREST,1) GO TO 11130 ELSE GO TO 11140 ENDIF 11190 CONTINUE IF (KBF.GT.0) CALL MXVINA(NF,IX) IF (KBC.GT.0) CALL MXVINA(NC,IC) 11200 CONTINUE IF (IPRNT.GT.1.OR.IPRNT.LT.0) & WRITE(6,'(1X,''EXIT FROM PRED :'')') IF (IPRNT.NE.0) & WRITE (6,'(1X,''NIT='',I5,2X,''NFV='',I5,2X,''NFG='',I5,2X, & ''F='', G16.9,2X,''G='',E10.3,2X,''ITERM='',I3)') NIT,NFV,NFG, & F,GMAX,ITERM IF (IPRNT.LT.0) & WRITE (6,'(1X,''X='',5(G14.7,1X):/(3X,5(G14.7,1X)))') & (X(I),I=1,NF) RETURN END