Знайомство з методом Монте-Карло

У цій статті ми не заглиблюватимемося в математику, а постараємося дати загальне уявлення про метод Монте-Карло.

Суть методу полягає в наступному: для цільової випадкової величини генерується набір випадкових значень, а потім на основі розраховуються необхідні значення.

Метод Монте-Карло має багато різних додатків. Він застосовується у таких областях: у промисловості для моделювання мінливості виробничих процесів; у фізиці, хімії та біології для моделювання різноманітних явищ; у сфері ігор для моделювання штучного інтелекту, наприклад, у китайській грі; в галузі фінансів для оцінки похідних фінансових інструментів та опціонів. По суті метод Монте-Карло використовується скрізь.

Сучасний варіант методу сформувався рамках Манхеттенського проекту, де він застосовувався для моделювання відстаней, які можуть пройти нейтрони у різних матеріалах. Ідея моделювання на основі генерації набору випадкових значень існувала вже протягом деякого часу, але особливого розвитку набула при створенні атомної бомби, поширившись потім у багатьох інших галузях знань.

Великою перевагою методу Монте-Карло є те, що він дозволяє врахувати у моделі елемент випадковості та складність реального світу. Крім того, метод є робастним по відношенню до зміни різних параметрів, таких як розподіл випадкової величини. У основі лежить закон великих чисел.

Одним із типових прикладів використання методу Монте-Карло є завдання, в яких необхідно знайти математичне очікування деякої випадкової величини. Для цього необхідно згенерувати набір випадкових значень цієї величини і визначити середнє. Випадкова величина зазвичай характеризується певним розподіломймовірностей.

Обчислення числа Пі

За допомогою методу Монте-Карло можна визначити число Пі. Код R для даного прикладу знаходиться тут.

Вписавши коло в квадрат (діаметр кола дорівнює стороні квадрата), можна висловити відношення площі кола до площі квадрата таким чином:

Якщо ми зможемо обчислити це відношення, то ми зможемо отримати значення числа Пі.

Заповнимо квадрат точками з випадковими координатами. Розрахуємо відношення кількості точок, що потрапили до кола, до загальної кількості точок. Помножимо результат на 4 щоб отримати значення числа Пі.

методу

Чим більша кількість точок, тим ближче отримане значення до справжнього значення числа Пі.

методом

Цей простий приклад демонструє метод Монте-Карло у дії.

Моделювання транспортних потоків

Розглянемо найкорисніший приклад. Ми можемо змоделювати транспортний потік за допомогоюмоделі Нагеля-Шрекенберга (Nagel-Schreckenberg model). У рамках цієї моделі траса складається з осередків, задана максимально допустима швидкість та певна кількість автотранспортних засобів (АТС). На кожному кроці стан усіх АТС оновлюється відповідно до таких правил:

  1. Швидкість даного АТС v збільшується на одиницю, якщо вона менша за максимально допустиму швидкість.
  2. Знайдемо відстань d між даними АТС і АТС, що йде попереду. Якщо швидкість цього АТС більша чи дорівнює відстані d, вона зменшується до величини d-1.
  3. За допомогою методу Монте-Карло додамо елемент випадковості. З ймовірністю p швидкість цього АТС зменшується на одиницю.
  4. Це АТС переміщається вперед на v одиниць.

Ця модель досить проста, але дуже ефективна. У даній моделі не враховуються ДТП чи поганеводіння. Її призначенням є моделювання спонтанних змін у характері транспортних потоків. Існують і складніші моделі, але багато хто з них засновані на моделі Нагеля-Шрекенберга.

Код для моделювання тут, а для візуалізації мовою Processing – тут.

знайомство

Проблеми у рамках методу Монте-Карло

Основною проблемою є створення незалежних випадкових величин. Це не таке просте завдання, як може здатися на перший погляд. У прикладах коду ми просто викликали вбудовані функції R або Python для генерації випадкових чисел, але цей процес може бути набагато складнішим. За потреби ви можете звернутися до наукових джерел з цієї теми.

За цим посиланням ви можете знайти інформацію про те, як R здійснюється генерація випадкових чисел з рівномірним розподілом (uniform distribution).

Інша проблема у тому, як забезпечити збіжність помилки. Зверніть увагу на те, що в прикладі обчислення числа Пі помилка перестала зменшуватися. У більшості програм методу Монте-Карло для вирішення цієї проблеми використовуються дуже великі вибірки.