************************************************************************ * SUBROUTINE PVARU ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR UNCONSTRAINED NONSMOOTH OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * RI X(NF) VECTOR OF VARIABLES. * II IPAR(5) INTEGER PAREMETERS: * IPAR(1) MAXIMUM NUMBER OF ITERATIONS. * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS. * IPAR(3) WEIGHT UPDATING METHOD SPECIFICATION. * IPAR(3)=1-QUADRATIC INTERPOLATION. IPAR(3)=2-LOCAL MINIMUM * LOCALIZATION. IPAR(3)=3-QUASI-NEWTON CONDITION. * IPAR(4) MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF VARIABLES * SMALLER THAN RPAR(2). * IPAR(5) MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF FUNCTION * VALUES SMALLER THAN RPAR(3). * RI RPAR(6) REAL PARAMETERS: * RPAR(1) MAXIMUM STEPSIZE. * RPAR(2) TOLERANCE FOR CHANGE OF VARIABLES. * RPAR(3) TOLERANCE FOR CHANGE OF FUNCTION VALUES. * RPAR(4) TOLERANCE FOR THE FUNCTION VALUE. * RPAR(5) TOLERANCE FOR THE TERMINATION CRITERION. * RPAR(5) TOLERANCE FOR A DESCENT DIRECTION. * RPAR(6) DISTANCE MEASURE PARAMETER. * 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=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * IF ITERM=-6, THEN THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY ACCEPTABLE. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NDECF NUMBER OF MATRIX DECOMPOSITION. * IO NRES NUMBER OF RESTARTS. * IO NRED NUMBER OF MINOR ITERATIONS. * 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 SUBGRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PVAR BUNDLE VARIABLE METRIC METHOD FOR CONVEX NONSMOOTH * OPTIMIZATION. * * EXTERNAL SUBROUTINES : * SE FUNDER COMPUTATION OF THE VALUE AND THE SUBGRADIENT OF THE * OBJECTIVE FUNCTION. CALLING SEQUENCE: CALL FUNDER(NF,X,F,G) * WHERE NF IS A NUMBER OF VARIALES, X(NF) IS A VECTOR OF * VARIABLES, F IS THE VALUE OF THE OBJECTIVE FUNCTION AND * G(NF) IS THE SUBGRADIENT OF THE OBJECTIVE FUNCTION. * SUBROUTINE PVARU(NF,NA,X,IPAR,RPAR,F,GMAX,IPRNT,ITERM) DOUBLE PRECISION F,GMAX INTEGER ITERM,NA,NF DOUBLE PRECISION RPAR(6),X(*) INTEGER IPAR(5) INTEGER NADD,NDECF,NFG,NFH,NFV,NIT,NRED,NREM,NRES INTEGER LAF,LAG,LAX,LG,LGO,LGP,LGS,LH,LS,LXO,NB,NC,IPRNT INTEGER IA(1) COMMON /STAT/NDECF,NRES,NRED,NREM,NADD,NIT,NFV,NFG,NFH DOUBLE PRECISION RA(:) ALLOCATABLE RA IF (NA.LE.0) NA = NF + 3 ALLOCATE (RA(NF*(NF+13)/2+2*NA*(NF+2))) NB = 0 NC = 0 * * POINTERS FOR AUXILIUARY ARRAYS * LAF = 1 LAX = LAF + 4*NA LAG = LAX + NF*NA LG = LAG + NF*NA LH = LG + NF LS = LH + NF* (NF+1)/2 LXO = LS + NF LGO = LXO + NF LGP = LGO + NF LGS = LGP + NF CALL PVAR(NF,NA,NB,NC,X,IA,RA,RA,RA,IA,RA,RA,RA,IA,RA,RA,RA, + RA(LAF),RA(LAX),RA(LAG),RA(LG),RA(LGP),RA(LH),RA(LS), + RA(LS),RA(LXO),RA(LGO),RA(LGP),RA(LGS),RPAR(1),RPAR(2), + RPAR(3),RPAR(4),RPAR(5),RPAR(6),GMAX,F,IPAR(1),IPAR(2), + IPAR(3),IPAR(4),IPAR(5),IPRNT,ITERM) DEALLOCATE(RA) RETURN END ************************************************************************ * SUBROUTINE PVARS ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR UNCONSTRAINED NONSMOOTH OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * RI X(NF) VECTOR OF VARIABLES. * II IPAR(5) INTEGER PAREMETERS: * IPAR(1) MAXIMUM NUMBER OF ITERATIONS. * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS. * IPAR(3) WEIGHT UPDATING METHOD SPECIFICATION. * IPAR(3)=1-QUADRATIC INTERPOLATION. IPAR(3)=2-LOCAL MINIMUM * LOCALIZATION. IPAR(3)=3-QUASI-NEWTON CONDITION. * IPAR(4) MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF VARIABLES * SMALLER THAN RPAR(2). * IPAR(5) MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF FUNCTION * VALUES SMALLER THAN RPAR(3). * RI RPAR(6) REAL PARAMETERS: * RPAR(1) MAXIMUM STEPSIZE. * RPAR(2) TOLERANCE FOR CHANGE OF VARIABLES. * RPAR(3) TOLERANCE FOR CHANGE OF FUNCTION VALUES. * RPAR(4) TOLERANCE FOR THE FUNCTION VALUE. * RPAR(5) TOLERANCE FOR THE TERMINATION CRITERION. * RPAR(5) TOLERANCE FOR A DESCENT DIRECTION. * RPAR(6) DISTANCE MEASURE PARAMETER. * 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=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * IF ITERM=-6, THEN THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY ACCEPTABLE. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NDECF NUMBER OF MATRIX DECOMPOSITION. * IO NRES NUMBER OF RESTARTS. * IO NRED NUMBER OF MINOR ITERATIONS. * 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 SUBGRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PVAR BUNDLE VARIABLE METRIC METHOD FOR CONVEX NONSMOOTH * OPTIMIZATION. * * EXTERNAL SUBROUTINES : * SE FUNDER COMPUTATION OF THE VALUE AND THE SUBGRADIENT OF THE * OBJECTIVE FUNCTION. CALLING SEQUENCE: CALL FUNDER(NF,X,F,G) * WHERE NF IS A NUMBER OF VARIALES, X(NF) IS A VECTOR OF * VARIABLES, F IS THE VALUE OF THE OBJECTIVE FUNCTION AND * G(NF) IS THE SUBGRADIENT OF THE OBJECTIVE FUNCTION. * SUBROUTINE PVARS(NF,NA,NB,X,IX,XL,XU,IPAR,RPAR,F,GMAX,IPRNT, + ITERM) DOUBLE PRECISION F,GMAX INTEGER ITERM,NA,NB,NF DOUBLE PRECISION RPAR(6),X(*),XL(*),XU(*) INTEGER IPAR(5),IX(*) INTEGER NADD,NDECF,NFG,NFH,NFV,NIT,NRED,NREM,NRES INTEGER LAF,LAG,LAX,LG,LGN,LGO,LGP,LGS,LH,LS,LXO,NC,IPRNT COMMON /STAT/NDECF,NRES,NRED,NREM,NADD,NIT,NFV,NFG,NFH DOUBLE PRECISION RA(:) ALLOCATABLE RA IF (NA.LE.0) NA = NF + 3 ALLOCATE (RA(NF*(NF+13)/2+2*NA*(NF+2))) NC = 0 * * POINTERS FOR AUXILIUARY ARRAYS * LAF = 1 LAX = LAF + 4*NA LAG = LAX + NF*NA LG = LAG + NF*NA LGN = LG + NF LH = LGN + NF LS = LH + NF* (NF+1)/2 LXO = LS + NF LGO = LXO + NF LGP = LGO + NF LGS = LGP + NF CALL PVAR(NF,NA,NB,NC,X,IX,XL,XU,RA,IX,RA,RA,RA,IX,RA,RA,RA, + RA(LAF),RA(LAX),RA(LAG),RA(LG),RA(LGN),RA(LH),RA(LS), + RA(LS),RA(LXO),RA(LGO),RA(LGP),RA(LGS),RPAR(1),RPAR(2), + RPAR(3),RPAR(4),RPAR(5),RPAR(6),GMAX,F,IPAR(1),IPAR(2), + IPAR(3),IPAR(4),IPAR(5),IPRNT,ITERM) DEALLOCATE(RA) RETURN END ************************************************************************ * SUBROUTINE PVARL ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR UNCONSTRAINED NONSMOOTH OPTIMIZATION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * RI X(NF) VECTOR OF VARIABLES. * II IPAR(5) INTEGER PAREMETERS: * IPAR(1) MAXIMUM NUMBER OF ITERATIONS. * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS. * IPAR(3) WEIGHT UPDATING METHOD SPECIFICATION. * IPAR(3)=1-QUADRATIC INTERPOLATION. IPAR(3)=2-LOCAL MINIMUM * LOCALIZATION. IPAR(3)=3-QUASI-NEWTON CONDITION. * IPAR(4) MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF VARIABLES * SMALLER THAN RPAR(2). * IPAR(5) MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF FUNCTION * VALUES SMALLER THAN RPAR(3). * RI RPAR(6) REAL PARAMETERS: * RPAR(1) MAXIMUM STEPSIZE. * RPAR(2) TOLERANCE FOR CHANGE OF VARIABLES. * RPAR(3) TOLERANCE FOR CHANGE OF FUNCTION VALUES. * RPAR(4) TOLERANCE FOR THE FUNCTION VALUE. * RPAR(5) TOLERANCE FOR THE TERMINATION CRITERION. * RPAR(5) TOLERANCE FOR A DESCENT DIRECTION. * RPAR(6) DISTANCE MEASURE PARAMETER. * 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=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * IF ITERM=-6, THEN THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY ACCEPTABLE. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NDECF NUMBER OF MATRIX DECOMPOSITION. * IO NRES NUMBER OF RESTARTS. * IO NRED NUMBER OF MINOR ITERATIONS. * 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 SUBGRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PVAR BUNDLE VARIABLE METRIC METHOD FOR CONVEX NONSMOOTH * OPTIMIZATION. * * EXTERNAL SUBROUTINES : * SE FUNDER COMPUTATION OF THE VALUE AND THE SUBGRADIENT OF THE * OBJECTIVE FUNCTION. CALLING SEQUENCE: CALL FUNDER(NF,X,F,G) * WHERE NF IS A NUMBER OF VARIALES, X(NF) IS A VECTOR OF * VARIABLES, F IS THE VALUE OF THE OBJECTIVE FUNCTION AND * G(NF) IS THE SUBGRADIENT OF THE OBJECTIVE FUNCTION. * SUBROUTINE PVARL(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,IPAR, + RPAR,F,GMAX,IPRNT,ITERM) DOUBLE PRECISION F,GMAX INTEGER ITERM,NA,NB,NC,NF DOUBLE PRECISION CF(*),CG(*),CL(*),CU(*),RPAR(6),X(*),XL(*), + XU(*) INTEGER IC(*),IPAR(5),IX(*) INTEGER NADD,NDECF,NFG,NFH,NFV,NIT,NRED,NREM,NRES INTEGER LAF,LAG,LAX,LCFD,LCR,LCZ,LG,LGN,LGO,LGP,LGS,LH,LS,LSN, + LXO,IPRNT COMMON /STAT/NDECF,NRES,NRED,NREM,NADD,NIT,NFV,NFG,NFH INTEGER IA(:) DOUBLE PRECISION RA(:) ALLOCATABLE IA,RA IF (NA.LE.0) NA = NF + 3 ALLOCATE (IA(NF+1),RA(NF*(2*NF+9)+2*NA*(NF+2)+NC)) * * POINTERS FOR AUXILIUARY ARRAYS * LCFD = 1 LCR = LCFD + NC LCZ = LCR + NF* (NF+1)/2 LAF = LCZ + NF*NF LAX = LAF + 4*NA LAG = LAX + NF*NA LG = LAG + NF*NA LGN = LG + NF LH = LGN + NF LS = LH + NF* (NF+1)/2 LSN = LS + NF LXO = LSN + NF LGO = LXO + NF LGP = LGO + NF LGS = LGP + NF CALL PVAR(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,IA,RA(LCFD), + RA(LCR),RA(LCZ),RA(LAF),RA(LAX),RA(LAG),RA(LG),RA(LGN), + RA(LH),RA(LS),RA(LSN),RA(LXO),RA(LGO),RA(LGP),RA(LGS), + RPAR(1),RPAR(2),RPAR(3),RPAR(4),RPAR(5),RPAR(6),GMAX, + F,IPAR(1),IPAR(2),IPAR(3),IPAR(4),IPAR(5),IPRNT,ITERM) DEALLOCATE(IA,RA) RETURN END ************************************************************************ * SUBROUTINE PVAR ALL SYSTEMS 99/01/22 * PURPOSE : * GENERAL VARIABLE METRIC SUBROUTINE FOR NONSMOOTH 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. * RU X(NF) VECTOR OF VARIABLES. * RA AF(4*NA) VECTOR OF BUNDLE VALUES. * RA AX(NF*NA) MATRIX WHOSE COLUMNS ARE BUNDLE POINTS. * RA AG(NF*NA) MATRIX WHOSE COLUMNS ARE BUNDLE SUBGRADIENTS. * RA G(NF) SUBGRADIENT OF THE OBJECTIVE FUNCTION. * RA H(NF*(NF+1)/2) APPROXIMATION OF THE HESSIAN MATRIX. * RA S(NF) DIRECTION VECTOR. * RA XO(NF) DIFFERENCE OF VECTORS OF VARIABLES. * RA GO(NF) DIFFERENCE OF SUBGRADIENTS. * RA GP(NF) AUXILIARY VECTOR. * RI XMAX MAXIMUM STEPSIZE. * RI TOLX TOLERANCE FOR CHANGE OF VARIABLES. * RI TOLF TOLERANCE FOR CHANGE OF FUNCTION VALUES. * RI TOLB TOLERANCE FOR THE FUNCTION VALUE. * RI TOLG TOLERANCE FOR THE THE TERMINATION CRITERION. * RI ETA DISTANCE MEASURE PARAMETER. * 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 MEX CONVEXITY ASSUMPTION. MEX=1-CONVEX VERSION OF THE METHOD * IS USED. MEX=2-NONCONVEX VERSION OF THE METHOD IS USED. * II MTESX MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF VARIABLES * SMALLER THAN TOLX. * II MTESF MAXIMUM NUMBER OF ITERATIONS WITH CHANGES OF FUNCTION * VALUES SMALLER THAN TOLF. * 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=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV. * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED. * IF ITERM=-6, THEN THE TERMINATION CRITERION HAS NOT BEEN * SATISFIED, BUT THE POINT OBTAINED IF USUALLY ACCEPTABLE. * * VARIABLES IN COMMON /STAT/ (STATISTICS) : * IO NDECF NUMBER OF MATRIX DECOMPOSITION. * IO NRES NUMBER OF RESTARTS. * IO NRED NUMBER OF MINOR ITERATIONS. * 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 SUBGRADIENT EVALUATIONS. * IO NFH NUMBER OF HESSIAN EVALUATIONS. * * SUBPROGRAMS USED : * S PS1L07 LINE SEARCH USING FUNCTION VALUES AND DERIVATIVES. * S PS1L08 LINE SEARCH USING FUNCTION VALUES AND DERIVATIVES. * S PUDVI2 VARIABLE METRIC UPDATE OF THE INVERSE HESSIAN MATRIX. * S PYBUN1 BUNDLE SELECTION. * S PYAGR1 SUBGRADIENT AGGREGATION. * S PYAGR2 SIMPLIFIED SUBGRADIENT AGGREGATION. * S MXDPGF GILL-MURRAY DECOMPOSITION OF A DENSE SYMMETRIC MATRIX. * S MXDPGB BACK SUBSTITUTION AFTER GILL-MURRAY DECOMPOSITION. * S MXDSMI DENSE SYMMETRIC MATRIX A IS SET TO THE UNIT MATRIX. * S MXDSMM MATRIX VECTOR PRODUCT. * S MXVCOP COPYING OF A VECTOR. * S MXVDIF DIFFERENCE OF TWO VECTORS. * RF MXVDOT DOT PRODUCT OF TWO VECTORS. * S MXVNEG COPYING OF A VECTOR WITH CHANGE OF THE SIGN. * RF MXVSAB L-1 NORM OF A VECTOR. * * EXTERNAL SUBROUTINES : * SE FUNDER COMPUTATION OF THE VALUE AND THE SUBGRADIENT OF THE * OBJECTIVE FUNCTION. CALLING SEQUENCE: CALL FUNDER(NF,X,F,G) * WHERE NF IS A NUMBER OF VARIABLES, X(NF) IS A VECTOR OF * VARIABLES, F IS THE VALUE OF THE OBJECTIVE FUNCTION AND * G(NF) IS THE SUBGRADIENT OF THE OBJECTIVE FUNCTION. * * METHOD : * MEX=0 - L.LUKSAN, J.VLCEK: GLOBALLY CONVERGENT VARIABLE METRIC METHOD * FOR CONVEX NONSMOOTH UNCONSTRAINED MINIMIZATION. JOTA 102 * (1999) 593-613. * MEX=1 - J.VLCEK, L.LUKSAN: GLOBALLY CONVERGENT VARIABLE METRIC METHOD * FOR NONCONVEX NONDIFFERENTIABLE UNCONSTRAINED MINIMIZATION. * REPORT B 8/1999, DEPARTMENT OF MATHEMATICAL INFORMATION * TECHNOLOGY, UNIVERSITY OF JYVASKYLA, 1999. * SUBROUTINE PVAR(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,ICA,CFD,CR, + CZ,AF,AX,AG,G,GN,H,S,SN,XO,GO,GP,GS,XMAX,TOLX, + TOLF,TOLB,TOLG,ETA,GMAX,F,MIT,MFV,MEX,MTESX, + MTESF,IPRNT,ITERM) DOUBLE PRECISION ETA,F,GMAX,TOLB,TOLF,TOLG,TOLX,XMAX INTEGER IPRNT,ITERM,MEX,MFV,MIT,MOS,MTESF,MTESX,NA,NB,NC,NF DOUBLE PRECISION AF(*),AG(*),AX(*),CF(*),CFD(*),CG(*),CL(*),CR(*), + CU(*),CZ(*),G(*),GN(*),GO(*),GP(*),GS(*),H(*), + S(*),SN(*),X(*),XL(*),XO(*),XU(*) INTEGER IC(*),ICA(*),IX(*) INTEGER NADD,NDECF,NFG,NFH,NFV,NIT,NRED,NREM,NRES DOUBLE PRECISION ALF,ALFN,ALFV,BET,CON1,CON2,DF,DMAX,EPS0,EPS1, + EPS2,EPS7,EPS8,EPS9,ETA2,ETA9,FMAX,FMIN,FO,GAM, + GNORM,P,PO,POM,R,RHO,RMAX,RMIN,RO,RP,SNORM,UMAX, + XNORM INTEGER I,IDECF,IER,INEW,INF,IOLD,IREST,IRET,ITERL,ITERS,JC,JE,JL, + JR,JU,K,KBC,KBF,KC,KIT,KOLD,KREM,MAL,N,NNC,NNK,NNV,NTESF, + NTESX DOUBLE PRECISION MXVDOT,MXVNOR,MXVSAB COMMON /STAT/NDECF,NRES,NRED,NREM,NADD,NIT,NFV,NFG,NFH IF (ABS(IPRNT).GT.1) WRITE (6,'(1X,''ENTRY TO PVAR :'')') * * INITIATION * KBF = 0 KBC = 0 IF (NB.GT.0) KBF = 2 IF (NC.GT.0) KBC = 2 NIT = 0 NFV = 0 NFG = 0 KREM = 0 NREM = 0 NRES = 0 NADD = 0 NTESX = 0 NTESF = 0 ITERM = 0 ITERS = 0 IREST = 1 ITERS = 2 NDECF = 0 IDECF = 0 ETA9 = 1.0D60 EPS0 = 1.0D-6 EPS1 = 1.0D-4 EPS2 = 2.5D-1 EPS7 = 1.0D-8 EPS8 = 0.8D 0 EPS9 = 1.0D-8 FMAX = 1.0D60 FMIN = -FMAX IF (TOLX.LE.0.0D0) TOLX = 1.0D-8 IF (TOLF.LE.0.0D0) TOLF = 1.0D-8 IF (TOLB.EQ.0.0D0) TOLB = FMIN + 1.0D-16 IF (TOLG.LE.0.0D0) TOLG = 1.0D-6 IF (XMAX.LE.0.0D0) XMAX = 1.0D3 IF (ETA. LE.0.0D0) ETA = 0.0D 0 IF (MEX.LE.0) MEX=2 IF (MEX.NE.2) MEX=1 MOS = 2 IF (MTESX.LE.0) MTESX = 20 IF (MTESF.LE.0) MTESF = 2 IF (MIT.LE.0) MIT = 1000 IF (MFV.LE.0) MFV = 2000 N = NF KIT = 0 * * 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.0D0,GO) CALL PLLPB1(NF,NC,X,IX,XO,XL,XU,CF,CFD,IC,ICA,CL,CU,CG,CR,CZ, + GO,GO,S,1,KBF,KBC,ETA9,EPS7,EPS9,UMAX,GMAX,N, + ITERL) ELSE IF (KBF.GT.0) THEN DO 30 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) THEN IF (X(I).LE.XL(I)) THEN X(I) = XL(I) END IF ELSE IF (IX(I).EQ.2.OR.IX(I).EQ.3) THEN IF (X(I).GE.XU(I)) THEN X(I) = XU(I) END IF END IF CALL PLNEWS(X,IX,XL,XU,EPS9,I,INEW) IF (IX(I).GT.10) IX(I) = 10 - IX(I) 30 CONTINUE END IF MAL = 0 JR = 0 JC = 0 JE = 0 JU = 0 NNC = 0 NNK = 0 NNV = 0 GAM = 1.0D0 IF (MEX.EQ.1) THEN CON1 = 2.0D0 CON2 = 1.0D0 RHO = 1.0D-8 ETA2 = 1.0D-8 ELSE CON1 = 1.0D2 CON2 = 1.0D-1 RHO = 1.0D-12 ETA2 = 1.0D-12 END IF FO = FMIN * * COMPUTATION OF THE VALUE AND THE SUBGRADIENT OF THE OBJECTIVE * FUNCTION * CALL FUNDER(NF,X,F,G) NFV = NFV + 1 NFG = NFG + 1 DF = ABS(F) + 1.0D0 CALL PYBUN1(NF,NA,MAL,X,G,F,AX,AG,AF,ITERS) CALL MXDSMI(N,H) * * START OF THE ITERATION WITH TESTS FOR TERMINATION. * 40 CONTINUE IF (ITERS.GT.0) THEN IF (MEX.EQ.1) THEN JC = 0 JU = 0 NNC = 0 END IF ALFN = 0.0D0 ALFV = 0.0D0 CALL MXVCOP(NF,G,GP) END IF CALL PYTRBG(NF,N,IX,IC,ICA,CG,CR,CZ,GP,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 IF (ITERM.LT.0) GO TO 80 IF (F.LE.TOLB) THEN ITERM = 3 GO TO 80 END IF IF (NIT.GE.MIT) THEN ITERM = 12 GO TO 80 END IF IF (NFV.GE.MFV) THEN ITERM = 11 GO TO 80 END IF ITERM = 0 NIT = NIT + 1 CALL PYRMB1(NF,N,IX,IC,ICA,CG,CR,CZ,GP,GN,H,EPS8,UMAX,GMAX,KBF, + KBC,IOLD,KOLD,KREM,IER,ITERM) IF (ITERM.NE.0) GO TO 80 50 CONTINUE * * RESTART * IF (IREST.GT.0) THEN CALL MXDSMI(N,H) IDECF = -1 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 GO TO 80 END IF END IF IF (MEX.EQ.2 .AND. JE.GT.0) GO TO 60 * * DIRECTION DETERMINATION * IF (IDECF.LT.0) THEN IDECF = 9 INF = 0 END IF IF (IDECF.EQ.0) THEN * * INVERSION * ALF = ETA2 CALL MXDPGF(N,H,INF,ALF,BET) CALL MXDPGI(N,H) NDECF = NDECF + 1 IDECF = 9 ELSE IF (IDECF.EQ.9) THEN ELSE ITERM = -1 GO TO 80 END IF GNORM = SQRT(MXVDOT(N,GN,GN)) * * NEWTON LIKE STEP * CALL MXDSMM(N,H,GN,SN) CALL MXVNEG(N,SN,SN) SNORM = SQRT(MXVDOT(N,SN,SN)) P = MXVDOT(N,GN,SN) * * TEST ON DESCENT DIRECTION * IF (P+EPS0*GNORM*SNORM.LE.0.0D0) THEN IREST = 0 ELSE IREST = 1 GO TO 50 END IF XNORM = -P + 2.0D0*ALFV POM = RHO*GNORM**2 IF (XNORM.LT.POM .OR. (JC.EQ.1.AND.JU.EQ.1)) THEN NNC = NNC + 1 IF (NNC.GE.1) JC = 1 CALL MXVDIR(N,-RHO,GN,SN,SN) CALL MXDSDA(N,H,RHO) XNORM = XNORM + POM END IF 60 CONTINUE IF (XNORM.LE.TOLG) THEN IF (SNORM.LE.0.0D0) ITERM = 4 NTESX = NTESX + 1 IF (ITERS.GT.0 .AND. DF.LT.CON1*TOLF* + MAX(ABS(F),1.0D0)) ITERM = 4 IF (NTESX.GE.2 .AND. NNK.GT.1) ITERM = 4 ELSE NTESX = 0 END IF IF (ITERM.NE.0) GO TO 80 * * PREPARATION OF LINE SEARCH * IF (SNORM.GT.0.0D0) RMAX = XMAX/SNORM RMIN = 1.0D-10 INEW=0 CALL PYTRBS(NF,N,NC,X,IX,XO,XL,XU,G,GO,CF,CFD,IC,CL,CU,CG,CZ,SN,S, + RO,POM,FO,F,PO,P,RMAX,KBF,KBC,KREM,INEW) IF (RMAX.LE.RMIN) THEN R = 0.0D0 GO TO 70 END IF * * LINE SEARCH WITH DIRECTIONAL DERIVATIVES WHICH ALLOWS NULL STEPS * IF (MEX.EQ.1) THEN CALL PS1L07(NF,NA,MAL,X,G,S,XO,GO,AF,AG,AX,R,RP,FO,F,PO,RMIN, + RMAX,1.0D-4*XNORM,DF,ETA9,TOLF,JL,JE,NNV,NTESF, + MTESF,ITERS) ELSE CALL PS1L08(NF,NA,MAL,X,G,S,XO,AF,AG,AX,R,RP,FO,F,PO,P,RMIN, + RMAX,SNORM,XNORM,EPS1,EPS2,ETA,ETA9,JE,MOS,ITERS) END IF IF (KBC.GT.0 .OR. KBF.GT.0) THEN IF (F.EQ.FO .AND. R.GE.RMAX .AND. INEW.NE.0) THEN ITERS = 1 END IF END IF IF (MEX.EQ.1) THEN IF (JL.GT.0 .AND. ITERS.EQ.0) F = FO IF (JL.GT.0) THEN ITERM = 2 GO TO 80 END IF IF (JE.GT.0) NTESX = 0 ELSE NNV = NNV + 1 POM = DF IF (ABS(FO-F).GE.DF*1.0D-5) POM = ABS(FO-F) IF (ITERS.GT.0) DF = POM IF (POM.LE.TOLF*MAX(ABS(F),1.0D0) .OR. + FO.EQ.F .AND. (R.LT.RMAX.OR.INEW.EQ.0)) THEN NTESF = NTESF + 1 IF (NTESF.GE.MTESF) THEN F = FO ITERM = 2 GO TO 80 END IF ELSE NTESF = 0 END IF END IF CALL PYBUN1(NF,NA,MAL,X,G,F,AX,AG,AF,ITERS) IF (RP.LT.SQRT(ETA9)) GAM = (MAX(CON2,MIN(1.0D2,RP))+2.0D0*GAM)/ + 3.0D0 IRET = 0 IF (ITERS.EQ.0) THEN NNK = NNK + 1 IF (MEX.EQ.1) THEN ALFN = ABS((FO-F)/R+P) ELSE ALFN = MAX(ABS(FO-F+P*R),ETA* (SNORM*R)**MOS) END IF IF (NNK.EQ.1) THEN CALL PYAGB2(NF,N,IX,H,G,GP,GN,SN,CZ,S,ALFN,ALFV,KBF,KBC) ELSE CALL PYAGB1(NF,N,IX,H,G,GO,GP,GN,SN,CZ,S,GS,ALFN,ALFV,KBF, + KBC) END IF F = FO ELSE NNK = 0 IF (MEX.EQ.1) THEN RHO = 1.0D-8/NFV IF (GNORM.GT.0.0D0) RHO = RHO* + MIN(1.0D0/MIN(GNORM**2,1.0D3), + GNORM**2) END IF IF (GAM.GT.1.0D0) JR = JR + 1 IF (GAM.GT.1.0D1 .AND. NNV.GT.3 .AND. JR.GT.1) THEN * * MATRIX SCALING * NNV = 0 JR = 0 CALL MXDSMS(N,H,GAM) GAM = SQRT(GAM) IRET = 1 END IF END IF CALL PYTRBD(NF,N,X,IX,XO,G,GO,CZ,SN,R,F,FO,POM,PO,DMAX,ITERS,KBF, + KBC) POM = MXVSAB(N,GO) IF (IRET.GT.0) THEN IF (POM.NE.0.0D0) JE = 0 GO TO 70 END IF IF (MEX.EQ.1) THEN JU = 0 POM = MXVDOT(N,XO,GO) IF (POM.GT.1.0D-5*R*SNORM**2 .AND. + ABS(POM).GT.1.0D-6*MXVNOR(N,XO)*MXVNOR(N,GO)) THEN CALL PUDVI2(N,H,XO,GN,GO,S,POM,RHO,JC,JU,NNK,0,NIT) END IF ELSE IF (POM.EQ.0.0D0 .AND. ITERS.GT.0) THEN JE = JE + 1 IF (JE.GT.7) JE = 99 GO TO 70 ELSE JE = 0 END IF POM = MXVDOT(N,XO,GO) IF (POM.GT.R*RHO .AND. ABS(POM).GT. + 1.0D-6*MXVNOR(N,XO)*MXVNOR(N,GO)) THEN CALL PUDVI2(N,H,XO,GN,GO,S,POM,RHO,JC,JU,NNK,1,NIT) END IF END IF 70 CONTINUE IF (ITERS.NE.0 .OR. RMAX.LE.RMIN .AND. INEW.NE.0) THEN CALL PYADB4(NF,N,NC,X,IX,XL,XU,CF,CFD,IC,ICA,CL,CU,CG,CR,CZ,H, + S,R,EPS7,EPS9,GMAX,UMAX,KBF,KBC,INEW,IER,ITERM) END IF GO TO 40 80 GMAX = XNORM IF (IPRNT.GT.1 .OR. IPRNT.LT.0) + WRITE (6,'(1X,''EXIT FROM PVAR :'')') 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