Прямое моделирование методом Монте-Карло

Прямое моделирование методом Монте-Карло какого-либо физического процесса подразумевает моделирование поведения отдельных элементарных частей физической системы. По сути это прямое моделирование близко к решению задачи из первых принципов, однако обычно для ускорения расчётов допускается применение каких-либо физических приближений. Примером могут служить расчёты различных процессов методом молекулярной динамики: с одной стороны система описывается через поведение её элементарных составных частей, с другой стороны, используемый потенциал взаимодействия зачастую является эмпирическим.

Примеры прямого моделирования методом Монте-Карло:

Квантовый метод Монте-Карло

Квантовый метод Монте-Карло широко применяется для исследования сложных молекул и твёрдых тел. Это название объединяет несколько разных методов. Первый из них это вариационный метод Монте-Карло, который по сути является численным интегрированием многомерных интегралов, возникающих при решении уравнения Шрёдингера. Для решения задачи, в которой участвует 1000 электронов, необходимо взятие 3000-мерных интегралов, и при решении таких задач метод Монте-Карло имеет огромное преимущество в производительности по сравнению с другими численными методами интегрирования. Другая разновидность метода Монте-Карло — это диффузионный метод Монте-Карло.

 

Листинг программы

Program mkar;

uses crt;

var n,a,b:real;

j:integer;

procedure mk(j:integer; n,a,b:real);

var r,y,u,x,h,xx:real; dd:integer; {metod Monte-Karlo}

begin

r:=1; h:=b-a;

x:=(random-0.5)*h;

y:=sin((x*x)/3);

u:=y;

if j=1 then

begin

repeat

x:=x+(random-0.5)*h;

y:=sin((x*x)/3);

begin

if u <= y then

u:=y;

xx:=x;

end;

r:=r+1;

until r>n;

end;

if j=2 then

begin

repeat

x:=x+(random-0.5)*h;

y:=sin((x*x)/3);

begin

if u >= y then

u:=y;

xx:=x;

end;

r:=r+1;

until r>n;

end;

write('y=',u) ;

end;

begin {osnovnay programma}

clrscr;

write('max or min 1/2 =>');readln(j);

writeln('n,a,b ?'); readln(n,a,b); mk(j,n,a,b);

readkey;

writeln;

end.

 

Краткое описание хода работы программы:

На 1-ом этапе вводим какую нибудь функцию для дальнейшей с нею работы.

На 2-ом этапе мы определяем дальнейшую суть её работы, т.е. что она вобщем должна делать с заданной нашей функцией.

(В данной программе в нахождении максимума или минимума)

3-ий этап у нас заключается в вводе кол-ва испытаний и размера области поиска(h=b-a) .

Причём для достижения оптимума в методе М-К с достаточно большой степенью вероятности, необходимо произвести большое кол-во испытаний.

С увеличением размерности пространства решений, кол-во испытаний увеличивается.

Каждое испытание заключается в генерации случайного вектора опорного решения x и вычисление целевой ф-ции от x.

Преимущество: 1)простота и регулярность в алгоритме.

2)возможность нахождения глобального оптимума.

Недостаток: 1) большое кол-во испытаний

2) отсутствие четких критериев основного алгоритма

Для уменьшения вычислительных затрат в методе М-К используется последовательное уменьшение области поиска.

Таким образом, координата каждой случайной точки вычисляется следующим образом:

Xi:=xi-1+(t-0.5)*h

Где i – номер испытания

H – размер области для поиска

T – случайное число на интервале от 0 до 1, каждый раз генерируема датчиком случайных чисел.

Значение области с течением времени уменьшается.

МАКСИМУМ

МИНИМУМ