Создайте структуры данных для nlmpcmoveCodeGeneration
Используйте эту функцию для создания структур данных для nlmpcmoveCodeGeneration
функция, которая вычисляет оптимальные ходы управления для нелинейных контроллеров MPC.
Для получения информации о генерации структур данных для mpcmoveCodeGeneration
, см. getCodeGenerationData
.
[
создает структуры данных для использования с coreData
,onlineData
]
= getCodeGenerationData(nlobj
,x
,lastMV
)nlmpcmoveCodeGeneration
.
[
когда coreData
,onlineData
]
= getCodeGenerationData(nlobj
,x
,lastMV
,params
)nlobj
является nlmpc
Объекты затем этот синтаксис копирует начальные значения параметров в onlineData
структура. Если nlobj
является nlmpcMultistage
затем объект передает params
аргумент не разрешен, и вы должны вручную задать начальные догадки в InitialGuess
область onlineData
вместо этого.
[___] = getCodeGenerationData(___,
включает заданный сетевой вес или поле ограничения путем добавления его к field
)onlineData
структура.
[___] = getCodeGenerationData(___,field1,...,fieldn)
включает несколько сетевых полей веса или ограничений путем добавления их к onlineData
структура.
Создайте нелинейный контроллер MPC с четырьмя состояниями, двумя выходами и одним входом.
nlobj = nlmpc(4,2,1);
In standard cost function, zero weights are applied by default to one or more OVs because there are fewer MVs than OVs.
Укажите шаг расчета и горизонты контроллера.
Ts = 0.1; nlobj.Ts = Ts; nlobj.PredictionHorizon = 10; nlobj.ControlHorizon = 5;
Задайте функцию состояния для контроллера, которая находится в файле pendulumDT0.m
. Эта модель в дискретном времени интегрирует модель в непрерывном времени, заданную в pendulumCT0.m
использование многостадийного прямого метода Эйлера.
nlobj.Model.StateFcn = "pendulumDT0";
nlobj.Model.IsContinuousTime = false;
Модель предсказания использует необязательный параметр Ts
для представления шага расчета. Задайте количество параметров и создайте вектор параметра.
nlobj.Model.NumberOfParameters = 1; params = {Ts};
Задайте выходную функцию модели, передав параметр времени расчета как входной параметр.
nlobj.Model.OutputFcn = "pendulumOutputFcn";
Задайте стандартные ограничения для контроллера.
nlobj.Weights.OutputVariables = [3 3]; nlobj.Weights.ManipulatedVariablesRate = 0.1; nlobj.OV(1).Min = -10; nlobj.OV(1).Max = 10; nlobj.MV.Min = -100; nlobj.MV.Max = 100;
Проверьте функции модели предсказания.
x0 = [0.1;0.2;-pi/2;0.3]; u0 = 0.4; validateFcns(nlobj,x0,u0,[],params);
Model.StateFcn is OK. Model.OutputFcn is OK. Analysis of user-provided model, cost, and constraint functions complete.
Только два из состояний объекта можно измерить. Поэтому создайте расширенный фильтр Калмана для оценки четырех состояний объекта. Его функция перехода к состоянию задана в pendulumStateFcn.m
и его функция измерения определена в pendulumMeasurementFcn.m
.
EKF = extendedKalmanFilter(@pendulumStateFcn,@pendulumMeasurementFcn);
Задайте начальные условия для симуляции, инициализируйте расширенное состояние фильтра Калмана и задайте нуль начальный манипулированное значение переменных.
x0 = [0;0;-pi;0]; y0 = [x0(1);x0(3)]; EKF.State = x0; mv0 = 0;
Создайте структуры данных генерации кода для контроллера, определяя начальные условия и параметры.
[coreData,onlineData] = getCodeGenerationData(nlobj,x0,mv0,params);
Просмотрите оперативную структуру данных.
onlineData
onlineData = struct with fields:
ref: [0 0]
MVTarget: 0
Parameters: {[0.1000]}
X0: [10x4 double]
MV0: [10x1 double]
Slack0: 0
Если ваше приложение использует сетевые веса или ограничения, необходимо добавить соответствующие поля в структуры данных генерации кода. Например, следующий синтаксис создает структуры данных, которые включают поля для выходных переменных весов настройки, манипулируемых переменных весов настройки и манипулируемых переменных границ.
[coreData2,onlineData2] = getCodeGenerationData(nlobj,x0,mv0,params,... 'OutputWeights','MVWeights','MVMin','MVMax');
Просмотрите оперативную структуру данных. Во время выполнения задайте сетевые веса и ограничения в добавленных полях структуры.
onlineData2
onlineData2 = struct with fields:
ref: [0 0]
MVTarget: 0
Parameters: {[0.1000]}
X0: [10x4 double]
MV0: [10x1 double]
Slack0: 0
OutputWeights: [3 3]
MVWeights: 0
MVMin: [10x1 double]
MVMax: [10x1 double]
nlobj
- Нелинейный прогнозирующий контроллер моделиnlmpc
| объекта nlmpcMultistage
объектНелинейный прогнозирующий контроллер модели, заданный как nlmpc
или nlmpcMultistage
объект.
x
- Начальные состояния нелинейной модели предсказанияНачальные состояния нелинейной модели предсказания, заданные как вектор-столбец Nx длины, где Nx - количество состояний модели предсказания.
lastMV
- Начальные управляемые переменные сигналы управленияНачальные манипулированные переменные управляющие сигналы, заданные как вектор-столбец длины Nmv, где Nmv - количество манипулируемых переменных.
params
- Начальные значения параметров для не многоступенчатого MPCНачальные значения параметров для не многоступенчатого MPC, заданные как вектор камеры с длиной, равной nlobj.Model.NumberOfParameters
, которое является количеством необязательных параметров в модели предсказания контроллера. Если контроллер не имеет дополнительных параметров, задайте params
как {}
.
Если nlobj
является nlmpc
объект затем начальные значения, указанные в params
копируются в onlineData
структура. Если nlobj
является nlmpcMultistage
объект затем params
аргумент не разрешен, и вы должны вручную задать начальные догадки в InitialGuess
область onlineData
вместо этого.
Для получения дополнительной информации о необязательных параметрах модели предсказания смотрите Задать модель предсказания для нелинейного MPC.
field
- Имя поля сетевого значения или ограниченияСетевой вес или имя поля ограничения, заданное как строковый или символьный вектор. При создании структур данных для nlmpcmoveCodeGeneration
можно добавить к onlineData
любое из следующих полей структура output. Добавьте заданное поле в оперативную структуру данных, только если вы ожидаете, что соответствующий вес или ограничение изменятся во время выполнения.
Онлайн-ограничения
"StateMin"
- Нижние границы состояния
"StateMax"
- Верхние границы состояния
"MVMin"
- Манипулирование нижними границами переменной
"MVMax"
- Манипулируемые верхние границы переменной
"MVRateMin"
- Манипулируемая переменная скорость изменения нижняя граница
"MVRateMax"
- Управляемая переменная скорость изменения верхней границы
Оперативные ограничения и веса настройки для не многоступенчатого MPC
"OutputWeights"
- Выходы веса переменных
"MVWeights"
- Манипулируемые переменные веса
"MVRateWeights"
- Манипулируемые веса переменных скоростей
"ECRWeight"
- Релейная переменная масса
"OutputMin"
- Выходные переменные нижние границы
"OutputMax"
- Выходные верхние границы переменной
Нарушения порядка, параметры и начальные догадки для многоступенчатого MPC
"MeasuredDistrubance"
- Измеренные нарушения порядка
"StateParameter"
- Вектор параметра для функции состояния и якобианов
"StageParameter"
- Вектор параметра для стоимости этапа, ограничений и якобианов
"TerminalState"
- Ограничение конечного состояния
"InitialGuess"
- Начальные предположения для переменных принятия решений
coreData
- Нелинейные параметры конфигурации MPCНелинейные параметры конфигурации MPC, которые являются постоянными во время исполнения, возвращаются как структура. Эти параметры получают из настроек контроллера в nlobj
. При симуляции контроллера передайте coreData
кому nlmpcmoveCodeGeneration
без изменения параметров.
onlineData
- Данные линейного нелинейного контроллера MPCДанные моделирования во время выполнения, заданные как структура со следующими полями.
Non-Multistage MPC
- Структура типовых контроллеров MPCСетевой нелинейный контроллер MPC данных, который необходимо обновлять при каждом контрольном интервале, возвращаемый как структура. Структура всегда содержит следующие поля.
Область | Описание |
---|---|
ref | Выходы ссылки значения, возвращенные как вектор-столбец из нулей с длиной |
mvTarget | Манипулируемые переменные ссылки значения, возвращенные как вектор-столбец из нулей с Nmv длины, где Nmv - количество манипулируемых переменных. |
X0 | Начальное предположение для траектории состояния, возвращаемое как вектор-столбец, равная |
MV0 | Начальное предположение для манипулируемой переменной траектории, возвращенной как вектором-столбцом, равной |
Slack0 | Начальное предположение для переменной slack, возвращенное как нуль. |
onlineData
может также содержать следующие поля в зависимости от строения контроллера и значений аргументов.
Область | Описание |
---|---|
md | Измеренные значения нарушения порядка - Это поле возвращается только тогда, когда контроллер измеряет входы нарушения порядка, то есть когда |
Parameters | Значения параметров - Это поле возвращается только, когда контроллер использует необязательные параметры модели. |
| Вес и значения ограничений - каждое поле возвращается только тогда, когда соответствующее имя поля задано с помощью field аргумент. Значение каждого поля равно соответствующему значению по умолчанию, заданному в контроллере, как возвращено в coreData . |
Для получения дополнительной информации о настройке onlineData
поля, см. nlmpcmoveCodeGeneration
.
Multistage MPC
- Структура для многоступенчатых контроллеров MPCОнлайн-нелинейные многоступенчатые данные MPC контроллера, которые необходимо обновлять на каждом контрольном интервале, возвращаемые как структура. Структура всегда содержит InitialGuess
поле.
Область | Описание |
---|---|
InitialGuess | Начальное предположение для переменных решения, возвращенных как вектор-столбец длины, равной сумме длин всех векторов переменной решения для каждого этапа. Для получения дополнительной информации см. |
onlineData
может также содержать следующие поля в зависимости от строения контроллера и значений аргументов.
Область | Описание |
---|---|
MeasuredDisturbances | Измеренные значения нарушения порядка - Это поле возвращается только тогда, когда контроллер измеряет входы нарушения порядка, то есть когда |
StateFcnParameters | Значения параметров для функций состояния и якобианов - Это поле возвращается только тогда, когда функция предсказания состояния контроллера или ее параметры модели использования якобиана, то есть когда |
StageFcnParameters | Значения параметров для функций затрат и ограничений этапа и их якобианов - Это поле возвращается только тогда, когда любая стоимость этапа или функция ограничений, или ее якобиан, использует параметры, то есть когда существует по крайней мере один этап |
| Ограничительные значения - Каждое поле возвращается только, когда соответствующее имя поля задано с помощью field аргумент. Значение каждого поля равно соответствующему значению по умолчанию, заданному в контроллере, как возвращено в coreData . |
TerminalState | Конечное состояние, заданная как вектор-столбец с таким количеством элементов, как количество состояний. Это конечное состояние является желаемым состоянием на последнем шаге предсказания. Чтобы задать желаемые конечные состояния во время выполнения через это поле, необходимо задать конечные значения в |
Для получения дополнительной информации о настройке onlineData
поля, см. nlmpcmove
и nlmpcmoveCodeGeneration
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.