Metoda de modelare statică a formulelor Monte Carlo. Cum se realizează simularea Monte Carlo. Nu există concepte în relația „obiect-model”.

YouTube enciclopedic

    1 / 5

    ✪ RuleOfThumb - Metoda Monte Carlo

    ✪ Dmitri Kazakov - Quarci

    ✪ [Colocviu]: strălucirea și sărăcia metodelor matematice în cercetarea aplicată

    ✪ Cursul 1: Erori de calcul

    ✪ Elena Brown - Mitul lui Richard lll

    Subtitrări

Poveste

Algoritmul lui Buffon pentru determinarea Pi

Numărul de aruncări Numărul de intersecții Lungimea acului Distanța dintre linii Rotație Valoarea Pi Eroare
Prima încercare 500 236 3 4 absent 3.1780 +3,6⋅10 -2
A doua încercare 530 253 3 4 prezent 3.1423 +7,0⋅10 -4
A treia încercare 590 939 5 2 prezent 3.1416 +4,7⋅10 -5

Comentarii:

Relația dintre procesele stocastice și ecuațiile diferențiale

Crearea aparatului matematic al metodelor stocastice a început la sfârșitul secolului al XIX-lea. În 1899, Lord Rayleigh a arătat că o mers aleatorie unidimensională pe o rețea infinită ar putea oferi o soluție aproximativă unui tip de ecuație diferențială parabolica. Andrei Nikolaevich Kolmogorov în 1931 a dat un mare impuls dezvoltării abordărilor stocastice pentru rezolvarea diferitelor probleme matematice, deoarece a reușit să demonstreze că lanțurile Markov sunt legate de anumite ecuații integro-diferențiale. În 1933, Ivan Georgievich Petrovsky a arătat că mersul aleatoriu care formează un lanț Markov este legat asimptotic de soluția unei ecuații diferențiale parțiale eliptice. După aceste descoperiri, a devenit clar că procesele stocastice pot fi descrise prin ecuații diferențiale și, în consecință, studiate folosind metode matematice bine dezvoltate pentru rezolvarea acestor ecuații la acel moment.

Nașterea metodei Monte Carlo la Los Alamos

Ideea a fost dezvoltată de Ulam, care, în timp ce juca solitaire în timp ce era în stare de convalescență de boală, s-a întrebat care este probabilitatea ca jocul de solitaire să funcționeze. În loc să folosească considerațiile obișnuite de combinatorie pentru astfel de probleme, Ulam a sugerat că s-ar putea pur și simplu să efectueze experimentul de un număr mare de ori și, prin numărarea numărului de rezultate de succes, să se estimeze probabilitatea. El a propus, de asemenea, utilizarea calculatoarelor pentru calculele Monte Carlo.

Apariția primelor calculatoare electronice, care puteau genera numere pseudoaleatoare cu viteză mare, a extins dramatic gama de probleme pentru care abordarea stocastică s-a dovedit a fi mai eficientă decât alte metode matematice. După aceasta, a avut loc o mare descoperire, iar metoda Monte Carlo a fost folosită în multe probleme, dar utilizarea ei nu a fost întotdeauna justificată din cauza numărului mare de calcule necesare pentru a obține un răspuns cu o precizie dată.

Anul nașterii metodei Monte Carlo este considerat a fi 1949, când a fost publicat articolul lui Metropolis și Ulam „Metoda Monte Carlo”. Denumirea metodei provine de la numele unei comune din Principatul Monaco, cunoscută pentru numeroasele sale cazinouri, deoarece ruleta este unul dintre cei mai cunoscuți generatori de numere aleatoare. Stanislaw Ulam scrie în autobiografia sa, Adventures of a Mathematician, că numele a fost sugerat de Nicholas Metropolis în onoarea unchiului său, care era un jucător de noroc.

Dezvoltare în continuare și modernitate

Integrarea Monte Carlo

Să presupunem că trebuie să luăm integrala unei funcții. Să folosim o descriere geometrică informală a integralei și să o înțelegem ca aria de sub graficul acestei funcții.

Pentru a determina această zonă, puteți utiliza una dintre metodele obișnuite de integrare numerică: împărțiți segmentul în subsegmente, calculați aria de sub graficul funcției pe fiecare dintre ele și adăugați. Să presupunem că pentru funcția prezentată în Figura 2, este suficient să o împărțim în 25 de segmente și, prin urmare, să calculați 25 de valori ale funcției. Să ne imaginăm acum că avem de-a face n (\displaystyle n)-funcţia dimensională. Atunci avem nevoie 25 n (\displaystyle 25^(n)) segmente și același număr de calcule ale valorii funcției. Când dimensiunea funcției este mai mare de 10, problema devine enormă. Deoarece spațiile dimensionale înalte apar, în special, în problemele de teoria corzilor, precum și în multe alte probleme fizice în care există sisteme cu multe grade de libertate, este necesar să existe o metodă de rezolvare a cărei complexitate de calcul nu depinde atât de puternic de dimensiune. Aceasta este tocmai proprietatea pe care o are metoda Monte Carlo.

Algoritm de integrare Monte Carlo convențional

Să presupunem că trebuie să calculăm integrala definita ∫ a b f (x) d x (\displaystyle \int \limits _(a)^(b)f(x)\,dx)

Luați în considerare variabila aleatoare u (\displaystyle u), distribuit uniform pe intervalul de integrare. Atunci va fi, de asemenea, o variabilă aleatorie, iar așteptarea sa matematică este exprimată ca
E f (u) = ∫ a b f (x) φ (x) d x (\displaystyle \mathbb (E) f(u)=\int \limits _(a)^(b)f(x)\varphi (x) \,dx), Unde φ (x) (\displaystyle \varphi (x))- densitatea distribuţiei variabilă aleatorie u (\displaystyle u), egal 1 b - a (\displaystyle (\frac (1)(b-a))) Locația activată [ a , b ] (\displaystyle ).

Astfel, integrala cerută este exprimată ca
∫ a b f (x) d x = (b - a) E f (u) (\displaystyle \int \limits _(a)^(b)f(x)\,dx=(b-a)\mathbb (E) f( u)).

Dar așteptarea matematică a unei variabile aleatorii f (u) (\displaystyle f(u)) poate fi estimat cu ușurință prin simularea acestei variabile aleatoare și calculând media eșantionului.

Deci, să renunțăm N (\displaystyle N) puncte distribuite uniform peste [ a , b ] (\displaystyle ), pentru fiecare punct u i (\displaystyle u_(i)) calculati f (u i) (\displaystyle f(u_(i))). Apoi calculăm media eșantionului: 1 N ∑ i = 1 N f (u i) (\displaystyle (\frac (1)(N))\sum _(i=1)^(N)f(u_(i))).

Ca rezultat, obținem o estimare a integralei: ∫ a b f (x) d x ≈ b - a N ∑ i = 1 N f (u i) (\displaystyle \int \limits _(a)^(b)f(x)\,dx\approx (\frac (b-a) (N))\sum _(i=1)^(N)f(u_(i)))

Precizia estimării depinde doar de numărul de puncte N (\displaystyle N).

Această metodă are și o interpretare geometrică. Este foarte asemănătoare cu metoda deterministă descrisă mai sus, cu diferența că în loc să împărțim uniform regiunea de integrare în intervale mici și să însumăm ariile „coloanelor” rezultate, aruncăm puncte aleatorii în regiunea de integrare, pe fiecare dintre ele. construiți aceeași „coloană”, determinând lățimea acesteia Cum b - un N (\displaystyle (\frac (b-a)(N))), și rezumă zonele lor.

Algoritm de integrare geometric Monte Carlo

Pentru a determina aria de sub graficul unei funcții, puteți utiliza următorul algoritm stocastic:

Pentru un număr mic de dimensiuni ale funcției integrabile, performanța integrării Monte Carlo este mult mai mică decât performanța metodelor deterministe. Totuși, în unele cazuri, când funcția este specificată implicit și este necesară determinarea regiunii specificate sub formă de inegalități complexe, metoda stocastică poate fi mai de preferat.

Folosind eșantionarea semnificației

Cu același număr de puncte aleatoare, precizia calculelor poate fi mărită prin apropierea zonei care limitează funcția dorită de funcția în sine. Pentru a face acest lucru, este necesar să folosiți variabile aleatoare cu o distribuție a cărei formă este cât mai apropiată de forma funcției care se integrează. Aceasta este baza uneia dintre metodele de îmbunătățire a convergenței în calculele Monte Carlo: eșantionarea semnificației.

Optimizare

Variațiile metodei Monte Carlo pot fi utilizate pentru a rezolva probleme de optimizare. De exemplu, algoritmul de recoacere simulat.

Aplicație în fizică

Modelarea computerizată joacă un rol important în fizica modernă, iar metoda Monte Carlo este una dintre cele mai comune în multe domenii de la fizică cuantică la fizica stării solide, fizica plasmei și astrofizică.

Algoritmul Metropolis

