И для неявных и для адаптивных контроллеров 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.