Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Схема головной подпрограммы




Общая схема головной подпрограммы сеточного алгоритма приведена на рис. 3. На шаге 1 выполняется подпрограмма , выполняющая инициализацию переменных. Затем в цикле с меткой 2 выполняется корректировка сеточной области в соответствии с описанием идеи алгоритма из раздела. Одна итерация соответствует одной корректировке. Головная подпрограмма сеточного алгоритма оформляется в виде независимого процесса, который выполняется до тех пор, пока переменная не примет значение (истина). Начальную установку переменной в значение (ложь) осуществляет головной процесс, соответствующий основной программе. Он же присваивает переменной значение , когда вычислительный процесс нужно остановить. В качестве текущего приближения решения задачи головная программа использует текущее значение нулевой вершины центральной ячейки , координаты которой вычисляются по формуле.

В теле цикла выполняются следующие действия. На шаге 3 организуется параллельных потоков управления (нитей), которые независимо друг от друга вычисляют псевдопроекции из целевой точки на пересечение i -той ячейки с многогранником M . Напомним, что равно количеству MPI-процессов, и в соответствии с формулой равно количеству ячеек в кубической сеточной области. Схема подпрограммы вычисления псевдопроекции детально описана в разделе.

Рис. 3. Головная подпрограмма сеточного алгоритма.

В цикле с меткой 5 для полученных на шаге 3 точек псевдопроекций вычисляется номер ячейки, на которой достигается максимум C целевой функции. Для корректной работы цикла 5 переменным и C на шаге 4 присваиваются начальные значения и соответственно. Значение соответствует минимальному машинному значению целого типа, – минимальному машинному значению вещественного типа. Подпрограмма, вычисляющая точку псевдопроекции точки на пересечение многогранника с ячейкой с номером , присваивает координате значение в том случае, когда точка псевдопроекции не принадлежит многограннику . Эта ситуация возникает в случае, когда пересечение многогранника с ячейкой с номером является пустым. Если же принадлежит многограннику, то в силу предположения о том, что все процессы находятся в положительной области координат, значение не может быть отрицательным. Указанное условие проверяется на шаге 6. Случаи из рассмотрения исключаются. Если при выполнении цикла 5 оказывается, что ни одна из ячеек сеточной области не имеет непустого пересечения с многогранником , то в переменной сохраняется значение . Этот факт проверяется на шаге 7. В этом случае шаг сетки , длина ребра сеточной области и координаты целевой точки увеличиваются в раз, где – положительная константа, являющаяся параметром алгоритма (шаг 13 на рис. 3).

Если на шаге 7 выясняется, что , значит найдена ячейка с номером , имеющая непустое пересечение с многогранником, на которой достигается максимум целевой функции. В этом случае на шаге 8 вычисляется вектор , представляющий нулевую вершину новой центральной ячейки сеточной области. Схема подпрограммы вычисления нулевой вершины ячейки с порядковым номером k 𝛼 приведена на рис. 4. Вычисления осуществляются с использованием формул, и.

Рис. 4 . Схема подпрограммы zero вычисления нулевой
вершины ячейки с порядковым номером k
𝛼.

На шаге 9 (рис. 3) анализируется, насколько новая центральная ячейка далеко отстоит от предыдущей. Если расстояние между новой и старой центральными ячейками превышает (где – длина ребра кубической сеточной области), то длина ребра кубической сеточной области , шаг сетки и координаты целевой точки на шаге 10 увеличиваются в 1.5 раза. Если расстояние между новой и старой центральными ячейками меньше , то длина ребра кубической сеточной области , шаг сетки и координаты целевой точки на шаге 11 уменьшаются в 2 раза. Величина , используемая в шагах 10 и 11, в общем случае является параметром алгоритма. Если же отклонение лежит в пределах от до , то корректировка значений , и не производится. Величины и также являются в общем случае параметрами алгоритма.

На шаге 12 сеточная область сдвигается по вектору , и в качестве текущей нулевой вершины центральной ячейки сеточной области берется точка .

2.2. Схема подпрограммы инициализации переменных init

Подпрограмма инициализации переменных выполняет ввод исходных данных и инициализацию переменных. Схема подпрограммы приведена на рис. 5. На шаге 1 вводятся значения переменных: n – размерность пространства решений; m – число неравенств в системе ограничений; R – начальное значение длины ребра сеточной области, обеспечивающее покрытие многогранника M; p – количество итераций при построении псевдопроекции, выполняемое между обновлениями входных данных (этот параметр используется в подпрограмме обновления исходных данных); K – количество ячеек в сеточной области по одному измерению; u – размерность подвектора; L – число независимых фейеровских итераций на подвекторах в подпрограмме вычисления псевдопроекции (см. рис. 6); T – масштабирующий коэффициент для вычисления координат целевой точки z. На шаге 2 проверяется условие (assert) , означающее, что размерность пространства решений кратно размерности подвектора . На шаге 3 осуществляется ввод исходных данных задачи линейного программирования: A – матрица коэффициентов неравенств; b – столбец свободных членов; c – вектор коэффициентов целевой функции. Также здесь вводится вектор G, содержащий начальные координаты нулевой вершины кубической сеточной области. Шаг 4 присваивает переменной P значение, равное количеству доступных MPI‑процессов и вычисляемое с помощью системной функции .

Рис. 5. Схема подпрограммы инициализации переменных init.

На шаге 5 проверяется условие (assert) , означающее, что общее количество ячеек сеточной области равно количеству процессов. На шаге 6 формируется инвариантная часть расширенного столбца свободных членов, определяемого по формуле. На шаге 7 происходит инициализация матрицы путем присваивания всем ее элементам нулевых значений. На шаге 8 определяются ненулевые элементы матрицы в соответствии с системой неравенств. На шагах 9 и 10 строится расширенная матрица , определяемая формулой. На шаге 11 в качестве начального значения длины r ребра сеточной области определяется значение R, обеспечивающее покрытие многогранника M, и вычисляется значение длины ребра ячейки. На шаге 12 в качестве начальной нулевой вершины g кубической сеточной области берется точка G, определяющая такое положение сеточной области, при котором она полностью покрывает многогранник M. На шаге 13 вычисляются координаты целевой точки z по формуле . На шаге 14 вычисляется нулевая вершина q центральной ячейки сеточной области по формуле. На последнем шаге вычисляется вектор начальных целочисленных координат центральной ячейки по формуле.

 





Поделиться с друзьями:


Дата добавления: 2017-03-12; Мы поможем в написании ваших работ!; просмотров: 182 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

2372 - | 2321 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.