În mod tradițional, metoda Monte Carlo a fost folosită pentru a determina diferiți parametri fizici ai sistemelor în stare de echilibru termodinamic. Să presupunem că există un set de stări posibile ale unui sistem fizic S (\displaystyle S). Pentru a determina valoarea medie A ¯ (\displaystyle (\overline (A))) oarecare dimensiune A (\displaystyle A) trebuie calculat A ¯ = ∑ S A (S) P (S) (\displaystyle (\overline (A))=\sum _(S)A(S)P(S)), unde însumarea se realizează asupra tuturor stărilor S (\displaystyle S) din W (S) (\displaystyle W(S)), P (S) (\displaystyle P(S))- probabilitatea de stare S (\displaystyle S).

Formulare dinamică (cinetică).

Simulare Monte Carlo directă

Modelarea Monte Carlo directă a oricărui proces fizic implică modelarea comportamentului părților elementare individuale ale unui sistem fizic. În esență, această modelare directă este aproape de rezolvarea problemei din primele principii, dar de obicei, pentru a accelera calculele, este permisă utilizarea unor aproximări fizice. Un exemplu este calculul diferitelor procese folosind metoda dinamicii moleculare: pe de o parte, sistemul este descris prin comportamentul componentelor sale elementare, pe de altă parte, potențialul de interacțiune utilizat este adesea empiric.

Exemple de simulare Monte Carlo directă:

  • Simularea iradierii solide ioni în aproximarea coliziunii binare.
  • Simulare Monte Carlo directă a gazelor rarefiate.
  • Cele mai multe modele cinetice Monte Carlo sunt directe (în special, studiul epitaxiei fasciculului molecular).

Metoda Monte Carlo cuantică

Metoda cuantică Monte Carlo este utilizată pe scară largă pentru a studia molecule complexe și solide. Acest nume combină mai multe metode diferite. Prima dintre ele este metoda variațională Monte Carlo, care este în esență integrarea numerică a integralelor multidimensionale care apar la rezolvarea ecuației Schrödinger. Rezolvarea unei probleme care implică 1000 de electroni necesită luarea de integrale de 3000 dimensionale, iar pentru rezolvarea unor astfel de probleme metoda Monte Carlo are un avantaj uriaș de performanță față de alte metode de integrare numerică. O altă variantă a metodei Monte Carlo este metoda Monte Carlo de difuzie.

Cursul 5.

Metoda Monte Carlo

Subiectul 3. Procesele la coadăîn sistemele economice

1. Observații introductive. 1

2. Schema generală a metodei Monte Carlo. 2

3. Un exemplu de calcul al unui sistem de așteptare folosind metoda Monte Carlo. 4

Întrebări de test... 5

1. Observații introductive

Metoda modelării statistice pe calculator este principala metodă de obținere a rezultatelor folosind modele de simulare a sistemelor stocastice, folosind ca bază teoretică teoremele limită ale teoriei probabilităților. Baza este metoda de testare statistică Monte Carlo.

Metoda Monte Carlo poate fi definită ca o metodă de simulare a variabilelor aleatoare pentru a calcula caracteristicile distribuțiilor acestora. De regulă, se presupune că modelarea se realizează cu ajutorul computerelor electronice, deși în unele cazuri succesul poate fi obținut folosind dispozitive precum o bandă de măsurare, creion și hârtie.

Termenul „metoda Monte Carlo” (inventat de J. von Neumann și în anii 1940) se referă la simularea proceselor folosind un generator de numere aleatorii. Termenul Monte Carlo (un oraș larg cunoscut pentru cazinourile sale) provine din faptul că „numărul de cote” (tehnici de simulare Monte Carlo) au fost folosite în scopul găsirii integralelor ecuațiilor complexe în dezvoltarea primei bombe nucleare(integrale ale mecanicii cuantice). Prin generarea de eșantioane mari de numere aleatorii din, de exemplu, mai multe distribuții, integralele acestor distribuții (complexe) pot fi aproximate din datele (generate).


Apariția ideii de a utiliza fenomene aleatorii în domeniul calculelor aproximative este de obicei atribuită anului 1878, când lucrarea lui Hall a apărut pentru determinarea numerelor p prin aruncarea aleatorie a unui ac pe hârtie marcată cu linii paralele. Esența problemei este de a reproduce experimental un eveniment, a cărui probabilitate este exprimată prin numărul p și de a estima aproximativ această probabilitate.

Lucrările interne pe metoda Monte Carlo au apărut în anii. De-a lungul a două decenii, s-a acumulat o bibliografie extinsă folosind metoda Monte Carlo, care include peste 2000 de titluri. În plus, chiar și o scurtă privire asupra titlurilor lucrărilor permite să trageți o concluzie despre aplicabilitatea metodei Monte Carlo pentru rezolvarea probleme aplicate din un numar mare domenii ale științei și tehnologiei.

Inițial, metoda Monte Carlo a fost folosită în principal pentru a rezolva probleme din fizica neutronilor, unde metodele numerice tradiționale s-au dovedit a fi de puțin folos. În plus, influența sa s-a extins la o clasă largă de probleme din fizica statistică, foarte diferite ca conținut. Ramurile științei în care metoda Monte Carlo este utilizată din ce în ce mai mult includ probleme în teoria cozilor de așteptare, probleme în teoria jocurilor și economia matematică, probleme în teoria transmiterii mesajelor în prezența interferenței și o serie de altele.

Metoda Monte Carlo a avut și continuă să aibă o influență semnificativă asupra dezvoltării metodei matematicii computaționale (de exemplu, dezvoltarea metodelor de integrare numerică) și, în rezolvarea multor probleme, este combinată cu succes cu alte metode de calcul și le completează. . Utilizarea lui este justificată în primul rând în acele probleme care permit o descriere probabilitate-teoretică. Acest lucru se explică atât prin naturalețea obținerii unui răspuns cu o anumită probabilitate dată în probleme cu conținut probabil, cât și printr-o simplificare semnificativă a procedurii de rezolvare. Dificultatea de a rezolva o anumită problemă pe un computer este determinată în mare măsură de dificultatea de a o traduce în „limbajul” unei mașini. Crearea limbajelor de programare automată a simplificat semnificativ una dintre etapele acestei lucrări. De aceea, cele mai dificile etape în prezent sunt: ​​o descriere matematică a fenomenului studiat, simplificările necesare ale problemei, selectarea unei metode numerice adecvate, studiul erorii acesteia și înregistrarea algoritmului. În cazurile în care există o descriere probabilitate-teoretică a problemei, utilizarea metodei Monte Carlo poate simplifica semnificativ etapele intermediare menționate. Totuși, așa cum va rezulta din cele ce urmează, în multe cazuri este util și pentru probleme strict deterministe construirea unui model probabilistic (randomizarea problemei inițiale) pentru a utiliza în continuare metoda Monte Carlo.

2. Schema generală a metodei Monte Carlo

Să presupunem că trebuie să calculăm o cantitate necunoscută m și dorim să facem acest lucru luând în considerare o variabilă aleatorie astfel încât așteptarea sa matematică să fie M, = m. Fie varianța acestei variabile aleatoare D = b.

Să considerăm N variabile aleatoare independente,,..., ale căror distribuții coincid cu distribuția variabilei aleatoare luate în considerare ξ..gif" width="247" height="48">

Ultima relație poate fi rescrisă ca

Formula rezultată oferă o metodă de calcul al lui m și o estimare a erorii acestei metode.

Esența utilizării metodei Monte Carlo este determinarea rezultatelor pe baza statisticilor obținute în momentul luării unei anumite decizii.

De exemplu. Fie E1 și E2 singurele două implementări posibile ale unui proces aleator, iar p1 este probabilitatea rezultatului E1 și p2 = 1 – p1 este probabilitatea rezultatului E2. Pentru a determina care dintre cele două evenimente, e1 sau E2, are loc în acest caz, luăm un număr aleatoriu în intervalul dintre 0 și 1, distribuit uniform în intervalul (0, 1), și efectuăm un test. Rezultatul E1 va apărea dacă , iar rezultatul E2 va apărea altfel.

Astfel, fiabilitatea rezultatelor obținute prin metoda Monte Carlo este determinată decisiv de calitatea generatorului de numere aleatorii.

Pentru a obține numere aleatorii pe un computer, se folosesc metode de generare, care se bazează de obicei pe repetarea de mai multe ori a unei anumite operații. Secvența astfel obținută se numește mai potrivit numere pseudoaleatoare, întrucât succesiunea generată este periodică și, începând de la un anumit moment, numerele vor începe să se repete. Aceasta rezultă din faptul că doar un număr finit poate fi scris în codul computerului numere diferite. În consecință, în final, unul dintre numerele generate γ1 va coincide cu unul dintre membrii anteriori ai secvenței γL. Și deoarece generarea se realizează după o formulă a formei


γк+1 = F(γk),

din acest moment se vor repeta membrii rămași ai secvenței.

