Редактирование: Оптимазация вычисления сил в задаче N тел с помощью алгоритмов древовидных структур

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
[[ Курсовые_работы_по_ВМДС:_2018-2019 | Курсовые работы 2018-2019 учебного года]] > '''Оптимизация вычисления сил в задаче N тел с помощью алгоритмов древовидных структур''' <HR>
+
Оптимазация вычисления сил в задаче N тел с помощью древовидных алгоритмов
 
 
'''''Курсовой проект по [[Механика дискретных сред|Механике дискретных сред]]'''''
 
 
 
'''Исполнитель:''' [[Лебедев Станислав]]
 
 
 
'''Группа:''' 43604/1
 
 
 
'''Семестр:''' осень 2018
 
 
 
 
==Постановка задачи==
 
==Постановка задачи==
 +
* Исследовать эволюцию плоского облака частиц, в гравитационном центральном поле;
 +
* Выделить параметры, влияющие на количество образовавшихся устойчивых скоплений частиц - кластеров;
 
* Оптимизировать методы моделирования системы.
 
* Оптимизировать методы моделирования системы.
  
 
=Решение=
 
=Решение=
 
==Математическая модель==
 
==Математическая модель==
Задача N тел имеет весьма широкую формулировку. Поставим задачу в рамках решения задачи планетообразования. Сформулируем задачу в терминах динамики частиц.
+
Сформулируем задачу в терминах динамики частиц.
 
Пусть имеется N частиц. В общем случае их распределение в расчетной области определяет функция плотности распределения p(x,y). Из соображений физической реалистичности эта функция должна быть симметричной. Вся совокупность частиц образует так называемый протопланетный диск. Обращаю отдельное внимание, что формально, это может оказаться и не диском с геометрической точки зрения. Скорость задается как сумма двух компонент: скорости вращения и хаотической компоненты скорости. Первая отвечает за движение каждой частицы вокруг центрального тела, вторая – привносит в систему хаотичность. Системы без второй компоненты являются недостаточно физически реалистичными. В центре протопланетного диска (в начале координат) находится неподвижный источник гравитационного поля. Взаимодействие частиц между собой задаются потенциалом.
 
Пусть имеется N частиц. В общем случае их распределение в расчетной области определяет функция плотности распределения p(x,y). Из соображений физической реалистичности эта функция должна быть симметричной. Вся совокупность частиц образует так называемый протопланетный диск. Обращаю отдельное внимание, что формально, это может оказаться и не диском с геометрической точки зрения. Скорость задается как сумма двух компонент: скорости вращения и хаотической компоненты скорости. Первая отвечает за движение каждой частицы вокруг центрального тела, вторая – привносит в систему хаотичность. Системы без второй компоненты являются недостаточно физически реалистичными. В центре протопланетного диска (в начале координат) находится неподвижный источник гравитационного поля. Взаимодействие частиц между собой задаются потенциалом.
 
==Имплементация==
 
==Имплементация==
Строка 21: Строка 14:
 
<math>\dot{x}(t+dt) = \dot{x}(t)-x(t)dt</math><br />
 
<math>\dot{x}(t+dt) = \dot{x}(t)-x(t)dt</math><br />
 
<math>x(t+dt) = x(t)+\dot{x}(t+dt)dt</math><br />
 
<math>x(t+dt) = x(t)+\dot{x}(t+dt)dt</math><br />
 +
* Начальное распределение частиц: равномерное внутри диска;
 +
* Скорости вращения – первая космическая скорость, направлена нормально к радиус-вектору;
 +
* Хаотические компоненты скорости выражаются в виде случайного угла поворота скоростей вращения.
 
