Top Banner
Monte Carlo Methods
21

Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Jan 02, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Monte Carlo Methods

Page 2: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

“Monte Carlo”?

• Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in:– Games– Simulations– Many scientific applications

• Named after the famous country that enshrines games of chance for the wealthy

• Can be used to adequately approximate the solution of difficult problems

Page 3: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Random Numbers

• The key to Monte Carlo methods is a good random number generator– The ones that come in standard libraries aren’t all that

good

• There are statistical tests to evaluate random number generators– For uniformity

• Are they sufficiently “spread out” (coverage)

– For randomness• Do they avoid gratuitous runs of repetitions or other

patterns?

– It is difficult to achieve both simultaneously

Page 4: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Properties of RNGs

• Deterministic– They aren’t really “random”

• After all, we use formulas!• We call the numbers produced, “pseudo-random”

• Reproducible– You should be able to get the same sequence of

pseudo-random numbers on request• This is important for comparing experiments

• Periodic– You get the next number in the sequence by applying

a formula to the last one– Eventually, the sequence repeats

Page 5: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Uniform Generators

• Generate a nicely spread-out sequence of numbers on some interval (usually (0, m))– e.g., std::rand( ) evenly covers (0, RAND_MAX)– As opposed to Normal, Poisson or other distributions

• If you use more than RAND_MAX calls to rand, you’ll start repeating the sequence– RAND_MAX = 32767 is unacceptable

• It may even start repeating sooner

– We want a large period for Monte Carlo methods

Page 6: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Linear Congruential Generators

• Of the form:

• The constants a, c, and m must be chosen carefully– The period is <= m, but we want to maximize it – There is an entire body of literature based on

number theory for this

• Some generators combine LCGs with other kinds

mcaxx nn mod)(1

Page 7: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

A Quick and Dirty RNG

• Very fast

• And pretty doggone good!

• Period is not as large as others, though(?)

• See qadrng.h

Page 8: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

UNI

• A uniform RNG from the 80s

• In file uni.h, uni.cpp

• Uses a lagged Fibonacci approach– Uses different samples from a LCG with a=1,

c = -7654321, m = 224

– xn+1 = xn-17 – xn-5

• Must call ustart( ) to seed

Page 9: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

The Mersenne Twister

• Has a very large period– 219937-1 (!!!)– Written by Makoto Matsumoto

• http://www.math.sci.hiroshima-u.ac.jp/~m-mat/eindex.html

• Uses Mersenne primes and other tricks as a modification to a linear congruential method– We won’t look any more into the theory– We’ll just use it!

Page 10: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Using the Mersenne Twister

• In file mersenne.c• Pass a long to init_genrand( ) to seed

– Can use std::time( ) to get a random seed

• Call genrand_int32( ) for numbers in the interval [0, 232)

• Call genrand_real3( ) for numbers in the interval (0, 1)

• You can use math to transform to other intervals• Don’t forget to include a prototype for the

functions you call

Page 11: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Interval mapping formulas

• Most RNGs give reals in the range (0,1) or integers in the range (0, m)

• You can map to and from these ranges with simple algebraic transformations– Well, they’re simple to me

Page 12: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Open Interval Mapping formulas

Page 13: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Interval Mapping Formulas

Page 14: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Open vs. Closed intervals

• Closed intervals are often used for integers– Not for reals, since the endpoints might not be

representable

• The formulas on the previous slide don’t work!– i.e., when converting from open (real) to closed

(integer) intervals

• Example:– (0, 1) => integers on [10, 20]– Since 1 is never reached, 20 won’t be with the

formulas on the previous slide– Instead: Use int(11*x) + 10

Page 15: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Mapping from Open (real) to Closed (integer) Intervals

• Start with w in (0,1)– Transform it if

necessary:

• To map w to [k,n]:– Multiply w by n-k+1,– Truncate,– Add k:

)1,0()/()(),( xyxzyxz

kknw )1(

Page 16: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Monte Carlo MethodsExample: Computing Pi

• Monte Carlo methods use random numbers to solve numeric problems

• For example, generate uniform random x-y points in the unit square– Generate x and y independently in the range [0,1]– The number of points should be >= 10,000

• Determine if x2 + y2 < 1 or not– The ratio of points inside the circle = π/4

• See pi.cpp– pi = 3.141592;

Page 17: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Results of pi.cpp

RNG \ n 10000 100000 1000000 10000000 100000000 QADRNG 3.13 3.15068 3.1434 3.14167 3.14156 UNI 3.1608 3.13748 3.14014 3.14153 3.14156 Mersenne 3.1804 3.14668 3.14315 3.14238 3.14153 std::rand 3.1288 3.14208 3.14275 3.14171 3.14165

Page 18: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Monte Carlo Integration

• Uses RNGs to approximate areas under curves, surfaces

• Two approaches– Average function value– Throwing darts (what we did with pi)

Page 19: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Monte Carlo IntegrationAverage Function Value Approach

• Approximate the average function value on the interval (a,b)– Just take the average of a large random sample of

f(xi) (watch for overflow!)

• Multiply this by (b-a)• The result ≈ area:

• See average.cpp

n

xfabI

n

i i 1)(

)(

Page 20: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

Monte Carlo IntegrationDart-Throwing Approach

• Obtain many random points, (xi,yi) in region of interest– The area of the region is known, i.e., a rectangle with

width (b-a) containing the curve

• Count the number of yi that are less than f(xi)• The percentage of “hits” (count / n) is the

proportion of your region that represents an approximation of the sought-for area below the curve f(x)

• See darts.cpp

Page 21: Monte Carlo Methods. “Monte Carlo”? Any problem-solving technique that uses random numbers is called a Monte Carlo method, used in: –Games –Simulations.

When to use Monte Carlo

• Not for simple integrals like these

• They’re handy for multiple integrals– Or for calculating volumes defined by

constraints

• See the homework!