Utilizarea numerelor aleatoare distribuite uniform formează baza simulării Monte Carlo. Putem spune că dacă o anumită variabilă aleatoare a fost determinată folosind metoda Monte Carlo, atunci a fost folosită o secvență de numere aleatoare distribuite uniform pentru a o calcula.

Numerele aleatoare distribuite uniform variază de la 0 la 1 și sunt selectate aleatoriu în funcție de funcția de distribuție

F(x) = Рr(Х< х} = х, .

Cu această distribuție, apariția oricăror valori ale unei variabile aleatoare în intervalul (0, 1) este la fel de plauzibilă. Aici Pr(X< х} - вероятность того, что случайная величина X примет значение меньше х.

Principala metodă de obținere a numerelor aleatoare este generarea lor modulo. Fie m, a, c, x0 numere întregi astfel încât m > x0 și a, c, x0 > 0. Numărul pseudoaleator xi din șirul (xi) se obține folosind relația de recurență

xi = a xi-1 + c (mod m).

Caracteristicile stocastice ale numerelor generate depind decisiv de alegerea lui m, a și c. Alegerea lor slabă duce la rezultate eronate în simulările Monte Carlo.

Simulările numerice necesită adesea un număr mare de numere aleatorii. Prin urmare, perioada secvenței de numere aleatoare generate, după care secvența începe să se repete, trebuie să fie destul de mare. Trebuie să fie semnificativ mai mare decât numărul de numere aleatoare necesare modelării, altfel rezultatele obținute vor fi distorsionate.

Majoritatea calculatoarelor și pachetelor software conțin un generator de numere aleatorii. Cu toate acestea, majoritatea testelor statistice arată o corelație între numerele aleatoare rezultate.

Există un test rapid pe care îl puteți folosi pentru a verifica fiecare generator. Calitatea unui generator de numere aleatoare poate fi demonstrată prin umplerea unei rețele complet d-dimensionale (de exemplu, bidimensională sau tridimensională). Un generator bun ar trebui să umple întreg spațiul hipercubului.

O altă modalitate aproximativă de a verifica uniformitatea distribuției N numere aleatoare xi este de a calcula așteptarea și varianța lor matematică. Conform acestui criteriu, pentru distribuirea uniformă trebuie îndeplinite următoarele condiții:

Există multe teste statistice care pot fi folosite pentru a testa dacă o secvență va fi aleatorie. Criteriul spectral este considerat cel mai precis. De exemplu, un criteriu foarte comun numit criteriul KS sau criteriul Kolmogorov-Smirnov. Verificarea arată că, de exemplu, generatorul de numere aleatorii din foile de calcul Excel nu îndeplinește acest criteriu.

În practică, principala problemă este să construiești un generator de numere aleatorii simplu și fiabil, pe care să îl poți folosi în programele tale. Pentru a face acest lucru, se recomandă următoarea procedură.

La începutul programului, întregii variabile X i se atribuie o anumită valoare X0. Apoi sunt generate numere aleatorii conform regulii

X = (aX + c) mod m. (1)

Selectarea parametrilor trebuie făcută folosind următoarele principii de bază.

1. Numărul inițial X0 poate fi ales în mod arbitrar. Dacă programul este folosit de mai multe ori și necesită de fiecare dată surse diferite de numere aleatorii, puteți, de exemplu, să atribuiți lui X0 valoarea lui X ultima obținută în rularea anterioară.

2. Numărul m trebuie să fie mare, de exemplu, 230 (deoarece acest număr determină perioada secvenței pseudoaleatoare generată).

3.Dacă m este o putere a doi, alegeți o astfel încât A mod8 = 5. Dacă m este o putere a zece, alegeți o astfel încât A mod10 = 21. Această alegere asigură că generatorul de numere aleatoare va produce toate cele m valori posibile înainte de a începe să se repete.

4.Multiplicatorul A alegerea preferată este între 0,01 m și 0,99 m, iar cifrele sale binare sau zecimale nu ar trebui să aibă o structură regulată simplă. Multiplicatorul trebuie să treacă de criteriul spectral și, de preferință, de câteva alte criterii.

5.Dacă A este un multiplicator bun, valoarea lui c nu este semnificativă, cu excepția faptului că c nu ar trebui să aibă un multiplicator comun cu m dacă m este dimensiunea cuvântului computerului. Puteți alege, de exemplu, c = 1 sau c = a.

6. Nu puteți genera mai mult de m/1000 de numere aleatoare. După aceasta, trebuie utilizat un nou circuit, de exemplu un nou multiplicator A.

Regulile enumerate se referă în principal la limbajul de programare al mașinii. Pentru limbajul de programare nivel inalt, de exemplu C++, se folosește adesea o altă opțiune (1): este selectat un număr prim m care este aproape de cel mai mare număr întreg ușor de calculat, valoarea lui a este setată egală cu rădăcina antiderivată a lui m și c este egală cu zero. De exemplu, puteți lua A= 48271 și t =

3. Un exemplu de calcul al unui sistem de așteptare folosind metoda Monte Carlo

Sa luam in considerare cel mai simplu sistem serviciul de așteptare (QS), care constă din n linii (denumite altfel canale sau puncte de service). În momente aleatorii, solicitările sunt primite în sistem. Fiecare aplicație ajunge pe linia nr. 1. Dacă la momentul primirii apariției Tk această linie este liberă, aplicația este deservită la ora t3 (timp de ocupare a liniei). Dacă linia este ocupată, cererea este transferată instantaneu pe linia nr. 2 etc. Dacă toate cele n linii sunt ocupate în prezent, atunci sistemul emite un refuz.

O sarcină naturală este de a determina caracteristicile unui sistem dat prin care poate fi evaluată eficiența acestuia: timpul mediu de așteptare pentru service, procentul de nefuncționare a sistemului, lungimea medie a cozii etc.

Pentru astfel de sisteme, practic singura metodă de calcul este metoda Monte Carlo.

https://pandia.ru/text/78/241/images/image013_34.gif" width="373" height="257">

Algoritmii sunt folosiți pentru a obține numere aleatoare pe un computer, prin urmare astfel de secvențe, care sunt în esență deterministe, sunt numite pseudoaleatoare. Calculatorul funcționează cu numere de n biți, prin urmare, în loc de o colecție continuă de numere aleatoare uniforme din intervalul (0,1), pe computer este utilizată o secvență discretă de 2n numere aleatoare din același interval - legea distribuției a o astfel de secvență discretă se numește distribuție cvasi-uniformă.

Cerințe pentru un generator ideal de numere aleatoare:

1. Sirul trebuie să fie format din numere distribuite cvasi-uniform.

2. Numerele trebuie să fie independente.

3. Secvențele de numere aleatorii trebuie să fie reproductibile.

4. Secvențele trebuie să aibă numere care nu se repetă.

5. Secvențele trebuie obținute cu resurse de calcul minime.

Cea mai mare aplicație în practica modelării computerizate pentru generarea de secvențe de numere pseudoaleatoare se găsește în algoritmi de forma:

care sunt relaţii recurente de ordinul întâi.

De exemplu. x0 = 0,2152, (x0)2=0, x1 = 0,6311, (x1)2=0, x2=0,8287 etc.

Dezavantajul unor astfel de metode este prezența corelației între numerele din secvență și, uneori, nu există deloc aleatorie, de exemplu:

x0 = 0,4500, (x0)2=0, x1 = 0,2500, (x1)2=0, x2=0,2500 etc.

Procedurile congruente pentru generarea de secvențe pseudoaleatoare au devenit utilizate pe scară largă.

Două numere întregi a și b sunt congruente (comparabile) modulo m, unde m este un număr întreg, dacă și numai dacă există un număr întreg k astfel încât a-b=km.

1984º4 (mod 10), 5008º8 (mod 103).

Cele mai congruente proceduri de generare a numerelor aleatoare se bazează pe următoarea formulă:

unde sunt numere întregi nenegative.

Folosind numerele întregi ale șirului (Xi), putem construi șirul (xi)=(Xi/M) numere rationale din intervalul unitar (0,1).

Înainte de modelare, generatoarele de numere aleatorii utilizate trebuie să fie supuse unor teste preliminare amănunțite pentru uniformitatea, stocasticitatea și independența secvențelor de numere aleatoare rezultate.

Metode pentru îmbunătățirea calității secvențelor de numere aleatoare:

1. Folosind formule recurente de ordinul r:

Dar utilizarea acestei metode duce la o creștere a costului resurselor de calcul pentru obținerea numerelor.

2. Metoda de perturbare:

.

5. Modelarea impacturilor aleatorii asupra sistemelor

1. Trebuie implementat eveniment aleatoriu A, care apare cu o probabilitate dată p. Să definim A ca evenimentul că valoarea selectată xi a unei variabile aleatoare distribuită uniform pe intervalul (0,1) satisface inegalitatea:

Atunci probabilitatea evenimentului A va fi https://pandia.ru/text/78/241/images/image019_31.gif" width="103" height="25">,

Procedura de simulare a testului în acest caz constă în compararea secvenţială a numerelor aleatoare xi cu valorile lui lr. Dacă condiția este îndeplinită, rezultatul testului este evenimentul Am.

