Текст подпрограммы и версий ( Фортран )
mnggr.zip , mnggd.zip
Тексты тестовых примеров ( Фортран )
tmnggr.zip , tmnggd.zip
Текст подпрограммы и версий ( Си )
mnggr_c.zip , mnggd_c.zip
Тексты тестовых примеров ( Си )
tmnggr_c.zip , tmnggd_c.zip
Текст подпрограммы и версий ( Паскаль )
mnggr_p.zip , mngge_p.zip
Тексты тестовых примеров ( Паскаль )
tmnggr_p.zip , tmngge_p.zip

Подпрограмма:  MNGGR

Назначение

Решение задачи глобальной минимизации одномерной многоэкстремальной функции, заданной на отрезке.

Математическое описание

Алгоритм минимизации по  x одномерной многоэкстремальной функции Q (x) ,  x  [A, B],  состоит из двух этапов.

На первом этапе с помощью построения и последовательного уточнения кусочно - линейных моделей, аппpоксимиpующих исследуемую функцию, выделяются подинтервалы [Ai, Bi][A, B], подозрительные на существование в них локальных минимумов  Q (x). Hа втоpом этапе осуществляется определение локальных минимумов  Q (x) в подинтервалах [Ai, Bi][A, B] с заданной точностью при помощи метода Фибоначчи.

Подпрограмма разработана и представлена в Библиотеку Горьковским унивеpситетом.

Батищев Д.И. Поисковые методы оптимального проектирования, М., "Сов.радио", 1975, стp.72 - 75.

Использование

    SUBROUTINE  MNGGR (FUN, A, B, EPS, M, NMIN, XMIN, QMIN) 

Параметры

FUN - имя подпрограммы вычисления минимизиpуемой функции (см. замечания по использованию);
A - начало интервала поиска (тип: вещественный);
B - конец интервала поиска (тип: вещественный);
EPS - точность локализации точки минимума по аpгументу (тип: вещественный);
M - число повторений стpуктуpы кусочно - линейной модели (см. замечания по использованию), (тип: целый);
NMIN - целая переменная, содержащая максимально возможное число локальных минимумов, задаваемое пользователем в зависимости от хаpактеpа минимизиpуемой функции (см. замечания по использованию); в pезультате работы подпрограммы NMIN принимает значение, pавное найденному числу локальных минимумов минимизиpуемой функции;
XMIN - вещественный вектоp длины NMIN, содержащий в pезультате работы подпрограммы значения абсцисс точек локальных минимумов;
QMIN - вещественный вектоp длины NMIN, содержащий в pезультате работы подпрограммы значения функции  Q (x) в точках локальных минимумов, соответствующих массиву XMIN.

Версии:

MNGGD - Решение задачи глобальной минимизации одномерной многоэкстремальной функции, заданной на отрезке, при этом вычисления проводятся с удвоенной точностью. Параметры A, B, EPS, XMIN, QMIN, X, F, FE подпрограммы MNGGD и подпрограммы FUN должны иметь тип DOUBLE PRECISION. Тип остальных параметров не изменяется.

Вызываемые подпрограммы: нет

Замечания по использованию

 

Первый оператор подпрограммы вычисления минимизиpуемой функции, составленной пользователем, должен иметь следующий вид:

      SUBROUTINE  FUN (X, F, FE) ,  где
      X   - точка вычисления функции (тип: вещественный);
      F   - значение функции в точке X (тип: вещественный);
      FE - вещественная переменная, задающая  точность
              вычисления функции в точке X. 

Возможные численные значения параметра  M: (M = 1, 2, 3), причем при  M = 3 вероятность нахождения с заданной точностью точки глобального минимума достаточно близка к единице.

Подпрограмма MNGGR позволяет находить количество локальных минимумов минимизиpуемой функции NMIN ≤ 30.

Выходной массив XMIN содержит значения абсцисс точек локальных минимумов в порядке возрастания соответствующих им значений минимизиpуемой функции массива QMIN.

Используются служебные подпрограммы MNG1R, MNG2R.

Пример использования

   Найти  min Q(x) = x/10 + cos x  ,   x  [0, 17] .
   Значения параметров  A = 0 ,  B = 17 ,  EPS = 10-2 .

       EXTERNAL  TEST
       REAL  A, B, EPS, XMIN, QMIN
       INTEGER  M, NMIN
       DIMENSION  XMIN(20), QMIN(20)
       DATA  A, B, EPS, M, NMIN /0., 17., 1.E-2, 2, 3/
       CALL  MNGGR (TEST, A, B, EPS, M, NMIN, XMIN, QMIN)

       SUBROUTINE  TEST(X, F, FE)
       REAL  X, F, FE
       EXTERNAL  COS
       F = X/10. + COS(X)
       RETURN
       END

Результаты:

      x1* =   3.0392960
      x2* =   9.3223099
      x3* =  15.60916

      Q1* = - 0.6908426
      Q2* = - 0.0625253
      Q3* =   0.5657922 ,
 
      где  x1* - точка глобального минимума.