Пользовательские оптимизации описаны в следующих разделах:
Реализация Вашего алгоритма оптимизации в CAGE описывает, как настроить шаблон оптимизации, чтобы использовать ваши стандартные программы оптимизации в CAGE.
Существует пошаговое руководство по использованию предоставленного примера, чтобы помочь вам понять, как изменить файл шаблона, чтобы использовать свои собственные оптимизационные функции. Смотрите раздел «Создание пользовательской оптимизации».
Во многих случаях стандартные стандартные программы, поставляемые для ограниченной одной цели (fmincon
, ga
, и patternsearch
) и мультиобъективная оптимизация (NBI
) достаточны, чтобы позволить вам решить вашу задачу оптимизации. Иногда, однако, нужно написать настроенный алгоритм оптимизации. Это может быть полезно во многих ситуациях, например,
Для эксперта, чтобы захватить процесс оптимизации, чтобы решить конкретную задачу, например, определение оптимального угла искры и скорости рециркуляции выхлопных газов на двигателе впрыска топлива в порт
Чтобы реализовать альтернативный алгоритм оптимизации к предоставленным
Реализовать сложное ограничение или цель, которая возможна только путем написания кода
Чтобы создать пользовательскую выходную графику
Пользовательские оптимизационные функции в CAGE позволяют продвинутым пользователям писать свои собственные стандартные программы оптимизации, которые могут получить доступ к текущим данным CAGE. Для порядка к пользовательской функции из CAGE необходимо зарегистрировать файл в CAGE и поместить его в MATLAB® путь. Очень важно, чтобы эта функция соответствовала заданному шаблону. В следующих разделах описывается этот процесс.
В какой-то момент оптимизационная функция CAGE вызывает алгоритм, чтобы оптимизировать целевые функции над свободными переменными. Можно реализовать алгоритм в оптимизационная функция CAGE как внешний файл MATLAB. Используйте файл шаблона в качестве базиса для вашей оптимизационной функции. Лучший способ понять, как изменить файл шаблона для реализации собственных алгоритмов оптимизации, - сравнить его с отработанным примером, как описано в руководстве.
См. следующие разделы руководства оптимизации:
Создание пользовательской оптимизации описывает процесс использования отработанного примера
Создание Оптимизации из Собственного Алгоритма подробно описывает шаги, необходимые для использования примера алгоритма оптимизации в CAGE
Об алгоритме оптимизации рабочих примеров, позже на этой странице, исследует кодирование, участвующее в реализации внешнего оптимизатора в файле оптимизации CAGE
Проверка пользовательских оптимизаций в CAGE, позже на этой странице, объясняет, как сдать на хранение оптимизационную функцию, чтобы вы могли использовать его в CAGE
Файлы оптимизационной функции имеют два раздела. Чтобы сравнить эти разделы в рабочем примере с файлом шаблона, на котором он основан:
Найдите и откройте файл mbcOStemplate
в папке mbctraining.
Чтобы открыть пример, введите в командной строке следующее:
edit mbcOSworkedexample
Эти два раздела являются Options
раздел и Evaluate
раздел.
The Options
раздел функции содержит настройки, которые определяют вашу оптимизацию. Здесь можно настроить следующие атрибуты:
Имя
Описание
Свободные переменные
Целевые функции
Ограничения
Вспомогательные наборы данных
Параметры оптимизации
CAGE взаимодействует со cgoptimoptions
объект, где хранятся все эти настройки.
Смотрите Методы cgoptimoptions для получения информации о настройке раздела опций.
Если вы покидаете cgoptimoptions
функция без изменений, ваша оптимизационная функция должна быть в состоянии поддерживать опции по умолчанию. То есть ваша оптимизация будет иметь:
Одна цель
Любое количество ограничений (выбранных пользователем в CAGE)
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.
После изменения шаблона для создания собственной оптимизационной функции необходимо сдать его на хранение в Model-Based Calibration Toolbox™ продукт, порядок использовать функцию в CAGE. После сдачи оптимизационной функции на хранение она появляется в мастере оптимизации. См. раздел Мастер оптимизации.
Чтобы проверить пользовательскую оптимизацию в CAGE,
Выберите Файл - > Настройки.
Перейдите на вкладку Оптимизация и нажмите Добавить... чтобы перейти к файлу. Выберите файл и нажмите кнопку Открыть. Это регистрирует оптимизационную функцию с CAGE. Вы должны сделать это, когда вы настраиваете свои собственные оптимизации.
Пример показывает рабочую функцию , взятую в качестве примера,, которая уже зарегистрирована в CAGE для использования в руководство оптимизации.
Можно нажать Test, чтобы проверить, правильно ли настроена оптимизационная функция. Это очень полезная функция, когда вы используете свои собственные функции; если что-то неправильно настроено, результаты теста говорят вам, где начать исправлять свою функцию.
Пример можно увидеть, сохранив копию рабочего файла примера и изменив одно из имен переменных (например afr
) на число. Попытайтесь проверить эту измененную функцию в CAGE, и кнопка Test вернет информативную ошибку с указанием линии, которую вы изменили.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Настройки CAGE и вернуться в браузер CAGE.
Зарегистрированные оптимизации появляются в мастере оптимизации при настройке новой оптимизации.
Зарегистрированные оптимизации появляются в мастере создания оптимизации из модели, если ваш пользовательский скрипт оптимизации не задает наборы рабочих точек и/или фиксированное количество свободных переменных. Это характерно для скриптов версии 2.0. В этом случае необходимо использовать мастер оптимизации.