ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА БАКАЛАВРА

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА БАКАЛАВРА"

Транскрипт

1 Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского» Факультет вычислительной математики и кибернетики Кафедра: Математического обеспечения ЭВМ Направление: «Прикладная математика и информатика» ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА БАКАЛАВРА Математическое моделирование динамики клеточных культур на GPU Заведующий кафедрой: доктор физ.-мат. наук Стронгин Р.Г г. Выполнил: студент группы 8402 Вильдеманов А.В. Подпись Научный руководитель: д.ф.-м.н., доцент каф. МО ЭВМ Иванченко М.В. Подпись Нижний Новгород 2012

2 Содержание Содержание... 2 Введение Описание модели Детерминистическая модель Метод Рунге-Кутты Стохастическая модель Стохастическая химическая кинетика Модификация стохастического алгоритма Моделирование диффузии Технология CUDA Параллельные алгоритмы Описание реализации программной системы Структура программной схемы Описание основных методов программ Результаты тестирования программной системы Заключение Список литературы Приложение 1. Исходный код основных структурных модулей программной системы

3 Введение Одна из центральный задач современной регенеративной медицины является искусственное формирование тканей на основе клеточных культур. Например, актуальным направлением исследований является разработка комплекса «Искусственная печень» на базе культур гепатоцитов. Печень жизненно важный орган, выполняющий большое количество физиологических функций, в том числе, метаболизма, синтеза, и дезинтоксикации. Заболевания печени ослабляют её функциональные свойства, что может привести к острым состояниям, требующим интенсивной терапии, трансплантации, либо к летальному исходу. Одним из ключевых этапов лечения пациентов с тяжелой патологией печени является замещение утраченной или недостаточной печеночной функции до восстановления ее необходимого объема в результате регенерации, либо до пересадки донорского органа. С этим связаны активные работы в области биомедицинских технологий, ведущиеся в мире. Сложность создания эффективной системы «искусственная печень» состоит в многофункциональности человеческой печени. Достижение целевых характеристик невозможно без создания эффективных и гибких инструментов проектирования. В первую очередь требуется разработка методов и программного обеспечения для построения математической модели эволюции клеточного материала. С помощью математической модели возможно улучшать клинические и биохимические параметры систем основанных на клеточном взаимодействии, например, в биореакторах. В упрощенных популяционных моделях могут возникать сложные хаотические пространственно-неоднородные решения. Кроме того, усреднение характеристик, таких как состава клеточных популяций, не позволяет учесть редкие, но принципиально значимые в случае небольших концентраций, события, что приводит к неверным результатам. Поэтому моделирование комплексной задачи роста клеточных систем изначально требует реалистичной модели. 3

4 1. Описание модели Любой живой организм состоит из множества различных видов клеток. В рассматриваемой модели нас будут интересовать три вида клеток, разделяемых по степени зрелости: стволовые, неразвитые и развитые клетки. Изменение числа клеток происходит посредством деления или гибели. В результате деления клетка может разделиться пополам или перейти из одного типа в другой. Так же для клеточных культур характерна зависимость от концентрации и от положения в пространстве. Динамику развития такой модели можно описать детерминистическими или стохастическими распределенными уравнениями. В модель рассматриваются следующие типы клеток: Стволовые (S) Не зрелые (T) Развитые, 8 типов (D i, i = 1 8) Поскольку вследствие укорачивания теломеразы у развитых клеток, их число делений ограничено (порядка 7), удобно разбивать их на 8 групп, идентичных по физиологическим свойствам, каждая из которых (D i, i = 1 8) отвечает клеткам прошедшим i-1 деление. В каждый момент времени состояние каждой из популяции можно охарактеризовать количеством клеток ( ), где ( ). Заметим, что хотя и должен принимать целые значения, но при построении детерминистической модели рассматриваются средние значения по популяциям и поэтому величина может быть любым действительным числом, непрерывно меняющемся во времени. Различные типы клеток различаются по времени жизни, скорости и сценариям деления. В модели возможны следующие реакции: (симметричное деление одна клетка делется на две себе подобных; воспроизводство стволовых клеток) (асимметричное деление клетка делится на одну своего вида и на одну другого; рождение неразвитых клеток) (симметричное деление; переход стволовых клеток в неразвитые) (симметричное деление; переход неразвитых клеток в развитые первого типа) (симметричное деление) (гибель клетки) (гибель клетки) (гибель клетки) 4

5 2. Детерминистическая модель В качестве детерминистической модели была составлена система дифференциальных уравнений, которая учитывает все описанные выше процессы. ( ) ( ) ( ) ( ) ( ) ( ) (1) где отвечает за деление клетки типа S на две клетки типа S; ( ) отвечает за деление клетки типа S на две клетки типа T в зависимости от количества клеток типа T(D) в популяции; отвечает за деление клетки типа S на две клетки типа S и T; отвечает за деление клетки типа T на две клетки типа ; отвечает за деление клетки типа на две клетки типа ; коэффициент смертности; Данная система дифференциальных уравнений относится к стандартному классу линейных уравнений первого порядка. Решение данной системы аналитически не представляется возможным, поэтому необходимо использовать численные методы. В качестве численного метода был взят метод Рунге-Кутты [11] четвертого порядка, явная схема с постоянным шагом. 5

