exponenta event banner

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

Введение в пользовательскую оптимизацию

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

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

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

  • Для реализации алгоритма оптимизации, альтернативного поставляемым

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

  • Создание пользовательской выходной графики

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

Внедрение алгоритма оптимизации в CAGE

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

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

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

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

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

    edit mbcOSworkedexample
    

Двумя разделами являются Options раздел и Evaluate раздел.

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

    • Имя

    • Описание

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

    • Объективные функции

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

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

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

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

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

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

    • Одна цель

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

  2. 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около-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 извлекает эти значения из optimstore при оценке модели крутящего момента.

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

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

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

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

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

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

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

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

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

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

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

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

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