И для неявных и для адаптивных контроллеров MPC, можно настроить предсказание и управлять горизонтами, в то время как контроллер действует. Выполнение так может быть полезно для:
Эффективно оценивающий различный выбор горизонта во время выполнения во время прототипирования
Корректировка горизонтов без повторного развертывания после динамики объекта значительно изменяется, такой как в процессе пакетной обработки
Чтобы настроить горизонты во время выполнения из командной строки, в каждом контрольном интервале, задают следующие свойства mpcmoveopt
объект.
PredictionHorizon
— Горизонт предсказания во время выполнения сигнализирует в виде положительного целого числа
ControlHorizon
— Горизонт управления во время выполнения сигнализирует в виде положительного целого числа или вектора положительных целых чисел
Можно затем передать mpcmoveopt
возразите против любого mpcmove
или mpcmoveAdaptive
.
В Simulink®, чтобы настроить горизонты для блока MPC Controller или Adaptive MPC Controller, выбирают параметр Adjust prediction horizon and control horizon at run time. Выполнение так добавляет следующие входные порты в блок:
p
— Горизонт предсказания во время выполнения сигнализирует в виде скалярного целочисленного сигнала
m
— Горизонт управления во время выполнения сигнализирует в виде скалярного или векторного сигнала
Необходимо задать максимальный горизонт предсказания с помощью параметра Maximum prediction horizon. Выполнение так гарантирует что оптимальные выходные порты последовательности блока (mv.seq
, x.seq
, и y.seq
) имейте постоянные размеры с pmax +1 строка, где pmax является максимальным горизонтом предсказания.
Горизонт во время выполнения, настраивающий генерацию кода поддержек и в MATLAB® и в Simulink. Генерация кода для контроллера, который поддерживает изменения горизонта во время выполнения, позволяет вам настраивать свои значения горизонта на вашем развернутом оборудовании контроллеров.
После настройки значений горизонта, чтобы повысить вычислительную эффективность вашего финала развернул контроллер, можно сгенерировать код для контроллера постоянного горизонта, использующего настроенные значения.
Развертывание вашего контроллера с настройкой горизонта во время выполнения, включенной значительно, увеличивает вычислительную загрузку и объем потребляемой памяти вашего приложения MPC. Если вы планируете использовать горизонт во время выполнения, настраивающийся только для прототипирования, чтобы найти соответствующие значения горизонта после настройки, гарантировать, что эта опция отключена. Можно затем сгенерировать код с контроллером постоянного горизонта, использующим настроенные значения.
Если ваш диспетчер использует переменное блокирование, которым управляют, и вы генерируете код для своего контроллера, размер вектора горизонта управления должен остаться постоянным во времени выполнения. В этом случае можно все еще настроить значения в векторе горизонта управления.
Чтобы сгенерировать код для контроллера, который использует настройку горизонта во время выполнения, ваша развернутая аппаратная цель должна поддержать динамическое выделение памяти. Например, если ваша встраиваемая система не поддерживает malloc
C функция, затем сгенерированный код не запустится.
Чтобы сгенерировать код в MATLAB, установите 'UseVariableHorizon'
пара "имя-значение" getCodeGenerationData
к true
. В каждом контрольном интервале можно затем задать горизонты прежде, чем вызвать mpcmoveCodeGeneration
.
[configData,stateData,onlineData] = getCodeGenerationData(mpcobj,'UseVariableHorizon',true); ... onlineData.Horizons.p = 10; onlineData.Horizons.m = 3; [u,stateData] = mpcmoveCodeGeneration(configData,stateData,onlineData);
Если ваше приложение использует параметры контроллера, которые варьируются по горизонту предсказания, настраивание горизонта предсказания во время выполнения влияет на поведение этих изменяющихся во времени параметров.
Если вы задаете изменяющиеся во времени ограничения в своем объекте контроллера, профиль ограничений через горизонт предсказания не изменяется во время выполнения. Если ваше значение горизонта предсказания во время выполнения Pr:
Больше, чем длина ограничительного профиля, заданного в вашем контроллере, затем, диспетчер использует окончательное значение ограничительного профиля для остатка от горизонта предсказания
Меньше, чем длина ограничительного профиля, заданного в вашем контроллере, затем контроллере, обрезают ограничительный профиль после шагов Pr
Для получения дополнительной информации о настраивающих ограничениях смотрите Ограничения Обновления во Время выполнения.
Чтобы варьироваться, настраивая веса во времени выполнения, вы задаете массивы весов, где количество строк не должно превышать длину горизонтов предсказания. Если вы настраиваете горизонт предсказания во время выполнения, это - лучшая практика также настроить количество строк в ваших настраивающих массивах весов, чтобы быть сопоставимым с новым значением горизонта.
Если вы не настраиваете размеры своих настраивающих массивов весов, количество строк расширено или усеченное способом, похожим на изменяющуюся во времени ограничительную длину профиля.
Для получения дополнительной информации о настраивающихся весах смотрите Веса Мелодии во Время выполнения.
Для линейного изменяющегося во времени контроллера MPC вы варьируетесь модель объекта управления и номинальные условия через горизонт предсказания. Если вы настраиваете горизонт предсказания во время выполнения, это - лучшая практика также настроить длины ваших изменяющихся во времени и номинальных массивов условия модели, чтобы быть сопоставимым с новым значением горизонта.
Если вы не настраиваете длины и номинальных массивов условия модели, массивы расширены или усеченные способом, похожим на изменяющийся во времени ограничительный профиль.
Для получения дополнительной информации о линейном изменяющемся во времени MPC смотрите Изменяющийся во времени MPC.