6 2.1 Метод Рунге-Кутты Методы Рунге-Кутты являются семейством численных алгоритмов для решения обыкновенных дифференциальных уравнений и их систем. Методы Рунге-Кутты является модификацией метода Эйлера, они представляют собой схемы второго и более порядка точности. На практике наиболее часто пользуются схемой четвертого порядка. Свойства: Метод является одноступенчатым: чтобы найти ( ) нужно знать только ( ). Не требует вычисление производных от ( ), нужны только вычисление самой функции. Более точный, чем метод Эйлера, потому что учитывает поле ( ) не только в точке ( ), но и её окрестности. Рассмотрим задачу Коши: ( ) ( ) (2.1) где и могут быть как скалярами (для уравнения) так и векторами (для систем уравнений). Метод Рунге-Кутты четвертого порядка (явный) имеет следующий вид ( ) ( ) ( ) (2.2) ( ) ( ) Четвертый порядок метода характеризуется тем, что при уменьшении шага в 2 раза ошибка между точным и вычисленным значением уменьшится в 16 раз. 6

7 3. Стохастическая модель Стохастическое описание является наиболее точным способом отобразить эволюцию системы, оно детально отслеживает популяционный состав после каждой реакции. Стохастическая модель предназначена для моделирования пространственно-распределенной динамики с использованием многомерных марковских процессов рождения-гибели (алгоритм Gillespie [2]). Отличие стохастической модели от детерминистического популяционно-видового описания заключается в высоком разрешении клеточных процессов: деления рассматриваются на уровне клеток, в отличие от усредненных характеристик клеточных популяций. 3.1 Стохастическая химическая кинетика Изложим численный алгоритм моделирования стохастической динамики следуя алгоритму Gillespie [2], который изначально применялся для моделирования химических реакций. У нас имеется: популяций (химических веществ). реакций. Например:. размер популяции. вектор изменения в реакции. Например: ( ). В каждой популяции может произойти реакций. ( ) кинетический коэффициент реакции. ( ) вероятность, того что произойдет реакция в следующий бесконечно малый промежуток времени [ ), для определенного ( ). Например: Реакция заключается в том, что ( ). Константа отвечает за интенсивность реакции, а дает вероятность того, что реакция произойдет в бесконечно малый отрезок времени. Для клеток типа вероятность реакции в момент времени будет равна. Кинетический коэффициент реакции ( ). ( ) кинетический коэффициент того, что произойдет любая реакция. 7

8 ( ) ( ) (3.1) Вероятность того, что любая реакция произошла в первый раз в момент времени [ ). ( ) вероятность того что до ничего не происходило. ( ) ( ) (3.2) ( ) ( ) (3.3) ( ) (3.4) ( ) (3.5) Вероятность (3.5) показывает то, что в течение времени[ ] не произошла не одна реакция. Вероятность первой реакции в промежуток времени [ ): ( ) ( ) (3.6) Плотность вероятности возникновения первой реакции: ( ) ( ) ( ) (3.7) ( ) (3.8) Рис1. Схематический график плотности вероятности Теперь найдем время первой реакции: ( ) [ ] (3.9) ( ) ( ) (3.10) ( ) ( ) (3.11) ( ) (3.12) ( ) ( ) ( ) (3.13) (3.14) 8

9 Время первой реакции равно: (4) Чтобы определить какая реакция произошла в момент времени генерировать вторую случайную величину [ ] и из условия: необходимо (5) Мы находим, где номер реакции. Схема стохастического алгоритма: 0. Инициализируем время и начальное состояние системы. 1. Для состояния и времени вычисляем все кинетические коэффициенты ( ) и их сумму ( ). 2. Генерируем и используя (4) и (5). 3. Изменяем время и состояния для следующей реакции и. 4. Записываем ( ) и переходим на Шаг 1 или заканчиваем при условии, что дошло до границы интегрирования. Рис 2. Пример моделируемой динамики клеточных культур (стволовые клетки (S), незрелые (T) и зрелые (D) гепатоциты), Алгоритм Рунге- Кутта и стохастический алгоритм Модификация стохастического алгоритма Для больших популяций стохастический алгоритм сходится очень медленно, так как шаг интегрирования при увеличении ( ). Чтобы увеличить скорость интегрирования в работе Gillespie [2] был предложен, так называемый метод первой семьи. 9

10 Разобьем реакций на семей, в каждой из которой находится реакций. Для каждой семьи пересчитаем кинетические коэффициенты и найдем их сумму ( ) ( ). Генерируем время, через которое произойдет следующая реакция и пару ( ), которая идентифицирует произошедшую реакцию. Для этого потребуется случайных чисел, распределенных по нормальному закону и принадлежащих отрезку [ ]: ( ) ( ) ( ) (6) где мы берем (7) В итоге находим ( ) ( ) (8) Зная реакцию и ее время, выполняем Шаг 3 и Шаг 4 стохастического алгоритма. Данная модификация существенно увеличивает скорость интегрирования (рис 3), так как на каждом шаге мы не пересчитываем все коэффициенты ( ), а только те, которые затронула реакция. При больших размерностях необходимо брать большее количество семей, чтобы получить наилучшее ускорение (рис 3). 10

11 L = 2 L = 4 L = Размерность Рис 3. График отношения «семейного» к стохастическому алгоритмов. (Windows 7 Enterprise 64-bit, CPU Intel Core i5 2.53GHz RAM 4.00 GB) Из графика (рис. 3) видно, что оптимальная размерность семьи равняется 8, так как при размерности пространства равным 16, разбиение на предложенное количество семей дало одинаковое ускорение. Алгоритм работает одинаковое количество времени при разбиение на 4 и 8 семей при размерности 32, а при разбиение на 2 семьи в два раза меньше. По индукции получаем, что оптимальное разбиение будет равняться отношению размерности пространства к оптимальной размерности семьи, то есть к 8. 11

