В этом примере показано, как выполнить онлайновую оценку параметра для подбора кривой линии с помощью рекурсивных алгоритмов оценки в командной строке MATLAB. Вы получаете изменяющееся во времени поведение ввода - вывода гидравлического клапана передачи с плавкой регулировкой.
Система является передачей с плавкой регулировкой (CVT), управляемой гидравлическим клапаном, вдохновленным ссылкой [1]. Давление клапана соединяется с CVT, который позволяет ему изменять свое отношение скорости и передавать крутящий момент с механизма на колеса. Поведение ввода - вывода клапана может быть аппроксимировано:
Здесь, t является текущим временем, y (t) является давлением клапана в панели, u (t) является безразмерным входом в области значений [0, 1]. Условие мертвая зона клапана.
Наклон, k (t), и смещение, b (t), зависит от системной температуры. Они варьируются, когда система нагревается от холодного запуска до типичной рабочей температуры. Вы хотите оценить k (t) и b (t) на основе шумных измерений u (t) и y (t).
Истинный наклон и параметры смещения являются k (0) =70 и b (0) =-15 во время t=0s. В t=50s запускается механизм. Параметры варьируются в зависимости от времени, пока они не достигают k (950) =50 и b (950) =-13 в t=950s. Шаг расчета является Ts=0.1s.
Содержимое входного сигнала u очень важно для оценки параметра. Рассмотрите случай, где u, и следовательно y, является постоянным. Затем существует бесконечно много k и b значения, которые удовлетворяют, y = k u + b. u (t) должен быть постоянно захватывающим система для успешной оценки k (t) и b (t). В этом примере, вход u:
нуль от t=0s до t=50s.
имеет ступенчатые изменения к 0,40, 0.45, 0.50, 0.55, 0.60, 0.55, 0.50, 0.45, 0,40 каждых 100 с, от t=50s до t=950s.
Гауссова случайная переменная с нулевым средним значением, 0,02 стандартных отклонения были добавлены на каждом временном шаге из t=50s до t=950s, чтобы обеспечить дополнительное возбуждение системной динамики в идентификационных целях.
Выход сгенерирован с вышеупомянутыми истинными значениями k (t), b (t) наряду с входным сигналом u (t), с помощью y (t) = k (t) u (t) + b (t) + e (t). e (t), шум измерения, является Гауссовой случайной переменной с нулевым средним и стандартным отклонением 0.05.
load LineFittingRLSExample u y k b t; figure(); subplot(2,1,1); plot(t,u); ylabel('Input signal, u, [unitless]'); subplot(2,1,2); plot(t,y); ylabel('Valve pressure, y, [bar]'); xlabel('Time [s]');
Запишите модель ввода - вывода клапана, использующую векторное обозначение:
где регрессоры и параметры должны быть оценены. e (t) является неизвестным шумом. Вы используете recursiveLS команду оценки, чтобы создать Системный объект для онлайновой оценки параметра. Вы затем используете команду шага, чтобы обновить оценки параметра, x (t), в каждый такт на основе H (t) и y (t).
Вы задаете следующие свойства recursiveLS System Object:
Количество параметров: 2.
EstimationMethod: 'ForgettingFactor' (значение по умолчанию). Этот метод имеет только один скалярный параметр, ForgettingFactor, который запрашивает ограниченную предшествующую информацию относительно значений параметров.
ForgettingFactor: 0.95. Параметры, как ожидают, будут варьироваться в зависимости от времени, следовательно меньше чем 1. количество прошлых выборок данных, которые влияют на оценки больше всего.
InitialParameters: [70;-15], исходное предположение для значений параметров. Дополнительный, но рекомендуемый для сокращения начальных переходных процессов.
InitialParameterCovariance: Ваша оценка неопределенности в начальном предположении параметра. Установите его на маленькое значение, 1% абсолютного значения начальных параметров, если вы уверены в начальных предположениях параметра. Дополнительный, но рекомендуемый, особенно когда вы задаете InitialParameters. Это только используется с методами оценки ForgettingFactor и KalmanFilter.
X = recursiveLS(2,... % 2=number of estimated parameters 'EstimationMethod','ForgettingFactor',... 'ForgettingFactor',0.95,... 'InitialParameters',[70; -15],... 'InitialParameterCovariance',[0.7 0.15]);
Этот пример симулирует онлайновую операцию средства оценки путем обеспечения одного (y (t), H (t)) пара к средству оценки за один раз. Вызовите команду шага, чтобы обновить параметры с каждой новой парой. Адаптация параметра включена только, когда вход u находится вне мертвой зоны (u> 0.3).
theta = zeros(numel(u),2); yHat = zeros(numel(u),1); PHat = zeros(numel(u),2,2); for kk=1:numel(u) % enable parameter estimation only when u is outside the dead-band if u(kk)>=0.3 X.EnableAdaptation = true(); else X.EnableAdaptation = false(); end [theta(kk,:),yHat(kk)] = step(X,y(kk),[u(kk) 1]); % get estimated parameters and output PHat(kk,:,:) = X.ParameterCovariance; % get estimated uncertainty in parameters % perform any desired tasks with the parameters end
Истинные и предполагаемые значения параметров:
figure(); subplot(2,1,1); plot(t,theta(:,1),t,k); % Estimated and real slope, respectively ylabel('Slope'); xlabel('Time'); ylim([49 71]); legend('Estimated','Real','Location','Best'); subplot(2,1,2); plot(t,theta(:,2),t,b); % Estimated and real offset, respectively ylabel('Offset'); xlabel('Time'); ylim([-15.25 -12.75]);
Средство оценки обеспечивает следующие два инструмента, чтобы судить качество оценок параметра:
Выведите оценку : Второй выходной аргумент метода шага . Относительная и абсолютная погрешность между и меры совершенства подгонки.
Оценка ковариации параметра : Это доступно с алгоритмами ForgettingFactor и KalmanFilter. Это хранится в свойстве ParameterCovarianceMatrix средства оценки. Диагонали предполагаемые отклонения параметров. Ниже лучше.
Выходное измерение и его оценка, а также связанные абсолютные и относительные погрешности, когда механизм работает:
engineOn = t>50 & t<950; figure(); subplot(2,1,1); absoluteError = y-yHat; plot(t(engineOn),absoluteError(engineOn)); ylim([-0.15 0.15]); ylabel('Abs. Error [bar]'); subplot(2,1,2); relativeError = (y-yHat)./y; plot(t(engineOn),relativeError(engineOn)); ylim([-0.025 0.025]); ylabel('Rel. Error [unitless]'); xlabel('Time [s]');
Абсолютные погрешности о 0.1bar. Относительные погрешности ниже 2%. Малы оба количества.
Диагонали ковариационной матрицы параметра, масштабируемой отклонением остаточных значений , получите отклонения оценок параметра. Квадратный корень отклонений является стандартными отклонениями оценок параметра.
noiseVariance = var(y(engineOn)-yHat(engineOn)); figure(); subplot(2,1,1); hold on; plot(t,sqrt(PHat(:,1,1)*noiseVariance)); ylim([0 1]); ylabel('Std. dev. of slope k'); subplot(2,1,2); plot(t,sqrt(PHat(:,2,2)*noiseVariance)); ylim([0 1]); ylabel('Std. dev. of offset b'); xlabel('Time [s]'); hold on;
Стандартное отклонение наклона k колеблется приблизительно 0,7. Это мало относительно области значений значений k [50, 70]. Это вселяет веру в оценках параметра. Ситуация похожа со смещением b, который находится в области значений [-15 - 13].
Обратите внимание на то, что стандартные отклонения параметра являются также оценками. Они основаны на предположении что остаточные значения являются белыми. Это зависит от метода оценки, его связанных параметров, структуры предполагаемой модели и входного сигнала u. Различия между принятым и фактической структурой модели, отсутствием персистентного входного возбуждения или нереалистичных настроек метода оценки могут привести к чрезмерно оптимистическим или пессимистическим оценкам неопределенности.
Вы выполнили подгонку линии использование рекурсивных наименьших квадратов, чтобы получить изменяющееся во времени поведение ввода - вывода гидравлического клапана. Вы оценили качество подгонки путем рассмотрения двух сигналов: ошибка между предполагаемой и измеренной системой выход и оценками ковариации параметра.
[1] Готье, Жан-Филипп и Филипп Мишо. "Упорядоченный RLS и DHOBE: адаптивный Feedforward для электромагнитного клапана". Технология систем управления, транзакции IEEE на 20,5 (2012): 1311-1318
recursiveAR
| recursiveARMA
| recursiveARX
| recursiveARMAX
| recursiveOE
| recursiveBJ
| recursiveLS
| step
| reset
| release
| isLocked
| clone