Пользовательские оптимизации

Представление пользовательской оптимизации

Пользовательские оптимизации описаны в следующих разделах:

  • Реализация Вашего алгоритма оптимизации в CAGE описывает, как настроить шаблон оптимизации, чтобы использовать ваши стандартные программы оптимизации в CAGE.

  • Существует пошаговое руководство по использованию предоставленного примера, чтобы помочь вам понять, как изменить файл шаблона, чтобы использовать свои собственные оптимизационные функции. Смотрите раздел «Создание пользовательской оптимизации».

Во многих случаях стандартные стандартные программы, поставляемые для ограниченной одной цели (fmincon, ga, и patternsearch) и мультиобъективная оптимизация (NBI) достаточны, чтобы позволить вам решить вашу задачу оптимизации. Иногда, однако, нужно написать настроенный алгоритм оптимизации. Это может быть полезно во многих ситуациях, например,

  • Для эксперта, чтобы захватить процесс оптимизации, чтобы решить конкретную задачу, например, определение оптимального угла искры и скорости рециркуляции выхлопных газов на двигателе впрыска топлива в порт

  • Чтобы реализовать альтернативный алгоритм оптимизации к предоставленным

  • Реализовать сложное ограничение или цель, которая возможна только путем написания кода

  • Чтобы создать пользовательскую выходную графику

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

Реализация алгоритма оптимизации в CAGE

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

Структура оптимизационной функции

Файлы оптимизационной функции имеют два раздела. Чтобы сравнить эти разделы в рабочем примере с файлом шаблона, на котором он основан:

  1. Найдите и откройте файл mbcOStemplate в папке mbctraining.

  2. Чтобы открыть пример, введите в командной строке следующее:

    edit mbcOSworkedexample
    

Эти два раздела являются Options раздел и Evaluate раздел.

  1. The Options раздел функции содержит настройки, которые определяют вашу оптимизацию. Здесь можно настроить следующие атрибуты:

    • Имя

    • Описание

    • Свободные переменные

    • Целевые функции

    • Ограничения

    • Вспомогательные наборы данных

    • Параметры оптимизации

    CAGE взаимодействует со cgoptimoptions объект, где хранятся все эти настройки.

    Смотрите Методы cgoptimoptions для получения информации о настройке раздела опций.

    Если вы покидаете cgoptimoptions функция без изменений, ваша оптимизационная функция должна быть в состоянии поддерживать опции по умолчанию. То есть ваша оптимизация будет иметь:

    • Одна цель

    • Любое количество ограничений (выбранных пользователем в CAGE)

  2. The Evaluate раздел функции содержит вашу стандартную программу оптимизации. CAGE вызывает этот раздел при нажатии кнопки Run.

    Разместите свою стандартную программу оптимизации в этом разделе, взаимодействуя с CAGE (получение входов и отправка выходов) через cgoptimstore объект. Ваша оптимизация должна соответствовать следующему синтаксису:

    optimstore = <Your_Optimization> (optimstore)
    
    где <Your_Optimization> - имя вашей оптимизационной функции.

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

    См. Методы cgoptimstore.

Примечание

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

Существует пошаговое руководство, описывающее, как изменить шаблон с помощью оптимизационной функции отработанного примера в учебнике оптимизации. См. «Создание пользовательской оптимизации».

Об алгоритме оптимизации работоспособного примера

mbcweoptimizer является примером пользовательской оптимизации, которая решает следующую задачу:

