Программная система Globalizer Lite предназначена для решения трудоемких задач многомерной многоэкстремальной глобальной оптимизации. Алгоритмическую основу системы составляет блочная многошаговая схема редукции размерности, комбинирующая использование разверток типа кривой Пеано и многошаговую схему редукции, что позволяет эффективно распараллеливать вычисления на большое число процессоров/ядер. Параллельная версия блочной многошаговой схемы реализована с использованием библиотеки MPI.
![]() |
В общем случае функционалы оптимизационной задачи должны быть оформлены в виде динамической библиотеки (dll). В представленной демонстрационной версии система настроена на поиск минимума функции Растригина (с размерностью 4). Версия с поддержкой динамических библиотек будет выложена на этой странице позднее.
При параллельном решении задачи строится дерево MPI-процессов. Соответственно, при запуске программы необходимо задать следующие параметры, определяющие конфигурацию дерева:
Рассмотрим пример.
Пусть размерность задачи – 8.
Определим количество уровней в дереве NumOfTaskLevels = 3. Тогда DimInTaskLevel можно задать, например, следующим образом: 2_2_4 (2+2+4=8). А количество потомков на каждом уровне ChildInProcLevel = 2_3_0.
Получаем следующее дерево:
![]() |
Количество узлов в дереве должно совпадать с числом MPI-процессов, указанным при запуске программы. В данном случае должно быть запущено 9 MPI-процессов.
Согласно NumOfTaskLevels = 2_2_4, процесс на нулевом уровне будет решать задачу по первым двум переменным (y1, y2), узлы первого уровня – по переменным y3, y4 при фиксированных значениях первых двух, а листья по оставшимся переменным y5,y6,y7,y8.
Таким образом, для запуска программы необходимо набрать следующую строку:
mpiexec.exe -np NP GlobalizerLite.exe [<key1> <value1> <key2> <value2> ...]
Здесь NP – количество запускаемых MPI-процессов.
Возможные ключи представлены в таблице 1.
Таблица 1 — Ключи командной строки
| Ключ | Назначение | Значение по умолчанию |
| -Dimension | Размерность задачи | 4 |
| -r | Надежность метода | 2.3 |
| -Eps | Точность решения для каждого уровня | 0.010_0.010_0.010_0.010_ |
| -m | Точность построения развертки | 10 |
| -NumOfTaskLevel | Количество уровней в дереве | 1 |
| -DimInTaskLevel | Размерность задачи, решаемой на каждом уровне | 4_0_0_0_ |
| -ChildInProcLevel | Количество потомков на каждом уровне | 0_0_0_0_ |
| -MaxNumOfPoints | Максимальное количество точек для каждого уровня | 7000000_1000000_1000000_1000000_ |
Руководство пользователя (здесь будет ссылка на документ)
| Globalizer Lite v. 0.9 | 03.11.2016 |