Имитационное моделирование с использованием методов Монте-Карло В настоящее время он используется практически во всех сферах оперативной деятельности, требующих многократного принятия решений на основе анализа данных, поступающих из внешнего мира.
В этом случае важную роль начинают играть качество, производительность и доступность генераторов случайных чисел, которые используются для придания абстрактному методу особенностей реальной задачи, решаемой специалистом.
Как я недавно узнал, этот вопрос начинает играть решающую роль при переходе к параллельному программированию.
Вы тоже сталкивались с этой проблемой, и хотите знать, как можно быстро получить массивы случайных чисел с нужным распределением в Windows? /* В статье использовано значительное количество цитат на английском языке, предполагаю достаточный уровень языковой подготовки читателя */ Одно из моих приложений регулярно запускает имитационные модели для длинной последовательности факторов из базы данных.
Не вдаваясь в подробности, недавно возникла задача изучения вероятностных характеристик повторяющегося бинарного (двух исходного) процесса, имеющего сильный элемент случайности, на основе истории его реальных реализаций с целью уменьшения неопределенности при прогнозировании будущих результатов.
.
Реализации процесса считаются независимыми друг от друга и одинаково (нормально) распределенными, процесс считается стационарным.
Целью является максимально точное предсказание результатов N последовательных реализаций процесса, что подразумевает оценку средней и наименьшей ожидаемой частоты положительных реализаций процесса за период длиной N. Здесь можно использовать стандартный статистический подход с расчетом уровня достоверности, при котором реализации случайной величины не будут отклоняться от ее ожидания более чем на k значений ее стандартного отклонения.
Этот подход основан на идее сходимости частот к вероятностям ( Теорема Бернулли ).
Конечно, очень заманчиво вычислить средние значения на основе нескольких сотен тысяч реализаций процесса, записанных в базе данных, но поскольку у меня есть ограничение на длину подвыборки N (порядка нескольких десятков), то случайный характер процесса на ограниченной выборке непременно преподнесет мне сюрпризы в виде отклонений от средней.
Именно поэтому мне необходимо с заданной степенью уверенности знать, какие максимально возможные отклонения от средней ожидаемой частоты следует «учитывать» для данный Н.
Требуемые оценки я решил получить методом статистическая начальная загрузка (бутстреппинг) — повторная генерация выборок N реализаций методом Монте-Карло из основного набора примеров.
Суть метода заключается в формировании из существующей выборки достаточно большого количества псевдовыборок, состоящих из случайных комбинаций исходного набора элементов (в результате в одной псевдовыборке некоторые исходные элементы могут появляться несколько раз, а другие могут вообще отсутствовать), и для каждой полученной псевдовыборки определяют значения анализируемых статистических характеристик с целью изучения их разброса.
По предварительным оценкам, мне потребуется сгенерировать ~10 миллионов псевдовыборок для каждой из тысяч подгрупп параметров.
С учетом объема данных и других факторов речь идет о десятках часов серверного вычислительного времени.
Прототип приложения-симулятора был написан и протестирован на Visual Basic 6. Однако после компиляции многопоточной боевой версии неожиданно выяснилось, что при запуске симуляции в несколько потоков нагрузка на ядро ЦП составила всего 5% вместо ожидаемого.
100%.
Базовый анализ горячих точек в профилировщике Intel Vtune Amplifier не выявил ничего необычного.
Я был уверен, что симулятор должен полностью загрузить работой все потоки, поскольку ничего, кроме арифметических операций и доступа к памяти по случайным индексам, код не содержал: Теги: #имитационное моделирование #Метод Монте-Карло #статистическая оценка #генерация повторной выборки #Intel MLK VSL #генерация случайных чисел #Windows #Параллельное программирование #visual Basic 6 #vba #Excel #Office #Высокая производительность #Параллельное программирование
-
Уже 2.0
19 Oct, 24 -
Фотомнение.ру
19 Oct, 24