12 4. Моделирование диффузии Чтобы учесть влияние соседних популяций друг на друга, введем диффузионное взаимодействие между ними. Это взаимодействие возникает в следствие диффузии сложных молекулярных и питательных веществ (цитоминов, хемокинов) в межклеточном пространстве и самих клеток. Она является выравнивающим фактором, модифицируя кинетические коэффициенты деления/смерти. Диффузионное взаимодействие в нашей модели полагается локальным. Для одномерной модели схема взаимодействия и математическая модель выглядят следующим образом: Для двумерной модели: ( ) ( ) (9) ( ) ( ) ( ) (10) Здесь коэффициенты диффузии по соответственно. Заметим, что в эксперименте может реализоваться и противоположная ситуация, когда присутствует сильное перемешивание среды. Тогда связь приобретает глобальный характер и в качестве математической модели следует использовать: 12

13 ( ) (11) 5. Технология CUDA CUDA это архитектура параллельных вычислений от компании NVIDIA, позволяющая увеличить вычислительную производительность благодаря использованию графических процессоров (GPU). Разработчики программного обеспечения, ученые и исследователи используют CUDA в таких областях, как обработка видео, астрофизика, вычислительная биология и химия, моделирование, томография, трассировка лучей и многое другое. Все эти задачи хорошо ложатся на GPU, потому что в этих задачах большой поток данных многократно обрабатывается одними и теме же командами, то есть представляют собой SIMD-модель (Single Instruction Multiple Data). Компания NVidia использует термин SIMT (Single Instruction, Multiple Thread). CUDA состоит из концепции, что GPU выступает в роли массивно-параллельного сопроцессора к CPU. Программа на CUDA выполняется как на CPU (последовательный код) так и на GPU (для массивно-параллельные вычисления), как набор одновременно выполняющихся нитей(потоков). Нити разбиваются на группы по 32 нити, называемые warp`ами. Только нити в пределах одного warp`а выполняются физически одновременно. Нити разных warp`ов могут находиться на разных стадиях выполнения программы, при этом управление warp`ами осуществляет сам GPU. Все запущенные на выполнение нити организованы в следующую иерархию. Верхний уровень иерархии сетка (grid) соответствует всем нитям, выполняющим данное ядро. Верхний уровень представляет из себя одномерный или двумерный массив блоков (block). Каждый блок это одномерный, двумерный или трехмерный массив нитей. При этом все блоки одной сетки имеют одинаковый размер и размерность. Графические процессоры являются параллельными архитектурами, которые обладают своей памятью (DRAM), содержат ряд потоковых мультипроцессоров (SM, streaming multiprocessor), каждый из которых способен выполнять до 1024 нитей одновременно. Каждый мультипроцессор работает независимо от остальных. Когда CUDA запускает ядро на исполнение, то блоки сетки выполняются на имеющихся мультипроцессорах. При этом 13

14 каждый блок целиком выполняется на одном из потоковых мультипроцессоров. Мультипроцессор способен одновременно выполнить до восьми блоков. Чисто физически память GPU можно разделить на DRAM и на память, размещенную в потоковых мультипроцессорах. Однако классификация памяти не ограничивается её чисто физическим расположением. Каждый потоковый мультипроцессор содержит 8192 или битовых регистра. Имеющиеся регистры разделяются между нитями блока на этапе компиляции. Регистры обладают максимальной скоростью доступа, но нить не имеет доступа к регистрам других нитей. Если регистров не хватает то для размещения локальных данных нити используют локальную память, размещенная в DRAM. Доступ к локальной памяти характеризуется высокой латентностью от 400 до 600 тактов. Разделяемая (shared) память память расположена непосредственно в потоковом мультипроцессоре. Она выделяется на уровне блоков каждый блок получает в свое распоряжение одно и тоже количество разделяемой памяти. На каждом мультипроцессоре содержится 16Кбайт разделяемой памяти. Глобальная память это обычная DRAM-память, которая доступна всем нитям. 6. Параллельные алгоритмы Как численный метод интегрирования Рунге-Кутты, так и стохастический алгоритм выполняют одни и те же операции над разными данными, что удовлетворяет критерию SIMD (single instruction, multiple data). Поэтому параллельная реализация была разработана под SIMD-процессоры, а именно под графические ускорители NVIDIA. При примитивном распараллеливании алгоритма Рунге-Кутты под GPU с использованием технологии CUDA было получено ускорение в 11 раз по сравнению с последовательной версией на центральном процессоре (Рис 4). 14

15 Рис 4. Тестирование на OS Windows 7 Enterprise 64-bit, Intel Xeon E GHz (8 CPUs), nvidia Tesla C1060 Грамотное использование особенностей архитектуры GPU, а именно разделяемой памяти, доступ к которой в 100 раз быстрее, чем к общей, позволило получить ускорение в 45 раз. Отмеченным недостатком использования этого типа памяти является то, что к ней могут обращаться только нити одного блока (алгоритм делится на блоки, которые выполняются независимо друг от друга на потоковых мультипроцессорах на GPU, блоки же делятся на нити, а нити уже параллельно выполняют операции). Также отметим, что технология CUDA предоставляет математический набор функций пониженной точности, но обеспечивают большее быстродействие. Ускорение, полученное с использованием этих функций, составило 50 раз по отношению к одному CPU (рис 4). При реализации диффузии мы имеем зависимость по данным, и чтобы потоки брали нужную информацию на границах блоков, а не измененную (как известно блоки могут исполнятся с разной скоростью и разделяемая память не доступна другим блокам) реализовано чтение из глобальной памяти, а запись в разделяемую, тем самым мы обходим проблему чтения не верных данных и получаем оптимальный по памяти алгоритм (рис 5). 15