3. Luați în considerare evenimentele independente A și B cu probabilități de apariție pA și pB. Rezultatele posibile ale studiilor comune în acest caz vor fi evenimentele AB, cu probabilități pArB, (1-pA)pB, pA(1-pB), (1-pA)(1-pB). Pentru a simula testele articulare, pot fi utilizate două variante ale procedurii:

Executarea consecventă a procedurii discutate la paragraful 1.

Determinarea unuia dintre rezultatele AB, prin tragere la sorți cu probabilitățile corespunzătoare, adică procedura discutată în paragraful 2.

Prima opțiune va necesita două numere xi și două comparații. Cu a doua opțiune, vă puteți descurca cu un număr xi, dar pot fi necesare mai multe comparații. Din punctul de vedere al confortului construirii unui algoritm de modelare și economisirii numărului de operații și a memoriei computerului, prima opțiune este mai de preferat.

4. Evenimentele A și B sunt dependente și apar cu probabilități pA și pB. Să notăm cu pA(B) probabilitatea condiționată de apariție a evenimentului B, cu condiția ca evenimentul A să fi avut loc.

Întrebări de control

1) Cum puteți defini metoda Monte Carlo?

2) Semnificația practică a metodei Monte Carlo.

3) Schema generală a metodei Monte Carlo.

4) Un exemplu de calcul al unui sistem de așteptare folosind metoda Monte Carlo.

5) Metode de generare a numerelor aleatorii.

6) Care sunt cerințele pentru un generator ideal de numere aleatoare?

7) Metode de îmbunătățire a calității secvențelor de numere aleatoare.

este o parte integrantă a oricărei decizii pe care o luăm. Ne confruntăm constant cu incertitudine, ambiguitate și variabilitate. Și chiar și cu un acces fără precedent la informații, nu putem prezice cu exactitate viitorul. Simularea Monte Carlo (cunoscută și ca metoda Monte Carlo) vă permite să luați în considerare toate consecințele posibile ale deciziilor dumneavoastră și să evaluați impactul riscului, permițându-vă să luați decizii mai bune în condiții de incertitudine.

Ce este simularea Monte Carlo?
Simularea Monte Carlo este o tehnică matematică automatizată concepută pentru a încorpora riscul în analiza cantitativă și procesul de luare a deciziilor. Această metodologie este utilizată de profesioniști din diverse domenii precum finanțe, management de proiect, energie, producție, inginerie, cercetare și dezvoltare, asigurări, petrol și gaze, transport și protecția mediului.

De fiecare dată în procesul de alegere a unui curs de acțiune ulterioară, simularea Monte Carlo permite decidentului să ia în considerare o serie întreagă de consecințe posibile și să evalueze probabilitatea apariției acestora. Această metodă demonstrează posibilitățile care se află la capetele opuse ale spectrului (rezultatele de a merge all-in și de a lua măsurile cele mai conservatoare), precum și consecințele probabile ale deciziilor moderate.

Această metodă a fost folosită pentru prima dată de oamenii de știință implicați în dezvoltarea bombei atomice; a fost numit după Monte Carlo, o stațiune din Monaco renumită pentru cazinourile sale. Fiind răspândită în timpul celui de-al Doilea Război Mondial, metoda Monte Carlo a început să fie folosită pentru a simula tot felul de sisteme fizice și teoretice.

Vezi recenzii
Douglas Hubbard
Cercetarea deciziei Hubbard
Timp: 00:35 sec

„Simularea Monte Carlo este singura modalitate de a analiza deciziile critice în condiții de incertitudine.”

John Zhao
Suncor Energy
Timp: 02:36 min

„Simularea Monte Carlo pentru estimarea costurilor de capital a devenit [la Suncor] o cerință pentru orice proiect major.”

Cum se realizează simularea Monte Carlo
În cadrul metodei Monte Carlo, analiza riscului este efectuată folosind modele de rezultate posibile. Atunci când se creează astfel de modele, orice factor care este caracterizat de incertitudine este înlocuit cu o gamă de valori - o distribuție de probabilitate. Rezultatele sunt apoi calculate de mai multe ori, de fiecare dată folosind un set diferit de valori ale funcției de probabilitate aleatoare. Uneori, pentru a finaliza o simulare, poate fi necesar să se facă mii sau chiar zeci de mii de recalculări, în funcție de numărul de incertitudini și intervalele stabilite pentru acestea. Simularea Monte Carlo permite obținerea distribuțiilor de valori ale consecințelor posibile.

Când se utilizează distribuțiile de probabilitate, variabilele pot avea probabilități diferite de apariție a consecințelor diferite. Distribuțiile de probabilitate sunt o modalitate mult mai realistă de a descrie incertitudinea variabilelor în procesul de analiză a riscului. Cele mai comune distribuții de probabilitate sunt enumerate mai jos.

Distributie normala(sau „curba Baussiană”). Pentru a descrie abaterea de la medie, utilizatorul definește media sau valoarea așteptată și abaterea standard. Valorile situate la mijloc, lângă medie, sunt caracterizate de cea mai mare probabilitate. Distribuția normală este simetrică și descrie multe fenomene comune - de exemplu, înălțimea oamenilor. Exemple de variabile care sunt descrise prin distribuții normale includ ratele inflației și prețurile la energie.

Distribuție lognormală. Valorile sunt denaturate pozitiv și, spre deosebire de o distribuție normală, sunt asimetrice. Această distribuție este folosită pentru a reflecta cantități care nu coboară sub zero, dar pot lua valori pozitive nelimitate. Exemple de variabile descrise de distribuțiile lognormale includ valorile imobiliare, prețurile acțiunilor și rezervele de petrol.

Distributie uniforma. Toate cantitățile pot lua o valoare sau alta cu probabilitate egală, utilizatorul determină pur și simplu minimul și maximul. Exemple de variabile care pot avea o distribuție uniformă includ costurile de producție sau veniturile din vânzările viitoare ale unui produs nou.

Distribuție triunghiulară. Utilizatorul definește valorile minime, cele mai probabile și maxime. Valorile situate în apropierea punctului de maximă probabilitate au cea mai mare probabilitate. Variabilele care pot fi descrise printr-o distribuție triunghiulară includ vânzările istorice pe unitatea de timp și nivelurile de stoc.

distributie PERT. Utilizatorul definește valorile minime, cele mai probabile și maxime - la fel ca în cazul unei distribuții triunghiulare. Valorile situate în apropierea punctului de maximă probabilitate au cea mai mare probabilitate. Cu toate acestea, valorile din intervalul dintre cele mai probabile și cele extreme sunt mai probabil să apară decât cu o distribuție triunghiulară, adică nu se pune accent pe valorile extreme. Un exemplu de utilizare a distribuției PERT este de a descrie durata unei sarcini în cadrul unui model de management de proiect.

Distribuție discretă. Utilizatorul determină valori specifice dintre cele posibile, precum și probabilitatea de a obține fiecare dintre ele. Un exemplu ar fi rezultatul proces: 20% probabilitate de decizie pozitivă, 30% probabilitate de decizie negativă, 40% probabilitate de înțelegere între părți și 10% probabilitate de anulare a procesului.

Într-o simulare Monte Carlo, valorile sunt selectate aleatoriu din distribuțiile de probabilitate inițiale. Fiecare eșantion de valori se numește iterație; se înregistrează rezultatul obţinut din probă. În timpul procesului de modelare, această procedură este efectuată de sute sau mii de ori, iar rezultatul este o distribuție de probabilitate a posibilelor consecințe. Astfel, simularea Monte Carlo oferă o imagine mult mai completă a posibilelor evenimente. Vă permite să judecați nu numai ce se poate întâmpla, ci și care este probabilitatea unui astfel de rezultat.

Simularea Monte Carlo are o serie de avantaje față de analiza deterministă sau de estimare punctuală:

  • Rezultate probabilistice.Rezultatele arată nu numai evenimentele posibile, ci și probabilitatea apariției lor.
  • Reprezentarea grafică a rezultatelor. Natura datelor obținute prin metoda Monte Carlo permite crearea de grafice cu consecințe variate, precum și probabilitățile de apariție a acestora. Acest lucru este important atunci când se comunică rezultatele altor părți interesate.
  • Analiza de sensibilitate. Cu câteva excepții, analiza deterministă face dificilă determinarea care variabilă influențează cel mai mult rezultatele. Când rulați o simulare Monte Carlo, este ușor să vedeți care intrări au cel mai mare impact asupra rezultatelor finale.
  • Analiza scenariului.În modelele deterministe, este foarte dificil să se simuleze diferite combinații de cantități pentru diferite valori de intrare și, prin urmare, să se evalueze impactul unor scenarii cu adevărat diferite. Folosind metoda Monte Carlo, analiștii pot determina cu precizie ce intrări conduc la anumite valori și pot urmări apariția anumitor consecințe. Acest lucru este foarte important pentru o analiză ulterioară.
  • Corelarea datelor sursă. Metoda Monte Carlo vă permite să modelați relații interdependente între variabilele de intrare. Pentru a obține informații fiabile, este necesar să ne imaginăm în ce cazuri, când unii factori cresc, alții cresc sau scad corespunzător.