max TQ над (AFR, SPK).

  • [bestafr, bestspk] = mbcweoptimizer(TQ) находит максимум (bestafr, bestspk) к функции TQ.

    TQ должна быть функцией (или указателем на функцию), где первые два входных параметров являются AFR и SPK соответственно. Могут использоваться функции TQ с большим количеством параметров. Дополнительные параметры этих функций могут быть заданы с помощью анонимных функций. Для примера, если модель TQ имеет N и L входы, можно использовать следующий вызов, чтобы mbcweoptimizer:

    [bestafr, bestspk] = mbcweoptimizer(@(afr, spk)TQ(afr, spk, N, L))

  • [bestafr, bestspk]=mbcweoptimizer(TQ, afrrng, spkrng) находит максимальное (bestafr, bestspk) значение функции TQ.

    afrrng и spkrng являются векторами строк 1 на 2, содержащими области значений поиска для этих переменных.

  • [bestafr, bestspk]=mbcweoptimizer(TQ, afrrng, spkrng, res) находит максимум (bestafr, bestspk) к функции TQ.

    Эта оптимизация выполняется в течение res-by- res сетка (AFR, SPK) значения. Если res не задан, разрешение сетки по умолчанию 25.

Структура проработанного примера

Лучший способ понять, как реализовать внешний оптимизатор в оптимизационная функция CAGE, - изучить детали примера.

  • Чтобы просмотреть весь рабочий файл примера, в командной строке введите

    edit mbcOSworkedexample
    

Следующая секция кода взята из Evaluate раздел рабочего файла примера в качестве примера.

Фрагмент кода выше находится в i_Evaluate локальная функция. Эта локальная функция вызывается один раз для каждого запуска скрипта. Строка кода, помеченная A выше, вызывает алгоритм оптимизации работоспособного примера, внешний для оптимизационной функции. Как и в случае с функциями в Optimization Toolbox™ продукте, первым аргументом вызова оптимизатора является указатель на функцию, который оценивает цели в заданной точке входа. Мы рекомендуем вам поместить функцию, на которую указывает указатель на функцию, в файл оптимизации. Если вы не помещаете их в тот же файл, вы должны убедиться, что evaluate файл функции указан в пути MATLAB. В качестве примера функция оценки оптимизации в оптимизации отработанного примера показана в следующем фрагменте кода.

Входы для n_evalTQ являются необходимыми входами для модели крутящего момента (в данном случае). Чтобы оценить цель, evaluate метод из optimstore используется объект. В приведенном выше примере строка кода, на которую ссылается B, оценивает модель крутящего момента в отработанном примере в (afr, spk) входные точки. Значения (N, L) при токовом запуске используются в оценке модели крутящего момента. CAGE извлекает эти значения из оптимстора, когда оценивается модель крутящего момента.

Две локальные функции, представленные выше, являются примером реализации внешнего оптимизатора в файле оптимизации CAGE.

Смотрите также раздел руководства по оптимизации Создание Оптимизации из Собственного Алгоритма, который подробно описывает шаги, связанные с включением примера алгоритма в файл оптимизации CAGE.

Проверка пользовательских оптимизаций в CAGE

После изменения шаблона для создания собственной оптимизационной функции необходимо сдать его на хранение в Model-Based Calibration Toolbox™ продукт, порядок использовать функцию в CAGE. После сдачи оптимизационной функции на хранение она появляется в мастере оптимизации. См. раздел Мастер оптимизации.

Чтобы проверить пользовательскую оптимизацию в CAGE,

  1. Выберите Файл - > Настройки.

  2. Перейдите на вкладку Оптимизация и нажмите Добавить... чтобы перейти к файлу. Выберите файл и нажмите кнопку Открыть. Это регистрирует оптимизационную функцию с CAGE. Вы должны сделать это, когда вы настраиваете свои собственные оптимизации.

    Пример показывает рабочую функцию , взятую в качестве примера,, которая уже зарегистрирована в CAGE для использования в руководство оптимизации.

  3. Можно нажать Test, чтобы проверить, правильно ли настроена оптимизационная функция. Это очень полезная функция, когда вы используете свои собственные функции; если что-то неправильно настроено, результаты теста говорят вам, где начать исправлять свою функцию.

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

  4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Настройки CAGE и вернуться в браузер CAGE.

    Зарегистрированные оптимизации появляются в мастере оптимизации при настройке новой оптимизации.

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