Выполнение глобальной оптимизации

Глобальная оптимизация. Введение

Глобальная оптимизация - это итерационный процесс автоматического подбора параметров системы в программе VisSim, при соблюдении некой совокупности глобальных ограничений, имеющий цель удовлетворить некий комплексный критерий оптимальности (точность, быстродействие, надежность, энергозатратность, ...). Задача оптимизации (в соответствии с терминологией теории управления) ставится на последних этапах задач повышения точности, коррекции или синтеза, когда структура системы уже выбрана и требуется осуществить ее настройку.

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

Функции цены со многими локальными минимумами

Часто функции цены имеют много локальных минимумов. Некоторые встроенные в VisSim оптимизаторы могут обойти местные минимумы, но гарантированно найти глобальный они самостоятельно не могут. Чтобы убедиться, что найденный минимум является глобальным, рекомендуется несколько раз исполнить оптимизацию при разных начальных значениях поданных на блоки ?-параметр.

Функции цены, не имеющие минимального значения

Функция цены формируется Вами, поэтому необходимо уделять особое внимание решению этой задачи. Предположим, Ваша функция цены не имеет минимума (постоянна) или имеет плоскую поверхность, а минимумы сильно удалены от зоны начала итераций. В этом случае, глобальный оптимизатор будет блуждать бесцельно, поскольку все вносимые им итеративные изменения будут иметь одну цену и процесс сильно затянется. Для преодоления затруднения Вам необходимо пересмотреть функцию цены таким образом, чтобы она имела, по крайней мере, один минимум.

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

Методика выполнения глобальной оптимизации

Задача глобальной оптимизации почти всегда относится к нелинейным, поэтому нельзя рекомендовать определенный метод или функцию цены как лучшие. VisSim имеет три встроенных оптимизатора: Powell (Пауэла), Polak-Ribiere (Полака-Райбера), и Fletcher Reeves (Флетчера Ривеса). Так же VisSim имеет открытый интерфейс для подключения Вашего собственного оптимизатора, написанного на языке высокого уровня (Си++, Паскаль, Фортран, ... ), и откомпилированного в dll-библиотеку, см. раздел: Создание глобального оптимизатора пользователя.

Любой выбранный Вами оптимизатор VisSim-а последовательно модифицирует параметры, опираясь на получаемые результаты в режиме серии повторных симуляций, и стремится уменьшить значение функции цены. Основное уравнение модификации параметра имеет вид:

Pk+1 = Pk + ΔPk, где k - итерационный индекс (номер симуляции в серии)

Различие между оптимизаторами состоит в методике генерации величины ΔPk. Дополнительную информацию о методах оптимизации см. в книге "Numerical Recipes, The Art of Scientific Computing" (Cambridge University Press - издательство Кембриджского университета).

Исполнение глобальной оптимизации

Для запуска процесса глобальной оптимизации параметров выполните действия:

  1. Выберите команду меню Симуляция > Настройки Оптимизации. Должно появится диалоговое окно "Опции оптимизации".
  2. Активируйте опцию "Выполнить оптимизацию".
  3. Выберите метод оптимизации.
  4. Нажмите на кнопку OK или клавишу ENTER.
  5. Запустите процесс симуляции.

Диалоговое окно 'Опции оптимизации'

Опция

Описание действия

Powell (метод Пауэла)

Эта позиция переключателя активирует оптимизатор, использующий упрощенный метод расчета приращений параметров. Градиент в методе Пауэла не рассчитывается, поэтому оптимизация выполняется наиболее быстро

Polak-Ribiere (метод Полака-Райбера)

Эта позиция переключателя активирует оптимизатор, использующий градиентный метод Полака-Райбера для расчета приращений параметров. В сравнении с методом Флетчера Ривеса данный метод чуть сложнее и оптимален для достижения предполагаемого минимума квадратичной функции

Fletcher Reeves (метод Флетчера Ривеса)

Эта позиция переключателя активирует оптимизатор, использующий градиентный метод Флетчера Ривеса для расчета приращений параметров. В сравнении с методом Пауэла данный метод требует меньшего количества итераций для сходимости, но работает чуть медленнее

Пользователя

Эта позиция переключателя активирует оптимизатор пользователя. В текущей директории, VisSim будет искать файл vopt.dll, который должен быть создан Вами на языке программирования высокого уровня (Си++, Паскаль, Фортран, ... ), в соответствии с Приложением А руководства пользователя программы VisSim

Выполнить оптимизацию

Активация этой опции заставит VisSim выполнять серию повторных симуляций для выполнения глобальной оптимизации. Каждая симуляция - это только одна информационная точка для оптимизатора

Max итераций

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

Допуск ошибки

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

Примеры глобальной оптимизации

Примеры решений задач глобальной оптимизации см. в главе 8 Руководства пользователя программы VisSim.

Поиск неисправностей

Как Я могу избежать проблем с неустойчивостью системы?

Оптимизатор в блоках ?-параметр может установить значения, которые вызовут неустойчивость системы и движение ее координат к бесконечностям (до предельных значений числа с плавающей точкой). Таким образом, по причине псевдонасыщения функции цены оптимизатор оказывается неработоспособным.

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

Какой начальный допуск ошибки Я должен установить, если я не знаю даже пределы оптимальных значений параметров?

Когда Вам известно очень немного относительно оптимальных значений параметров, рекомендуется в диалоговом окне "Опции оптимизации" в начале установить большое значение допуска ошибки - 10. Иначе процесс оптимизации может затянуться.

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

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