Создание структур данных для 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, заданного как вектор ячейки длиной, равной nlobj.Model.NumberOfParameters, которое является количеством необязательных параметров в модели прогнозирования контроллера. Если контроллер не имеет дополнительных параметров, укажите params как {}.
Если nlobj является nlmpc затем исходные значения, указанные в params копируются в onlineData структура. Если nlobj является nlmpcMultistage затем объект params аргумент не разрешен, и необходимо вручную указать начальные догадки в InitialGuess поле onlineData вместо этого.
Дополнительные сведения о дополнительных параметрах модели прогнозирования см. в разделе Определение модели прогнозирования для нелинейного MPC.
field - Имя поля рабочего веса или ограниченияИмя поля рабочего веса или ограничения, указанное как строковый или символьный вектор. При создании структур данных для nlmpcmoveCodeGeneration, можно добавить любое из следующих полей в onlineData структура вывода. Добавьте данное поле в оперативную структуру данных, только если ожидается изменение соответствующего веса или ограничения во время выполнения.
Ограничения в сети
"StateMin" - Нижние границы состояния
"StateMax" - Верхние границы состояния
"MVMin" - Манипулируемые переменные нижние границы
"MVMax" - Манипулируемые переменные верхние границы
"MVRateMin" - Управляемая переменная скорость изменения нижней границы
"MVRateMax" - Управляемая переменная скорость изменения верхней границы
Онлайн-ограничения и настройка весов для многоступенчатого MPC
"OutputWeights" - Выходные переменные веса
"MVWeights" - Манипулируемые переменные веса
"MVRateWeights" - Манипулируемые веса переменной скорости
"ECRWeight" - Переменный вес провисания
"OutputMin" - Выходные переменные нижние границы
"OutputMax" - Выходные переменные верхние границы
Возмущения, параметры и начальные догадки для многоступенчатого ПДК
"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 | Начальное предположение для переменной слабости, возвращаемое как ноль. |
onlineData может также содержать следующие поля, в зависимости от конфигурации контроллера и значений аргументов.
| Область | Описание |
|---|---|
md | Измеренные значения возмущений - это поле возвращается только тогда, когда контроллер измерил входы возмущений, то есть когда |
Parameters | Значения параметров - это поле возвращается только в том случае, если контроллер использует необязательные параметры модели. |
| Вес и значения ограничений - каждое поле возвращается только в том случае, если имя соответствующего поля указано с помощью field аргумент. Значение каждого поля равно соответствующему значению по умолчанию, определенному в контроллере, как возвращено в coreData. |
Дополнительные сведения о настройке onlineData поля, см. nlmpcmoveCodeGeneration.
Multistage MPC - Структура для многоступенчатых контроллеров MPCИнтерактивные нелинейные данные многоступенчатого контроллера MPC, которые необходимо обновлять на каждом интервале управления, возвращаются в виде структуры. Структура всегда содержит InitialGuess поле.
| Область | Описание |
|---|---|
InitialGuess | Начальное предположение для переменных решения возвращается в виде вектора столбца длиной, равной сумме длин всех векторов переменных решения для каждого этапа. Дополнительные сведения см. в разделе |
onlineData может также содержать следующие поля, в зависимости от конфигурации контроллера и значений аргументов.
| Область | Описание |
|---|---|
MeasuredDisturbances | Измеренные значения возмущений - это поле возвращается только тогда, когда контроллер измерил входы возмущений, то есть когда |
StateFcnParameters | Значения параметров для функций state и Jacobians - это поле возвращается только тогда, когда функция прогнозирования состояния контроллера или ее параметры модели Jacobian используют, то есть когда |
StageFcnParameters | Значения параметров для функций stage cost и constraints и их Jacobians - это поле возвращается только в том случае, когда любая функция stage cost или constraint или ее Jacobian использует параметры, то есть когда существует хотя бы один этап |
| Значения ограничений - каждое поле возвращается только в том случае, если имя соответствующего поля указано с помощью field аргумент. Значение каждого поля равно соответствующему значению по умолчанию, определенному в контроллере, как возвращено в coreData. |
TerminalState | Терминальное состояние, указанное как вектор столбца с таким количеством элементов, как количество состояний. Терминальное состояние является требуемым состоянием на последнем этапе прогнозирования. Чтобы указать требуемые состояния терминала во время выполнения с помощью этого поля, необходимо указать конечные значения в |
Дополнительные сведения о настройке onlineData поля, см. nlmpcmoveи nlmpcmoveCodeGeneration.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.