IFT 6561
Simulation: aspects stochastiques
Fabian Bastin DIRO
Universit ´e de Montr ´eal
Automne 2013
Variables al ´eatoires uniformes
But: produire des suites de nombres qui ont l’air d’ ˆetre choisis compl `etement au hasard:
suites de bits:
011010100110110101001101100101000111...
suite d’entiers de 0 `a 100: 31, 83, 02, 72, 54, 26,. . . permutation al ´eatoire
suite de nombres r ´eels entre 0 et 1.
Fabian Bastin IFT6561
M ´ecanismes physiques
Lancer les d ´es, bouliers, roulettes. . .
bruit thermique dans les r ´esistances de circuits electroniques, capteurs de radiations, autres m ´ecanismes bas ´es sur la physique quantique,
microsecondes de l’horloge de l’ordinateur, ou d’un temps d’acc `es au disque, etc.
Contient de la vraie entropie (incertitude), mais encombrant, pas facilement reproduisible, pas toujours fiable, peu ou pas d’analyse math ´ematique possible. Certains de ces
m ´ecanismes sont brevet ´es. Plusieurs sont disponibles commercialement. Pour ameliorer les propri ´et ´es statistiques:
combiner des blocs de bits (XOR).
G ´en ´erateurs algorithmiques (ou pseudo-al ´eatoires)
Une fois les param `etres et l’ ´etat initial du g ´en ´erateur pseudo-al ´eatoire (GPA) choisis, la suite produite est compl `etement d ´eterministe.
Avantages: pas de mat ´eriel `a installer, un logiciel suffit;
souvent plus rapide; on peut facilement r ´ep ´eter la m ˆeme s ´equence.
D ´esavantages: ne peut pas cr ´eer de l’entropie. Il y a
n ´ecessairement des d ´ependances entre les nombres en sortie.
Fabian Bastin IFT6561
GPAs
Qualit ´es requises? D ´epend des applications.
Jeux d’ordinateurs personnels: l’apparence suffit.
Simulation stochastique (Monte Carlo): on veut que les propri ´et ´es statistiques du mod `ele math ´ematique soient bien reproduites par le simulateur.
G ´en ´erateurs algorithmiques
Loteries, machines de casinos, casinos sur internet,. . .: il ne faut pas que quiconque puisse obtenir un avantage pour inf ´erer les prochains num ´eros ou encore des combinaisons plus probables. Conditions plus exigeantes que pour la simulation.
G ´en ´erateurs algorithmiques + m ´ecanismes physiques
Besoins pour la simulation stochastique
Cryptologie: encore plus exigeant. L’observation d’une partie de la sortie ne doit nous aider d’aucune mani `ere `a deviner quoi que ce soit dans le reste.
G ´en ´erateurs algorithmiques non-lin ´eaires avec param `etres al ´eatoires
Souvent: contraintes sur les ressources disponibles pour les calculs.
On utilise habituellement un GPA qui imite une suiteU0,U1, U2,. . . de variables al ´eatoires ind ´ependantes de loi uniforme sur l’intervalle(0,1). Pour g ´en ´erer des v.a. selon d’autres lois, on applique des transformations `a cesUj.
Fabian Bastin IFT6561
Mythes
Mythe 1
Apr `es au moins 60 ans `a ´etudier les GPA et des milliers d’articles publi ´es, ce probl `eme est certainement r ´egl ´e et les GPA disponibles dans les logiciels populaires sont
certainement fiables.
Mythe 2
Dans votre logiciel favori, le generateur a une periode sup ´erieure `a 21000. Il est donc certainement excellent!
Exemple 1. un= (n/21000) mod 1 pourn=0,1,2, . . . Exemple 2. Subtract-with-borrow.
G ´en ´erateur U(0, 1): principe de base
D ´efinir une fonction de transition f :S → S,
o `uS est l’espace d’ ´etat, de cardinalit ´e finie.
L’ ´etat initial (germe, semence):s0. R ´ecurrence:
sn=f(sn−1).
Supposons de plus quef est p ´eriodique pour toutn≥τ connu (souvent ´egal `a 0), de p ´eriodeρ≤#S: sn+ρ=sn,∀n≥0. On supposeraτ =0
Espace de sortie:U = (0,1).
Fabian Bastin IFT6561
G ´en ´erateur U(0, 1): principe de base
Fonction de sortie
g :S → U
transforme l’ ´etatsndans la valeur de sortieun.
· · · −−−−→f sρ−1 f
−−−−→ s0 −−−−→f s1 −−−−→ · · ·f −−−−→f sn f
−−−−→ · · ·
g
y g
y g
y g
y
· · · uρ−1 u0 u1 · · · un · · ·
Comment choisirf etg?
Buts: grandρ, bonne uniformit ´e, comportement ”al ´eatoire”.
Objectif
En observant seulement(u0,u1, . . .), il doit ˆetre difficile de distinguer cette suite de la r ´ealisation d’une suite de v.a. i.i.d.
uniformes surU.
Utopie: ne pas pouvoir distinguer mieux qu’en tirant `a pile ou face. Autrement dit, que la suite passe tous les tests
statistiques imaginables. Cela est impossible!.
On veut aussi: vitesse, facilit ´e d’implantation, suites
reproduisibles. Compromis entre vitesse / bonnes propri ´et ´es statistiques / (im)pr ´evisibilit ´e. Si l’ ´etat initials0est choisi au hasard, le GPA est comme une roulette g ´eante: pour g ´en ´erert nombres al ´eatoires, on tourne la roulette pour choisirs0, puis on retientu = (u0, . . . ,ut−1).
Machines de casinos et loteries: on r ´einitialises0tr `es souvent.
Fabian Bastin IFT6561
La loi uniforme sur [0, 1]
tChoisirs0au hasard correspond `a choisir un point au hasard dans l’espace ´echantillonnal
Ψt ={u= (u0, . . . ,ut−1) = (g(s0), . . . ,g(st−1)),s0∈ S},
qui peut ˆetre interpr ´et ´e comme une approximation de[0,1]t. Crit `ere:Ψt doit recouvrir[0,1]t tr `es uniform ´ement pourt jusqu’ `a (disons)t0. Il nous faut une mesure d’uniformit e deΨt (ou une mesure de discr epance entre la loi empirique deΨt et la loi uniforme). Plusieurs d ´efinitions possibles.
La loi uniforme sur [0, 1]
tImportant: doit ˆetre facilement calculable sans g ´en ´erer les points.
Pour cela, il faut bien comprendre la structure math ´ematique de Ψt. Pour cette raison, la plupart des GPA utilis ´es en simulation sont bas ´es sur des r ´ecurrences lin ´eaires (simples).
Pourquoi ne pas insister queΨt lui-m ˆeme ressemble `a un ensemble de points choisis au hasard (e.g., ne soit pas trop uniforme)? En fait, on veut cela seulement pour la fraction infime deΨt que l’on utilise.
G ´en ´eralisation: mesurer l’uniformit ´e de ΨI ={(ui
1, . . . ,uit)|s0∈ S}pour une classe choisie d’ensembles d’indices (non successifs) de forme I={i1,i2, . . . ,it}. Pour une famille donn ´eeJ de
sous-ensembles de{0,1, . . . ,t}, on s’assure queΨI est suffisamment uniforme pour toutI∈ J.
Fabian Bastin IFT6561
G ´en ´erateur congruentiel lin ´eaire (GCL)
D `es 1948 furent introduits des g ´en ´erateurs de la forme ax +c mod m.
En supposant tout d’abord quec vaut 0 (comme dans l’approche propos ´ee par Lehmer), la p ´eriode maximale est m−1 et est atteinte si et seulement simest premier etaest une racine primitive dem.
r est une racine primitive demsi les puissances der (1,r,r2, r3,. . . ) g ´en `erent tous les entiers non-nuls modulom.
G ´en ´erateur congruentiel lin ´eaire (GCL)
Puisqu’il y am−1 entiers non nuls, ceci signifie que les premi `eresm−1 puissances der doivent ˆetre diff ´erentes, modulom.
De mani `ere ´equivalente, nous pouvons parler de l’ordre der. L’ordre d’une raciner demest le plus petit entier (strictement) positifx tel querx =1 modm.
r est une racine primitive si son ordre estm−1. Il est possible de montrer que ceci ´equivaut `a exiger quea(m−1)/p−1 est un multiple dempour chaque facteur premierpdem−1, ou encore le plus petit entierlpour lequelrl−1 est divisible parm estl=m−1.
Fabian Bastin IFT6561
G ´en ´erateur congruentiel lin ´eaire (GCL)
Les g ´en ´erateurs congruentiels lin ´eaires qui remplissent ces conditions sont appel ´es GCL’s multiplicatifs `a modulus premier.
Notons que la conditionmpremier suffit pour garantir
l’existence d’un g ´en ´erateur de p ´eriode maximale, en vertu du th ´eor `eme ci-dessous.
Th ´eor `eme.
Si m est premier, il existe une racine primitive pour m.
Il n’existe malheureusement pas de m ´ethode simple pour calculer ces racines.
GCL: exemple
Sim=7, alors 3 est une racine primitive demcar les puissances de 3 modulo 7 sont 1, 3, 2, 6, 4, 5, c’est- `a-dire chaque entier strictement compris entre 0 et 7. Mais 2 n’est pas une racine primitive demcar les puissances de 2 modulo 7 sont 1, 2, 4, 1, 2, 4, 1, 2, 4,. . .
Fabian Bastin IFT6561
G ´en ´erateur congruentiel lin ´eaire (GCL)
Sic6=0, il est possible d’obtenir une p ´eriode ´egale `am, sous les conditions expos ´ees dans le th ´eor ´eme ci-dessous. Le GCL a une p ´eriode pleine si et seulement si les trois conditions suivantes tiennent:
1 le seul entier positif qui divise de mani `ere exacte `a la fois m et c est 1;
2 si q est un nombre premier qui divise m, alors q divise a−1;
3 si 4 divise m, alors4divise a−1.
G ´en ´erateur standard minimal
Park et Miller ont propos ´e un g ´en ´erateur standard qu’ils ont appel ´e le Standard Minimal g ´en ´erateur Standard Minimal, apr ´es avoir test ´e divers g ´en ´erateurs connus au moment de leur
´etude.
Bien qu’il suffise pour les applications simples, les g ´en ´erateurs pr ´esent ´es dans les sections suivantes le surpassent largement, et par cons ´equent, il est d ´econseill ´e de l’utiliser pour des simulations complexes.
Le Standard Minimal est un g ´en ´erateur congruentiel lin ´eaire d ´efini par la r ´ecurrence
xn+1=16807xn mod(231−1).
Fabian Bastin IFT6561
Implantation de g ´en ´erateurs congruentiels lin ´eaires
Une difficult ´e principale est de calculerax mod mpour de grandsm, ce qui entraˆıne des risques de d ´ebordement de registres.
Premi `ere approche. Factorisation approximative.
Cette m ´ethode est valide si
a2<m ou
a=bm/ic,
aveci2<m, et proc `ede par des calculs sur des entiers.
Factorisation approximative
Pr ´ecalculonsq:=bm/acetr :=m moda, puis y :=bx/qc;
x :=a(x−yq)−yr.
Six <0, nous posonsx :=x+m. Justification:
ax modm = (ax − bx/qcm) mod m
= (ax − bx/qc(aq+r)) modm
= (a(x− bx/qcq)− bx/qcr) modm
= (a(x mod q)− bx/qcr) modm.
Sous les conditions pos ´ees, il est imm ´ediat de noter que toutes les quantit ´es interm ´ediaires demeurent entre−metm.
Fabian Bastin IFT6561
Factorisation approximative: implantation
En C, la proc ´edure peut s’exprimer comme suit:
long q, r, y;
q = m/a;
r = m%a;
y = x/q;
x = a*(x-y*q)-y*r;
if (x < 0) x += m;
Calculs en point flottant, double pr ´ecision.
La proc ´edure est valide si tous les entiers `a consid ´erer peuvent ˆetre repr ´esent ´es de mani `ere exacte en passant en calcul flottant. En particulier, si la double pr ´ecision fait appel `a 64 bits, et suit la norme IEEE, la proc ´edure suivante est correcte si am<253:
doublem,a,x,y; intk;
y =a∗x; k =by/mc; x =y−k∗m;
Fabian Bastin IFT6561
D ´ecomposition en puissances de 2.
Supposons quea=±2q±2r etm=2e−hpourhpetit. Dans ce cas,
ax modm=±2qx modm+±2rx modm.
Pour calculery =2qx modm(le calcul de 2rx est similaire), nous d ´ecomposonsx enx0+2e−qx1.
x = x1 x0
q bits (e−q)bits
D ´ecomposition en puissances de 2.
Pourh=1 (Wu, 1997), on obtienty en permutantx0etx1. En effet,
2qx modm=2q(x0+2e−qx1) mod (2e−1)
=2qx0+ [2ex1 mod (2e−1)]
=2qx0+x1.
Fabian Bastin IFT6561
D ´ecomposition en puissances de 2.
Pourh>1 (L’Ecuyer et Simard 1999), nous avons de la m ˆeme mani `ere
y =2q(x0+2e−qx1) mod(2e−h) = (2qx0+hx1) mod(2e−h).
Sih<2qeth(2q−(h+1)2−e+q)<m, commex0≤2e−q et x1≤2q, nous avons
2qx0≤2e−2q <m.
De plus, ´etant donn ´e que 2e−qx1≤m−1, nous avons hx1≤h(m−1)/2e−q=h(2e−h−1)/2e−q
=h(2q−(h+1)2−e+q)<m, et par cons ´equent chaque terme est strictement inf ´erieur `am.
L’op ´eration modulo revient `a soustrairemsi la somme est≥m.
D ´ecomposition en puissances de 2: implantation
#define m 1073741789 /* 2ˆ30 - 35 */
#define h 35
#define q 15
#define emq 15 /* e - q */
#define mask1 32767 /* 2ˆ(e-q) - 1 */
#define r 13
#define emr 17 /* e - r */
#define mask2 131071 /* 2ˆ(e-r) - 1 */
#define norm 1.0/m long x;
Fabian Bastin IFT6561
D ´ecomposition en puissances de 2: implantation
double axmodm () {
unsigned long k, x0, x1;
x0 = x & mask1;
x1 = x >> emq;
k = (x0 << q) + h*x1;
x0 = x & mask2;
x1 = x >> emr;
k += (x0 << r) + h*x1;
if (k < m) x = k;
else if (k < 2*m) x = k-m;
else x = k - 2*m;
return x*norm;
}
D ´ecomposition en puissances de 2.
L’Ecuyer et Simard ont toutefois d ´emontr ´e que ces g ´en ´erateurs pr ´esentent des faiblesses statistiques s’ils sont utilis ´es de mani `ere directe.
Fabian Bastin IFT6561