Оценка моделей процесса в командной строке

Необходимые условия

Прежде чем вы сможете выполнить эту задачу, вы должны иметь

Использование заготовки для оценки моделей процесса

Можно оценить модели процесса с помощью итерационного метода оценки procest что минимизирует ошибки предсказания, чтобы получить максимальные оценки правдоподобия. Получившиеся модели хранятся как idproc объекты модели.

Можно использовать следующий общий синтаксис, чтобы как сконфигурировать, так и оценить модели процесса:

m = procest(data,mod_struc,opt)

data - данные оценки и mod_struc является одним из следующих:

  • Вектор символов, который представляет структуру модели процесса, как описано в спецификации структуры модели процесса.

  • Шаблон idproc модель. opt является набором опций для конфигурирования оценки модели процесса, таким как обработка начальных условий, входного смещения и численного метода поиска.

Совет

Вам не нужно создавать объект модели используя idproc перед оценкой, если вы не хотите задать начальные догадки параметров, минимальные/максимальные границы или фиксированные значения параметров, как описано в Estimate Process Models with Fixed Parameters.

Для получения дополнительной информации о проверке модели процесса смотрите Валидация моделей после оценки.

Вы можете использовать procest для уточнения оценок параметров существующей модели процесса, как описано в Refine Linear Parametric Models.

Для получения дополнительной информации смотрите procest и idproc.

Оценка моделей процесса с свободными параметрами

В этом примере показано, как оценить параметры модели процесса первого порядка:

G(s)=Kp1+sTp1e-sTd

Этот процесс имеет два входов, и реакция от каждого входа оценивается моделью процесса первого порядка. Все параметры могут свободно варьироваться.

Данные оценки нагрузки.

load co2data

Задайте известные шаги расчета 0,5 мин.

Ts = 0.5;

Разделите набор данных на данные оценки ze и данные валидации zv.

ze = iddata(Output_exp1,Input_exp1,Ts,...
                        'TimeUnit','min');
zv = iddata(Output_exp2,Input_exp2,Ts,...
                        'TimeUnit','min');

Оцените модель с одним полюсом, задержкой и компонентом нарушения порядка первого порядка. Данные содержат известные смещения. Задайте их с помощью InputOffset и OutputOffset опции.

opt = procestOptions;
opt.InputOffset = [170;50];
opt.OutputOffset = -45;
opt.Display = 'on';
opt.DisturbanceModel = 'arma1';
m = procest(ze,'p1d',opt)
m =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2        
  From input "u1" to output "y1":                           
             Kp                                             
  G11(s) = ---------- * exp(-Td*s)                          
            1+Tp1*s                                         
                                                            
        Kp = 2.6553                                         
       Tp1 = 0.15515                                        
        Td = 2.3175                                         
                                                            
  From input "u2" to output "y1":                           
             Kp                                             
  G12(s) = ---------- * exp(-Td*s)                          
            1+Tp1*s                                         
                                                            
        Kp = 9.9756                                         
       Tp1 = 2.0653                                         
        Td = 4.9195                                         
                                                            
  An additive ARMA disturbance model exists for output "y1":
      y = G u + (C/D)e                                      
                                                            
      C(s) = s + 2.676                                      
      D(s) = s + 0.6228                                     
                                                            
Parameterization:
    {'P1D'}    {'P1D'}
   Number of free coefficients: 8
   Use "getpvec", "getcov" for parameters and their uncertainties.

Status:                                          
Estimated using PROCEST on time domain data "ze".
Fit to estimation data: 91.07% (prediction focus)
FPE: 2.431, MSE: 2.412                           

Используйте запись через точку, чтобы получить значение любого параметра модели. Для примера получите значение параметра усиления постоянного тока Kp .

m.Kp
ans = 1×2

    2.6553    9.9756

Оценка моделей процесса с фиксированными параметрами

Этот пример показывает, как оценить модель процесса с фиксированными параметрами.

Когда вы знаете значения определенных параметров в модели и хотите оценить только значения, которые вы не знаете, вы должны задать фиксированные параметры после создания idproc объект модели. Используйте следующие команды, чтобы подготовить данные и создать модель процесса с одним полюсом и задержкой:

Данные оценки нагрузки.

load co2data

Указание известного шага расчета составляет 0,5 минут.

Ts = 0.5;

Разделите набор данных на данные оценки ze и данные валидации zv.

ze = iddata(Output_exp1,Input_exp1,Ts,...
                        'TimeUnit','min');
zv = iddata(Output_exp2,Input_exp2,Ts,...
                        'TimeUnit','min');
mod = idproc({'p1d','p1d'},'TimeUnit','min')
mod =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2
  From input 1 to output 1:                         
             Kp                                     
  G11(s) = ---------- * exp(-Td*s)                  
            1+Tp1*s                                 
                                                    
        Kp = NaN                                    
       Tp1 = NaN                                    
        Td = NaN                                    
                                                    
  From input 2 to output 1:                         
             Kp                                     
  G12(s) = ---------- * exp(-Td*s)                  
            1+Tp1*s                                 
                                                    
        Kp = NaN                                    
       Tp1 = NaN                                    
        Td = NaN                                    
                                                    
Parameterization:
    {'P1D'}    {'P1D'}
   Number of free coefficients: 6
   Use "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                         
Created by direct construction or transformation. Not estimated.

Параметры модели Kp , Tp1 , и Td назначаются NaN значения, что означает, что параметры еще не были оценены из данных.

Используйте Structure свойство model для задания начальных догадок для неизвестных параметров, минимальных/максимальных границ параметра и фиксирования известных параметров.

Установите значение Kp для второй передаточной функции, чтобы 10 и задайте его как фиксированный параметр. Инициализируйте значения задержки для двух передаточных функций на 2 и 5 минуты соответственно. Задайте их как параметры свободной оценки.

mod.Structure(2).Kp.Value = 10;
mod.Structure(2).Kp.Free = false;

mod.Structure(1).Tp1.Value = 2;
mod.Structure(2).Td.Value = 5;

Оценка Tp1 и Td только.

mod_proc = procest(ze,mod)
mod_proc =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2
  From input "u1" to output "y1":                   
             Kp                                     
  G11(s) = ---------- * exp(-Td*s)                  
            1+Tp1*s                                 
                                                    
        Kp = -3.2213                                
       Tp1 = 2.1707                                 
        Td = 4.44                                   
                                                    
  From input "u2" to output "y1":                   
             Kp                                     
  G12(s) = ---------- * exp(-Td*s)                  
            1+Tp1*s                                 
                                                    
        Kp = 10                                     
       Tp1 = 2.0764                                 
        Td = 4.5205                                 
                                                    
Parameterization:
    {'P1D'}    {'P1D'}
   Number of free coefficients: 5
   Use "getpvec", "getcov" for parameters and their uncertainties.

Status:                                          
Estimated using PROCEST on time domain data "ze".
Fit to estimation data: 77.44%                   
FPE: 15.5, MSE: 15.39                            

В этом случае значение Kp исправлен, но Tp1 и Td рассчитаны.

См. также

|

Похожие темы