H est une matrice construite par la formule de bfgs inverse
a nm memoires a partir de la matrice diagonale diag
dans un espace hilbertien dont le produit scalaire
est donne par prosca
(cf. J. Nocedal, Math. of Comp. 35/151 (1980) 773-782)
g est un vecteur de dimension n (en general le gradient)
la matrice diag apparait donc comme un preconditionneur diagonal
Arguments
depl (n) [real ] ::
g (en entree), = H g (en sortie)
la matrice H est memorisee par les vecteurs des tableaux
ybar (n,1) [real ] ::
sbar et les pointeurs jmin, jmax
alpha(nm) est une zone de travail
izs (1) [integer ] :: 1),rzs(1),dzs(1) sont des zones de travail pour prosca
This subroutine has the same role as ddd (computation of the
product H.g). It supposes however that the (y,s) pairs are not
stored in core memory, but on a devise chosen by the user.
N1QN3, Version 2.0c, June 1995
Jean Charles Gilbert, Claude Lemarechal, INRIA.
Double precision version of M1QN3.
N1qn3 has two running modes: the SID (Scalar Initial Scaling) mode
and the DIS (Diagonal Initial Scaling) mode. Both do not require
the same amount of storage, the same subroutines, …
In the description below, items that differ in the DIS mode with
respect to the SIS mode are given in brakets.
Use the following subroutines:
N1QN3A
DDD, DDDS
NLIS0 + DCUBE (Dec 88)
MUPDT
The following routines are proposed to the user in case the
Euclidean scalar product is used:
DUCLID, DTONBE, DTCABE.
La sous-routine N1QN3 est une interface entre le programme
appelant et la sous-routine N1QN3A, le minimiseur proprement dit.
Le module PROSCA est sense realiser le produit scalaire de deux
vecteurs de Rn; le module DTONB est sense realiser le changement
de coordonnees correspondant au changement de bases: base
euclidienne -> base orthonormale (pour le produit scalaire
PROSCA); le module CTBAB fait la transformation inverse: base
orthonormale -> base euclidienne.
Iz is an integer working zone for N1QN3A, its dimension is 5.
It is formed of 5 scalars that are set by the optimizer:
the dimension of the problem,
a identifier of the scaling mode,
the number of updates,
two pointers.
Dz est la zone de travail pour N1QN3A, de dimension ndz.
Elle est subdivisee en
3 [ou 4] vecteurs de dimension n: d,gg,[diag,]aux
m vecteurs de dimension n: ybar
m vecteurs de dimension n: sbar
m est alors le plus grand entier tel que
m*(2*n+1)+3*n .le. ndz [m*(2*n+1)+4*n .le. ndz)]
soit m := (ndz-3*n) / (2*n+1) [m := (ndz-4*n) / (2*n+1)].
Il faut avoir m >= 1, donc ndz >= 5n+1 [ndz >= 6n+1].
A chaque iteration la metrique est formee a partir d’un multiple
de l’identite [d’une matrice diagonale] D qui est mise a jour m
fois par la formule de BFGS en utilisant les m couples {y,s} les
plus recents.