quasiNewton_mod¶
Dependency Diagrams:
Description
MODULE quasiNewton_mod (prefix=’qna’ category=’1. High-level functionality’)
- Purpose
The n1qn3 routine, and its supporting subroutines. The original code was modified to support MPI parallelization.
Quick access
Needed modules
midasmpi_mod
: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)Variables
Subroutines and functions
- subroutine quasinewton_mod/dcube(t, f, fp, ta, fa, fpa, tlower, tupper)¶
- Purpose
[to be completed]
- Arguments
t [real ]
f [real ]
fp [real ]
ta [real ]
fa [real ]
fpa [real ]
tlower [real ]
tupper [real ]
- Called from
- subroutine quasinewton_mod/ddd(prosca, dtonb, dtcab, n, sscale, nm, depl, aux, jmin, jmax, precos, diag, ybar, sbar, izs, rzs, dzs)¶
- Purpose
Calcule le produit H.g ou
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
prosca [external]
dtonb [external]
dtcab [external]
n [integer ]
sscale [logical ]
nm [integer ]
aux (n) [real ]
jmin [integer ]
jmax [integer ]
precos [real ]
diag (n) [real ]
sbar (n,1) [real ]
rzs (1) [real ]
dzs (1) [real ]
Needed modules
ddd__user__routines
- Called from
- subroutine quasinewton_mod/ddds(prosca, dtonb, dtcab, n, sscale, nm, depl, aux, jmin, jmax, precos, diag, ybar, sbar, izs, rzs, dzs)¶
- Purpose
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.
- Arguments
prosca [external]
dtonb [external]
dtcab [external]
n [integer ]
sscale [logical ]
nm [integer ]
depl (n) [real ]
aux (n) [real ]
jmin [integer ]
jmax [integer ]
precos [real ]
diag (n) [real ]
ybar (n) [real ]
sbar (n) [real ]
izs (1) [integer ]
rzs (1) [real ]
dzs (1) [real ]
Needed modules
ddds__user__routines
- Called from
- subroutine quasinewton_mod/mupdts(sscale, inmemo, n, m, nrz)¶
- Arguments
sscale [logical ]
inmemo [logical ]
n [integer ]
m [integer ]
nrz [integer ]
- Called from
- subroutine quasinewton_mod/qna_n1qn3(simul, prosca, dtonb, dtcab, n, x, f, g, dxmin, df1, epsg, impres, io, mode, niter, nsim, iz, dz, ndz, izs, rzs, dzs)¶
- Purpose
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.
- Arguments
simul [external]
prosca [external]
dtonb [external]
dtcab [external]
n [integer ]
x (n) [real ]
f [real ]
g (n) [real ]
dxmin [real ]
df1 [real ]
epsg [real ]
impres [integer ]
io [integer ]
mode [integer ]
niter [integer ]
nsim [integer ]
iz (5) [integer ]
dz (ndz) [real ]
ndz [integer ]
izs (1) [integer ]
rzs (1) [real ]
dzs (1) [real ]
Needed modules
qna_n1qn3__user__routines
- Called from
- Call to
- subroutine quasinewton_mod/n1qn3a(simul, prosca, dtonb, dtcab, n, x, f, g, dxmin, df1, epsg, impres, io, mode, niter, nsim, inmemo, m, jmin, jmax, d, gg, diag, aux, ybar, sbar, izs, rzs, dzs)¶
- Purpose
Code d’optimisation proprement dit.
- Arguments
simul [external]
prosca [external]
dtonb [external]
dtcab [external]
n [integer ]
x (n) [real ]
f [real ]
g (n) [real ]
dxmin [real ]
df1 [real ]
epsg [real ]
impres [integer ]
io [integer ]
mode [integer ]
niter [integer ]
nsim [integer ]
inmemo [logical ]
m [integer ]
jmin [integer ]
jmax [integer ]
d (n) [real ]
gg (n) [real ]
diag (n) [real ]
aux (n) [real ]
ybar (n,1) [real ]
sbar (n,1) [real ]
izs (1) [integer ]
rzs (1) [real ]
dzs (1) [real ]
Needed modules
n1qn3a__user__routines
- Called from
- Call to
- subroutine quasinewton_mod/nlis0(n, simul, prosca, xn, fn, fpn, t, tmin, tmax, d, g, amd, amf, imp, io, logic, nap, napmax, x, izs, rzs, dzs)¶
- Purpose
en sortie logic =
0 descente serieuse
1 descente bloquee
4 nap > napmax
5 retour a l’utilisateur
6 fonction et gradient pas d’accord
< 0 contrainte implicite active
- Arguments
n [integer ]
simul [external]
prosca [external]
xn (n) [real ]
fn [real ]
fpn [real ]
t [real ]
tmin [real ]
tmax [real ]
d (n) [real ]
g (n) [real ]
amd [real ]
amf [real ]
imp [integer ]
io [integer ]
logic [integer ]
nap [integer ]
napmax [integer ]
x (n) [real ]
izs (*) [integer ]
rzs (*) [real ]
dzs (*) [real ]
Needed modules
nlis0__user__routines