************************************************************************ * SUBROUTINE PBUNU 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 PBUN PROXIMAL BUNDLE METHOD WITH LINE SEARCH WHICH USES A * SPECIAL QUADRATIC PROGRAMMING SUBALGORITHM. * * 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 PBUNU(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,LAFD,LAG,LAR,LAZ,LG,LGO,LGS,LH,LIA,LIAA,LS,LXO,LXS,NB, + NC,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(NA+NF+1),RA(NF*(NF+1)/2+NF*(NA+9)+5*NA+4)) NB = 0 NC = 0 * * POINTERS FOR AUXILIUARY ARRAYS * LAF = 1 LAFD = LAF + 4*NA LAG = LAFD + NA LAR = LAG + NF*NA LAZ = LAR + (NF+1)* (NF+2)/2 LG = LAZ + NF + 1 LH = LG + NF LS = LH + NF LXO = LS + NF + 1 LGO = LXO + NF LXS = LGO + NF + 1 LGS = LXS + NF LIA = 1 LIAA = LIA + NA CALL PBUN(NF,NA,NB,NC,X,IA,RA,RA,RA,IA,RA,RA,RA,RA,RA(LAF),IA, + RA(LAFD),RA(LAG),IA(LIAA),RA(LAR),RA(LAZ),RA(LG),RA(LH), + RA(LS),RA(LXO),RA(LGO),RA(LXS),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 PBUNS ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR NONSMOOTH OPTIMIZATION WITH SIMPLE * BOUNDS. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * II NB NUMBER OF SIMPLE BOUNDS. NB=0-SIMPLE BOUNDS SUPPRESSED. * NB=NF-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. * 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 AN ELEMENT OF THE LAGARANGIAN * FUNCTION. * 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 PBUN PROXIMAL BUNDLE METHOD WITH LINE SEARCH WHICH USES A * SPECIAL QUADRATIC PROGRAMMING SUBALGORITHM. * * 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 PBUNS(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,LAFD,LAG,LAR,LAZ,LG,LGO,LGS,LH,LIA,LIAA,LS,LXO,LXS, + NC,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(NA+NF+1),RA(NF*(NF+1)/2+NF*(NA+9)+5*NA+4)) NC = 0 * * POINTERS FOR AUXILIUARY ARRAYS * LAF = 1 LAFD = LAF + 4*NA LAG = LAFD + NA LAR = LAG + NF*NA LAZ = LAR + (NF+1)* (NF+2)/2 LG = LAZ + NF + 1 LH = LG + NF LS = LH + NF LXO = LS + NF + 1 LGO = LXO + NF LXS = LGO + NF + 1 LGS = LXS + NF LIA = 1 LIAA = LIA + NA CALL PBUN(NF,NA,NB,NC,X,IX,XL,XU,RA,IA,RA,RA,RA,RA,RA(LAF),IA, + RA(LAFD),RA(LAG),IA(LIAA),RA(LAR),RA(LAZ),RA(LG),RA(LH), + RA(LS),RA(LXO),RA(LGO),RA(LXS),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 PBUNL ALL SYSTEMS 97/01/22 * PURPOSE : * EASY TO USE SUBROUTINE FOR NONSMOOTH OPTIMIZATION WITH SIMPLE * BOUNDS AND GENERAL LINEAR CONSTRAINTS. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * II NB NUMBER OF SIMPLE BOUNDS. NB=0-SIMPLE BOUNDS SUPPRESSED. * NB=NF-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. * IA IA(NA+NF+1) AUXILIARY ARRAY. * RA RA(NF*(NF+1)/2+NF*(NA+9)+5*NA+4) AUXILIARY ARRAY. * 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 AN ELEMENT OF THE LAGARANGIAN * FUNCTION. * 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 PBUN PROXIMAL BUNDLE METHOD WITH LINE SEARCH WHICH USES A * SPECIAL QUADRATIC PROGRAMMING SUBALGORITHM. * * 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 PBUNL(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,LAFD,LAG,LAR,LAZ,LCFD,LG,LGO,LGS,LH,LIA,LIAA,LS,LXO, + LXS,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(NA+NF+1),RA(NF*(NF+1)/2+NF*(NA+9)+5*NA+NC+4)) * * POINTERS FOR AUXILIUARY ARRAYS * LCFD = 1 LAF = LCFD + NC LAFD = LAF + 4*NA LAG = LAFD + NA LAR = LAG + NF*NA LAZ = LAR + (NF+1)* (NF+2)/2 LG = LAZ + NF + 1 LH = LG + NF LS = LH + NF LXO = LS + NF + 1 LGO = LXO + NF LXS = LGO + NF + 1 LGS = LXS + NF LIA = 1 LIAA = LIA + NA CALL PBUN(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,RA,RA(LAF),IA, + RA(LAFD),RA(LAG),IA(LIAA),RA(LAR),RA(LAZ),RA(LG),RA(LH), + RA(LS),RA(LXO),RA(LGO),RA(LXS),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 PBUN ALL SYSTEMS 97/01/22 * PURPOSE : * GENERAL SUBROUTINE FOR NONSMOOTH OPTIMIZATION WITH SIMPLE BOUNDS * AND GENERAL LINEAR CONSTRAINTS. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NA MAXIMUM BUNDLE DIMENSION. * II NB NUMBER OF SIMPLE BOUNDS. NB=0-SIMPLE BOUNDS SUPPRESSED. * NB>0-SIMPLE BOUNDS ACCEPTED. * II NC NUMBER OF LINEAR CONSTRAINTS. * RU X(NF) VECTOR OF VARIABLES. * II IX(NF) VECTOR CONTAINING TYPES OF BOUNDS. IX(I)=0-VARIABLE * X(I) IS UNBOUNDED. IX(I)=1-LOWER 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-LOWER * 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 AF(4*NA) VECTOR OF BUNDLE VALUES. * IA IA(NA) VECTOR CONTAINING TYPES OF DEVIATIONS. * RA AFD(NA) VECTOR CONTAINING INCREMENTS OF BUNDLE FUNCTIONS. * RA AG(NF*NA) MATRIX WHOSE COLUMNS ARE BUNDLE SUBGRADIENTS. * IA IAA(NF+1) VECTOR CONTAINING INDICES OF ACTIVE FUNCTIONS. * RA AR((NF+1)*(NF+2)/2) TRIANGULAR DECOMPOSITION OF KERNEL OF THE * ORTHOGONAL PROJECTION. * RA AZ(NF+1) VECTOR OF LAGRANGE MULTIPLIERS. * RA G(NF) SUBGRADIENT OF THE OBJECTIVE FUNCTION. * RA H(NF) DIAGONAL MATRIX OF WEIGHT PARAMETERS. * RA S(NF+1) DIRECTION VECTOR. * RA XO(NF) INCREMENT VECTOR. * RA GO(NF+1) GRADIENT OF THE LAGRANGIAN FUNCTION. * RA XS(NF) AUXILIARY VECTOR. * RA GS(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 MAXIMUM ABSOLUTE VALUE OF A PARTIAL DERIVATIVE. * RO FP VALUE OF THE OBJECTIVE FUNCTION. * II MIT MAXIMUN NUMBER OF ITERATIONS. * II MFV MAXIMUN NUMBER OF FUNCTION EVALUATIONS. * II MET WEIGHT UPDATING METHOD SPECIFICATION. MET=1-QUADRATIC * INTERPOLATION. MET=2-LOCAL MINIMUM LOCALIZATION. * MET=3-QUASI-NEWTON CONDITION. * 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 PDDBQ1 DETERMINATION OF THE DESCENT DIRECTION. * S PS1L05 LINE SEARCH USING FUNCTION VALUES AND DERIVATIVES. * S MXVCOP COPYING OF A VECTOR. * S MXVDIF DIFFERENCE OF TWO VECTORS. * S MXVDIR VECTOR AUGMENTED BY THE SCALED VECTOR. * RF MXVDOT DOT PRODUCT OF TWO VECTORS. * * 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 : * PROXIMAL BUNDLE METHOD WITH LINE SEARCH WHICH USES A SPECIAL * QUADRATIC PROGRAMMING SUBALGORITHM. * SUBROUTINE PBUN(NF,NA,NB,NC,X,IX,XL,XU,CF,IC,CL,CU,CG,CFD,AF,IA, + AFD,AG,IAA,AR,AZ,G,H,S,XO,GO,XS,GS,XMAX,TOLX, + TOLF,TOLB,TOLG,ETA,GMAX,FP,MIT,MFV,MET,MTESX, + MTESF,IPRNT,ITERM) DOUBLE PRECISION ETA,FP,GMAX,TOLB,TOLD,TOLF,TOLG,TOLP,TOLS,TOLX, + XMAX INTEGER IPRNT,ITERM,MES,MET,MFV,MIT,MTESF,MTESX,NA,NB,NC,NF DOUBLE PRECISION AF(*),AFD(*),AG(*),AR(*),AZ(*),CF(*),CFD(*), + CG(*),CL(*),CU(*),G(*),GO(*),GS(*),H(*),S(*), + X(*),XL(*),XO(*),XS(*),XU(*) INTEGER IA(*),IAA(*),IC(*),IX(*) INTEGER NADD,NDECF,NFG,NFH,NFV,NIT,NRED,NREM,NRES DOUBLE PRECISION ALF2,DMAX,EPS7,EPS9,ETA0,ETA2,ETA9,F,FMAX,FMIN, + FO,FUB,GNORM,P,PO,PP,R,RMAX,RMIN,RP,SNORM,TEMP, + TO,UMAX,XNORM INTEGER I,IDECF,IREST,ITERD,ITERL,ITERQ,ITERS,K,KBC,KBF,KC,KIT, + MAL,MES2,MOS,N,NTESF,NTESX DOUBLE PRECISION MXVDOT EXTERNAL MXVDOT EXTERNAL FUNDER,MXVCOP,MXVDIF,MXVDIR,MXVSET,PDDBQ1,PLLPB2,PLNEWS, + PS1L05 INTRINSIC ABS,MAX,MIN,SQRT COMMON /STAT/NDECF,NRES,NRED,NREM,NADD,NIT,NFV,NFG,NFH IF (ABS(IPRNT).GT.1) WRITE (6,'(1X,''ENTRY TO PBUN :'')') * * INITIATION * KBF = 0 KBC = 0 IF (NB.GT.0) KBF = 2 IF (NC.GT.0) KBC = 2 NIT = 0 NFV = 0 NFG = 0 NADD = 0 NREM = 0 NTESX = 0 NTESF = 0 ITERM = 0 ITERD = 0 ITERQ = 0 IREST = 0 ITERS = 2 NDECF = 0 IDECF = 10 ETA0 = 1.0D-15 ETA2 = 1.0D-15 ETA9 = 1.0D60 EPS7 = 1.0D-12 EPS9 = 1.0D-10 ALF2 = 1.0D10 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 (ETA. LE.0.0D0) ETA = 0.0D 0 TOLD = 1.0D-4 TOLS = 1.0D-2 TOLP = 5.0D-1 IF (XMAX.LE.0.0D0) XMAX = 1.0D3 IF (MET.LE.0) MET = 1 MES = 4 IF (MTESX.LE.0) MTESX = 20 IF (MTESF.LE.0) MTESF = 2 IF (MIT.LE.0) MIT = 1000 IF (MFV.LE.0) MFV = 2000 MOS = 1 MES2 = 1 IF (MET.EQ.2) MES2 = 2 IF (MET.EQ.3) MOS = 2 KIT = 0 MAL = 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 PLLPB2(NF,NC,X,IX,XO,XL,XU,CF,CFD,IC,IAA,CL,CU,CG,AR,AZ, + 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,ITERL) IF (IX(I).GT.10) IX(I) = 10 - IX(I) 30 CONTINUE END IF FO = FMIN FUB = FMAX GMAX = ETA9 DMAX = ETA9 * * COMPUTATION OF THE VALUE AND THE SUBGRADIENT OF THE OBJECTIVE * FUNCTION * CALL FUNDER(NF,X,F,G) NFV = NFV + 1 NFG = NFG + 1 FP=F 40 CONTINUE 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,FP,GMAX * * START OF THE ITERATION WITH TESTS FOR TERMINATION. * N = NF UMAX = 0.0D0 IF (ITERM.LT.0) GO TO 90 IF (ITERS.EQ.0) GO TO 50 IF (NIT.LE.0) FO = F + MIN(SQRT(ABS(F)),ABS(F)/1.0D1) IF (F.LE.TOLB) THEN ITERM = 3 GO TO 90 END IF IF (DMAX.LE.TOLX) THEN ITERM = 1 NTESX = NTESX + 1 IF (NTESX.GE.MTESX) GO TO 90 ELSE NTESX = 0 END IF TEMP = ABS(FO-FUB)/MAX(ABS(FUB),1.0D0) IF (TEMP.LE.TOLF) THEN ITERM = 2 NTESF = NTESF + 1 IF (NTESF.GE.MTESF) GO TO 90 ELSE NTESF = 0 END IF 50 IF (NIT.GE.MIT) THEN ITERM = 12 GO TO 90 END IF IF (NFV.GE.MFV) THEN ITERM = 11 GO TO 90 END IF ITERM = 0 NIT = NIT + 1 60 CONTINUE * * RESTART * IF (IREST.GT.0) THEN IF (KIT.LT.NIT) THEN NRES = NRES + 1 KIT = NIT ELSE ITERM = -10 IF (ITERS.LT.0) ITERM = ITERS - 5 GO TO 90 END IF END IF * * DIRECTION DETERMINATION USING A SPECIAL QUADRATIC PROGRAMMING * PROCEDURE AND THE BUNDLE UPDATE * CALL PDDBQ1(NF,NA,NC,X,IX,XL,XU,F,FO,FP,FUB,AF,AFD,IA,IAA,AG,AR, + AZ,CF,IC,CL,CU,CG,G,H,S,XO,GO,XS,GS,P,R,RP,TO,KBF,KBC, + IDECF,ETA0,ETA2,ETA9,EPS7,EPS9,TOLF,TOLG,ETA,UMAX, + GMAX,GNORM,SNORM,XNORM,N,MAL,NIT,MOS,NTESF,NTESX, + ITERQ,ITERD,ITERS,ITERM) IF (ITERD.LT.0) ITERM = ITERD IF (ITERM.NE.0) GO TO 90 * * TEST FOR SUFFICIENT DESCENT * P = MXVDOT(NF,GO,S) IREST = 1 IF (SNORM.LE.0.0D0) THEN ELSE IF (P+TOLD*GNORM*SNORM.LE.0.0D0) THEN IREST = 0 END IF IF (IREST.EQ.0) THEN NRED = 0 RMIN = 1.0D-3 RMAX = MIN(ALF2*GNORM/SNORM,XMAX/SNORM) ELSE GO TO 60 END IF * * PREPARATION OF LINE SEARCH * FP = FO FO = F PO = P PP = MXVDOT(NF,G,S) CALL MXVCOP(NF,X,XO) CALL MXVCOP(NF,G,GO) * * LINE SEARCH WITH DIRECTIONAL DERIVATIVES WHICH ALLOWS NULL STEPS * CALL PS1L05(NF,X,XO,S,R,RP,F,FO,FP,P,PO,PP,TO,G,SNORM,RMIN,RMAX, + FMIN,FMAX,TOLS,TOLP,ETA,MES,MES2,ITERS) ITERD = 0 * * DECISION AFTER UNSUCCESSFUL LINE SEARCH * IF (ITERS.LE.0) THEN R = 0.0D0 F = FO P = PO CALL MXVCOP(NF,XO,X) ELSE IF (ITERS.GE.9) CALL MXVDIR(NF,RP,S,XO,X) CALL MXVDIF(NF,X,XO,XO) IF (KBC.GT.0) THEN K = 0 DO 70 KC = 1,NC CF(KC) = MXVDOT(NF,X,CG(K+1)) K = K + NF 70 CONTINUE END IF END IF * * COMPUTATION OF VALUES FOR TERMINATION CRITERIA * DMAX = 0.0D0 DO 80 I = 1,NF DMAX = MAX(DMAX,ABS(XO(I))/MAX(ABS(X(I)),1.0D0)) 80 CONTINUE TEMP = FUB FUB = F IF (ITERS.GE.9) FUB = FUB - (R-RP)*P FUB = (FUB+TEMP)*0.5D0 * * END OF THE ITERATION * GO TO 40 90 IF (IPRNT.GT.1 .OR. IPRNT.LT.0) + WRITE (6,'(1X,''EXIT FROM PBUN :'')') 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, + FP,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