16 Рис 5. Схема работы с памятью в задаче моделирования диффузии. Так как система ОДУ со временем приходит к своему состоянию равновесию и слабо реагирует на погрешности счета, то можно воспользоваться математическими CUDA функциями одинарной точности, но меньшим временем выполнения. 7. Описание реализации программной системы 7.1 Структура программной схемы Для реализации поставленной задачи была разработана программная система на алгоритмическом языке C++ с использованием алгоритмического языка параллельного программирования на GPU CUDA C. Разработка приложений производилась в визуальной среде разработки Microsoft Visual Studio Было написано около 2000 строк кода на С++ и 1200 строк кода на CUDA C. Для обработки данных и получения изображений (видео) использовался скриптовый язык Python. 7.2 Описание основных методов программ Программа представляет собой набор методов, позволяющих получать требуемый результат. Кроме того, все основные алгоритмы могут выполняться как на центральном процессоре, так и на графическом (рис 6). Методы, использующие вызовы вычислений на 16

17 GPU, главным образом, запускают эти вычисления, обрабатывают и сохраняют полученные результаты в файл. Чтение данных CPU + GPU Алгоритм Рунге-Кутты Стохастический алгоритм Обработка данных CPU Рис 6. Схема работы и взаимодействия программной системы. Приложение считывает из файла информацию о моделирование: размер системы, размер шага интегрирования, время моделирования, коэффициенты диффузии системы, количество «семей» (для семейного алгоритма), имя файла с коэффициентами системы. Методы реализованные в программе: 1) void parsercommandline( int argc, char * argv[] ) считывает параметры с командной строки, задает параметры системы из файла, который был подан на вход. 2) double Runge(float* x0) метод Рунге-Кутта на CPU, принимает на вход начальное состояние системы и результаты записывает в файл или на экран (опционо) 3) double stochasticalgorithm(float* x0 ) алгоритм Gillespie на CPU. 4) void familystochasticalgorithm(float *x0) «семейный» алгоритм Gillespie на CPU. 5) double GPU_Runge(float* x0) метод Рунге-Кутта на GPU, в данном методе используется CUDA ядро: global void calculate(float* x_,float* k1,float* k2,float* k3,float* k4, int size, int n, int blocksize, float d, float step) для одномерного случая и global void calculate_2d(float* x_,float* k1,float* k2,float* k3,float* k4, int size, int n, int blocksize, float d, float step) для двумерной области. 6) double GPU_stochasticAlgorithm( float *x0) стохастический алгоритм на GPU, в данном методе используется CUDA ядра: global void diffusion(float *x, float *y, int size, float d, float sum) алгоритм рассчета диффузии, global void 17

18 propensityfunction(float *a, float *y_, int n, int m) метод пересчета кинетических коэффициентов. Ядра имеются для одномерного и двумерного случая. 7) void GPU_familyAlgorithm(float *x0) семейный стохастический алгоритм на GPU, в данном методе используется CUDA ядра аналогичные CUDA ядрам в стахостическом алгоритме. 8) float cureduce ( int n, float *in_data, float *out_data ) метод редуцирования массива кинетических коэффициентов для стохастических алгоритмов на GPU. Использует CUDA ядро: template <unsigned int blocksize> global void reduce4(float *g_idata, float *g_odata, unsigned int n) 18

19 7.3 Результаты тестирования программной системы Проверка корректности математической модели проходила путем сравнения с физиологическими данными (Hussain et al. 2005, Hoeme et al. 2010). Характерным сценарием развития клеточных культур на плоской подложке, наблюдаемый в биологическом эксперименте, является интенсивное деление стволовых клеток, дифференцировка в незрелые гепатоциты, а затем в зрелые. При этом достигается тысячекратное увеличение числа клеток. Характерный временной масштаб этой стадии составляет несколько часов. Затем происходит насыщение роста зрелых гепатоцитов, как за счет конкуренции взрослых клеток за питательные ресурсы, так и за счет исчерпания пула стволовых клеток. На характерном времени порядка суток численность взрослых гепатоцитов начинает сокращаться. Начальные условия, использованные в численном эксперименте, соответствовали физиологически реалистичным: в начале эксперимента в «пробирке» находится около 10 6 клеток, из них 60% стволовых клеток и 40% неразвитых. Полученные данные: происходит деление и дифференцировка с образованием порядка 4*10 6 развитых клеток, после определенного времени (порядка суток, единиц времени математической модели) клетки начинают погибать (рис 7). Рис 7. Пример моделируемой динамики клеточных культур (стволовые клетки (S), незрелые (T) и зрелые (D) гепатоциты). Полученные численные результаты качественно согласуются с экспериментальными наблюдениями, что подтверждает корректность используемой модели. 19

20 Заключение Разработаны методы математического моделирования клеточных культур, состоящих из клеток различной степени зрелости (стволовые, незрелые, зрелые), реализующие эти методы с помощью средств последовательного и параллельного программирования. Математическая модель детализирует процессы деления и дифференцировки клеток различных типов зрелости, содержит как реализацию в приближении непрерывного времени, так и реализацию на уровне единичных клеточных событий. Результатом проделанной работы является программный комплекс позволяющий получить картину динамики развития клеточных культур как на уровне отдельных молекул, так и на общем уровне. Комплекс позволяет быстро моделировать динамику эксперимента, который может в реальности проходить несколько суток. Это позволит прогнозировать результаты и существенно улучшить планирование эксперимента. ПО было реализовано на алгоритмических языках C++ и CUDA. Суммарное число строк кода около 2000, из них 1000 строк на CUDA и около 500 строк вспомогательных функций. Работа выполнена при поддержке компании «Т-платформы» и ФЦП Кадры, контракт

