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

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

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

Во многих случаях стандартные стандартные программы, предоставленные для ограниченной одной цели (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-by-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. Если это верно, необходимо использовать Мастер Оптимизации вместо этого.