De asemenea, vă puteți îmbunătăți rezultatele simulării Monte Carlo prin eșantionare folosind metoda Latin Hypercube, care selectează mai precis din întreaga gamă de funcții de distribuție.

Palisade Modeling Products
folosind metoda Monte Carlo
Apariția aplicațiilor concepute pentru a lucra cu foi de calcul pe computerele personale a deschis oportunități largi pentru specialiști de a utiliza metoda Monte Carlo atunci când efectuează analize în activitățile de zi cu zi. Microsoft Excel este unul dintre cele mai comune instrumente de analiză a foilor de calcul, iar programul este plug-in-ul principal al Palisade pentru Excel, care vă permite să efectuați simulări Monte Carlo. @RISK a fost introdus pentru prima dată pentru Lotus 1-2-3 pe sistemul de operare DOS în 1987 și și-a câștigat imediat o reputație excelentă pentru acuratețea, flexibilitatea modelării și ușurința în utilizare. Apariția Microsoft Project a dus la crearea unei alte aplicații logice pentru aplicarea metodei Monte Carlo. Sarcina sa principală a fost să analizeze incertitudinile și riscurile asociate gestionării proiectelor mari.

Modelarea statistică este o metodă de modelare de bază care implică testarea unui model cu un set de semnale aleatorii cu o densitate de probabilitate dată. Scopul este definiție statistică rezultate de ieșire. Modelarea statistică se bazează pe metodă Monte Carlo. Să ne amintim că imitația este folosită atunci când alte metode nu pot fi folosite.

Metoda Monte Carlo

Să luăm în considerare metoda Monte Carlo folosind exemplul de calcul al unei integrale, a cărei valoare nu poate fi găsită analitic.

Sarcina 1. Găsiți valoarea integralei:

În fig. 1.1 prezintă graficul funcției f (X). A calcula valoarea integralei acestei funcții înseamnă a găsi aria de sub acest grafic.

Orez. 1.1

Limităm curba de sus, la dreapta și la stânga. Distribuim aleatoriu puncte în dreptunghiul de căutare. Să notăm prin N 1 numărul de puncte acceptate pentru testare (adică, căzând într-un dreptunghi, aceste puncte sunt prezentate în Fig. 1.1 cu roșu și albastru), și prin N 2 - numărul de puncte sub curbă, adică care se încadrează în zona umbrită de sub funcție (aceste puncte sunt prezentate cu roșu în Fig. 1.1). Atunci este firesc să presupunem că numărul de puncte care se încadrează sub curbă în raport cu numărul total de puncte este proporțional cu aria de sub curbă (valoarea integralei) în raport cu aria dreptunghiului de testare. Din punct de vedere matematic, aceasta poate fi exprimată după cum urmează:

Aceste raționamente, desigur, sunt statistice și sunt cu atât mai corecte cu cât număr mai mare Vom lua puncte de testare.

Un fragment al algoritmului metodei Monte Carlo sub forma unei diagrame bloc arată așa cum se arată în Fig. 1.2

Orez. 1.2

Valori r 1 și r 2 din fig. 1.2 sunt numere aleatoare distribuite uniform din intervalele ( X 1 ; X 2) și ( c 1 ; c 2) în consecință.

Metoda Monte Carlo este extrem de eficientă și simplă, dar necesită un generator de numere aleatoare „bun”. A doua problemă în aplicarea metodei este determinarea mărimii eșantionului, adică a numărului de puncte necesare pentru a oferi o soluție cu o precizie dată. Experimentele arată că pentru a crește acuratețea de 10 ori, dimensiunea eșantionului trebuie mărită de 100 de ori; adică acuratețea este aproximativ proporțională cu rădăcina pătrată a dimensiunii eșantionului:

Schemă de utilizare a metodei Monte Carlo în studierea sistemelor cu parametri aleatori

După ce a construit un model de sistem cu parametri aleatori, semnalele de intrare de la un generator de numere aleatorii (RNG) sunt furnizate la intrarea acestuia, așa cum se arată în Fig. 1.3 RNG este proiectat în așa fel încât să producă uniform distribuite numere aleatorii r pp din intervalul . Deoarece unele evenimente pot fi mai probabile, altele mai puțin probabile, numere aleatoare distribuite uniform de la generator sunt transmise unui convertor al legii numerelor aleatoare (RLC), care le convertește în dat utilizator al legii distribuției probabilității, de exemplu, legea normală sau exponențială. Acestea au convertit numere aleatorii X alimentat la intrarea modelului. Modelul procesează semnalul de intrare X conform unor legi y = ts (X) și primește semnalul de ieșire y, care este, de asemenea, aleatoriu.

variabilă aleatoare de modelare statistică


Orez. 1.3

Filtrele și contoarele sunt instalate în blocul de acumulare de statistici (BNStat). Un filtru (o condiție logică) determină după valoare y, dacă un anumit eveniment a fost realizat într-un anumit experiment (condiția a fost îndeplinită, f= 1) sau nu (condiția nu a fost îndeplinită, f= 0). Dacă evenimentul are loc, contorul de evenimente este incrementat cu unu. Dacă evenimentul nu este realizat, atunci valoarea contorului nu se modifică. Dacă trebuie să monitorizați mai multe tipuri diferite de evenimente, atunci veți avea nevoie de mai multe filtre și contoare pentru modelarea statistică N i. Un numărător al numărului de experimente este întotdeauna păstrat - N.

Relație în continuare N i La N, calculat în blocul de calcul caracteristici statistice(BVSH) folosind metoda Monte Carlo, oferă o estimare a probabilității p i producerea unui eveniment i, adică indică frecvența apariției sale într-o serie de N experimente. Acest lucru ne permite să tragem concluzii despre proprietățile statistice ale obiectului modelat.

De exemplu, evenimentul A a avut loc în urma a 200 de experimente efectuate de 50 de ori. Aceasta înseamnă, conform metodei Monte Carlo, că probabilitatea ca un eveniment să se producă este: p A = 50/200 = 0,25. Probabilitatea ca evenimentul să nu se producă este, respectiv, 1 - 0,25 = 0,75.

Vă rugăm să rețineți Atenţie: când se vorbește despre probabilitate obținută experimental, se numește frecvență; cuvântul probabilitate este folosit atunci când vor să sublinieze că vorbim despre un concept teoretic.

Cu un număr mare de experimente N frecvența de apariție a unui eveniment, obținută experimental, tinde spre valoarea probabilității teoretice de apariție a evenimentului.

În blocul de evaluare a fiabilității (RAB), se analizează gradul de fiabilitate al datelor experimentale statistice preluate din model (ținând cont de acuratețea rezultatului e, specificat de utilizator) și determinați numărul de teste statistice necesare pentru aceasta. Dacă fluctuațiile valorilor frecvenței de apariție a evenimentelor în raport cu probabilitatea teoretică sunt mai mici decât precizia specificată, atunci frecvența experimentală este luată ca răspuns, în caz contrar, generarea de influențe aleatorii de intrare continuă, iar procesul de modelare este repetate. Cu un număr mic de teste, rezultatul poate fi nesigur. Dar cu cât sunt mai multe teste, cu atât răspunsul este mai precis, conform teoremei limitei centrale.

Rețineți că evaluarea este efectuată folosind cea mai proastă frecvență. Acest lucru oferă rezultate fiabile pentru toate caracteristicile măsurate ale modelului simultan.

Exemplul 1. Să rezolvăm sarcină simplă. Care este probabilitatea ca o monedă să aterizeze cu capul sus atunci când este aruncată la întâmplare de la înălțime?

Să începem să aruncăm o monedă și să înregistrăm rezultatele fiecărei aruncări (vezi Tabelul 1.1).

Tabelul 1.1.

Rezultatele testului de aruncare a monedelor


Vom calcula frecvența capetelor ca raport dintre numărul de cazuri de capete și numărul total de observații. Uită-te în tabel. 1.1 cazuri pt N = 1, N = 2, N= 3 - la început, valorile frecvenței nu pot fi numite fiabile. Să încercăm să construim un grafic de dependență P o din N- și să vedem cum se modifică frecvența capetelor în funcție de numărul de experimente efectuate. Desigur, diferite experimente vor produce tabele diferite și, prin urmare, grafice diferite. În fig. 1.4 arată una dintre opțiuni.


Orez. 1.4

