exponenta event banner

Более эффективные параметры линеаризации партий

В этом примере показано, как ускорить пакетную линеаризацию модели при изменении набора параметров модели.

При уменьшении времени линеаризации значения переменных параметров передаются в linearize функция. linearize избегает повторной компиляции модели, когда изменяемые параметры являются настраиваемыми параметрами. Наилучшие улучшения общего времени линеаризации относятся к моделям с большим временем обновления модели. Для выполнения этого примера необходимо программное обеспечение Aerospace Blockset™.

Модель установки

В этом примере выполняется линеаризация облегченной модели самолета. Дополнительные сведения об этой модели см. в разделе Облегченный дизайн самолетов (аэрокосмический блок).

Откройте модель.

mdl = 'scdskyhogg';
open_system(mdl)
io = getlinio(mdl);
op = operpoint(mdl);

Линеаризация модели по вызову linearize Несколько раз

В этом примере коэффициенты усиления контроллеров высоты и тангажа изменяются на +/- 10%.

Инициализация выигрышей контроллеров для изменения переменных рабочей области MATLAB ® k1 и k2.

open_system('scdskyhogg/Vehicle System Model/Avionics/Autopilot')
blks = {'scdskyhogg/Vehicle System Model/Avionics/Autopilot/Alt Controller';...
        'scdskyhogg/Vehicle System Model/Avionics/Autopilot/Theta Controller'};
set_param(blks{1},'Gain','0.0337283240400683*k1')
set_param(blks{2},'Gain','-261.8699347622*k2')

Варьировать значения k1 и k2 и линеаризовать модель 20 времена.

t = cputime;
for ct = 20:-1:1
    k1 = 1+(ct-10)/100;
    k2 = 1+(ct-10)/100;
    sys_forloop(:,:,ct) = linearize(mdl,op,io);
end

Просмотрите общее время вычисления 20 линеаризаций в секундах.

dt_for = cputime - t
dt_for =

   51.8000

Фактором, влияющим на это время, является общее время компиляции и оценки блоковых масок и разрешения параметров рабочей области. Чтобы определить узкие места в компиляции модели, используйте профилировщик MATLAB.

Линеаризация модели путем передачи значений параметров linearize

Передача значений параметров в linearizeукажите имена и значения параметров с помощью структуры.

ct = 1:20;
k1val = 1+(ct-10)/100;
k2val = 1+(ct-10)/100;

params(1).Name = 'k1';
params(1).Value = k1val;
params(2).Name = 'k2';
params(2).Value = k2val;

t = cputime;
sys_params = linearize(mdl,op,io,params);

Просмотр общего времени для вычисления 20 линеаризаций с одним вызовом linearize команда. В этом случае модель компилируется только один раз при изменении заданных параметров.

dt_params = cputime - t
dt_params =

   11.6200

Сравнить результаты

В этом примере изменение параметров не влияет на рабочую точку модели Simulink. Линеаризации, использующие оба подхода, эквивалентны.

bode(sys_forloop(:,:,1),sys_params(:,:,1))
legend('Linearization in FOR loop','Linearization using parameter structure')

Рассчитайте результирующий коэффициент улучшения времени.

ratio = dt_for/dt_params
ratio =

    4.4578

Закройте модель.

bdclose(mdl)