1 ************************************************************************
2 * SUBROUTINE PLISU ALL SYSTEMS 97/01/22
4 * EASY TO USE SUBROUTINE FOR LARGE-SCALE UNCONSTRAINED MINIMIZATION.
7 * II NF NUMBER OF VARIABLES.
8 * RI X(NF) VECTOR OF VARIABLES.
9 * II IPAR(7) INTEGER PAREMETERS:
10 * IPAR(1) MAXIMUM NUMBER OF ITERATIONS.
11 * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS.
12 * IPAR(3) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
13 * IPAR(4) ESTIMATION INDICATOR. IPAR(4)=0-MINIMUM IS NOT
14 * ESTIMATED. IPAR(4)=1-MINIMUM IS ESTIMATED BY THE VALUE
16 * IPAR(5) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
17 * IPAR(6) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
18 * IPAR(7) MAXIMUM NUMBER OF VARIABLE METRIC UPDATES.
19 * RI RPAR(9) REAL PARAMETERS:
20 * RPAR(1) MAXIMUM STEPSIZE.
21 * RPAR(2) TOLERANCE FOR THE CHANGE OF VARIABLES.
22 * RPAR(3) TOLERANCE FOR THE CHANGE OF FUNCTION VALUES.
23 * RPAR(4) TOLERANCE FOR THE FUNCTION FALUE.
24 * RPAR(5) TOLERANCE FOR THE GRADIENT NORM.
25 * RPAR(6) ESTIMATION OF THE MINIMUM FUNCTION VALUE.
26 * RPAR(7) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
27 * RPAR(8) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
28 * RPAR(9) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
29 * RO F VALUE OF THE OBJECTIVE FUNCTION.
30 * RO GMAX MAXIMUM PARTIAL DERIVATIVE.
31 * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT.
32 * ABS(IPRNT)=1-PRINT OF FINAL RESULTS.
33 * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS.
34 * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL
36 * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION.
37 * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN
38 * MTESX (USUALLY TWO) SUBSEQUENT ITERATIONS.
39 * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN
40 * MTESF (USUALLY TWO) SUBSEQUENT ITERATIONS.
41 * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB.
42 * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG.
43 * ITERM=6-IF THE TERMINATION CRITERION WAS NOT SATISFIED,
44 * BUT THE SOLUTION OBTAINED IS PROBABLY ACCEPTABLE.
45 * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV.
46 * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED.
48 * VARIABLES IN COMMON /STAT/ (STATISTICS) :
49 * IO NRES NUMBER OF RESTARTS.
50 * IO NDEC NUMBER OF MATRIX DECOMPOSITIONS.
51 * IO NIN NUMBER OF INNER ITERATIONS.
52 * IO NIT NUMBER OF ITERATIONS.
53 * IO NFV NUMBER OF FUNCTION EVALUATIONS.
54 * IO NFG NUMBER OF GRADIENT EVALUATIONS.
55 * IO NFH NUMBER OF HESSIAN EVALUATIONS.
58 * S PLIS LIMITED MEMORY VARIABLE METRIC METHOD BASED ON THE STRANG
61 * EXTERNAL SUBROUTINES :
62 * SE OBJ COMPUTATION OF THE VALUE OF THE OBJECTIVE FUNCTION.
63 * CALLING SEQUENCE: CALL OBJ(NF,X,FF) WHERE NF IS THE NUMBER
64 * OF VARIABLES, X(NF) IS THE VECTOR OF VARIABLES AND FF IS
65 * THE VALUE OF THE OBJECTIVE FUNCTION.
66 * SE DOBJ COMPUTATION OF THE GRADIENT OF THE OBJECTIVE FUNCTION.
67 * CALLING SEQUENCE: CALL DOBJ(NF,X,GF) WHERE NF IS THE NUMBER
68 * OF VARIABLES, X(NF) IS THE VECTOR OF VARIABLES AND GF(NF)
69 * IS THE GRADIENT OF THE OBJECTIVE FUNCTION.
71 SUBROUTINE PLISU(NF,X,IPAR,RPAR,F,GMAX,IPRNT,ITERM)
72 INTEGER NF,IPAR(7),IPRNT,ITERM
73 DOUBLE PRECISION X(*),RPAR(9),F,GMAX
74 INTEGER MF,NB,LGF,LS,LXO,LGO,LUO,LVO
75 INTEGER NRES,NDEC,NIN,NIT,NFV,NFG,NFH
76 COMMON /STAT/ NRES,NDEC,NIN,NIT,NFV,NFG,NFH
77 DOUBLE PRECISION RA(:)
81 ALLOCATE (RA(2*NF+2*NF*MF+2*MF))
84 * POINTERS FOR AUXILIARY ARRAYS
92 CALL PLIS(NF,NB,X,IPAR,RA,RA,RA(LGF),RA(LS),RA(LXO),RA(LGO),
93 & RA(LUO),RA(LVO),RPAR(1),RPAR(2),RPAR(3),RPAR(4),RPAR(5),RPAR(6),
94 & GMAX,F,IPAR(1),IPAR(2),IPAR(4),MF,IPRNT,ITERM)
98 ************************************************************************
99 * SUBROUTINE PLISS ALL SYSTEMS 97/01/22
101 * EASY TO USE SUBROUTINE FOR LARGE-SCALE BOX CONSTRAINED MINIMIZATION.
104 * II NF NUMBER OF VARIABLES.
105 * RI X(NF) VECTOR OF VARIABLES.
106 * II IX(NF) VECTOR CONTAINING TYPES OF BOUNDS. IX(I)=0-VARIABLE
107 * X(I) IS UNBOUNDED. IX(I)=1-LOWER BOUND XL(I).LE.X(I).
108 * IX(I)=2-UPPER BOUND X(I).LE.XU(I). IX(I)=3-TWO SIDE BOUND
109 * XL(I).LE.X(I).LE.XU(I). IX(I)=5-VARIABLE X(I) IS FIXED.
110 * RI XL(NF) VECTOR CONTAINING LOWER BOUNDS FOR VARIABLES.
111 * RI XU(NF) VECTOR CONTAINING UPPER BOUNDS FOR VARIABLES.
112 * II IPAR(7) INTEGER PAREMETERS:
113 * IPAR(1) MAXIMUM NUMBER OF ITERATIONS.
114 * IPAR(2) MAXIMUM NUMBER OF FUNCTION EVALUATIONS.
115 * IPAR(3) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
116 * IPAR(4) ESTIMATION INDICATOR. IPAR(4)=0-MINIMUM IS NOT
117 * ESTIMATED. IPAR(4)=1-MINIMUM IS ESTIMATED BY THE VALUE
119 * IPAR(5) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
120 * IPAR(6) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
121 * IPAR(7) MAXIMUM NUMBER OF VARIABLE METRIC UPDATES.
122 * RI RPAR(9) REAL PARAMETERS:
123 * RPAR(1) MAXIMUM STEPSIZE.
124 * RPAR(2) TOLERANCE FOR THE CHANGE OF VARIABLES.
125 * RPAR(3) TOLERANCE FOR THE CHANGE OF FUNCTION VALUES.
126 * RPAR(4) TOLERANCE FOR THE FUNCTION FALUE.
127 * RPAR(5) TOLERANCE FOR THE GRADIENT NORM.
128 * RPAR(6) ESTIMATION OF THE MINIMUM FUNCTION VALUE.
129 * RPAR(7) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
130 * RPAR(8) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
131 * RPAR(9) THIS PARAMETER IS NOT USED IN THE SUBROUTINE PLIS.
132 * RO F VALUE OF THE OBJECTIVE FUNCTION.
133 * RO GMAX MAXIMUM PARTIAL DERIVATIVE.
134 * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT.
135 * ABS(IPRNT)=1-PRINT OF FINAL RESULTS.
136 * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS.
137 * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL
139 * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION.
140 * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN
141 * MTESX (USUALLY TWO) SUBSEQUENT ITERATIONS.
142 * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN
143 * MTESF (USUALLY TWO) SUBSEQUENT ITERATIONS.
144 * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB.
145 * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG.
146 * ITERM=6-IF THE TERMINATION CRITERION WAS NOT SATISFIED,
147 * BUT THE SOLUTION OBTAINED IS PROBABLY ACCEPTABLE.
148 * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV.
149 * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED.
151 * VARIABLES IN COMMON /STAT/ (STATISTICS) :
152 * IO NRES NUMBER OF RESTARTS.
153 * IO NDEC NUMBER OF MATRIX DECOMPOSITIONS.
154 * IO NIN NUMBER OF INNER ITERATIONS.
155 * IO NIT NUMBER OF ITERATIONS.
156 * IO NFV NUMBER OF FUNCTION EVALUATIONS.
157 * IO NFG NUMBER OF GRADIENT EVALUATIONS.
158 * IO NFH NUMBER OF HESSIAN EVALUATIONS.
161 * S PLIS LIMITED MEMORY VARIABLE METRIC METHOD BASED ON THE STRANG
164 * EXTERNAL SUBROUTINES :
165 * SE OBJ COMPUTATION OF THE VALUE OF THE OBJECTIVE FUNCTION.
166 * CALLING SEQUENCE: CALL OBJ(NF,X,FF) WHERE NF IS THE NUMBER
167 * OF VARIABLES, X(NF) IS THE VECTOR OF VARIABLES AND FF IS
168 * THE VALUE OF THE OBJECTIVE FUNCTION.
169 * SE DOBJ COMPUTATION OF THE GRADIENT OF THE OBJECTIVE FUNCTION.
170 * CALLING SEQUENCE: CALL DOBJ(NF,X,GF) WHERE NF IS THE NUMBER
171 * OF VARIABLES, X(NF) IS THE VECTOR OF VARIABLES AND GF(NF)
172 * IS THE GRADIENT OF THE OBJECTIVE FUNCTION.
174 SUBROUTINE PLISS(NF,X,IX,XL,XU,IPAR,RPAR,F,GMAX,IPRNT,ITERM)
175 INTEGER NF,IX(*),IPAR(7),IPRNT,ITERM
176 DOUBLE PRECISION X(*),XL(*),XU(*),RPAR(9),F,GMAX
177 INTEGER MF,NB,LGF,LS,LXO,LGO,LUO,LVO
178 INTEGER NRES,NDEC,NIN,NIT,NFV,NFG,NFH
179 COMMON /STAT/ NRES,NDEC,NIN,NIT,NFV,NFG,NFH
180 DOUBLE PRECISION RA(:)
184 ALLOCATE (RA(2*NF+2*NF*MF+2*MF))
187 * POINTERS FOR AUXILIARY ARRAYS
195 CALL PLIS(NF,NB,X,IX,XL,XU,RA(LGF),RA(LS),RA(LXO),RA(LGO),
196 & RA(LUO),RA(LVO),RPAR(1),RPAR(2),RPAR(3),RPAR(4),RPAR(5),RPAR(6),
197 & GMAX,F,IPAR(1),IPAR(2),IPAR(4),MF,IPRNT,ITERM)
201 ************************************************************************
202 * SUBROUTINE PLIS ALL SYSTEMS 01/09/22
204 * GENERAL SUBROUTINE FOR LARGE-SCALE BOX CONSTRAINED MINIMIZATION THAT
205 * USE THE LIMITED MEMORY VARIABLE METRIC METHOD BASED ON THE STRANG
209 * II NF NUMBER OF VARIABLES.
210 * II NB CHOICE OF SIMPLE BOUNDS. NB=0-SIMPLE BOUNDS SUPPRESSED.
211 * NB>0-SIMPLE BOUNDS ACCEPTED.
212 * RI X(NF) VECTOR OF VARIABLES.
213 * II IX(NF) VECTOR CONTAINING TYPES OF BOUNDS. IX(I)=0-VARIABLE
214 * X(I) IS UNBOUNDED. IX(I)=1-LOVER BOUND XL(I).LE.X(I).
215 * IX(I)=2-UPPER BOUND X(I).LE.XU(I). IX(I)=3-TWO SIDE BOUND
216 * XL(I).LE.X(I).LE.XU(I). IX(I)=5-VARIABLE X(I) IS FIXED.
217 * RI XL(NF) VECTOR CONTAINING LOWER BOUNDS FOR VARIABLES.
218 * RI XU(NF) VECTOR CONTAINING UPPER BOUNDS FOR VARIABLES.
219 * RO GF(NF) GRADIENT OF THE OBJECTIVE FUNCTION.
220 * RO S(NF) DIRECTION VECTOR.
221 * RU XO(NF) VECTORS OF VARIABLES DIFFERENCE.
222 * RI GO(NF) GRADIENTS DIFFERENCE.
223 * RA UO(NF) AUXILIARY VECTOR.
224 * RA VO(NF) AUXILIARY VECTOR.
225 * RI XMAX MAXIMUM STEPSIZE.
226 * RI TOLX TOLERANCE FOR CHANGE OF VARIABLES.
227 * RI TOLF TOLERANCE FOR CHANGE OF FUNCTION VALUES.
228 * RI TOLB TOLERANCE FOR THE FUNCTION VALUE.
229 * RI TOLG TOLERANCE FOR THE GRADIENT NORM.
230 * RI FMIN ESTIMATION OF THE MINIMUM FUNCTION VALUE.
231 * RO GMAX MAXIMUM PARTIAL DERIVATIVE.
232 * RO F VALUE OF THE OBJECTIVE FUNCTION.
233 * II MIT MAXIMUM NUMBER OF ITERATIONS.
234 * II MFV MAXIMUM NUMBER OF FUNCTION EVALUATIONS.
235 * II IEST ESTIMATION INDICATOR. IEST=0-MINIMUM IS NOT ESTIMATED.
236 * IEST=1-MINIMUM IS ESTIMATED BY THE VALUE FMIN.
237 * II MF NUMBER OF LIMITED MEMORY STEPS.
238 * II IPRNT PRINT SPECIFICATION. IPRNT=0-NO PRINT.
239 * ABS(IPRNT)=1-PRINT OF FINAL RESULTS.
240 * ABS(IPRNT)=2-PRINT OF FINAL RESULTS AND ITERATIONS.
241 * IPRNT>0-BASIC FINAL RESULTS. IPRNT<0-EXTENDED FINAL
243 * IO ITERM VARIABLE THAT INDICATES THE CAUSE OF TERMINATION.
244 * ITERM=1-IF ABS(X-XO) WAS LESS THAN OR EQUAL TO TOLX IN
245 * MTESX (USUALLY TWO) SUBSEQUEBT ITERATIONS.
246 * ITERM=2-IF ABS(F-FO) WAS LESS THAN OR EQUAL TO TOLF IN
247 * MTESF (USUALLY TWO) SUBSEQUEBT ITERATIONS.
248 * ITERM=3-IF F IS LESS THAN OR EQUAL TO TOLB.
249 * ITERM=4-IF GMAX IS LESS THAN OR EQUAL TO TOLG.
250 * ITERM=6-IF THE TERMINATION CRITERION WAS NOT SATISFIED,
251 * BUT THE SOLUTION OBTAINED IS PROBABLY ACCEPTABLE.
252 * ITERM=11-IF NIT EXCEEDED MIT. ITERM=12-IF NFV EXCEEDED MFV.
253 * ITERM=13-IF NFG EXCEEDED MFG. ITERM<0-IF THE METHOD FAILED.
255 * VARIABLES IN COMMON /STAT/ (STATISTICS) :
256 * IO NRES NUMBER OF RESTARTS.
257 * IO NDEC NUMBER OF MATRIX DECOMPOSITION.
258 * IO NIN NUMBER OF INNER ITERATIONS.
259 * IO NIT NUMBER OF ITERATIONS.
260 * IO NFV NUMBER OF FUNCTION EVALUATIONS.
261 * IO NFG NUMBER OF GRADIENT EVALUATIONS.
262 * IO NFH NUMBER OF HESSIAN EVALUATIONS.
265 * S PCBS04 ELIMINATION OF BOX CONSTRAINT VIOLATIONS.
266 * S PS1L01 STEPSIZE SELECTION USING LINE SEARCH.
267 * S PYADC0 ADDITION OF A BOX CONSTRAINT.
268 * S PYFUT1 TEST ON TERMINATION.
269 * S PYRMC0 DELETION OF A BOX CONSTRAINT.
270 * S PYTRCD COMPUTATION OF PROJECTED DIFFERENCES FOR THE VARIABLE METRIC
272 * S PYTRCG COMPUTATION OF THE PROJECTED GRADIENT.
273 * S PYTRCS COMPUTATION OF THE PROJECTED DIRECTION VECTOR.
274 * S MXDRCB BACKWARD PART OF THE STRANG FORMULA FOR PREMULTIPLICATION
275 * OF THE VECTOR X BY AN IMPLICIT BFGS UPDATE.
276 * S MXDRCF FORWARD PART OF THE STRANG FORMULA FOR PREMULTIPLICATION
277 * OF THE VECTOR X BY AN IMPLICIT BFGS UPDATE.
278 * S MXDRSU SHIFT OF COLUMNS OF THE RECTANGULAR MATRICES A AND B.
279 * SHIFT OF ELEMENTS OF THE VECTOR U. THESE SHIFTS ARE USED IN
280 * THE LIMITED MEMORY BFGS METHOD.
281 * S MXUDIR VECTOR AUGMENTED BY THE SCALED VECTOR.
282 * RF MXUDOT DOT PRODUCT OF TWO VECTORS.
283 * S MXUNEG COPYING OF A VECTOR WITH CHANGE OF THE SIGN.
284 * S MXVCOP COPYING OF A VECTOR.
285 * S MXVSCL SCALING OF A VECTOR.
287 * EXTERNAL SUBROUTINES :
288 * SE OBJ COMPUTATION OF THE VALUE OF THE OBJECTIVE FUNCTION.
289 * CALLING SEQUENCE: CALL OBJ(NF,X,FF) WHERE NF IS THE NUMBER
290 * OF VARIABLES, X(NF) IS THE VECTOR OF VARIABLES AND FF IS
291 * THE VALUE OF THE OBJECTIVE FUNCTION.
292 * SE DOBJ COMPUTATION OF THE GRADIENT OF THE OBJECTIVE FUNCTION.
293 * CALLING SEQUENCE: CALL DOBJ(NF,X,GF) WHERE NF IS THE NUMBER
294 * OF VARIABLES, X(NF) IS THE VECTOR OF VARIABLES AND GF(NF)
295 * IS THE GRADIENT OF THE OBJECTIVE FUNCTION.
298 * LIMITED MEMORY VARIABLE METRIC METHOD BASED ON THE STRANG
301 SUBROUTINE PLIS(NF,NB,X,IX,XL,XU,GF,S,XO,GO,UO,VO,XMAX,TOLX,
302 & TOLF,TOLB,TOLG,FMIN,GMAX,F,MIT,MFV,IEST,MF,IPRNT,ITERM)
303 INTEGER NF,NB,IX(*),MIT,MFV,IEST,MF,IPRNT,ITERM
304 DOUBLE PRECISION X(*),XL(*),XU(*),GF(*),S(*),XO(*),GO(*),UO(*),
305 & VO(*),TOLX,TOLF,TOLG,TOLB,FMIN,XMAX,GMAX,F
306 INTEGER ITERD,ITERS,KD,LD,NTESX,NTESF,MTESX,MTESF,MRED,KIT,
307 & IREST,KBF,MES,MES1,MES2,MES3,MAXST,ISYS,ITES,INITS,KTERS,
308 & IRES1,IRES2,INEW,IOLD,I,N,MFG,K,NRED
309 DOUBLE PRECISION R,RO,RP,FO,FP,P,PO,PP,GNORM,SNORM,RMIN,RMAX,
310 & UMAX,FMAX,DMAX,ETA0,ETA9,EPS8,EPS9,ALF1,ALF2,PAR1,PAR2,A,B,
312 DOUBLE PRECISION MXUDOT
313 INTEGER NRES,NDEC,NIN,NIT,NFV,NFG,NFH
314 COMMON /STAT/ NRES,NDEC,NIN,NIT,NFV,NFG,NFH
315 IF (ABS(IPRNT).GT.1) WRITE(6,'(1X,''ENTRY TO PLIS :'')')
354 IF (IEST.LE.0) FMIN=-1.0D 60
355 IF (IEST.GT.0) IEST=1
356 IF (XMAX.LE.0.0D 0) XMAX=1.0D 16
357 IF (TOLX.LE.0.0D 0) TOLX=1.0D-16
358 IF (TOLF.LE.0.0D 0) TOLF=1.0D-14
359 IF (TOLG.LE.0.0D 0) TOLG=1.0D-6
360 IF (TOLB.LE.0.0D 0) TOLB=FMIN+1.0D-16
364 IF (MIT.LE.0) MIT=9000
365 IF (MFV.LE.0) MFV=9000
369 KIT=-(IRES1*NF+IRES2)
372 * INITIAL OPERATIONS WITH SIMPLE BOUNDS
376 IF ((IX(I).EQ.3.OR.IX(I).EQ.4) .AND. XU(I).LE.XL(I)) THEN
379 ELSE IF (IX(I).EQ.5 .OR. IX(I).EQ.6) THEN
385 CALL PCBS04(NF,X,IX,XL,XU,EPS9,KBF)
386 CALL PYADC0(NF,N,X,IX,XL,XU,INEW)
388 IF (ITERM.NE.0) GO TO 11190
394 CALL PYTRCG(NF,NF,IX,GF,UMAX,GMAX,KBF,IOLD)
396 & WRITE (6,'(1X,''NIT='',I5,2X,''NFV='',I5,2X,''NFG='',I5,2X,
397 & ''F='', G16.9,2X,''G='',E10.3)') NIT,NFV,NFG,F,GMAX
398 CALL PYFUT1(NF,F,FO,UMAX,GMAX,DMAX,TOLX,TOLF,TOLB,TOLG,KD,
399 & NIT,KIT,MIT,NFV,MFV,NFG,MFG,NTESX,MTESX,NTESF,MTESF,ITES,
400 & IRES1,IRES2,IREST,ITERS,ITERM)
401 IF (ITERM.NE.0) GO TO 11190
402 IF (KBF.GT.0.AND.RMAX.GT.0.0D 0) THEN
403 CALL PYRMC0(NF,N,IX,GF,EPS8,UMAX,GMAX,RMAX,IOLD,IREST)
407 * DIRECTION DETERMINATION
409 GNORM=SQRT(MXUDOT(NF,GF,GF,IX,KBF))
410 IF (IREST.NE.0) GO TO 12620
417 * DETERMINATION OF THE PARAMETER B
419 B=MXUDOT(NF,XO,GO,IX,KBF)
420 IF (B.LE.0.0D 0) THEN
425 CALL MXUNEG(NF,GF,S,IX,KBF)
426 CALL MXDRCB(NF,K,XO,GO,UO,VO,S,IX,KBF)
427 A=MXUDOT(NF,GO,GO,IX,KBF)
428 IF (A.GT.0.0D 0) THEN
429 CALL MXVSCL(NF,B/A,S,S)
431 CALL MXDRCF(NF,K,XO,GO,UO,VO,S,IX,KBF)
432 SNORM=SQRT(MXUDOT(NF,S,S,IX,KBF))
434 CALL MXDRSU(NF,K,XO,GO,UO)
439 * STEEPEST DESCENT DIRECTION
441 CALL MXUNEG(NF,GF,S,IX,KBF)
448 IF (ITERS.LT.0) ITERM=ITERS-5
452 * TEST ON DESCENT DIRECTION AND PREPARATION OF LINE SEARCH
454 IF (KD.GT.0) P=MXUDOT(NF,GF,S,IX,KBF)
459 * TEST ON DESCENT DIRECTION
461 IF (SNORM.LE.0.0D 0) THEN
463 ELSE IF (P+TOLD*GNORM*SNORM.LE.0.0D 0) THEN
467 * UNIFORM DESCENT CRITERION
473 * PREPARATION OF LINE SEARCH
476 RMIN=ALF1*GNORM/SNORM
477 RMAX=MIN(ALF2*GNORM/SNORM,XMAX/SNORM)
480 IF (ITERM.NE.0) GO TO 11190
481 IF (IREST.NE.0) GO TO 11130
482 CALL PYTRCS(NF,X,IX,XO,XL,XU,GF,GO,S,RO,FP,FO,F,PO,P,RMAX,ETA9,
484 IF (RMAX.EQ.0.0D 0) GO TO 11175
486 CALL PS1L01(R,RP,F,FO,FP,P,PO,PP,FMIN,FMAX,RMIN,RMAX,
487 & TOLS,TOLP,PAR1,PAR2,KD,LD,NIT,KIT,NRED,MRED,MAXST,IEST,
488 & INITS,ITERS,KTERS,MES,ISYS)
489 IF (ISYS.EQ.0) GO TO 11174
490 CALL MXUDIR(NF,R,S,XO,X,IX,KBF)
491 CALL PCBS04(NF,X,IX,XL,XU,EPS9,KBF)
496 P=MXUDOT(NF,GF,S,IX,KBF)
504 CALL MXVCOP(NF,GO,GF)
509 CALL PYTRCD(NF,X,IX,XO,GF,GO,R,F,FO,P,PO,DMAX,KBF,KD,LD,ITERS)
513 CALL PYADC0(NF,N,X,IX,XL,XU,INEW)
517 IF (IPRNT.GT.1.OR.IPRNT.LT.0)
518 & WRITE(6,'(1X,''EXIT FROM PLIS :'')')
520 & WRITE (6,'(1X,''NIT='',I5,2X,''NFV='',I5,2X,''NFG='',I5,2X,
521 & ''F='', G16.9,2X,''G='',E10.3,2X,''ITERM='',I3)') NIT,NFV,NFG,
524 & WRITE (6,'(1X,''X='',5(G14.7,1X):/(3X,5(G14.7,1X)))')