21 Список литературы 1. Franziska Michor, Martin A. Nowak, Steven A. Frank and Yoh Iwasa Stochastic elimination of cancer cells [Журнал] // The Royal Society 2003 г стр Gillespie Daniel T. Stochastic Simulation of Chemical Kinetics [Журнал] // Annm. Rev. Phys. Chem г стр Green J.E.F., Waters S.L., Shakesheff K.M., Byrne H.M. A Mathematical Model of Liver Cell Aggregation In Vitro [Журнал] // Bulletin of Mathematical Biology 2009 г стр Hoehme Stefan, Drasdo Dirk A cell-based simulation software for multi-cellular systems [Журнал] // bioinformatics 2010 г стр Kirouac Daniel C, Madlambayan Gerard J, Mei Yu1, Sykes Edward A, Caryn Ito3 and Peter W Zandstra Cell cell interaction networks regulate blood stemand progenitor cell fate [Журнал] // Molecular Systems Biology 2009г стр O`Dea R. D., Waters S. L., Byrne H. M. A multiphase model for tissue construct growth in a perfusion bioreactor [Журнал] // Mathematical Medicine and Biology 2010 г.. 27 стр Боресков А.В., Харламов А.А. Основы работы с технологией CUDA [Книга]. М.: ДМК Пресс, с.: ил. ISBN Вильдеманов А.В., Иванченко М.В. Моделирование пролиферации в ансамблях живых клеток [Публикация] // Молодежная Радиофизическая конференция 2011г.. - стр Вильдеманов А.В., Иванченко М.В. Моделирование размножения клеточных культур [Публикация] // Форум HPC г.. - стр Кузенков О.А., Рябова Е.А., Круподерова К.Р. Математические модели процессов отбора. Учебное пособие [Книга]. Нижний Новгород: Нижегородский госуниверситет, с. 11. Метод Рунге Кутты [В Интернете].- ru.wikipedia.org/wiki/метод_рунге_-_кутты. 21

22 Приложение 1. Исходный код основных структурных модулей программной системы Метод Рунге-Кутта: extern int N ; // размер поверхности 1 << 17 extern double step ; extern float finish ; extern bool print ; // печать extern bool save ; extern float d ; // коэффициент диффузии extern float dd ; // коэффициент диффузии в глубь extern int size ; // размер системы extern float bst, btd, bdd, btt1, btt2, bss, dead1, dead2, dead3 ; extern int rang ; extern int m ; // количество реакций void F(float* x,float* k) float *y = new float[size]; #ifdef ENABLE_2D diffusion_2d(x,y,d,dd,size,rang,n); #else diffusion(x,y,d,size,rang); #endif for ( int i = 0; i < size; i += rang ) k[i+0] = x[i+0] * (-btt1/(y[i+1]+1.)-btt2/(y[i+2]+1.)-dead1*y[i])+bss*y[i]/(y[i]+1.); k[i+1] = x[i+1] * (-btd-dead2*y[i+1])+y[i+0]*bst+2.*y[i]*(btt1/(y[i+1]+1.)+btt2/(y[i+2]+1.)); k[i+2] = x[i+2] * ( -dead3*y[i+2]-bdd)+2.*btd*y[i+1]; for ( int j = 1; j < 7; j++ ) k[i+2+j] = x[i+2+j] * ( -dead3*y[i+2+j] - bdd) + 2.*bdd * y[i+1+j]; k[i+2+7] = x[i+2+7] * ( -dead3*y[i+2+7])+2.*bdd*y[i+1+7]; delete[] y; double Runge(float* x0) printf("runge-kutta Algorithm\n\n"); printf("size is %d\n",n); printf("final time is %f\n\n",finish); float t=0; // current time int stepsave = 10; int temp = 0; float eps = ; int j = 0; int iter = 0; // для шага слива в фаил // position of population float* x = new float [size]; // array of variables for ( int i = 0; i < size; i++) x[i] = x0[i]; 22

23 float* k1 = new float [size]; float* k2 = new float [size]; float* k3 = new float [size]; float* k4 = new float [size]; float* xx = new float [size]; clock_t stime; clock_t ftime; stime = clock(); while ( t <= finish ) t = t + step; iter++; if ( save ) Save(t, x, size); if( print ) MyPrint( t, x, size ); F ( x, k1 ); // расчитать k1 for ( int i = 0; i < size; i++ ) xx[i] = x[i] + k1[i] * (step / 2.0); F( xx, k2 ); // расчитать k2 for ( int i = 0; i < size; i++ ) xx[i] = x[i] + k2[i] * (step / 2.0); F( xx, k3 ); // расчитать k3 for ( int i = 0; i < size; i++ ) xx[i] = x[i] + k3[i] * step; F( xx, k4 ); // расчитать k4 for ( int i = 0; i < size; i++ ) x[i] = x[i] + step / 6.0 * (k1[i] * k2[i] * k3[i] + k4[i]); // расчитать решение на новом шаге ftime = clock(); double t_time = (double)(ftime - stime)/clocks_per_sec; printf("\n\ntime = %f\n",t_time ); double time_iter = (t_time*1000)/(double)iter; printf("iter = %d\ntime iter = %f msec\n\n\n", iter, time_iter); delete[] k1; delete[] k2; delete[] k3; delete[] k4; delete[] xx; delete[] x; return t_time; Стохастический Метод: double stochasticalgorithm(float* x0 ) 23

