Принципы построения и технология работы пакета оптимизационных программ

1. Технология работы

Рассматривается два комплекса оптимизационных программ. Один, наряду со случайно- генетической оптимизацией, содержит и комплекс программ классической численной оптимизации. Назовем его "диалоговая система оптимизации" или сокращенно ДИСО. Другой содержит различные модификации генетической оптимизации - ГЕНЕТИКА.

Оба комплекса реализованы в среде Developer Studio на языке Compag Visual Fortran 6.5 с дополнением Visual С++ (примеры построения данных систем представлены на рис.1, рис.2 в виде типовых проектов).

Рисунок 1 - Проект "ГЕНЕТИКА" - корневой модуль, модуль PROG_H - содержит ограничения-неравенства, модуль PROG_K - вычисление целевой функции. Папка Sourse Files содержит 5 модулей генетической оптимизации.

Рисунок 1 - Проект "ДИСО" включает: GEN_begin_NEPR_ZEL - корневой модуль, модуль PROG_H - содержит ограничения-неравенства, модуль PROG_K - вычисление целевой функции. Модули Qodbbd, Qodsbs, Qroblr используются для ввода дополнительной информации, структурной коррекцией модели (в случае необходимости), фиксации ограничений-равенств соответственно. Папка Sourse Files содержит 57 модулей классической и генетической оптимизации.

На данных рисунках показано представление тестовой функции HELIX в этих программных комплексах. Не сложно заметить полное сходство. Модель представлена в коде Fortran-90. Рабочие операторы располагаются в стандартных входных модулях системы, поэтому программировать необходимо только модель - ограничения и целевую функцию.

Функция HELIX имеет следующий вид:

-50<xi<50, i=1,3

Оптимальное значение:

После подготовки модели нажимается кнопка "выполнить программу" и выполняется компиляция, сборка (редактирование) системы и расчет. В определенной папке создается EXE-файл (именно EXE-файлы используются в дальнейшем для демонстрации). В ДИСО предусмотрен диалог, где вводится управляющая информация. Вход в систему единый и перепрограммирование при переходе от метода к методу не требуется. Так как методы классической оптимизации не предмет данного исследования, то специфика работы ДИСО не рассматривается !

В "ГЕНЕТИКЕ" управляющая информация задается в исходном программном коде, где даются необходимые пояснения. После подготовки модели нажимается кнопка "выполнить программу", строится EXE-файл и выполняется расчет с визуализацией основных параметров в реальном режиме времени на экране дисплея. При этом для просмотра текущего состояния нажимается клавиша "пробел", для продолжения расчета - клавиша "ENTER". Останов выполняется в любой момент при нажатии клавиши "единица". Необходимая информация, согласно заданной управляющей информации, формируется в специальных файлах, которые сразу обнаруживают себя в поддиректории, откуда запускался EXE-файл.

Все папки (имеется в виду демонстрационный режим) построены идентично и содержат EXE-файл, с уже заданными параметрами генетической оптимизации и определенной тестовой функцией.

2. Управляющая и выходная информация системы

Параметров алгоритма генетической оптимизации достаточно много, конечно, от их значений зависит эффективность поиска. Нами они исследованы и ориентировочно известны их значения в зависимости от типа решаемых задач. Более того, выявлены некоторые средние значения, при которых успешно решаются практически все типы задач.

Содержание некоторых управляющих параметров приводится ниже, оно соответствует тексту пояснений к программным модулям генетических алгоритмов

2.1. Параметры, идентифицирующие структуру оптимизационной модели

L - количество ограничений 2-го рода (функциональные ограничения)

NIC - общее количество ограничений

NX - количество оптимизируемых переменных (хромосом)

NMK5 - MIN(MAX) направление оптимизации (развития)

ParamMin - массив минимальных значений оптимизируемых переменных (ограничения 1-го рода)

ParamMax - массив максимальных значений оптимизируемых переменных (ограничения 1-го рода)

2.2. Управляющие параметры случайно-генетической оптимизаци

1. i_mutaz - режим мутации:

  1. - каждый бит инвертируется с вероятностью (1-p0_mutaz)
  2. - инвертируются совпадающие родительские хромосомы(координаты) с вероятностью (1-p0_mutaz)
  3. - мутация отсутствует

2. N_pop - объем буфера "разгона" для размещения исходной популяции

3. N_pop1 - объемы последующих популяций (массивов)

4. i0 - число итераций (популяций, шагов оптимизации)

5. Nmax_pop - максимальное число проб модели для ПОЛНОЙ подготовки исходного массива подходящими особями (удовлетворяют ограничениям задачи)

6. i_ZEL - индикатор структуры модели, убирает не нужное обращение к целевой функции (модели), если это допустимо

        1 - если целевую функцию и ограничения НЕОБХОДИМО считать в одной модели

        0 - если ограничения МОЖНО считать отдельно от целевой функции (это желательно, так как скорость вычислений будет выше)

7. p0 - барьер наполнения координат от лучшего решения при скрещивании

