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

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

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

Во многих случаях стандартные стандартные программы, предоставленные для ограниченной одной цели (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 локальная функция. Эта локальная функция вызвана однажды для каждого запуска скрипта. Строка кода, помеченная вышеупомянутые вызовы обработанный алгоритм оптимизации в качестве примера, внешний к оптимизационной функции. Как с функциями в продукте Optimization Toolbox™, первый аргумент к вызову оптимизатора является указателем на функцию, который оценивает цели в данной точке ввода. Мы рекомендуем, чтобы вы поместили функцию, на которую указывает указатель на функцию в файле оптимизации. Если вы не размещаете их в тот же файл, необходимо убедиться evaluate файл функции находится на пути MATLAB. Как пример, функцию оценки оптимизации в обработанной оптимизации в качестве примера показывают во фрагменте кода после.

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

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

См. также раздел Creating an Optimization from Your Own Algorithm примера по оптимизации, который описывает подробно шаги, вовлеченные в слияние алгоритма в качестве примера в файл оптимизации CAGE.

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

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

Проверять пользовательскую оптимизацию в CAGE,

  1. Выберите File-> Preferences.

  2. Кликните по вкладке Optimization и нажмите Add..., чтобы просмотреть к вашему файлу. Выберите файл и нажмите Open. Это указывает оптимизационную функцию с CAGE. Необходимо сделать это, когда вы настраиваете свою собственную оптимизацию.

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

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

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

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

    Зарегистрированная оптимизация появляется в Мастере Оптимизации, когда вы настраиваете новую оптимизацию.

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