Să tragem câteva concluzii.

  • 1. Se vede că la valori mici N, De exemplu, N = 1, N = 2, N= 3 Răspunsul nu poate fi deloc de încredere. De exemplu, P o = 0 at N= 1, adică probabilitatea de a obține cap într-o aruncare este zero! Deși toată lumea știe bine că nu este așa. Adică am primit până acum un răspuns foarte nepoliticos. Cu toate acestea, uitați-vă la grafic: în curs economii informații, răspunsul se apropie încet, dar sigur de cel corect (este evidențiat cu o linie punctată). Din fericire, în acest caz particular, știm răspunsul corect: în mod ideal, probabilitatea de a obține capete este de 0,5 (în alte probleme, mai complexe, răspunsul, desigur, ne va fi necunoscut). Să presupunem că trebuie să știm răspunsul cu precizie e= 0,1. Să cheltuim două linii paralele, separată de răspunsul corect 0,5 printr-o distanță de 0,1 (vezi Fig. 1.4). Lățimea coridorului rezultat va fi egală cu 0,2. De îndată ce curba P O ( N) va intra in acest culoar in asa fel incat sa nu paraseasca niciodata, puteti sa va opriti si sa vedeti pentru ce valoare N s-a întâmplat. Asta e experimental calculat critic sens numărul necesar de experimente N kr e pentru a determina răspunsul cu acuratețe e = 0.1; e- vecinătatea în raționamentul nostru joacă rolul unui fel de tub de precizie. Vă rugăm să rețineți că răspunsurile P o (91), P o (92) și așa mai departe nu își mai schimbă valorile mult (a se vedea Fig. 1.4); cel puțin prima cifră după virgulă, în care suntem obligați să avem încredere în funcție de condițiile problemei, nu se modifică.
  • 2. Motivul acestui comportament al curbei este acțiunea central final teoreme. Deocamdată, aici o vom formula în cea mai simplă versiune: „Suma variabilelor aleatoare este o cantitate non-aleatoare”. Am folosit media P o, care poartă informații despre suma experimentelor și, prin urmare, treptat această valoare devine din ce în ce mai sigură.
  • 3. Dacă faceți acest experiment din nou de la început, atunci, desigur, rezultatul său va fi un alt tip de curbă aleatorie. Și răspunsul va fi diferit, deși aproximativ același. Să realizăm o serie întreagă de astfel de experimente (vezi Fig. 1.5). O astfel de serie se numește ansamblu de realizări. În ce răspuns ar trebui să crezi în cele din urmă? La urma urmei, deși sunt apropiați, tot diferă. În practică, aceștia acționează diferit. Prima opțiune este de a calcula media răspunsurilor pe mai multe implementări (vezi Tabelul 1.2).

Orez. 1.5

Am pus la punct mai multe experimente și am stabilit de fiecare dată câte experimente trebuie făcute, adică N cr e. Au fost efectuate 10 experimente, ale căror rezultate au fost rezumate în tabel. 1.2 Pe baza rezultatelor a 10 experimente s-a calculat valoarea medie N cr e.

Tabelul 1.2.

Date experimentale privind numărul necesar de aruncări de monede pentru a obține acuratețe e

Astfel, după efectuarea a 10 implementări de lungimi diferite, am stabilit că este suficient V in medie s-a putut realiza 1 realizare cu o lungime de 94 de aruncări de monede.

Un alt fapt important. Aruncați o privire atentă la graficul din Fig. 21.5. Acesta arată 100 de realizări - 100 de linii roșii. Marcați abscisa pe ea N= 94 bară verticală. Există un anumit procent de linii roșii care nu au avut timp să treacă e-cartier, adică ( P exp - e ? P teorie? P exp + e), și intră pe coridor exact până în momentul de față N= 94. Vă rugăm să rețineți că există 5 astfel de linii. Aceasta înseamnă că 95 din 100, adică 95%, au intrat în mod sigur în intervalul desemnat.

Astfel, după efectuarea a 100 de implementări, am obținut o încredere de aproximativ 95% în probabilitatea de capete obținută experimental, determinând-o cu o precizie de 0,1.

Pentru a compara rezultatul obținut, să calculăm valoarea teoretică N kr t teoretic. Totuși, pentru aceasta va trebui să introducem conceptul de probabilitate de încredere Q F, ceea ce arată cât de dispuși suntem să credem răspunsul.

De exemplu, când Q F= 0,95 suntem gata să credem răspunsul în 95% din cazuri din 100. Arată astfel: N cr t = k (Q F) · p· (1 - p) /e 2 unde k (Q F) - coeficientul Laplace, p- probabilitatea de a obține capete, e- precizie (interval de încredere). În tabel 1.3 arată valorile valorii teoretice ale numărului de experimente necesare pentru diferite Q F(pentru precizie e= 0,1 și probabilitate p = 0.5).

Tabelul 1.3.

Calculul teoretic al numărului necesar de aruncări de monede pentru a obține acuratețe e= 0,1 la calcularea probabilității capetelor


După cum puteți vedea, estimarea pe care am obținut-o pentru durata implementării, egală cu 94 de experimente, este foarte apropiată de cea teoretică, egală cu 96. O anumită discrepanță se explică prin faptul că, aparent, 10 implementări nu sunt suficiente pentru un calcul precis N cr e. Dacă decideți că doriți un rezultat în care ar trebui să aveți mai multă încredere, atunci modificați valoarea nivelului de încredere. De exemplu, teoria ne spune că dacă există 167 de experimente, atunci doar 1-2 linii din ansamblu nu vor fi incluse în tubul de precizie propus. Dar rețineți că numărul de experimente crește foarte repede odată cu creșterea preciziei și a fiabilității.

A doua opțiune folosită în practică este de a efectua unu implementare și crește primit Pentru a ei N cr uh V 2 ori. Aceasta este considerată o bună garanție a acurateții răspunsului (vezi Figura 1.6).


Orez. 1.6. Ilustrație a determinării experimentale a N cr e folosind regula „înmulțire cu doi”.

Daca te uiti atent la ansamblu Aleatoriu implementari, atunci putem constata că convergența frecvenței la valoarea probabilității teoretice are loc de-a lungul unei curbe corespunzătoare dependenței pătratice inverse de numărul de experimente (vezi Fig. 1.7).


Orez. 1.7

Acest lucru funcționează de fapt în acest fel în teorie. Dacă modificați precizia specificată eși examinați numărul de experimente necesare pentru a furniza fiecare dintre ele, obțineți tabel. 1.4

Tabelul 1.4.

Dependența teoretică a numărului de experimente necesare pentru a asigura o acuratețe dată la Q F = 0.95


Să construim conform tabelului. 1.4 grafic de dependență N crt ( e) (vezi Fig. 1.8).

Orez. 1.8 Dependența numărului de experimente necesare pentru a obține o precizie dată e la un Q F fix = 0,95

Deci, graficele luate în considerare confirmă evaluarea de mai sus:

Rețineți că pot exista mai multe estimări de precizie.

Exemplul 2. Găsirea ariei unei figuri folosind metoda Monte Carlo. Folosind metoda Monte Carlo, determinați aria unui pentagon cu coordonatele unghiulare (0, 0), (0,10), (5, 20), (10,10), (7, 0).

Să desenăm pentagonul dat în coordonate bidimensionale, înscriindu-l într-un dreptunghi, a cărui zonă, după cum ați putea ghici, este (10 - 0) · (20 - 0) = 200 (vezi Fig. 1.9).

Orez. 1.9

Utilizarea unui tabel de numere aleatorii pentru a genera perechi de numere R, G, distribuit uniform în intervalul de la 0 la 1. Număr R X (0 ? X? 10), prin urmare, X= 10 · R. Număr G va simula coordonatele Y (0 ? Y? 20), prin urmare, Y= 20 · G. Să generăm 10 numere RȘi Gși afișați 10 puncte ( X; Y) în fig. 1.9 și în tabel. 1.5

Tabelul 1.5.

Rezolvarea problemei folosind metoda Monte Carlo


Ipoteza statistică este că numărul de puncte incluse în conturul figurii este proporțional cu aria figurii: 6: 10 = S: 200. Adică conform formulei metodei Monte Carlo constatăm că zona S pentagonul este egal cu: 200 · 6/10 = 120.

Să vedem cum s-a schimbat valoarea S de la experiență la experiență (vezi Tabelul 1.6).

Tabelul 1.6.

Evaluarea acurateței răspunsurilor

Deoarece valoarea celei de-a doua cifre din răspuns este încă în schimbare, posibila inexactitate este încă mai mare de 10%. Precizia calculului poate fi mărită odată cu creșterea numărului de teste (vezi Fig. 1.10).

Orez. 1.10 Ilustrarea procesului de convergență a unui răspuns determinat experimental la un rezultat teoretic

Curs 2. Generatoare de numere aleatorii

Metoda Monte Carlo (vezi Lectura 1. Modelare statistică) se bazează pe generarea de numere aleatorii, care ar trebui să fie distribuite uniform în intervalul (0;1).

Dacă generatorul produce numere care sunt mutate într-o anumită parte a intervalului (unele numere apar mai des decât altele), atunci rezultatul rezolvării unei probleme rezolvate prin metoda statistică se poate dovedi a fi incorect. Prin urmare, problema utilizării unui generator bun de numere cu adevărat aleatorii și cu adevărat distribuite uniform este foarte acută.