8. p0_mutaz - барьер, превышение барьера приводит к мутации хромосомы (координаты), малое значение приближает к чисто случайному поиску и противоречит сохранению наследственности ПО-ДРУГОМУ! Мутация (превышение барьера) соответствует оптимизации, нарушению наследственности, высокий барьер способствует сохранению наследственности генов родителей

9. p0_x - двухуровневый барьер, превышение барьера приводит к случайному выбросу координаты в МАКСИМАЛЬНОМ диапазоне, не достижение - к случайному выбросу координаты в диапазоне изменения координат ТЕКУЩЕЙ популяции (противоречит глобальности оптимума, соответствует локальной оптимизации, целесообразность достигается вблизи оптимума)

p0_x=p0_x_1 первый высокий барьер

p0_x=p0_x_2 второй более низкий барьер

10. N_mass - размер массива памяти управления сходимостью в конце поиска, является сложной динамической характеристикой размера пространства поиска последних N_mass поколений генетической оптимизации (индикатор области поиска), влияет на реализацию стратегии мутации

11. eps0 - в массив памяти сходимости в конце поиска попадают только элементы БОЛЬШИЕ eps0

12. eps1 - второй уровень подключения, увереннее включает случайный поиск по ВСЕЙ очередной координате при наступлении события "сходимость на локальном экстремуме"

13. eps_y - не различимость по цели; с другой стороны, превышение этого барьера препятствует смене другого барьера при мутации и переходе на глобальность поиска по обрабатываемой координате (если задать очень малое значение, то глобальность отрабатывается хуже; большое значение способствует усилению глобальности; эта процедура имеет значение только в конце поиска). Работает ТОЛЬКО в режиме i_mutaz=2. Принципиальной роли этот параметр не оказывает!

14. iT - количество решений (особей) для выбора среди них лучшей при наполнении промежуточного массива (большое значение iT преждевременно усиливает сходимость поиска)

При решении конкретной задачи приходится манипулировать параметрами 1-8. Наиболее сильное влияние оказывает 7 и 8 параметр.

2.3. Параметры управления выходной информацией

1. i_SHAG_pech - шаг печати генерируемых особей при создании исходной популяции, необходимо для контроля прохождения области поиска

2. i_pech_FORMA - управление формой печати:

        1 - в формате исходной информации входных переменных,

        2 - в нормированном формате входных переменных (диапазоне 0-1)

3. i_otl - управление общим отладочным режимом (1-включено, 2-отключено)

4. i_otl_2 - управление дополнительным отладочным режимом на экран

5. i_otl_3 - управление дополнительным отладочным режимом в отладочные файлы

6. i_DATCHIC - управление подключением случайных датчиков

7. LPR - управление обращением к модели в оптимальной точке (для реализации возможности вывода дополнительной информации вне оптимизации)

2.4. Выходная информация случайно-генетической оптимизации

В ходе оптимизации на экран бегущей строкой выводится наиболее важная информация: значение целевой функции и значение параметра области сходимости. На примере функции HELIX на дисплее имеем:

1 итерация значение целевой функции - 26.3165065083374

  значение параметра области сходимости - 9.341728687286377E-002

2 итерация значение целевой функции - 26.3165065083374

  значение параметра области сходимости - 7.838803606001932E-002

……………………………………………………

63 итерация значение целевой функции - 1.548105043405858E-006

   значение параметра области сходимости - 1.488544131446797E-005

……………………………………………………

100 итерация значение целевой функции - 8.409909703025464E-012

    значение параметра области сходимости - 3.964156932341941E-008

……………………………………………………

218 итерация значение целевой функции - 1.044228777457883E-027

    значение параметра области сходимости - 2.775557561562891E-016

219 итерация значение целевой функции - 0.000000000000000E+000

    значение параметра области сходимости - 3.700743415417188E-017

……………………………………………………

228 итерация значение целевой функции - 0.000000000000000E+000

    значение параметра области сходимости - 0.000000000000000E+000

Малое значение параметра области сходимости свидетельствует о приближении к лучшему результату (оптимальному). В любой момент процесс можно остановить для анализа (клавиша "пробел") и продолжить расчет (клавиша "ENTER"). Останов выполняется момент при нажатии клавиши "единица".

В зависимости от параметров управления выходной информацией в поддиректории, содержащей EXE-файл, образуются от 2х до 5ти текстовых файлов, которые дают подробную информацию о ходе поиска. Обязательными являются файлы z_ЦЕЛЬ 4(21).txt , z_РАЗГОН 0(17).txt, которые являются точной копией экрана. Вспомогательные файлы содержат подробную информацию о скрещиваемых особях по итерациям (все от лучшей до худшей) с фиксацией координат (хромосом) - это файл z_РЕЗУЛ_итер 3(20).txt. Файлы z_ПРОМЕЖ_до 1(18).txt и z_ПРОМЕЖ_после 2(19).txt содержат исходную информацию о материале, используемом для скрещивания особей и получения нового поколения по итерациям.

Визуализация на экран в графическом виде не выполняется, так как она имеет какой-то смысл только при решении простых учебных задач.

 
Сайт управляется системой uCoz