24 printf("stochastic Algorithm\n\n"); printf("size is %d\n",n); printf("final time is %f\n\n",finish); int iter = 0; // счетчик итераций clock_t stime; clock_t ftime; double t = 0; float h; // шаг по времени float a0 = 0; // обший кинетический коэффициент int num = -1; // локальный помер реакции int coord = -1; // координата в пространстве int number; // номер в массиве реакций, где произошла реакция #ifdef ENABLE_2D int countreaction = m*n*n; #else int countreaction = m*n; #endif float * v = new float[rang]; // вектор изменений float * a = new float[countreaction]; // propensity function float * x = new float[size]; // вектор переменных float * y = new float[size]; for ( int i = 0; i < size; i++ ) x[i] = x0[i]; stime = clock(); int ff = 5; double stepsave = 0.0; while ( t <= finish ) if ( print ) if ( save ) MyPrint(t,x,size); if ( (stepsave - t)*(stepsave - t) < EPS ) stepsave += step; Save(t, x, size); #ifdef ENABLE_2D #else #endif diffusion_2d(x,y,d,dd,size,rang,n); diffusion(x,y,d,size,rang); changepropensityfunction(a,y,size);//p a0 = 0; for(int i = 0; i < countreaction; i++) a0 += a[i]; number = numberreaction( a, countreaction, a0 ); coord = number/m; num = number - m*coord; changevector(v, num); if ( num > -1 ) int k = rang*coord; for(int i = k; i < k+rang; i++) 24

25 x[i] += v[i-k]; if(x[i] < ) x[i] = 0; // h = timefirstreaction( a0 ); t = t + h; iter++; // end while if ( iter % == 0 ) printf("iter = %f\n",t ); ftime = clock(); double t_time = (double)(ftime - stime)/clocks_per_sec; printf("\n\ntime = %f\n",t_time ); double time_iter = (t_time*1000)/(double)iter; printf("iter = %d\ntime iter = %f msec\n\n\n", iter, time_iter); delete[] a; delete[] v; delete[] x; delete[] y; return t_time; «Семейный» алгоритм: void familystochasticalgorithm(float *x0) printf("stochastic Family Algorithm\n\n"); printf("size is %d\n",n); printf("family is %d\n\n",l); double stime; double ftime; int iter = 0; double t = 0; double mintime; int l = -1; // номер семьи int num = -1; // локальный помер реакции int coord = -1; // координата в пространстве int number = -1; // номер в массиве реакций, где произошла реакция double r; double sum; #ifdef ENABLE_2D int numberreaction = m*n*n; float * a0_l = new float[l*l]; // family propensity function double * time = new double[l*l]; #else int numberreaction = m*n; float * a0_l = new float[l]; // family propensity function double * time = new double[l]; #endif int sizefamily = N*m/L; float * v = new float [rang]; // вектор изменений float * a = new float[numberreaction]; // propensity function float * x = new float[size]; // вектор переменных float * y = new float[size]; for ( int i = 0; i < size; i++ ) 25

Распределение данных

Распределение данных НЕСКОЛЬКО ПОДХОДОВ К ОПТИМИЗАЦИИ АЛГОРИТМА ВЕЙВЛЕТ- ПРЕОБРАЗОВАНИЯ РЕАЛИЗОВАННОГО НА ГРАФИЧЕСКОМ ПРОЦЕССОРЕ А.Г. Пани, М.Н. Точѐная Тольяттинский Государственный Университет, Тольятти, Россия e-mail: ag.panin@gmail.com,

Подробнее

Применение генетических алгоритмов к решению задач дискретной оптимизации

Применение генетических алгоритмов к решению задач дискретной оптимизации Федеральное агентство по образованию Нижегородский государственный университет им. Н.И. Лобачевского Национальный проект «Образование» Инновационная образовательная программа ННГУ. Образовательно-научный

Подробнее

/ / ^.. / ^...^ :. г.-!-... -. Т, А. Павловская

/ / ^.. / ^...^ :. г.-!-... -. Т, А. Павловская / / ^.. / ^...^ :. г.-!-... -. Т, А. Павловская C/C++ Программирование на языке высокого уровня Допущено Министерством образования Российской Федерации в качестве учебника для студентов высших учебных

Подробнее

по информатике ПЕРВЫЙ СЕМЕСТР КОЛОСОВ М.В. КАФЕДРА ТЭС ПИ СФУ 660074, г. Красноярск, ул. Ак. Киренского, 26

по информатике ПЕРВЫЙ СЕМЕСТР КОЛОСОВ М.В. КАФЕДРА ТЭС ПИ СФУ 660074, г. Красноярск, ул. Ак. Киренского, 26 0 Лабораторные по информатике работы ПЕРВЫЙ СЕМЕСТР КОЛОСОВ М.В. КАФЕДРА ТЭС ПИ СФУ 66007, г. Красноярск, ул. Ак. Киренского, 6 СОДЕРЖАНИЕ Лабораторные работы по Основам компьютера и ОС... Лабораторная

Подробнее