Valorea estimata m r si varianta D r o astfel de succesiune constând din n numere aleatorii r i, ar trebui să fie după cum urmează (dacă acestea sunt numere aleatoare cu adevărat distribuite uniform în intervalul de la 0 la 1):

Dacă utilizatorul are nevoie de un număr aleatoriu X a fost în interval ( A; b), diferit de (0;

  • 1), trebuie să utilizați formula X = A + (b - A) · r, Unde r- număr aleatoriu din interval (0;
  • 1). Legalitatea acestei transformări este demonstrată în Fig. 2.1

Orez. 2.1

1) în intervalul (a; b)

Acum X- un număr aleatoriu distribuit uniform în intervalul de la A inainte de b.

In spate standard generator de numere aleatorii(RNG) se adoptă un generator care generează ulterior numere aleatorii cu uniformă legea distribuției în intervalul (0;

  • 1). Pentru un apel, acest generator returnează un număr aleatoriu. Dacă este suficientă respectarea unui astfel de RNG perioadă lungă de timp, atunci se dovedește că, de exemplu, în fiecare dintre cele zece intervale (0; 0,1), (0,1; 0,2), (0,2; 0,3), ..., (0,9;
  • 1) va exista aproape același număr de numere aleatoare - adică vor fi distribuite uniform pe întreg intervalul (0;
  • 1). Dacă se arată pe un grafic k= 10 intervale și frecvențe N i le lovește, veți obține o curbă experimentală de densitate de distribuție a numerelor aleatoare (vezi Fig. 2.2).

Orez. 2.2

Rețineți că, în mod ideal, curba densității distribuției numerelor aleatoare ar arăta așa cum se arată în Fig. 2.3. Adică, în mod ideal, fiecare interval conține același număr de puncte: N i = N/k, Unde N - numărul total puncte, k- numărul de intervale, i = 1, …, k.


Orez. 2.3

Trebuie amintit că generarea unui număr arbitrar aleatoriu constă în două etape:

  • · generarea unui număr aleator normalizat (adică distribuit uniform de la 0 la 1);
  • · transformarea numerelor aleatoare normalizate r i la numere aleatorii X i, care sunt distribuite conform legii de distribuție (arbitrară) cerută de utilizator sau în intervalul cerut.

Generatoarele de numere aleatorii conform metodei de obținere a numerelor sunt împărțite în:

  • · fizică;
  • · tabelar;
  • · algoritmice.

Nu cu mult timp în urmă am citit o carte minunată a lui Douglas Hubbard. În rezumatul scurt al cărții, am promis că voi dedica o notă separată uneia dintre secțiuni - Evaluarea riscurilor: o introducere în simularea Monte Carlo. Da, totul nu a mers cumva. Și recent am început să studiez mai atent metodele de gestionare a riscurilor valutare. În materialele dedicate acestui subiect, simularea Monte Carlo este adesea menționată. Deci materialul promis este în fața ta.

Voi da un exemplu simplu de simulare Monte Carlo pentru cei care nu au lucrat niciodată cu ea înainte, dar au o anumită înțelegere a utilizării foilor de calcul Excel.

Să presupunem că doriți să închiriați o mașină nouă. Costul anual de închiriere a mașinii este de 400.000 USD, iar contractul trebuie semnat pe mai mulți ani. Prin urmare, chiar dacă nu ați ajuns la , tot nu veți putea returna imediat mașina. Sunteți pe cale să semnați un contract, gândindu-vă că echipamentele moderne vor economisi costurile cu forța de muncă și costul materiilor prime și consumabilelor și vă gândiți, de asemenea, că logistica și întreținerea tehnică a noului utilaj vor fi mai ieftine.

Descărcați nota în format, exemple în format

Estimatorii dvs. calibrați au oferit următoarele intervale de economii așteptate și producție anuală:

Economiile anuale vor fi: (MS + LS + RMS) x PL

Desigur, acest exemplu este prea simplu pentru a fi realist. Volumul producției se modifică în fiecare an, unele costuri vor scădea atunci când lucrătorii stăpânesc în sfârșit noua mașină etc. Dar în acest exemplu am sacrificat în mod deliberat realismul de dragul simplității.

Dacă luăm mediana (media) fiecărui interval de valori, obținem economiile anuale: (15 + 3 + 6) x 25.000 = 600.000 (dolari)

Se pare că nu numai că am ajuns la pragul echitabilului, dar am și făcut profit, dar nu uitați, există incertitudini. Cum să evaluăm riscul acestor investiții? Să definim mai întâi ce este riscul în acest context. Pentru a deduce riscul, trebuie să schițăm rezultatele viitoare cu incertitudinile lor inerente, unele dintre ele cu probabilitatea de a suferi un prejudiciu cuantificabil. O modalitate de a privi riscul este să ne imaginăm probabilitatea că nu vom ajunge la pragul de rentabilitate, adică economiile noastre vor fi mai mici decât costul anual de leasing al mașinii. Cu cât nu ne acoperim mai mult costurile de închiriere, cu atât vom pierde mai mult. Suma 600.000 de dolari. este mediana intervalului. Cum să determinăm intervalul real de valori și să calculăm din acesta probabilitatea ca să nu ajungem la pragul de rentabilitate?

Deoarece nu sunt disponibile date precise, nu se pot face calcule simple pentru a răspunde la întrebarea dacă putem realiza economiile necesare. Există metode care, în anumite condiții, permit găsirea intervalului de valori ale parametrului rezultat din intervalele de valori ale datelor inițiale, dar pentru majoritatea problemelor din viața reală, astfel de condiții, de regulă, nu nu exista. Odată ce începem să însumăm și să înmulțim diferite tipuri de distribuții, problema devine de obicei ceea ce matematicienii numesc insolubil sau de nerezolvat prin obișnuit. metode matematice problemă. Prin urmare, folosim în schimb metoda selectării directe a opțiunilor posibile, posibilă prin apariția computerelor. Din intervalele disponibile, selectăm la întâmplare un set (mii) de valori exacte ale parametrilor inițiali și calculăm setul de valori exacte ale indicatorului dorit.

Simularea Monte Carlo este o modalitate excelentă de a rezolva probleme ca aceasta. Trebuie doar să selectăm aleatoriu valori în intervalele specificate, să le înlocuim în formula pentru a calcula economiile anuale și a calcula totalul. Unele rezultate vor fi peste media noastră calculată de 600.000 USD, în timp ce altele vor fi sub. Unii vor fi chiar sub cei 400.000 de dolari necesari pentru a ajunge la rentabilitate.

Puteți rula cu ușurință o simulare Monte Carlo pe un computer personal folosind Excel, dar necesită puțin mai multe informații decât un interval de încredere de 90%. Este necesar să se cunoască forma curbei de distribuție. Pentru cantități diferite, curbele de o formă sunt mai potrivite decât altele. În cazul unui interval de încredere de 90%, se utilizează de obicei o curbă de distribuție normală (gaussiană). Aceasta este curba familiară în formă de clopot, în care cele mai multe valori posibile ale rezultatului sunt grupate în partea centrală a graficului și doar câteva, mai puțin probabile, sunt distribuite, înclinându-se spre marginile sale (Figura 1).

Iată cum arată o distribuție normală:

Fig.1. Distributie normala. Axa absciselor este numărul de sigma.

Particularitati:

  • valorile situate în partea centrală a graficului sunt mai probabile decât valorile de la marginile acestuia;
  • distribuția este simetrică; mediana este exact la jumătatea distanței dintre limitele superioare și inferioare ale intervalului de încredere (IC) de 90%;
  • „cozile” graficului sunt nesfârșite; valorile în afara intervalului de încredere de 90% sunt puțin probabile, dar totuși posibile.

Pentru a construi o distribuție normală în Excel, puteți utiliza funcția =NORMIDIST(X; Medie; Abatere_Standard; Integrală), unde
X – valoarea pentru care se construiește distribuția normală;
Media – media aritmetică a distribuției; în cazul nostru = 0;
Standard_deviation – abaterea standard a distribuției; în cazul nostru = 1;
Integrală – o valoare logică care determină forma funcției; dacă cumulative este TRUE, NORMDIST returnează funcția de distribuție cumulativă; dacă acest argument este FALS, este returnată funcția de densitate; în cazul nostru = FALSE.

Vorbind despre distribuția normală, este necesar să menționăm un astfel de concept înrudit ca abatere standard. Evident, nu toată lumea are o înțelegere intuitivă a ceea ce este aceasta, dar din moment ce abaterea standard poate fi înlocuită cu un număr calculat dintr-un interval de încredere de 90% (pe care mulți oameni îl înțeleg intuitiv), nu voi intra în detaliu aici. Figura 1 arată că există 3,29 abateri standard într-un interval de încredere de 90%, așa că va trebui doar să facem conversia.

În cazul nostru, ar trebui să creăm un generator de numere aleatorii într-o foaie de calcul pentru fiecare interval de valori. Să începem, de exemplu, cu MS - economii la materiale și servicii tehnice. Să profităm Formula Excel: =NORMBR(probabilitate,medie,abatere_standard), unde
Probabilitate – probabilitate corespunzătoare unei distribuții normale;
Media – media aritmetică a distribuției;
Standard_deviation – abaterea standard a distribuției.