* Потенциал взаимодействия: <math> f(r,\dot{r})= \gamma \frac{m^2}{a^2} \left[ \left( \frac{a}{r} \right)^{13} \left(1- \beta \frac{\dot{r}}{r} \right) - \left(\frac{a}{r}\right)^2 \right] </math>. Данный потенциал помог исследовать образование системы Луна-Земля  в результате гравитационного коллапса. Подробнее можно прочитать в статье: [http://tm.spbstu.ru/Origin_of_the_Moon._New_Concept]
 
* Потенциал взаимодействия: <math> f(r,\dot{r})= \gamma \frac{m^2}{a^2} \left[ \left( \frac{a}{r} \right)^{13} \left(1- \beta \frac{\dot{r}}{r} \right) - \left(\frac{a}{r}\right)^2 \right] </math>. Данный потенциал помог исследовать образование системы Луна-Земля  в результате гравитационного коллапса. Подробнее можно прочитать в статье: [http://tm.spbstu.ru/Origin_of_the_Moon._New_Concept]
 
==Оптимизация==
 
==Оптимизация==
Строка 26: Строка 22:
 
Первым шагом оптимизации был отказ от взаимодействий между всеми частицами. Простейший способ – разбить плоскость на одинаковые квадраты и считать взаимодействие с соседними квадратами. Проблема данного подхода в сложности работы с дальнодействующими потенциалами, так как слишком маленький размер сетки приводил бы к большой ошибке. А кластеры являются настолько плотными структурами, что при сильных неоднородностях в распределении частиц сложность алгоритма опять бы оказывалась асимптотически равна <math>O(n^2)</math>.<br/>
 
Первым шагом оптимизации был отказ от взаимодействий между всеми частицами. Простейший способ – разбить плоскость на одинаковые квадраты и считать взаимодействие с соседними квадратами. Проблема данного подхода в сложности работы с дальнодействующими потенциалами, так как слишком маленький размер сетки приводил бы к большой ошибке. А кластеры являются настолько плотными структурами, что при сильных неоднородностях в распределении частиц сложность алгоритма опять бы оказывалась асимптотически равна <math>O(n^2)</math>.<br/>
  
Более правильный способ построения сеток и вычисления на них предложили Josh Barnes и Piet Hut. Этот алгоритм получил название алгоритма Барнс-Хата [https://www.semanticscholar.org/paper/A-hierarchical-O(N-log-N)-force-calculation-Barnes-Hut/fce7fd98928ab9bf3e4e919e108c48fc1040f569]. Визуализацию можно посмотреть здесь [http://tm.spbstu.ru/Метод_Барнса-Хата]. Основная идея метода строится на том, что взаимодействие частицы с удаленной группой частиц можно заменить на взаимодействие этой частицы с центром масс частиц. Pic.1 Этот подход возможно реализовать благодаря использованию древовидных структур данных. Заявляется о снижении асимптотической сложности до <math>O(n \cdot \log(n))</math>. В статье говорится о том, что эта оценка верна при большом количестве частиц и близком к равномерному распределении. Образование планет подразумевает много плотных скоплений. Барнс-Хат, в отличии от предыдущего метода описывает дальнодействие с сильно меньшей ошибкой благодаря иерархическому подходу к построению сетки. <br/>
+
Более правильный способ построения сеток и вычисления на них предложили Josh Barnes и Piet Hut. Этот алгоритм получил название алгоритма Барнс-Хата [ссылка на статью]. Визуализацию можно посмотреть здесь [http://tm.spbstu.ru/Метод_Барнса-Хата]. Основная идея метода строится на том, что взаимодействие частицы с удаленной группой частиц можно заменить на взаимодействие этой частицы с центром масс частиц. Pic.1 Этот подход возможно реализовать благодаря использованию древовидных структур данных. Заявляется о снижении асимптотической сложности до <math>O(n \cdot \log(n))</math>. В статье говорится о том, что эта оценка верна при большом количестве частиц и близком к равномерному распределении. Образование планет подразумевает много плотных скоплений. Барнс-Хат, в отличии от предыдущего метода описывает дальнодействие с сильно меньшей ошибкой благодаря иерархическому подходу к построению сетки. <br/>
 
Проблема в неоптимальном расчете этого взаимодействия. Предположим, что кластеры состоят из m и l частиц и находятся далеко друг от друга. Самый точный алгоритм совершит <math>O(m \cdot l))</math>  операций, так как будет находить взаимодействие всех частиц со всеми. Второй описанный здесь алгоритм не позволит вычислить взаимодействие вовсе, из-за большого расстояния. Алгоритм Барнс-Хата на само вычисление силы потратит <math>O(m +  l))</math> операций, так как каждая частица в системе один раз будет использоваться в расчетах (взаимодействие ее с центром масс). Идеальный алгоритм в этом случае должен был бы потратить <math>O(1))</math>, так должно быть рассмотрено взаимодействие кластера с кластером, то есть нужно посчитать одно взаимодействие между центрами масс. Эта идея была реализована в следующей статье, там же приведено сравнение быстродействия. Pic.2 Картинки оттуда [http://mech.spbstu.ru/images/6/6c/GalimovSbornik-LeZakharovKrivtsov-ProblemyEvolutsii-2011-v05.pdf] <br/>
 
Проблема в неоптимальном расчете этого взаимодействия. Предположим, что кластеры состоят из m и l частиц и находятся далеко друг от друга. Самый точный алгоритм совершит <math>O(m \cdot l))</math>  операций, так как будет находить взаимодействие всех частиц со всеми. Второй описанный здесь алгоритм не позволит вычислить взаимодействие вовсе, из-за большого расстояния. Алгоритм Барнс-Хата на само вычисление силы потратит <math>O(m +  l))</math> операций, так как каждая частица в системе один раз будет использоваться в расчетах (взаимодействие ее с центром масс). Идеальный алгоритм в этом случае должен был бы потратить <math>O(1))</math>, так должно быть рассмотрено взаимодействие кластера с кластером, то есть нужно посчитать одно взаимодействие между центрами масс. Эта идея была реализована в следующей статье, там же приведено сравнение быстродействия. Pic.2 Картинки оттуда [http://mech.spbstu.ru/images/6/6c/GalimovSbornik-LeZakharovKrivtsov-ProblemyEvolutsii-2011-v05.pdf] <br/>
 
Таким образом, вместо того, чтобы решать задачу N-тел методом «вычислить взаимодействие между всевозможными парами частиц» предлагается решать ее следующим образом:
 
Таким образом, вместо того, чтобы решать задачу N-тел методом «вычислить взаимодействие между всевозможными парами частиц» предлагается решать ее следующим образом:
Строка 32: Строка 28:
 
#Используя древовидную структуру подсчитать приближенные значения сил взаимодействия. <br/>
 
#Используя древовидную структуру подсчитать приближенные значения сил взаимодействия. <br/>
 
Необходимо отметить, что в такой формулировке сложность заключается именно в первом пункте, так как алгоритм выполнения второго, независимо от построенного представления будет одинаковым.
 
Необходимо отметить, что в такой формулировке сложность заключается именно в первом пункте, так как алгоритм выполнения второго, независимо от построенного представления будет одинаковым.
 +
  
 
==Древовидные структуры==
 
==Древовидные структуры==
Строка 67: Строка 64:
 
###Если нет, то gravity = gravity + CalcGrav(P, N)
 
###Если нет, то gravity = gravity + CalcGrav(P, N)
 
#Вернуть gravity
 
#Вернуть gravity
 
=Ссылки=
 
#E.M. Galimov, A.M. Krivtsov. Origin of the Moon. New Concept. Geochemistry and Dynamics. - De Gruyter. 2012. - 168 p. [http://tm.spbstu.ru/Origin_of_the_Moon._New_Concept]
 
#A hierarchical O(N log N) force-calculation algorithm Josh Barnes, Piet HutPublished 1986 in Nature DOI:10.1038/324446a0 [https://www.semanticscholar.org/paper/A-hierarchical-O(N-log-N)-force-calculation-Barnes-Hut/fce7fd98928ab9bf3e4e919e108c48fc1040f569]
 
#Overcoming the Meter Barrier and The Formation of Systems with Tightly-packed Inner Planets (STIPs). Aaron C. Boley, Melissa A. Morris, Eric B. Ford [https://www.researchgate.net/publication/264276355_Overcoming_the_Meter_Barrier_and_The_Formation_of_Systems_with_Tightly-packed_Inner_Planets_STIPs]
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)