РЕАЛИЗАЦИЯ УНИВЕРСАЛЬНОЙ СИСТЕМЫ ИЗВЛЕЧЕНИЯ ЗНА- НИЙ «DISCOVERY» И ЕЕ ПРИМЕНЕНИЕ В ЗАДАЧАХ ФИНАНСО- ВОГО ПРОГНОЗИРОВАНИЯ А. В. ДЕМИН 1, Е. Е.

РЕАЛИЗАЦИЯ УНИВЕРСАЛЬНОЙ СИСТЕМЫ ИЗВЛЕЧЕНИЯ ЗНА- НИЙ «DISCOVERY» И ЕЕ ПРИМЕНЕНИЕ В ЗАДАЧАХ ФИНАНСО- ВОГО ПРОГНОЗИРОВАНИЯ А. В. ДЕМИН 1, Е. Е. РЕАЛИЗАЦИЯ УНИВЕРСАЛЬНОЙ СИСТЕМЫ ИЗВЛЕЧЕНИЯ ЗНА- НИЙ «DISCOVERY» И ЕЕ ПРИМЕНЕНИЕ В ЗАДАЧАХ ФИНАНСО- ВОГО ПРОГНОЗИРОВАНИЯ А. В. ДЕМИН 1, Е. Е. ВИТЯЕВ 2 1 Институт систем информатики имени А. П. Ершова СО

Подробнее

Триангуляция Делоне и её применение

Триангуляция Делоне и её применение Томский государственный университет Факультет информатики А.В. Скворцов Триангуляция Делоне и её применение Издательство Томского университета 00 УДК 68.3 ББК.9 C 4 C 4 Скворцов А.В. Триангуляция Делоне

Подробнее

ИССЛЕДОВАНИЕ ОПЕРАЦИЙ В ЭКОНОМИКЕ

ИССЛЕДОВАНИЕ ОПЕРАЦИЙ В ЭКОНОМИКЕ МИНИСТЕРСТВО ОБРАЗОВАНИЯРОССИЙСКОЙ ФЕДЕРАЦИИ Московский государственный университет экономики, статистики и информатики Московский международный институт эконометрики, информатики, финансов и права И.Н.

Подробнее

Линейные разностные уравнения и их приложения

Линейные разностные уравнения и их приложения Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Владимирский государственный университет имени

Подробнее

Информатика 9. Билеты & Ответы

Информатика 9. Билеты & Ответы Информатика 9. Билеты & Ответы Билет 1 1. Понятие информации. Виды информации. Роль информации в живой природе и в жизни людей. Язык как способ представления информации: естественные и формальные языки.

Подробнее

ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ ДЛЯ «ЧАЙНИКОВ» Часть II. Управление при случайных возмущениях. Оптимальные линейные системы. К.Ю.

ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ ДЛЯ «ЧАЙНИКОВ» Часть II. Управление при случайных возмущениях. Оптимальные линейные системы. К.Ю. ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ ДЛЯ «ЧАЙНИКОВ» Часть II Управление при случайных возмущениях Оптимальные линейные системы КЮ Поляков Санкт-Петербург 9 КЮ Поляков, 9 «В ВУЗе нужно излагать материал на

Подробнее

НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ.Н.И.ЛОБАЧЕВСКОГО НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ УЧЕБНО-НАУЧНЫЙ И ИННОВАЦИОННЫЙ КОМПЛЕКС "НОВЫЕ МНОГОФУНКЦИОНАЛЬНЫЕ МАТЕРИАЛЫ И НАНОТЕХ- НОЛОГИИ"

Подробнее

Разработка более сложной формы (прием товаров)

Разработка более сложной формы (прием товаров) Глава 5 Разработка более сложной формы (прием товаров) В этой главе мы рассмотрим технологию создания более сложных форм на примере формы, предназначенной для оформления приема товаров. В качестве источника

Подробнее

ПЛАНИРОВАНИЕ И ОРГАНИЗАЦИЯ ЭКСПЕРИМЕНТА Часть 1

ПЛАНИРОВАНИЕ И ОРГАНИЗАЦИЯ ЭКСПЕРИМЕНТА Часть 1 МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ТИХООКЕАНСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ Е.А. Любченко, О.А. Чуднова ПЛАНИРОВАНИЕ И ОРГАНИЗАЦИЯ