În cazul nostru:
Media (mediană) = (Limita superioară a IC 90% + Limita inferioară a IC 90%)/2;
Abatere standard = (Limita superioară de 90% CI – Limita inferioară de 90% CI)/3,29.

Pentru parametrul MS, formula are forma: =NORMIN(RAND();15,(20-10)/3.29), unde
RAND – o funcție care generează numere aleatorii în intervalul de la 0 la 1;
15 – media aritmetică a intervalului MS;
(20-10)/3,29 = 3,04 – abatere standard; Permiteți-mi să vă reamintesc că semnificația abaterii standard este următoarea: 90% din toate valorile variabilei aleatoare (în cazul nostru MS) se încadrează în intervalul 3,29*Standard_deviation, situat simetric față de media relativă.

Distribuția economiilor la logistică pentru 100 de valori aleatorii distribuite normal:

Orez. 2. Probabilitatea distribuției MS pe intervale de valori; Pentru informații despre cum să construiți o astfel de distribuție folosind un tabel pivot, consultați

Deoarece am folosit „doar” 100 de valori aleatoare, distribuția nu a fost atât de simetrică. Cu toate acestea, aproximativ 90% dintre valori s-au încadrat în intervalul de economii MS de la 10 la 20 USD (91% pentru a fi exact).

Să construim un tabel bazat pe intervalele de încredere ale parametrilor MS, LS, RMS și PL (Fig. 3). Ultimele două coloane arată rezultatele calculelor bazate pe datele din celelalte coloane. Coloana Economii totale arată economiile anuale calculate pentru fiecare rând. De exemplu, dacă Scenariul 1 ar fi implementat, economiile totale ar fi (14,3 + 5,8 + 4,3) x 23.471 = 570.834 USD. nu prea ai nevoie de ea. L-am inclus doar in scop informativ. Să creăm 10.000 de linii de script în Excel.

Orez. 3. Calculul scenariilor folosind metoda Monte Carlo în Excel

Pentru a evalua rezultatele obținute, puteți folosi, de exemplu, un tabel pivot care vă permite să numărați numărul de scenarii din fiecare interval de 100 de mii. Apoi construiți un grafic care afișează rezultatele calculului (Figura 4). Acest grafic arată ce proporție din 10.000 de scenarii vor avea economii anuale într-un interval de valori dat. De exemplu, aproximativ 3% dintre scenarii vor oferi economii anuale de peste 1 milion USD.

Orez. 4. Distribuția economiilor totale pe intervale de valori. Axa x arată intervalele de 100 de mii de economii, iar axa y arată ponderea scenariilor care se încadrează în intervalul specificat.

Din toate economiile anuale obținute, aproximativ 15% vor fi mai mici de 400.000 USD. Aceasta înseamnă că există o șansă de 15% de deteriorare. Acest număr reprezintă o evaluare semnificativă a riscurilor. Dar riscul nu se rezumă întotdeauna la posibilitatea unor randamente negative ale investițiilor. Când evaluăm dimensiunea unui lucru, îi determinăm înălțimea, masa, circumferința etc. De asemenea, există câțiva indicatori de risc utili. O analiză ulterioară arată: există o probabilitate de 4% ca planta, în loc să economisească, să piardă 100.000 USD anual. Cu toate acestea, lipsa totală a veniturilor este practic imposibilă. Aceasta este ceea ce se înțelege prin analiza de risc - trebuie să putem calcula probabilitățile de deteriorare de diferite scale. Dacă măsori cu adevărat riscul, asta ar trebui să faci.

În unele situații, puteți lua un traseu mai scurt. Dacă toate distribuțiile de valori cu care lucrăm sunt normale și trebuie doar să adunăm intervalele acestor valori (de exemplu, intervale de costuri și beneficii) sau să le scădem unele de altele, atunci ne putem descurca fără Monte. simulare Carlo. Când vine vorba de adunarea celor trei economii din exemplul nostru, trebuie făcut un calcul simplu. Pentru a obține intervalul pe care îl căutați, utilizați cei șase pași enumerați mai jos:

1) scade valoarea medie a fiecărui interval de valori din limita superioară a acestuia; pentru a economisi la logistică 20 – 15 = 5 (dolari), pentru a economisi pe costurile forței de muncă – 5 dolari. și pentru a economisi materii prime și materiale - 3 dolari;

2) pătratează rezultatele primului pas 5 2 = 25 (dolari), etc.;

3) însumați rezultatele pasului al doilea 25 + 25 + 9 = 59 (dolari);

4) luați rădăcina pătrată a sumei rezultate: se dovedește a fi 7,7 dolari;

5) se adună toate valorile medii: 15 + 3 + 6 = 24 (dolari);

6) adăugați rezultatul pasului 4 la suma valorilor medii și obțineți limita superioară a intervalului: 24 + 7,7 = 31,7 dolari; scădeți rezultatul pasului 4 din suma valorilor medii și obțineți limita inferioară a intervalului 24 - 7,7 = 16,3 dolari.

Astfel, intervalul de încredere de 90% pentru suma celor trei intervale de încredere de 90% pentru fiecare tip de economii este de 16,3 USD–31,7 USD.

Am folosit următoarea proprietate: intervalul intervalului total este egal cu rădăcina pătrată a sumei pătratelor intervalelor de intervale individuale.

Uneori se face ceva similar prin însumarea tuturor valorilor „optimiste” ale limitei superioare și a valorilor „pesimiste” ale limitei inferioare a intervalului. În acest caz, pe baza celor trei intervale de încredere de 90%, am obține un interval total de 11 USD–37 USD. Acest interval este ceva mai mare decât 16,3–31,7 dolari. Când se fac astfel de calcule pentru a justifica un design cu zeci de variabile, extinderea intervalului devine prea mare pentru a fi ignorată. A lua cele mai „optimiste” valori pentru limita superioară și cele „pesimiste” pentru cea inferioară este ca și cum ne gândim: dacă aruncăm mai multe zaruri, în toate cazurile vom obține doar „1” sau doar „6”. În realitate, va apărea o combinație de valori scăzute și ridicate. Extinderea excesivă a intervalului este o greșeală comună, care, desigur, duce adesea la decizii neinformate. În același timp, metoda simplă pe care am descris-o funcționează excelent atunci când avem mai multe intervale de încredere de 90% care trebuie însumate.

Cu toate acestea, scopul nostru nu este doar să însumăm intervalele, ci și să le înmulțim cu volumul de producție, ale cărui valori sunt date și sub forma unui interval. Metoda simplă de însumare este potrivită doar pentru scăderea sau adăugarea intervalelor de valori.

Simularea Monte Carlo este, de asemenea, necesară atunci când nu toate distribuțiile sunt normale. Deși alte tipuri de distribuții nu fac obiectul acestei cărți, vom menționa două dintre ele - uniforme și binare (Fig. 5, 6).

Orez. 5. Distribuție uniformă (nu ideală, dar construită folosind funcția RAND din Excel)

Particularitati:

  • probabilitatea tuturor valorilor este aceeași;
  • distribuția este simetrică, fără distorsiuni; mediana este exact la jumătatea distanței dintre limitele superioare și inferioare ale intervalului;
  • valorile în afara intervalului nu sunt posibile.

Pentru a construi această distribuție în Excel s-a folosit formula: RAND()*(UB – LB) + LB, unde UB este limita superioară; LB – limita inferioară; urmată de împărțirea tuturor valorilor în intervale folosind un tabel pivot.

Orez. 6. Distribuție binară (distribuție Bernoulli)

Particularitati:

  • sunt posibile doar două valori;
  • există o singură probabilitate a unei valori (în acest caz 60%); probabilitatea celeilalte valori este egală cu unu minus probabilitatea primei valori

Pentru a construi o distribuție aleatorie de acest tip în Excel, a fost folosită funcția: =IF(RAND()<Р;1;0), где Р - вероятность выпадения «1»; вероятность выпадения «0» равна 1–Р; с последующим разбиением всех значений на два значения с помощью сводной таблицы.

Metoda a fost folosită pentru prima dată de matematicianul Stanislav Ulam (vezi).

Douglas Hubbard enumeră în continuare câteva programe concepute pentru simularea Monte Carlo. Printre acestea se numără și Mingea de cristal de la Decisioneering, Inc., Denver, Colorado. Cartea în limba engleză a fost publicată în 2007. Acum acest program aparține Oracle. O versiune demo a programului este disponibilă pentru descărcare de pe site-ul companiei. Vom vorbi despre capacitățile sale.

Vezi capitolul 5 al cărții menționate de Douglas Hubbard

Aici, Douglas Hubbard definește intervalul ca diferența dintre limita superioară a intervalului de încredere de 90% și valoarea medie a acestui interval (sau între valoarea medie și limita inferioară, deoarece distribuția este simetrică). De obicei, intervalul este înțeles ca diferența dintre limitele superioare și inferioare.