Подробнее

Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) Теоретическая часть

Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) Теоретическая часть Лабораторная работа 3. Программирование на языке Visual Basic for Applications (VBA) В этой лабораторной работе необходимо выполнить задания своего варианта (номер варианта выбираете по последней цифре

Подробнее

ИНЖЕНЕРНАЯ ДЕЯТЕЛЬНОСТЬ С КОНСТРУКТИВНОЙ ТОЧКИ ЗРЕНИЯ ENGINEERING ACTIVITY FROM THE CONSTRUCTIVE VIEWPOINT

ИНЖЕНЕРНАЯ ДЕЯТЕЛЬНОСТЬ С КОНСТРУКТИВНОЙ ТОЧКИ ЗРЕНИЯ ENGINEERING ACTIVITY FROM THE CONSTRUCTIVE VIEWPOINT 13 УДК 51.74 ИНЖЕНЕРНАЯ ДЕЯТЕЛЬНОСТЬ С КОНСТРУКТИВНОЙ ТОЧКИ ЗРЕНИЯ Владимир Алексеевич Кутергин, доктор технических наук, профессор, Институт прикладной механики Уральского отделения Российской Академии

Подробнее

Нейросетевая модель слежения за несколькими объектами *

Нейросетевая модель слежения за несколькими объектами * Нейросетевая модель слежения за несколькими объектами * Казанович Я.Б. 1, Борисюк Р.М. 1,2 1 Институт математических проблем биологии РАН, Пущино, Московская область, yakov_k@mpb.psn.ru 2 Центр теоретической

Подробнее

Редакционный совет: В.И Бахмин, Я.М. Бергер, Е.Ю. Гениева, Г.Г. Дилигенский, В.Д. Шадриков

Редакционный совет: В.И Бахмин, Я.М. Бергер, Е.Ю. Гениева, Г.Г. Дилигенский, В.Д. Шадриков 1 Учебная литература по гуманитарным и социальным дисциплинам для высшей школы и средних специальных учебных заведений готовится и издается при содействии Института "Открытое общество" (Фонд Сороса) в

Подробнее

Модели и методы распределительного типа при планировании и оперативном управлении производственными системами

Модели и методы распределительного типа при планировании и оперативном управлении производственными системами НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Н.И. ЛОБАЧЕВСКОГО На правах рукописи Куликов Михаил Сергеевич Модели и методы распределительного типа при планировании и оперативном управлении производственными

Подробнее

Е.В. Касьянова АДАПТИВНАЯ СИСТЕМА ПОДДЕРЖКИ ДИСТАНЦИОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ

Е.В. Касьянова АДАПТИВНАЯ СИСТЕМА ПОДДЕРЖКИ ДИСТАНЦИОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ Е.В. Касьянова АДАПТИВНАЯ СИСТЕМА ПОДДЕРЖКИ ДИСТАНЦИОННОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ ВВЕДЕНИЕ В не столь далеком прошлом хороший почерк уже являлся гарантией спокойной и обеспеченной жизни до старости.

Подробнее

ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (следящие системы)

ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (следящие системы) Министерство образования Российской Федерации Ульяновский государственный технический университет К. К. Васильев ТЕОРИЯ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ (следящие системы) -е издание Рекомендовано Учебно-методическим

Подробнее

Фильтрация и тематическое моделирование коллекции научных документов

Фильтрация и тематическое моделирование коллекции научных документов Министерство образования и науки Российской Федерации Московский физико-технический институт (государственный университет) Факультет управления и прикладной математики Кафедра «Интеллектуальные системы»

Подробнее

Архитектура и работа с данными «1C:Предприятия 8.2»

Архитектура и работа с данными «1C:Предприятия 8.2» М. Г. Радченко Е. Ю.Хрусталева Архитектура и работа с данными «1C:Предприятия 8.2» Москва 2011 УДК 658.012.011.56:004.42 ББК 65.29 Р15 Р15 Радченко М. Г. Архитектура и работа с данными «1С:Предприятия

Подробнее

ГРУППОВОЙ СТРЕСС: ДИНАМИКА КОРРЕЛЯЦИЙ ПРИ АДАПТАЦИИ И ОРГАНИЗАЦИЯ СИСТЕМ ЭКОЛОГИЧЕСКИХ ФАКТОРОВ

ГРУППОВОЙ СТРЕСС: ДИНАМИКА КОРРЕЛЯЦИЙ ПРИ АДАПТАЦИИ И ОРГАНИЗАЦИЯ СИСТЕМ ЭКОЛОГИЧЕСКИХ ФАКТОРОВ РОССИЙCКАЯ АКАДЕМИЯ НАУК СИБИРСКОЕ ОТДЕЛЕНИЕ Вычислительный центр в г.красноярске УДК 577.3 А.Н. Горбань, Е.В.Смирнова, Е.П. Чеусова ГРУППОВОЙ СТРЕСС: ДИНАМИКА КОРРЕЛЯЦИЙ ПРИ АДАПТАЦИИ И ОРГАНИЗАЦИЯ СИСТЕМ

Подробнее

УПРАВЛЕНИЕ ПРОЕКТАМИ

УПРАВЛЕНИЕ ПРОЕКТАМИ ГОСУДАРСТВЕННЫЙ КОМИТЕТ РФ ПО РЫБОЛОВСТВУ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МУРМАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» Кафедра менеджмента,

Подробнее

E-mail: kostyuk_y_l@sibmail.com

E-mail: kostyuk_y_l@sibmail.com ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА 2013 Вычислительные методы в дискретной математике 2(20) УДК 519.7 ЭФФЕКТИВНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ КОММИВОЯЖЁРА МЕТОДОМ ВЕТВЕЙ И ГРАНИЦ Ю. Л. Костюк Национальный

Подробнее

КАК РЕШАТЬ ЗАДАЧИ ПО ТЕОРЕТИЧЕСКОЙ МЕХАНИКЕ

КАК РЕШАТЬ ЗАДАЧИ ПО ТЕОРЕТИЧЕСКОЙ МЕХАНИКЕ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского»

Подробнее

Глава 4. Задача коммивояжера

Глава 4. Задача коммивояжера Глава 4. Задача коммивояжера В задаче коммивояжера рассматривается городов и матрица попарных расстояний между ними. Требуется найти такой порядок посещения городов, чтобы суммарное пройденное расстояние

Подробнее

ДИПЛОМНАЯ РАБОТА СТУДЕНТА 517 ГРУППЫ. «Параллельная реализация метода поиска закономерностей в последовательностях событий»

ДИПЛОМНАЯ РАБОТА СТУДЕНТА 517 ГРУППЫ. «Параллельная реализация метода поиска закономерностей в последовательностях событий» Московский государственный университет имени М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Кафедра Математических Методов Прогнозирования ДИПЛОМНАЯ РАБОТА СТУДЕНТА 517 ГРУППЫ «Параллельная

Подробнее