Мультиклассовое обнаружение неисправностей с использованием смоделированных данных

В этом примере показано, как использовать модель Simulink, чтобы сгенерировать отказ и здоровые данные. Данные используются, чтобы разработать классификатор мультикласса, чтобы обнаружить различные комбинации отказов. Пример использует тройную модель поршневого насоса и включает утечку, блокирование и подшипник отказов.

Настройка модели

Этот пример использует много вспомогательных файлов, которые хранятся в zip-файле. Разархивируйте файл, чтобы получить доступ к вспомогательным файлам, загрузить параметры модели и создать библиотеку поршневого насоса.

if ~exist('+mech_hydro_forcesPS','dir')
    unzip('pdmRecipPump_supportingfiles.zip')
end

% Load Parameters
pdmRecipPump_Parameters %Pump
CAT_Pump_1051_DataFile_imported %CAD

% Create Simscape library if needed
if exist('mech_hydro_forcesPS_Lib','file')~=4
    ssc_build mech_hydro_forcesPS
end
Generating Simulink library 'mech_hydro_forcesPS_lib' in the current directory 'C:\Users\anagar\OneDrive - MathWorks\Desktop\Predictive Project\RUL using DL\MultiFaultDetectionExample\ExampleManager\anagar.doc2\predmaint-ex92746726' ...

Модель поршневого насоса

Поршневой насос состоит из электродвигателя, корпуса насоса, кривошипа насоса и поршней насоса.

mdl = 'pdmRecipPump';
open_system(mdl)

open_system([mdl,'/Pump'])

Модель насоса сконфигурирована, чтобы смоделировать три типа отказов; цилиндрические утечки, блокированный вход и увеличенное трение подшипника. Эти отказы параметрируются как переменные рабочей области и конфигурируются через диалоговое окно блока насоса.

Симуляция отказа и здоровых данных

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

% Define fault parameter variations
numParValues = 10;
leak_area_set_factor = linspace(0.00,0.036,numParValues);
leak_area_set = leak_area_set_factor*TRP_Par.Check_Valve.In.Max_Area;
leak_area_set = max(leak_area_set,1e-9); % Leakage area cannot be 0
blockinfactor_set = linspace(0.8,0.53,numParValues);
bearingfactor_set = linspace(0,6e-4,numParValues);

Модель насоса сконфигурирована, чтобы включать шум, таким образом запущение модели с теми же значениями параметров отказа приведет к различной симуляции выходные параметры. Это полезно для разработки классификатора, когда это означает, что может быть несколько результатов симуляции для того же условия отказа и серьезности. Чтобы конфигурировать моделирование для таких результатов, создайте векторы из значений параметров отказа, где значения не представляют отказов, одиночного отказа, комбинаций двух отказов и комбинаций трех отказов. Для каждой группы (никакой отказ, одиночный отказ, и т.д.) создают 125 комбинаций значений отказа от значений параметров отказа, заданных выше. Это дает в общей сложности 1 000 комбинаций значений параметров отказа. Обратите внимание на то, что выполнение этих 1 000 параллельных симуляций занимает приблизительно час на стандартном рабочем столе и генерирует приблизительно 620 МБ данных. Чтобы уменьшать время симуляции, сократите количество комбинаций отказа к 20 путем изменения runAll = true к runAll = false. Обратите внимание на то, что больший набор данных приводит к более устойчивому классификатору.

% Set number of elements in each fault group
runAll = true; 
if runAll
    % Create a large dataset to build a robust classifier
    nPerGroup = 100; 
else
    % Create a smaller dataset to reduce simulation time
    nPerGroup = 20; %#ok<UNRCH> 
end

rng('default');    % Feed default seed to rng (Random number generator)

% No fault simulations
leakArea = repmat(leak_area_set(1),nPerGroup,1);
blockingFactor = repmat(blockinfactor_set(1),nPerGroup,1);
bearingFactor = repmat(bearingfactor_set(1),nPerGroup,1);

% Single fault simulations
idx = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; leak_area_set(idx)'];
blockingFactor = [blockingFactor;repmat(blockinfactor_set(1),nPerGroup,1)];
bearingFactor = [bearingFactor;repmat(bearingfactor_set(1),nPerGroup,1)];
idx = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; repmat(leak_area_set(1),nPerGroup,1)];
blockingFactor = [blockingFactor;blockinfactor_set(idx)'];
bearingFactor = [bearingFactor;repmat(bearingfactor_set(1),nPerGroup,1)];
idx = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; repmat(leak_area_set(1),nPerGroup,1)];
blockingFactor = [blockingFactor;repmat(blockinfactor_set(1),nPerGroup,1)];
bearingFactor = [bearingFactor;bearingfactor_set(idx)'];

% Double fault simulations
idxA = ceil(10*rand(nPerGroup,1));
idxB = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; leak_area_set(idxA)'];
blockingFactor = [blockingFactor;blockinfactor_set(idxB)'];
bearingFactor = [bearingFactor;repmat(bearingfactor_set(1),nPerGroup,1)];
idxA = ceil(10*rand(nPerGroup,1));
idxB = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; leak_area_set(idxA)'];
blockingFactor = [blockingFactor;repmat(blockinfactor_set(1),nPerGroup,1)];
bearingFactor = [bearingFactor;bearingfactor_set(idxB)'];
idxA = ceil(10*rand(nPerGroup,1));
idxB = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; repmat(leak_area_set(1),nPerGroup,1)];
blockingFactor = [blockingFactor;blockinfactor_set(idxA)'];
bearingFactor = [bearingFactor;bearingfactor_set(idxB)'];

% Triple fault simulations
idxA = ceil(10*rand(nPerGroup,1));
idxB = ceil(10*rand(nPerGroup,1));
idxC = ceil(10*rand(nPerGroup,1));
leakArea = [leakArea; leak_area_set(idxA)'];
blockingFactor = [blockingFactor;blockinfactor_set(idxB)'];
bearingFactor = [bearingFactor;bearingfactor_set(idxC)'];

Используйте комбинации параметра отказа, чтобы создать Simulink.SimulationInput объекты. Для каждой симуляции вход гарантирует, что случайный seed собирается по-другому сгенерировать различные результаты.

for ct = numel(leakArea):-1:1
    simInput(ct) = Simulink.SimulationInput(mdl);
    simInput(ct) = setVariable(simInput(ct),'leak_cyl_area_WKSP',leakArea(ct));
    simInput(ct) = setVariable(simInput(ct),'block_in_factor_WKSP',blockingFactor(ct));
    simInput(ct) = setVariable(simInput(ct),'bearing_fault_frict_WKSP',bearingFactor(ct));
    simInput(ct) = setVariable(simInput(ct),'noise_seed_offset_WKSP',ct-1);
end

Используйте generateSimulationEnsemble функционируйте, чтобы запустить симуляции, заданные Simulink.SimulationInput объекты, заданные выше и хранилище результаты в локальной подпапке. Затем создайте simulationEnsembleDatastore от сохраненных результатов.

% Run the simulation and create an ensemble to manage the simulation
% results

if isfolder('./Data')
    % Delete existing mat files
    delete('./Data/*.mat')
end   

[ok,e] = generateSimulationEnsemble(simInput,fullfile('.','Data'),'UseParallel',true);
[28-Jun-2021 13:38:31] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'local' profile ...
Preserving jobs with IDs: 1 because they contain crash dump files.
You can use 'delete(myCluster.Jobs)' to remove all jobs created with profile local. To create 'myCluster' use 'myCluster = parcluster('local')'.
Connected to the parallel pool (number of workers: 6).
[28-Jun-2021 13:39:52] Starting Simulink on parallel workers...
[28-Jun-2021 13:41:17] Configuring simulation cache folder on parallel workers...
[28-Jun-2021 13:41:18] Transferring base workspace variables used in the model to parallel workers...
[28-Jun-2021 13:41:19] Loading model on parallel workers...
[28-Jun-2021 13:41:43] Running simulations...
[28-Jun-2021 13:43:07] Completed 1 of 800 simulation runs
[28-Jun-2021 13:43:07] Completed 2 of 800 simulation runs
[28-Jun-2021 13:43:08] Completed 3 of 800 simulation runs
[28-Jun-2021 13:43:08] Completed 4 of 800 simulation runs
[28-Jun-2021 13:43:09] Completed 5 of 800 simulation runs
[28-Jun-2021 13:43:09] Completed 6 of 800 simulation runs
[28-Jun-2021 13:43:32] Completed 7 of 800 simulation runs
[28-Jun-2021 13:43:33] Completed 8 of 800 simulation runs
[28-Jun-2021 13:43:33] Completed 9 of 800 simulation runs
[28-Jun-2021 13:43:34] Completed 10 of 800 simulation runs
[28-Jun-2021 13:43:34] Completed 11 of 800 simulation runs
[28-Jun-2021 13:43:35] Completed 12 of 800 simulation runs
[28-Jun-2021 13:43:58] Completed 13 of 800 simulation runs
[28-Jun-2021 13:43:59] Completed 14 of 800 simulation runs
[28-Jun-2021 13:43:59] Completed 15 of 800 simulation runs
[28-Jun-2021 13:44:00] Completed 16 of 800 simulation runs
[28-Jun-2021 13:44:00] Completed 17 of 800 simulation runs
[28-Jun-2021 13:44:01] Completed 18 of 800 simulation runs
[28-Jun-2021 13:44:24] Completed 19 of 800 simulation runs
[28-Jun-2021 13:44:24] Completed 20 of 800 simulation runs
[28-Jun-2021 13:44:25] Completed 21 of 800 simulation runs
[28-Jun-2021 13:44:26] Completed 22 of 800 simulation runs
[28-Jun-2021 13:44:26] Completed 23 of 800 simulation runs
[28-Jun-2021 13:44:27] Completed 24 of 800 simulation runs
[28-Jun-2021 13:44:49] Completed 25 of 800 simulation runs
[28-Jun-2021 13:44:50] Completed 26 of 800 simulation runs
[28-Jun-2021 13:44:50] Completed 27 of 800 simulation runs
[28-Jun-2021 13:44:51] Completed 28 of 800 simulation runs
[28-Jun-2021 13:44:51] Completed 29 of 800 simulation runs
[28-Jun-2021 13:44:52] Completed 30 of 800 simulation runs
[28-Jun-2021 13:45:15] Completed 31 of 800 simulation runs
[28-Jun-2021 13:45:16] Completed 32 of 800 simulation runs
[28-Jun-2021 13:45:16] Completed 33 of 800 simulation runs
[28-Jun-2021 13:45:17] Completed 34 of 800 simulation runs
[28-Jun-2021 13:45:17] Completed 35 of 800 simulation runs
[28-Jun-2021 13:45:18] Completed 36 of 800 simulation runs
[28-Jun-2021 13:45:41] Completed 37 of 800 simulation runs
[28-Jun-2021 13:45:42] Completed 38 of 800 simulation runs
[28-Jun-2021 13:45:42] Completed 39 of 800 simulation runs
[28-Jun-2021 13:45:42] Completed 40 of 800 simulation runs
[28-Jun-2021 13:45:43] Completed 41 of 800 simulation runs
[28-Jun-2021 13:45:43] Completed 42 of 800 simulation runs
[28-Jun-2021 13:46:11] Completed 43 of 800 simulation runs
[28-Jun-2021 13:46:11] Completed 44 of 800 simulation runs
[28-Jun-2021 13:46:12] Completed 45 of 800 simulation runs
[28-Jun-2021 13:46:12] Completed 46 of 800 simulation runs
[28-Jun-2021 13:46:13] Completed 47 of 800 simulation runs
[28-Jun-2021 13:46:13] Completed 48 of 800 simulation runs
[28-Jun-2021 13:46:32] Completed 49 of 800 simulation runs
[28-Jun-2021 13:46:36] Completed 50 of 800 simulation runs
[28-Jun-2021 13:46:36] Completed 51 of 800 simulation runs
[28-Jun-2021 13:46:37] Completed 52 of 800 simulation runs
[28-Jun-2021 13:46:37] Completed 53 of 800 simulation runs
[28-Jun-2021 13:46:38] Completed 54 of 800 simulation runs
[28-Jun-2021 13:46:58] Completed 55 of 800 simulation runs
[28-Jun-2021 13:47:00] Completed 56 of 800 simulation runs
[28-Jun-2021 13:47:01] Completed 57 of 800 simulation runs
[28-Jun-2021 13:47:01] Completed 58 of 800 simulation runs
[28-Jun-2021 13:47:02] Completed 59 of 800 simulation runs
[28-Jun-2021 13:47:02] Completed 60 of 800 simulation runs
[28-Jun-2021 13:47:25] Completed 61 of 800 simulation runs
[28-Jun-2021 13:47:26] Completed 62 of 800 simulation runs
[28-Jun-2021 13:47:26] Completed 63 of 800 simulation runs
[28-Jun-2021 13:47:27] Completed 64 of 800 simulation runs
[28-Jun-2021 13:47:27] Completed 65 of 800 simulation runs
[28-Jun-2021 13:47:28] Completed 66 of 800 simulation runs
[28-Jun-2021 13:47:50] Completed 67 of 800 simulation runs
[28-Jun-2021 13:47:51] Completed 68 of 800 simulation runs
[28-Jun-2021 13:47:51] Completed 69 of 800 simulation runs
[28-Jun-2021 13:47:52] Completed 70 of 800 simulation runs
[28-Jun-2021 13:47:52] Completed 71 of 800 simulation runs
[28-Jun-2021 13:47:53] Completed 72 of 800 simulation runs
[28-Jun-2021 13:48:14] Completed 73 of 800 simulation runs
[28-Jun-2021 13:48:14] Completed 74 of 800 simulation runs
[28-Jun-2021 13:48:15] Completed 75 of 800 simulation runs
[28-Jun-2021 13:48:15] Completed 76 of 800 simulation runs
[28-Jun-2021 13:48:16] Completed 77 of 800 simulation runs
[28-Jun-2021 13:48:17] Completed 78 of 800 simulation runs
[28-Jun-2021 13:48:37] Completed 79 of 800 simulation runs
[28-Jun-2021 13:48:38] Completed 80 of 800 simulation runs
[28-Jun-2021 13:48:38] Completed 81 of 800 simulation runs
[28-Jun-2021 13:48:39] Completed 82 of 800 simulation runs
[28-Jun-2021 13:48:40] Completed 83 of 800 simulation runs
[28-Jun-2021 13:48:40] Completed 84 of 800 simulation runs
[28-Jun-2021 13:49:01] Completed 85 of 800 simulation runs
[28-Jun-2021 13:49:02] Completed 86 of 800 simulation runs
[28-Jun-2021 13:49:02] Completed 87 of 800 simulation runs
[28-Jun-2021 13:49:03] Completed 88 of 800 simulation runs
[28-Jun-2021 13:49:03] Completed 89 of 800 simulation runs
[28-Jun-2021 13:49:04] Completed 90 of 800 simulation runs
[28-Jun-2021 13:49:24] Completed 91 of 800 simulation runs
[28-Jun-2021 13:49:25] Completed 92 of 800 simulation runs
[28-Jun-2021 13:49:25] Completed 93 of 800 simulation runs
[28-Jun-2021 13:49:26] Completed 94 of 800 simulation runs
[28-Jun-2021 13:49:26] Completed 95 of 800 simulation runs
[28-Jun-2021 13:49:27] Completed 96 of 800 simulation runs
[28-Jun-2021 13:49:48] Completed 97 of 800 simulation runs
[28-Jun-2021 13:49:48] Completed 98 of 800 simulation runs
[28-Jun-2021 13:49:49] Completed 99 of 800 simulation runs
[28-Jun-2021 13:49:49] Completed 100 of 800 simulation runs
[28-Jun-2021 13:49:50] Completed 101 of 800 simulation runs
[28-Jun-2021 13:49:50] Completed 102 of 800 simulation runs
[28-Jun-2021 13:50:11] Completed 103 of 800 simulation runs
[28-Jun-2021 13:50:12] Completed 104 of 800 simulation runs
[28-Jun-2021 13:50:12] Completed 105 of 800 simulation runs
[28-Jun-2021 13:50:13] Completed 106 of 800 simulation runs
[28-Jun-2021 13:50:13] Completed 107 of 800 simulation runs
[28-Jun-2021 13:50:14] Completed 108 of 800 simulation runs
[28-Jun-2021 13:50:33] Completed 109 of 800 simulation runs
[28-Jun-2021 13:50:34] Completed 110 of 800 simulation runs
[28-Jun-2021 13:50:34] Completed 111 of 800 simulation runs
[28-Jun-2021 13:50:35] Completed 112 of 800 simulation runs
[28-Jun-2021 13:50:35] Completed 113 of 800 simulation runs
[28-Jun-2021 13:50:36] Completed 114 of 800 simulation runs
[28-Jun-2021 13:50:55] Completed 115 of 800 simulation runs
[28-Jun-2021 13:50:56] Completed 116 of 800 simulation runs
[28-Jun-2021 13:50:57] Completed 117 of 800 simulation runs
[28-Jun-2021 13:50:57] Completed 118 of 800 simulation runs
[28-Jun-2021 13:50:58] Completed 119 of 800 simulation runs
[28-Jun-2021 13:50:59] Completed 120 of 800 simulation runs
[28-Jun-2021 13:51:18] Completed 121 of 800 simulation runs
[28-Jun-2021 13:51:19] Completed 122 of 800 simulation runs
[28-Jun-2021 13:51:19] Completed 123 of 800 simulation runs
[28-Jun-2021 13:51:20] Completed 124 of 800 simulation runs
[28-Jun-2021 13:51:21] Completed 125 of 800 simulation runs
[28-Jun-2021 13:51:21] Completed 126 of 800 simulation runs
[28-Jun-2021 13:51:42] Completed 127 of 800 simulation runs
[28-Jun-2021 13:51:43] Completed 128 of 800 simulation runs
[28-Jun-2021 13:51:44] Completed 129 of 800 simulation runs
[28-Jun-2021 13:51:44] Completed 130 of 800 simulation runs
[28-Jun-2021 13:51:45] Completed 131 of 800 simulation runs
[28-Jun-2021 13:51:46] Completed 132 of 800 simulation runs
[28-Jun-2021 13:52:06] Completed 133 of 800 simulation runs
[28-Jun-2021 13:52:07] Completed 134 of 800 simulation runs
[28-Jun-2021 13:52:07] Completed 135 of 800 simulation runs
[28-Jun-2021 13:52:08] Completed 136 of 800 simulation runs
[28-Jun-2021 13:52:09] Completed 137 of 800 simulation runs
[28-Jun-2021 13:52:09] Completed 138 of 800 simulation runs
[28-Jun-2021 13:52:29] Completed 139 of 800 simulation runs
[28-Jun-2021 13:52:30] Completed 140 of 800 simulation runs
[28-Jun-2021 13:52:31] Completed 141 of 800 simulation runs
[28-Jun-2021 13:52:31] Completed 142 of 800 simulation runs
[28-Jun-2021 13:52:32] Completed 143 of 800 simulation runs
[28-Jun-2021 13:52:33] Completed 144 of 800 simulation runs
[28-Jun-2021 13:52:52] Completed 145 of 800 simulation runs
[28-Jun-2021 13:52:53] Completed 146 of 800 simulation runs
[28-Jun-2021 13:52:54] Completed 147 of 800 simulation runs
[28-Jun-2021 13:52:54] Completed 148 of 800 simulation runs
[28-Jun-2021 13:52:55] Completed 149 of 800 simulation runs
[28-Jun-2021 13:52:56] Completed 150 of 800 simulation runs
[28-Jun-2021 13:53:15] Completed 151 of 800 simulation runs
[28-Jun-2021 13:53:16] Completed 152 of 800 simulation runs
[28-Jun-2021 13:53:16] Completed 153 of 800 simulation runs
[28-Jun-2021 13:53:17] Completed 154 of 800 simulation runs
[28-Jun-2021 13:53:18] Completed 155 of 800 simulation runs
[28-Jun-2021 13:53:18] Completed 156 of 800 simulation runs
[28-Jun-2021 13:53:37] Completed 157 of 800 simulation runs
[28-Jun-2021 13:53:38] Completed 158 of 800 simulation runs
[28-Jun-2021 13:53:39] Completed 159 of 800 simulation runs
[28-Jun-2021 13:53:39] Completed 160 of 800 simulation runs
[28-Jun-2021 13:53:40] Completed 161 of 800 simulation runs
[28-Jun-2021 13:53:41] Completed 162 of 800 simulation runs
[28-Jun-2021 13:54:00] Completed 163 of 800 simulation runs
[28-Jun-2021 13:54:01] Completed 164 of 800 simulation runs
[28-Jun-2021 13:54:01] Completed 165 of 800 simulation runs
[28-Jun-2021 13:54:02] Completed 166 of 800 simulation runs
[28-Jun-2021 13:54:03] Completed 167 of 800 simulation runs
[28-Jun-2021 13:54:04] Completed 168 of 800 simulation runs
[28-Jun-2021 13:54:23] Completed 169 of 800 simulation runs
[28-Jun-2021 13:54:24] Completed 170 of 800 simulation runs
[28-Jun-2021 13:54:25] Completed 171 of 800 simulation runs
[28-Jun-2021 13:54:26] Completed 172 of 800 simulation runs
[28-Jun-2021 13:54:26] Completed 173 of 800 simulation runs
[28-Jun-2021 13:54:27] Completed 174 of 800 simulation runs
[28-Jun-2021 13:54:46] Completed 175 of 800 simulation runs
[28-Jun-2021 13:54:47] Completed 176 of 800 simulation runs
[28-Jun-2021 13:54:48] Completed 177 of 800 simulation runs
[28-Jun-2021 13:54:48] Completed 178 of 800 simulation runs
[28-Jun-2021 13:54:49] Completed 179 of 800 simulation runs
[28-Jun-2021 13:54:50] Completed 180 of 800 simulation runs
[28-Jun-2021 13:55:09] Completed 181 of 800 simulation runs
[28-Jun-2021 13:55:10] Completed 182 of 800 simulation runs
[28-Jun-2021 13:55:11] Completed 183 of 800 simulation runs
[28-Jun-2021 13:55:11] Completed 184 of 800 simulation runs
[28-Jun-2021 13:55:12] Completed 185 of 800 simulation runs
[28-Jun-2021 13:55:13] Completed 186 of 800 simulation runs
[28-Jun-2021 13:55:32] Completed 187 of 800 simulation runs
[28-Jun-2021 13:55:33] Completed 188 of 800 simulation runs
[28-Jun-2021 13:55:34] Completed 189 of 800 simulation runs
[28-Jun-2021 13:55:34] Completed 190 of 800 simulation runs
[28-Jun-2021 13:55:35] Completed 191 of 800 simulation runs
[28-Jun-2021 13:55:36] Completed 192 of 800 simulation runs
[28-Jun-2021 13:55:56] Completed 193 of 800 simulation runs
[28-Jun-2021 13:55:56] Completed 194 of 800 simulation runs
[28-Jun-2021 13:55:57] Completed 195 of 800 simulation runs
[28-Jun-2021 13:55:58] Completed 196 of 800 simulation runs
[28-Jun-2021 13:55:59] Completed 197 of 800 simulation runs
[28-Jun-2021 13:55:59] Completed 198 of 800 simulation runs
[28-Jun-2021 13:56:19] Completed 199 of 800 simulation runs
[28-Jun-2021 13:56:20] Completed 200 of 800 simulation runs
[28-Jun-2021 13:56:21] Completed 201 of 800 simulation runs
[28-Jun-2021 13:56:22] Completed 202 of 800 simulation runs
[28-Jun-2021 13:56:23] Completed 203 of 800 simulation runs
[28-Jun-2021 13:56:24] Completed 204 of 800 simulation runs
[28-Jun-2021 13:56:44] Completed 205 of 800 simulation runs
[28-Jun-2021 13:56:46] Completed 206 of 800 simulation runs
[28-Jun-2021 13:56:47] Completed 207 of 800 simulation runs
[28-Jun-2021 13:56:48] Completed 208 of 800 simulation runs
[28-Jun-2021 13:56:49] Completed 209 of 800 simulation runs
[28-Jun-2021 13:56:50] Completed 210 of 800 simulation runs
[28-Jun-2021 13:57:10] Completed 211 of 800 simulation runs
[28-Jun-2021 13:57:11] Completed 212 of 800 simulation runs
[28-Jun-2021 13:57:12] Completed 213 of 800 simulation runs
[28-Jun-2021 13:57:13] Completed 214 of 800 simulation runs
[28-Jun-2021 13:57:14] Completed 215 of 800 simulation runs
[28-Jun-2021 13:57:14] Completed 216 of 800 simulation runs
[28-Jun-2021 13:57:35] Completed 217 of 800 simulation runs
[28-Jun-2021 13:57:36] Completed 218 of 800 simulation runs
[28-Jun-2021 13:57:37] Completed 219 of 800 simulation runs
[28-Jun-2021 13:57:38] Completed 220 of 800 simulation runs
[28-Jun-2021 13:57:39] Completed 221 of 800 simulation runs
[28-Jun-2021 13:57:40] Completed 222 of 800 simulation runs
[28-Jun-2021 13:57:56] Completed 223 of 800 simulation runs
[28-Jun-2021 13:57:59] Completed 224 of 800 simulation runs
[28-Jun-2021 13:58:01] Completed 225 of 800 simulation runs
[28-Jun-2021 13:58:02] Completed 226 of 800 simulation runs
[28-Jun-2021 13:58:03] Completed 227 of 800 simulation runs
[28-Jun-2021 13:58:04] Completed 228 of 800 simulation runs
[28-Jun-2021 13:58:21] Completed 229 of 800 simulation runs
[28-Jun-2021 13:58:26] Completed 230 of 800 simulation runs
[28-Jun-2021 13:58:27] Completed 231 of 800 simulation runs
[28-Jun-2021 13:58:28] Completed 232 of 800 simulation runs
[28-Jun-2021 13:58:29] Completed 233 of 800 simulation runs
[28-Jun-2021 13:58:30] Completed 234 of 800 simulation runs
[28-Jun-2021 13:58:45] Completed 235 of 800 simulation runs
[28-Jun-2021 13:58:46] Completed 236 of 800 simulation runs
[28-Jun-2021 13:58:50] Completed 237 of 800 simulation runs
[28-Jun-2021 13:58:51] Completed 238 of 800 simulation runs
[28-Jun-2021 13:58:52] Completed 239 of 800 simulation runs
[28-Jun-2021 13:58:53] Completed 240 of 800 simulation runs
[28-Jun-2021 13:59:11] Completed 241 of 800 simulation runs
[28-Jun-2021 13:59:12] Completed 242 of 800 simulation runs
[28-Jun-2021 13:59:14] Completed 243 of 800 simulation runs
[28-Jun-2021 13:59:15] Completed 244 of 800 simulation runs
[28-Jun-2021 13:59:16] Completed 245 of 800 simulation runs
[28-Jun-2021 13:59:17] Completed 246 of 800 simulation runs
[28-Jun-2021 13:59:35] Completed 247 of 800 simulation runs
[28-Jun-2021 13:59:36] Completed 248 of 800 simulation runs
[28-Jun-2021 13:59:37] Completed 249 of 800 simulation runs
[28-Jun-2021 13:59:38] Completed 250 of 800 simulation runs
[28-Jun-2021 13:59:39] Completed 251 of 800 simulation runs
[28-Jun-2021 13:59:40] Completed 252 of 800 simulation runs
[28-Jun-2021 14:00:02] Completed 253 of 800 simulation runs
[28-Jun-2021 14:00:03] Completed 254 of 800 simulation runs
[28-Jun-2021 14:00:04] Completed 255 of 800 simulation runs
[28-Jun-2021 14:00:05] Completed 256 of 800 simulation runs
[28-Jun-2021 14:00:06] Completed 257 of 800 simulation runs
[28-Jun-2021 14:00:07] Completed 258 of 800 simulation runs
[28-Jun-2021 14:00:26] Completed 259 of 800 simulation runs
[28-Jun-2021 14:00:27] Completed 260 of 800 simulation runs
[28-Jun-2021 14:00:28] Completed 261 of 800 simulation runs
[28-Jun-2021 14:00:29] Completed 262 of 800 simulation runs
[28-Jun-2021 14:00:30] Completed 263 of 800 simulation runs
[28-Jun-2021 14:00:31] Completed 264 of 800 simulation runs
[28-Jun-2021 14:00:49] Completed 265 of 800 simulation runs
[28-Jun-2021 14:00:50] Completed 266 of 800 simulation runs
[28-Jun-2021 14:00:53] Completed 267 of 800 simulation runs
[28-Jun-2021 14:00:54] Completed 268 of 800 simulation runs
[28-Jun-2021 14:00:55] Completed 269 of 800 simulation runs
[28-Jun-2021 14:00:56] Completed 270 of 800 simulation runs
[28-Jun-2021 14:01:13] Completed 271 of 800 simulation runs
[28-Jun-2021 14:01:14] Completed 272 of 800 simulation runs
[28-Jun-2021 14:01:18] Completed 273 of 800 simulation runs
[28-Jun-2021 14:01:19] Completed 274 of 800 simulation runs
[28-Jun-2021 14:01:20] Completed 275 of 800 simulation runs
[28-Jun-2021 14:01:21] Completed 276 of 800 simulation runs
[28-Jun-2021 14:01:39] Completed 277 of 800 simulation runs
[28-Jun-2021 14:01:40] Completed 278 of 800 simulation runs
[28-Jun-2021 14:01:41] Completed 279 of 800 simulation runs
[28-Jun-2021 14:01:42] Completed 280 of 800 simulation runs
[28-Jun-2021 14:01:43] Completed 281 of 800 simulation runs
[28-Jun-2021 14:01:44] Completed 282 of 800 simulation runs
[28-Jun-2021 14:02:05] Completed 283 of 800 simulation runs
[28-Jun-2021 14:02:06] Completed 284 of 800 simulation runs
[28-Jun-2021 14:02:07] Completed 285 of 800 simulation runs
[28-Jun-2021 14:02:08] Completed 286 of 800 simulation runs
[28-Jun-2021 14:02:09] Completed 287 of 800 simulation runs
[28-Jun-2021 14:02:10] Completed 288 of 800 simulation runs
[28-Jun-2021 14:02:28] Completed 289 of 800 simulation runs
[28-Jun-2021 14:02:29] Completed 290 of 800 simulation runs
[28-Jun-2021 14:02:30] Completed 291 of 800 simulation runs
[28-Jun-2021 14:02:32] Completed 292 of 800 simulation runs
[28-Jun-2021 14:02:33] Completed 293 of 800 simulation runs
[28-Jun-2021 14:02:34] Completed 294 of 800 simulation runs
[28-Jun-2021 14:02:51] Completed 295 of 800 simulation runs
[28-Jun-2021 14:02:52] Completed 296 of 800 simulation runs
[28-Jun-2021 14:02:53] Completed 297 of 800 simulation runs
[28-Jun-2021 14:02:54] Completed 298 of 800 simulation runs
[28-Jun-2021 14:02:56] Completed 299 of 800 simulation runs
[28-Jun-2021 14:02:57] Completed 300 of 800 simulation runs
[28-Jun-2021 14:03:07] Completed 301 of 800 simulation runs
[28-Jun-2021 14:03:10] Completed 302 of 800 simulation runs
[28-Jun-2021 14:03:10] Completed 303 of 800 simulation runs
[28-Jun-2021 14:03:11] Completed 304 of 800 simulation runs
[28-Jun-2021 14:03:13] Completed 305 of 800 simulation runs
[28-Jun-2021 14:03:14] Completed 306 of 800 simulation runs
[28-Jun-2021 14:03:21] Completed 307 of 800 simulation runs
[28-Jun-2021 14:03:23] Completed 308 of 800 simulation runs
[28-Jun-2021 14:03:24] Completed 309 of 800 simulation runs
[28-Jun-2021 14:03:25] Completed 310 of 800 simulation runs
[28-Jun-2021 14:03:28] Completed 311 of 800 simulation runs
[28-Jun-2021 14:03:30] Completed 312 of 800 simulation runs
[28-Jun-2021 14:03:38] Completed 313 of 800 simulation runs
[28-Jun-2021 14:03:41] Completed 314 of 800 simulation runs
[28-Jun-2021 14:03:42] Completed 315 of 800 simulation runs
[28-Jun-2021 14:03:45] Completed 316 of 800 simulation runs
[28-Jun-2021 14:03:46] Completed 317 of 800 simulation runs
[28-Jun-2021 14:03:51] Completed 318 of 800 simulation runs
[28-Jun-2021 14:03:57] Completed 319 of 800 simulation runs
[28-Jun-2021 14:03:58] Completed 320 of 800 simulation runs
[28-Jun-2021 14:03:59] Completed 321 of 800 simulation runs
[28-Jun-2021 14:04:00] Completed 322 of 800 simulation runs
[28-Jun-2021 14:04:02] Completed 323 of 800 simulation runs
[28-Jun-2021 14:04:12] Completed 324 of 800 simulation runs
[28-Jun-2021 14:04:13] Completed 325 of 800 simulation runs
[28-Jun-2021 14:04:14] Completed 326 of 800 simulation runs
[28-Jun-2021 14:04:15] Completed 327 of 800 simulation runs
[28-Jun-2021 14:04:19] Completed 328 of 800 simulation runs
[28-Jun-2021 14:04:20] Completed 329 of 800 simulation runs
[28-Jun-2021 14:04:23] Completed 330 of 800 simulation runs
[28-Jun-2021 14:04:26] Completed 331 of 800 simulation runs
[28-Jun-2021 14:04:30] Completed 332 of 800 simulation runs
[28-Jun-2021 14:04:31] Completed 333 of 800 simulation runs
[28-Jun-2021 14:04:33] Completed 334 of 800 simulation runs
[28-Jun-2021 14:04:38] Completed 335 of 800 simulation runs
[28-Jun-2021 14:04:44] Completed 336 of 800 simulation runs
[28-Jun-2021 14:04:45] Completed 337 of 800 simulation runs
[28-Jun-2021 14:04:47] Completed 338 of 800 simulation runs
[28-Jun-2021 14:04:48] Completed 339 of 800 simulation runs
[28-Jun-2021 14:04:49] Completed 340 of 800 simulation runs
[28-Jun-2021 14:05:01] Completed 341 of 800 simulation runs
[28-Jun-2021 14:05:03] Completed 342 of 800 simulation runs
[28-Jun-2021 14:05:04] Completed 343 of 800 simulation runs
[28-Jun-2021 14:05:09] Completed 344 of 800 simulation runs
[28-Jun-2021 14:05:11] Completed 345 of 800 simulation runs
[28-Jun-2021 14:05:12] Completed 346 of 800 simulation runs
[28-Jun-2021 14:05:14] Completed 347 of 800 simulation runs
[28-Jun-2021 14:05:16] Completed 348 of 800 simulation runs
[28-Jun-2021 14:05:19] Completed 349 of 800 simulation runs
[28-Jun-2021 14:05:21] Completed 350 of 800 simulation runs
[28-Jun-2021 14:05:22] Completed 351 of 800 simulation runs
[28-Jun-2021 14:05:25] Completed 352 of 800 simulation runs
[28-Jun-2021 14:05:30] Completed 353 of 800 simulation runs
[28-Jun-2021 14:05:33] Completed 354 of 800 simulation runs
[28-Jun-2021 14:05:35] Completed 355 of 800 simulation runs
[28-Jun-2021 14:05:36] Completed 356 of 800 simulation runs
[28-Jun-2021 14:05:37] Completed 357 of 800 simulation runs
[28-Jun-2021 14:05:43] Completed 358 of 800 simulation runs
[28-Jun-2021 14:05:47] Completed 359 of 800 simulation runs
[28-Jun-2021 14:05:49] Completed 360 of 800 simulation runs
[28-Jun-2021 14:05:56] Completed 361 of 800 simulation runs
[28-Jun-2021 14:05:57] Completed 362 of 800 simulation runs
[28-Jun-2021 14:05:58] Completed 363 of 800 simulation runs
[28-Jun-2021 14:05:59] Completed 364 of 800 simulation runs
[28-Jun-2021 14:06:08] Completed 365 of 800 simulation runs
[28-Jun-2021 14:06:09] Completed 366 of 800 simulation runs
[28-Jun-2021 14:06:11] Completed 367 of 800 simulation runs
[28-Jun-2021 14:06:12] Completed 368 of 800 simulation runs
[28-Jun-2021 14:06:16] Completed 369 of 800 simulation runs
[28-Jun-2021 14:06:18] Completed 370 of 800 simulation runs
[28-Jun-2021 14:06:23] Completed 371 of 800 simulation runs
[28-Jun-2021 14:06:24] Completed 372 of 800 simulation runs
[28-Jun-2021 14:06:25] Completed 373 of 800 simulation runs
[28-Jun-2021 14:06:27] Completed 374 of 800 simulation runs
[28-Jun-2021 14:06:28] Completed 375 of 800 simulation runs
[28-Jun-2021 14:06:30] Completed 376 of 800 simulation runs
[28-Jun-2021 14:06:33] Completed 377 of 800 simulation runs
[28-Jun-2021 14:06:37] Completed 378 of 800 simulation runs
[28-Jun-2021 14:06:39] Completed 379 of 800 simulation runs
[28-Jun-2021 14:06:43] Completed 380 of 800 simulation runs
[28-Jun-2021 14:06:50] Completed 381 of 800 simulation runs
[28-Jun-2021 14:06:51] Completed 382 of 800 simulation runs
[28-Jun-2021 14:06:53] Completed 383 of 800 simulation runs
[28-Jun-2021 14:06:54] Completed 384 of 800 simulation runs
[28-Jun-2021 14:06:56] Completed 385 of 800 simulation runs
[28-Jun-2021 14:06:59] Completed 386 of 800 simulation runs
[28-Jun-2021 14:07:00] Completed 387 of 800 simulation runs
[28-Jun-2021 14:07:03] Completed 388 of 800 simulation runs
[28-Jun-2021 14:07:04] Completed 389 of 800 simulation runs
[28-Jun-2021 14:07:07] Completed 390 of 800 simulation runs
[28-Jun-2021 14:07:15] Completed 391 of 800 simulation runs
[28-Jun-2021 14:07:18] Completed 392 of 800 simulation runs
[28-Jun-2021 14:07:19] Completed 393 of 800 simulation runs
[28-Jun-2021 14:07:27] Completed 394 of 800 simulation runs
[28-Jun-2021 14:07:29] Completed 395 of 800 simulation runs
[28-Jun-2021 14:07:31] Completed 396 of 800 simulation runs
[28-Jun-2021 14:07:32] Completed 397 of 800 simulation runs
[28-Jun-2021 14:07:36] Completed 398 of 800 simulation runs
[28-Jun-2021 14:07:38] Completed 399 of 800 simulation runs
[28-Jun-2021 14:07:39] Completed 400 of 800 simulation runs
[28-Jun-2021 14:07:53] Completed 401 of 800 simulation runs
[28-Jun-2021 14:07:55] Completed 402 of 800 simulation runs
[28-Jun-2021 14:07:57] Completed 403 of 800 simulation runs
[28-Jun-2021 14:07:59] Completed 404 of 800 simulation runs
[28-Jun-2021 14:08:01] Completed 405 of 800 simulation runs
[28-Jun-2021 14:08:06] Completed 406 of 800 simulation runs
[28-Jun-2021 14:08:18] Completed 407 of 800 simulation runs
[28-Jun-2021 14:08:20] Completed 408 of 800 simulation runs
[28-Jun-2021 14:08:22] Completed 409 of 800 simulation runs
[28-Jun-2021 14:08:24] Completed 410 of 800 simulation runs
[28-Jun-2021 14:08:27] Completed 411 of 800 simulation runs
[28-Jun-2021 14:08:31] Completed 412 of 800 simulation runs
[28-Jun-2021 14:08:42] Completed 413 of 800 simulation runs
[28-Jun-2021 14:08:44] Completed 414 of 800 simulation runs
[28-Jun-2021 14:08:46] Completed 415 of 800 simulation runs
[28-Jun-2021 14:08:48] Completed 416 of 800 simulation runs
[28-Jun-2021 14:08:52] Completed 417 of 800 simulation runs
[28-Jun-2021 14:08:55] Completed 418 of 800 simulation runs
[28-Jun-2021 14:09:06] Completed 419 of 800 simulation runs
[28-Jun-2021 14:09:09] Completed 420 of 800 simulation runs
[28-Jun-2021 14:09:11] Completed 421 of 800 simulation runs
[28-Jun-2021 14:09:13] Completed 422 of 800 simulation runs
[28-Jun-2021 14:09:15] Completed 423 of 800 simulation runs
[28-Jun-2021 14:09:19] Completed 424 of 800 simulation runs
[28-Jun-2021 14:09:31] Completed 425 of 800 simulation runs
[28-Jun-2021 14:09:33] Completed 426 of 800 simulation runs
[28-Jun-2021 14:09:35] Completed 427 of 800 simulation runs
[28-Jun-2021 14:09:38] Completed 428 of 800 simulation runs
[28-Jun-2021 14:09:40] Completed 429 of 800 simulation runs
[28-Jun-2021 14:09:45] Completed 430 of 800 simulation runs
[28-Jun-2021 14:09:57] Completed 431 of 800 simulation runs
[28-Jun-2021 14:10:00] Completed 432 of 800 simulation runs
[28-Jun-2021 14:10:02] Completed 433 of 800 simulation runs
[28-Jun-2021 14:10:05] Completed 434 of 800 simulation runs
[28-Jun-2021 14:10:07] Completed 435 of 800 simulation runs
[28-Jun-2021 14:10:12] Completed 436 of 800 simulation runs
[28-Jun-2021 14:10:21] Completed 437 of 800 simulation runs
[28-Jun-2021 14:10:25] Completed 438 of 800 simulation runs
[28-Jun-2021 14:10:27] Completed 439 of 800 simulation runs
[28-Jun-2021 14:10:29] Completed 440 of 800 simulation runs
[28-Jun-2021 14:10:31] Completed 441 of 800 simulation runs
[28-Jun-2021 14:10:35] Completed 442 of 800 simulation runs
[28-Jun-2021 14:10:47] Completed 443 of 800 simulation runs
[28-Jun-2021 14:10:51] Completed 444 of 800 simulation runs
[28-Jun-2021 14:10:53] Completed 445 of 800 simulation runs
[28-Jun-2021 14:10:55] Completed 446 of 800 simulation runs
[28-Jun-2021 14:10:57] Completed 447 of 800 simulation runs
[28-Jun-2021 14:10:59] Completed 448 of 800 simulation runs
[28-Jun-2021 14:11:13] Completed 449 of 800 simulation runs
[28-Jun-2021 14:11:15] Completed 450 of 800 simulation runs
[28-Jun-2021 14:11:18] Completed 451 of 800 simulation runs
[28-Jun-2021 14:11:20] Completed 452 of 800 simulation runs
[28-Jun-2021 14:11:22] Completed 453 of 800 simulation runs
[28-Jun-2021 14:11:24] Completed 454 of 800 simulation runs
[28-Jun-2021 14:11:40] Completed 455 of 800 simulation runs
[28-Jun-2021 14:11:42] Completed 456 of 800 simulation runs
[28-Jun-2021 14:11:44] Completed 457 of 800 simulation runs
[28-Jun-2021 14:11:46] Completed 458 of 800 simulation runs
[28-Jun-2021 14:11:48] Completed 459 of 800 simulation runs
[28-Jun-2021 14:11:50] Completed 460 of 800 simulation runs
[28-Jun-2021 14:12:05] Completed 461 of 800 simulation runs
[28-Jun-2021 14:12:06] Completed 462 of 800 simulation runs
[28-Jun-2021 14:12:08] Completed 463 of 800 simulation runs
[28-Jun-2021 14:12:10] Completed 464 of 800 simulation runs
[28-Jun-2021 14:12:12] Completed 465 of 800 simulation runs
[28-Jun-2021 14:12:15] Completed 466 of 800 simulation runs
[28-Jun-2021 14:12:29] Completed 467 of 800 simulation runs
[28-Jun-2021 14:12:31] Completed 468 of 800 simulation runs
[28-Jun-2021 14:12:33] Completed 469 of 800 simulation runs
[28-Jun-2021 14:12:35] Completed 470 of 800 simulation runs
[28-Jun-2021 14:12:37] Completed 471 of 800 simulation runs
[28-Jun-2021 14:12:41] Completed 472 of 800 simulation runs
[28-Jun-2021 14:12:53] Completed 473 of 800 simulation runs
[28-Jun-2021 14:12:55] Completed 474 of 800 simulation runs
[28-Jun-2021 14:12:58] Completed 475 of 800 simulation runs
[28-Jun-2021 14:13:00] Completed 476 of 800 simulation runs
[28-Jun-2021 14:13:02] Completed 477 of 800 simulation runs
[28-Jun-2021 14:13:07] Completed 478 of 800 simulation runs
[28-Jun-2021 14:13:19] Completed 479 of 800 simulation runs
[28-Jun-2021 14:13:21] Completed 480 of 800 simulation runs
[28-Jun-2021 14:13:23] Completed 481 of 800 simulation runs
[28-Jun-2021 14:13:26] Completed 482 of 800 simulation runs
[28-Jun-2021 14:13:28] Completed 483 of 800 simulation runs
[28-Jun-2021 14:13:35] Completed 484 of 800 simulation runs
[28-Jun-2021 14:13:44] Completed 485 of 800 simulation runs
[28-Jun-2021 14:13:46] Completed 486 of 800 simulation runs
[28-Jun-2021 14:13:48] Completed 487 of 800 simulation runs
[28-Jun-2021 14:13:50] Completed 488 of 800 simulation runs
[28-Jun-2021 14:13:52] Completed 489 of 800 simulation runs
[28-Jun-2021 14:14:01] Completed 490 of 800 simulation runs
[28-Jun-2021 14:14:08] Completed 491 of 800 simulation runs
[28-Jun-2021 14:14:10] Completed 492 of 800 simulation runs
[28-Jun-2021 14:14:12] Completed 493 of 800 simulation runs
[28-Jun-2021 14:14:14] Completed 494 of 800 simulation runs
[28-Jun-2021 14:14:16] Completed 495 of 800 simulation runs
[28-Jun-2021 14:14:27] Completed 496 of 800 simulation runs
[28-Jun-2021 14:14:35] Completed 497 of 800 simulation runs
[28-Jun-2021 14:14:37] Completed 498 of 800 simulation runs
[28-Jun-2021 14:14:39] Completed 499 of 800 simulation runs
[28-Jun-2021 14:14:41] Completed 500 of 800 simulation runs
[28-Jun-2021 14:14:43] Completed 501 of 800 simulation runs
[28-Jun-2021 14:14:45] Completed 502 of 800 simulation runs
[28-Jun-2021 14:14:46] Completed 503 of 800 simulation runs
[28-Jun-2021 14:14:50] Completed 504 of 800 simulation runs
[28-Jun-2021 14:14:51] Completed 505 of 800 simulation runs
[28-Jun-2021 14:14:53] Completed 506 of 800 simulation runs
[28-Jun-2021 14:14:54] Completed 507 of 800 simulation runs
[28-Jun-2021 14:14:55] Completed 508 of 800 simulation runs
[28-Jun-2021 14:15:06] Completed 509 of 800 simulation runs
[28-Jun-2021 14:15:08] Completed 510 of 800 simulation runs
[28-Jun-2021 14:15:10] Completed 511 of 800 simulation runs
[28-Jun-2021 14:15:11] Completed 512 of 800 simulation runs
[28-Jun-2021 14:15:13] Completed 513 of 800 simulation runs
[28-Jun-2021 14:15:15] Completed 514 of 800 simulation runs
[28-Jun-2021 14:15:18] Completed 515 of 800 simulation runs
[28-Jun-2021 14:15:23] Completed 516 of 800 simulation runs
[28-Jun-2021 14:15:25] Completed 517 of 800 simulation runs
[28-Jun-2021 14:15:27] Completed 518 of 800 simulation runs
[28-Jun-2021 14:15:29] Completed 519 of 800 simulation runs
[28-Jun-2021 14:15:30] Completed 520 of 800 simulation runs
[28-Jun-2021 14:15:33] Completed 521 of 800 simulation runs
[28-Jun-2021 14:15:35] Completed 522 of 800 simulation runs
[28-Jun-2021 14:15:40] Completed 523 of 800 simulation runs
[28-Jun-2021 14:15:42] Completed 524 of 800 simulation runs
[28-Jun-2021 14:15:46] Completed 525 of 800 simulation runs
[28-Jun-2021 14:15:48] Completed 526 of 800 simulation runs
[28-Jun-2021 14:15:50] Completed 527 of 800 simulation runs
[28-Jun-2021 14:15:51] Completed 528 of 800 simulation runs
[28-Jun-2021 14:15:53] Completed 529 of 800 simulation runs
[28-Jun-2021 14:15:54] Completed 530 of 800 simulation runs
[28-Jun-2021 14:15:57] Completed 531 of 800 simulation runs
[28-Jun-2021 14:16:02] Completed 532 of 800 simulation runs
[28-Jun-2021 14:16:04] Completed 533 of 800 simulation runs
[28-Jun-2021 14:16:05] Completed 534 of 800 simulation runs
[28-Jun-2021 14:16:15] Completed 535 of 800 simulation runs
[28-Jun-2021 14:16:17] Completed 536 of 800 simulation runs
[28-Jun-2021 14:16:19] Completed 537 of 800 simulation runs
[28-Jun-2021 14:16:21] Completed 538 of 800 simulation runs
[28-Jun-2021 14:16:23] Completed 539 of 800 simulation runs
[28-Jun-2021 14:16:25] Completed 540 of 800 simulation runs
[28-Jun-2021 14:16:28] Completed 541 of 800 simulation runs
[28-Jun-2021 14:16:30] Completed 542 of 800 simulation runs
[28-Jun-2021 14:16:39] Completed 543 of 800 simulation runs
[28-Jun-2021 14:16:42] Completed 544 of 800 simulation runs
[28-Jun-2021 14:16:44] Completed 545 of 800 simulation runs
[28-Jun-2021 14:16:48] Completed 546 of 800 simulation runs
[28-Jun-2021 14:16:50] Completed 547 of 800 simulation runs
[28-Jun-2021 14:16:52] Completed 548 of 800 simulation runs
[28-Jun-2021 14:16:55] Completed 549 of 800 simulation runs
[28-Jun-2021 14:16:57] Completed 550 of 800 simulation runs
[28-Jun-2021 14:17:00] Completed 551 of 800 simulation runs
[28-Jun-2021 14:17:06] Completed 552 of 800 simulation runs
[28-Jun-2021 14:17:12] Completed 553 of 800 simulation runs
[28-Jun-2021 14:17:14] Completed 554 of 800 simulation runs
[28-Jun-2021 14:17:16] Completed 555 of 800 simulation runs
[28-Jun-2021 14:17:18] Completed 556 of 800 simulation runs
[28-Jun-2021 14:17:20] Completed 557 of 800 simulation runs
[28-Jun-2021 14:17:23] Completed 558 of 800 simulation runs
[28-Jun-2021 14:17:25] Completed 559 of 800 simulation runs
[28-Jun-2021 14:17:28] Completed 560 of 800 simulation runs
[28-Jun-2021 14:17:31] Completed 561 of 800 simulation runs
[28-Jun-2021 14:17:34] Completed 562 of 800 simulation runs
[28-Jun-2021 14:17:36] Completed 563 of 800 simulation runs
[28-Jun-2021 14:17:37] Completed 564 of 800 simulation runs
[28-Jun-2021 14:17:42] Completed 565 of 800 simulation runs
[28-Jun-2021 14:17:46] Completed 566 of 800 simulation runs
[28-Jun-2021 14:17:48] Completed 567 of 800 simulation runs
[28-Jun-2021 14:17:50] Completed 568 of 800 simulation runs
[28-Jun-2021 14:17:52] Completed 569 of 800 simulation runs
[28-Jun-2021 14:17:57] Completed 570 of 800 simulation runs
[28-Jun-2021 14:17:59] Completed 571 of 800 simulation runs
[28-Jun-2021 14:18:07] Completed 572 of 800 simulation runs
[28-Jun-2021 14:18:09] Completed 573 of 800 simulation runs
[28-Jun-2021 14:18:11] Completed 574 of 800 simulation runs
[28-Jun-2021 14:18:13] Completed 575 of 800 simulation runs
[28-Jun-2021 14:18:15] Completed 576 of 800 simulation runs
[28-Jun-2021 14:18:17] Completed 577 of 800 simulation runs
[28-Jun-2021 14:18:30] Completed 578 of 800 simulation runs
[28-Jun-2021 14:18:32] Completed 579 of 800 simulation runs
[28-Jun-2021 14:18:34] Completed 580 of 800 simulation runs
[28-Jun-2021 14:18:35] Completed 581 of 800 simulation runs
[28-Jun-2021 14:18:38] Completed 582 of 800 simulation runs
[28-Jun-2021 14:18:40] Completed 583 of 800 simulation runs
[28-Jun-2021 14:18:42] Completed 584 of 800 simulation runs
[28-Jun-2021 14:18:44] Completed 585 of 800 simulation runs
[28-Jun-2021 14:18:45] Completed 586 of 800 simulation runs
[28-Jun-2021 14:18:47] Completed 587 of 800 simulation runs
[28-Jun-2021 14:18:49] Completed 588 of 800 simulation runs
[28-Jun-2021 14:18:56] Completed 589 of 800 simulation runs
[28-Jun-2021 14:18:58] Completed 590 of 800 simulation runs
[28-Jun-2021 14:19:00] Completed 591 of 800 simulation runs
[28-Jun-2021 14:19:03] Completed 592 of 800 simulation runs
[28-Jun-2021 14:19:05] Completed 593 of 800 simulation runs
[28-Jun-2021 14:19:07] Completed 594 of 800 simulation runs
[28-Jun-2021 14:19:12] Completed 595 of 800 simulation runs
[28-Jun-2021 14:19:14] Completed 596 of 800 simulation runs
[28-Jun-2021 14:19:16] Completed 597 of 800 simulation runs
[28-Jun-2021 14:19:18] Completed 598 of 800 simulation runs
[28-Jun-2021 14:19:24] Completed 599 of 800 simulation runs
[28-Jun-2021 14:19:27] Completed 600 of 800 simulation runs
[28-Jun-2021 14:19:29] Completed 601 of 800 simulation runs
[28-Jun-2021 14:19:37] Completed 602 of 800 simulation runs
[28-Jun-2021 14:19:39] Completed 603 of 800 simulation runs
[28-Jun-2021 14:19:41] Completed 604 of 800 simulation runs
[28-Jun-2021 14:19:44] Completed 605 of 800 simulation runs
[28-Jun-2021 14:19:46] Completed 606 of 800 simulation runs
[28-Jun-2021 14:19:48] Completed 607 of 800 simulation runs
[28-Jun-2021 14:19:51] Completed 608 of 800 simulation runs
[28-Jun-2021 14:19:53] Completed 609 of 800 simulation runs
[28-Jun-2021 14:19:55] Completed 610 of 800 simulation runs
[28-Jun-2021 14:19:57] Completed 611 of 800 simulation runs
[28-Jun-2021 14:20:01] Completed 612 of 800 simulation runs
[28-Jun-2021 14:20:04] Completed 613 of 800 simulation runs
[28-Jun-2021 14:20:05] Completed 614 of 800 simulation runs
[28-Jun-2021 14:20:07] Completed 615 of 800 simulation runs
[28-Jun-2021 14:20:18] Completed 616 of 800 simulation runs
[28-Jun-2021 14:20:20] Completed 617 of 800 simulation runs
[28-Jun-2021 14:20:23] Completed 618 of 800 simulation runs
[28-Jun-2021 14:20:25] Completed 619 of 800 simulation runs
[28-Jun-2021 14:20:27] Completed 620 of 800 simulation runs
[28-Jun-2021 14:20:30] Completed 621 of 800 simulation runs
[28-Jun-2021 14:20:32] Completed 622 of 800 simulation runs
[28-Jun-2021 14:20:35] Completed 623 of 800 simulation runs
[28-Jun-2021 14:20:42] Completed 624 of 800 simulation runs
[28-Jun-2021 14:20:45] Completed 625 of 800 simulation runs
[28-Jun-2021 14:20:47] Completed 626 of 800 simulation runs
[28-Jun-2021 14:20:50] Completed 627 of 800 simulation runs
[28-Jun-2021 14:20:52] Completed 628 of 800 simulation runs
[28-Jun-2021 14:20:55] Completed 629 of 800 simulation runs
[28-Jun-2021 14:20:57] Completed 630 of 800 simulation runs
[28-Jun-2021 14:21:00] Completed 631 of 800 simulation runs
[28-Jun-2021 14:21:02] Completed 632 of 800 simulation runs
[28-Jun-2021 14:21:05] Completed 633 of 800 simulation runs
[28-Jun-2021 14:21:16] Completed 634 of 800 simulation runs
[28-Jun-2021 14:21:18] Completed 635 of 800 simulation runs
[28-Jun-2021 14:21:21] Completed 636 of 800 simulation runs
[28-Jun-2021 14:21:23] Completed 637 of 800 simulation runs
[28-Jun-2021 14:21:26] Completed 638 of 800 simulation runs
[28-Jun-2021 14:21:29] Completed 639 of 800 simulation runs
[28-Jun-2021 14:21:34] Completed 640 of 800 simulation runs
[28-Jun-2021 14:21:37] Completed 641 of 800 simulation runs
[28-Jun-2021 14:21:39] Completed 642 of 800 simulation runs
[28-Jun-2021 14:21:42] Completed 643 of 800 simulation runs
[28-Jun-2021 14:21:44] Completed 644 of 800 simulation runs
[28-Jun-2021 14:21:46] Completed 645 of 800 simulation runs
[28-Jun-2021 14:21:49] Completed 646 of 800 simulation runs
[28-Jun-2021 14:21:51] Completed 647 of 800 simulation runs
[28-Jun-2021 14:21:53] Completed 648 of 800 simulation runs
[28-Jun-2021 14:21:56] Completed 649 of 800 simulation runs
[28-Jun-2021 14:21:58] Completed 650 of 800 simulation runs
[28-Jun-2021 14:22:01] Completed 651 of 800 simulation runs
[28-Jun-2021 14:22:03] Completed 652 of 800 simulation runs
[28-Jun-2021 14:22:13] Completed 653 of 800 simulation runs
[28-Jun-2021 14:22:16] Completed 654 of 800 simulation runs
[28-Jun-2021 14:22:18] Completed 655 of 800 simulation runs
[28-Jun-2021 14:22:20] Completed 656 of 800 simulation runs
[28-Jun-2021 14:22:23] Completed 657 of 800 simulation runs
[28-Jun-2021 14:22:26] Completed 658 of 800 simulation runs
[28-Jun-2021 14:22:28] Completed 659 of 800 simulation runs
[28-Jun-2021 14:22:34] Completed 660 of 800 simulation runs
[28-Jun-2021 14:22:37] Completed 661 of 800 simulation runs
[28-Jun-2021 14:22:39] Completed 662 of 800 simulation runs
[28-Jun-2021 14:22:42] Completed 663 of 800 simulation runs
[28-Jun-2021 14:22:45] Completed 664 of 800 simulation runs
[28-Jun-2021 14:22:53] Completed 665 of 800 simulation runs
[28-Jun-2021 14:22:56] Completed 666 of 800 simulation runs
[28-Jun-2021 14:22:59] Completed 667 of 800 simulation runs
[28-Jun-2021 14:23:01] Completed 668 of 800 simulation runs
[28-Jun-2021 14:23:04] Completed 669 of 800 simulation runs
[28-Jun-2021 14:23:07] Completed 670 of 800 simulation runs
[28-Jun-2021 14:23:12] Completed 671 of 800 simulation runs
[28-Jun-2021 14:23:15] Completed 672 of 800 simulation runs
[28-Jun-2021 14:23:18] Completed 673 of 800 simulation runs
[28-Jun-2021 14:23:21] Completed 674 of 800 simulation runs
[28-Jun-2021 14:23:23] Completed 675 of 800 simulation runs
[28-Jun-2021 14:23:25] Completed 676 of 800 simulation runs
[28-Jun-2021 14:23:28] Completed 677 of 800 simulation runs
[28-Jun-2021 14:23:31] Completed 678 of 800 simulation runs
[28-Jun-2021 14:23:34] Completed 679 of 800 simulation runs
[28-Jun-2021 14:23:37] Completed 680 of 800 simulation runs
[28-Jun-2021 14:23:41] Completed 681 of 800 simulation runs
[28-Jun-2021 14:23:44] Completed 682 of 800 simulation runs
[28-Jun-2021 14:23:51] Completed 683 of 800 simulation runs
[28-Jun-2021 14:23:53] Completed 684 of 800 simulation runs
[28-Jun-2021 14:23:56] Completed 685 of 800 simulation runs
[28-Jun-2021 14:23:59] Completed 686 of 800 simulation runs
[28-Jun-2021 14:24:01] Completed 687 of 800 simulation runs
[28-Jun-2021 14:24:04] Completed 688 of 800 simulation runs
[28-Jun-2021 14:24:07] Completed 689 of 800 simulation runs
[28-Jun-2021 14:24:09] Completed 690 of 800 simulation runs
[28-Jun-2021 14:24:11] Completed 691 of 800 simulation runs
[28-Jun-2021 14:24:17] Completed 692 of 800 simulation runs
[28-Jun-2021 14:24:20] Completed 693 of 800 simulation runs
[28-Jun-2021 14:24:28] Completed 694 of 800 simulation runs
[28-Jun-2021 14:24:31] Completed 695 of 800 simulation runs
[28-Jun-2021 14:24:33] Completed 696 of 800 simulation runs
[28-Jun-2021 14:24:36] Completed 697 of 800 simulation runs
[28-Jun-2021 14:24:38] Completed 698 of 800 simulation runs
[28-Jun-2021 14:24:42] Completed 699 of 800 simulation runs
[28-Jun-2021 14:24:45] Completed 700 of 800 simulation runs
[28-Jun-2021 14:24:48] Completed 701 of 800 simulation runs
[28-Jun-2021 14:24:50] Completed 702 of 800 simulation runs
[28-Jun-2021 14:24:57] Completed 703 of 800 simulation runs
[28-Jun-2021 14:24:59] Completed 704 of 800 simulation runs
[28-Jun-2021 14:25:02] Completed 705 of 800 simulation runs
[28-Jun-2021 14:25:04] Completed 706 of 800 simulation runs
[28-Jun-2021 14:25:07] Completed 707 of 800 simulation runs
[28-Jun-2021 14:25:10] Completed 708 of 800 simulation runs
[28-Jun-2021 14:25:13] Completed 709 of 800 simulation runs
[28-Jun-2021 14:25:15] Completed 710 of 800 simulation runs
[28-Jun-2021 14:25:18] Completed 711 of 800 simulation runs
[28-Jun-2021 14:25:21] Completed 712 of 800 simulation runs
[28-Jun-2021 14:25:24] Completed 713 of 800 simulation runs
[28-Jun-2021 14:25:27] Completed 714 of 800 simulation runs
[28-Jun-2021 14:25:30] Completed 715 of 800 simulation runs
[28-Jun-2021 14:25:33] Completed 716 of 800 simulation runs
[28-Jun-2021 14:25:36] Completed 717 of 800 simulation runs
[28-Jun-2021 14:25:39] Completed 718 of 800 simulation runs
[28-Jun-2021 14:25:41] Completed 719 of 800 simulation runs
[28-Jun-2021 14:25:43] Completed 720 of 800 simulation runs
[28-Jun-2021 14:25:46] Completed 721 of 800 simulation runs
[28-Jun-2021 14:25:51] Completed 722 of 800 simulation runs
[28-Jun-2021 14:25:55] Completed 723 of 800 simulation runs
[28-Jun-2021 14:25:58] Completed 724 of 800 simulation runs
[28-Jun-2021 14:26:01] Completed 725 of 800 simulation runs
[28-Jun-2021 14:26:03] Completed 726 of 800 simulation runs
[28-Jun-2021 14:26:13] Completed 727 of 800 simulation runs
[28-Jun-2021 14:26:16] Completed 728 of 800 simulation runs
[28-Jun-2021 14:26:19] Completed 729 of 800 simulation runs
[28-Jun-2021 14:26:22] Completed 730 of 800 simulation runs
[28-Jun-2021 14:26:25] Completed 731 of 800 simulation runs
[28-Jun-2021 14:26:28] Completed 732 of 800 simulation runs
[28-Jun-2021 14:26:30] Completed 733 of 800 simulation runs
[28-Jun-2021 14:26:33] Completed 734 of 800 simulation runs
[28-Jun-2021 14:26:36] Completed 735 of 800 simulation runs
[28-Jun-2021 14:26:39] Completed 736 of 800 simulation runs
[28-Jun-2021 14:26:41] Completed 737 of 800 simulation runs
[28-Jun-2021 14:26:45] Completed 738 of 800 simulation runs
[28-Jun-2021 14:26:47] Completed 739 of 800 simulation runs
[28-Jun-2021 14:26:52] Completed 740 of 800 simulation runs
[28-Jun-2021 14:26:55] Completed 741 of 800 simulation runs
[28-Jun-2021 14:26:58] Completed 742 of 800 simulation runs
[28-Jun-2021 14:27:01] Completed 743 of 800 simulation runs
[28-Jun-2021 14:27:03] Completed 744 of 800 simulation runs
[28-Jun-2021 14:27:06] Completed 745 of 800 simulation runs
[28-Jun-2021 14:27:09] Completed 746 of 800 simulation runs
[28-Jun-2021 14:27:11] Completed 747 of 800 simulation runs
[28-Jun-2021 14:27:14] Completed 748 of 800 simulation runs
[28-Jun-2021 14:27:17] Completed 749 of 800 simulation runs
[28-Jun-2021 14:27:19] Completed 750 of 800 simulation runs
[28-Jun-2021 14:27:22] Completed 751 of 800 simulation runs
[28-Jun-2021 14:27:25] Completed 752 of 800 simulation runs
[28-Jun-2021 14:27:28] Completed 753 of 800 simulation runs
[28-Jun-2021 14:27:31] Completed 754 of 800 simulation runs
[28-Jun-2021 14:27:34] Completed 755 of 800 simulation runs
[28-Jun-2021 14:27:37] Completed 756 of 800 simulation runs
[28-Jun-2021 14:27:40] Completed 757 of 800 simulation runs
[28-Jun-2021 14:27:42] Completed 758 of 800 simulation runs
[28-Jun-2021 14:27:45] Completed 759 of 800 simulation runs
[28-Jun-2021 14:27:48] Completed 760 of 800 simulation runs
[28-Jun-2021 14:27:50] Completed 761 of 800 simulation runs
[28-Jun-2021 14:27:53] Completed 762 of 800 simulation runs
[28-Jun-2021 14:27:56] Completed 763 of 800 simulation runs
[28-Jun-2021 14:27:59] Completed 764 of 800 simulation runs
[28-Jun-2021 14:28:02] Completed 765 of 800 simulation runs
[28-Jun-2021 14:28:05] Completed 766 of 800 simulation runs
[28-Jun-2021 14:28:08] Completed 767 of 800 simulation runs
[28-Jun-2021 14:28:12] Completed 768 of 800 simulation runs
[28-Jun-2021 14:28:15] Completed 769 of 800 simulation runs
[28-Jun-2021 14:28:17] Completed 770 of 800 simulation runs
[28-Jun-2021 14:28:21] Completed 771 of 800 simulation runs
[28-Jun-2021 14:28:24] Completed 772 of 800 simulation runs
[28-Jun-2021 14:28:27] Completed 773 of 800 simulation runs
[28-Jun-2021 14:28:30] Completed 774 of 800 simulation runs
[28-Jun-2021 14:28:34] Completed 775 of 800 simulation runs
[28-Jun-2021 14:28:38] Completed 776 of 800 simulation runs
[28-Jun-2021 14:28:41] Completed 777 of 800 simulation runs
[28-Jun-2021 14:28:46] Completed 778 of 800 simulation runs
[28-Jun-2021 14:28:50] Completed 779 of 800 simulation runs
[28-Jun-2021 14:28:56] Completed 780 of 800 simulation runs
[28-Jun-2021 14:29:05] Completed 781 of 800 simulation runs
[28-Jun-2021 14:29:12] Completed 782 of 800 simulation runs
[28-Jun-2021 14:29:17] Completed 783 of 800 simulation runs
[28-Jun-2021 14:29:22] Completed 784 of 800 simulation runs
[28-Jun-2021 14:29:26] Completed 785 of 800 simulation runs
[28-Jun-2021 14:29:31] Completed 786 of 800 simulation runs
[28-Jun-2021 14:29:35] Completed 787 of 800 simulation runs
[28-Jun-2021 14:29:39] Completed 788 of 800 simulation runs
[28-Jun-2021 14:29:42] Completed 789 of 800 simulation runs
[28-Jun-2021 14:29:46] Completed 790 of 800 simulation runs
[28-Jun-2021 14:29:49] Completed 791 of 800 simulation runs
[28-Jun-2021 14:29:52] Completed 792 of 800 simulation runs
[28-Jun-2021 14:29:55] Completed 793 of 800 simulation runs
[28-Jun-2021 14:29:59] Completed 794 of 800 simulation runs
[28-Jun-2021 14:30:02] Completed 795 of 800 simulation runs
[28-Jun-2021 14:30:04] Completed 796 of 800 simulation runs
[28-Jun-2021 14:30:07] Completed 797 of 800 simulation runs
[28-Jun-2021 14:30:10] Completed 798 of 800 simulation runs
[28-Jun-2021 14:30:12] Completed 799 of 800 simulation runs
[28-Jun-2021 14:30:15] Completed 800 of 800 simulation runs
[28-Jun-2021 14:30:23] Cleaning up parallel workers...
ens = simulationEnsembleDatastore(fullfile('.','Data'));

Обработка и извлечение функций от результатов симуляции

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

ens.DataVariables
ans = 8×1 string
    "SimulationInput"
    "SimulationMetadata"
    "iMotor_meas"
    "pIn_meas"
    "pOut_meas"
    "qIn_meas"
    "qOut_meas"
    "wMotor_meas"

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

Сконфигурируйте ансамбль так, чтобы возвраты только для чтения переменные интереса и вызвали preprocess функция, которая задана в конце этого примера.

ens.SelectedVariables = ["qOut_meas", "SimulationInput"];
reset(ens)
data = read(ens)
data=1×2 table
        qOut_meas                SimulationInput        
    __________________    ______________________________

    {2001×1 timetable}    {1×1 Simulink.SimulationInput}

[flow,flowP,flowF,faultValues] = preprocess(data);

Постройте спектр потока и поток. Отображенные на графике данные являются для отказа свободным условием.

% Figure with nominal
subplot(211);
plot(flow.Time,flow.Data);
subplot(212);
semilogx(flowF,pow2db(flowP));
xlabel('Hz')

Спектр потока показывает резонирующий peaks на ожидаемых частотах. А именно, скорость электродвигателя насоса составляет 950 об/мин или 15,833 Гц, и поскольку насос имеет 3 цилиндра, поток, как ожидают, будет иметь основной принцип на уровне 3*15.833 Гц или 47,5 Гц, а также гармоники во множителях 47,5 Гц. Спектр потока ясно показывает ожидаемый резонирующий peaks. Отказы в одном цилиндре насоса приведут к резонансам на скорости электродвигателя насоса, 15,833 Гц и ее гармониках.

Спектр потока и медленный сигнал дают некоторое представление о возможных индикаторах состояния. А именно, общая статистика сигнала, такая как среднее значение, отклонение, и т.д. а также характеристики спектра. Вычисляются индикаторы состояния спектра, относящиеся к ожидаемым гармоникам, таким как частота с пиковой величиной, энергия приблизительно 15,833 Гц, энергия приблизительно 47,5 Гц, энергия выше 100 Гц. Частота спектрального пика эксцесса также вычисляется.

Сконфигурируйте ансамбль с переменными данных для индикаторов состояния и условными переменными для значений переменных отказа. Затем вызовите extractCI функция, чтобы вычислить функции и использовать writeToLastMemberRead команда, чтобы добавить опцию и дать сбой значения переменных ансамблю. extractCI функция задана в конце этого примера.

ens.DataVariables = [ens.DataVariables; ...
    "fPeak"; "pLow"; "pMid"; "pHigh"; "pKurtosis"; ...
    "qMean"; "qVar"; "qSkewness"; "qKurtosis"; ...
    "qPeak2Peak"; "qCrest"; "qRMS"; "qMAD"; "qCSRange"];
ens.ConditionVariables = ["LeakFault","BlockingFault","BearingFault"];

feat = extractCI(flow,flowP,flowF);
dataToWrite = [faultValues, feat];
writeToLastMemberRead(ens,dataToWrite{:})

Вышеупомянутый код предварительно обрабатывает и вычисляет индикаторы состояния для первого члена ансамбля симуляции. Повторите это для всех членов в ансамбле, использующем ансамбль hasdata команда. Чтобы понять результаты симуляции при различных условиях отказа строят каждый сотый элемент ансамбля.

%Figure with nominal and faults
figure,
subplot(211);
lFlow = plot(flow.Time,flow.Data,'LineWidth',2);
subplot(212);
lFlowP = semilogx(flowF,pow2db(flowP),'LineWidth',2);
xlabel('Hz')
ct = 1;
lColors = get(lFlow.Parent,'ColorOrder');
lIdx = 2;

% Loop over all members in the ensemble, preprocess 
% and compute the features for each member
while hasdata(ens)
    
    % Read member data
    data = read(ens);
    
    % Preprocess and extract features from the member data
    [flow,flowP,flowF,faultValues] = preprocess(data);
    feat = extractCI(flow,flowP,flowF);
    
    % Add the extracted feature values to the member data
    dataToWrite = [faultValues, feat];
    writeToLastMemberRead(ens,dataToWrite{:})
    
    % Plot member signal and spectrum for every 100th member
    if mod(ct,100) == 0
        line('Parent',lFlow.Parent,'XData',flow.Time,'YData',flow.Data, ...
            'Color', lColors(lIdx,:));
        line('Parent',lFlowP.Parent,'XData',flowF,'YData',pow2db(flowP), ...
            'Color', lColors(lIdx,:));
        if lIdx == size(lColors,1)
            lIdx = 1;
        else
            lIdx = lIdx+1;
        end
    end
    ct = ct + 1;
end

Обратите внимание на то, что при различных условиях отказа и строгом обращении спектр содержит гармоники на ожидаемых частотах.

Обнаружьте и классифицируйте отказы насоса

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

Сконфигурируйте ансамбль симуляции, чтобы считать индикаторы состояния, и использовать высокое и собрать команды, чтобы загрузить все индикаторы состояния и дать сбой значения переменных в память

% Get data to design a classifier.
reset(ens)
ens.SelectedVariables = [...
    "fPeak","pLow","pMid","pHigh","pKurtosis",...
    "qMean","qVar","qSkewness","qKurtosis",...
    "qPeak2Peak","qCrest","qRMS","qMAD","qCSRange",...
    "LeakFault","BlockingFault","BearingFault"];
idxLastFeature = 14;

% Load the condition indicator data into memory
data = gather(tall(ens));
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: 0% complete
Evaluation 0% complete

- Pass 1 of 1: Completed in 37 sec
Evaluation completed in 37 sec
data(1:10,:)
ans=10×17 table
    fPeak      pLow       pMid     pHigh     pKurtosis    qMean      qVar     qSkewness    qKurtosis    qPeak2Peak    qCrest     qRMS      qMAD     qCSRange    LeakFault    BlockingFault    BearingFault
    ______    _______    ______    ______    _________    ______    ______    _________    _________    __________    ______    ______    ______    ________    _________    _____________    ____________

    43.909     0.8468    117.73    18.855     276.49      35.573    7.5235    -0.73064       2.778         13.86      1.1491    35.679    2.2319     42692         1e-09          0.8              0      
    43.909     0.4622    125.98    18.956     12.417      35.577    7.8766    -0.70939        2.63        13.336      1.1451    35.688    2.3235     42699         1e-09          0.8              0      
    43.909     1.1679    138.01     17.54     11.589      35.575    7.4403     -0.7229      2.7135         12.61      1.1394    35.679    2.2415     42696         1e-09          0.8              0      
    14.779     235.27    193.49    26.728     197.02      33.223    15.242    -0.24387      2.2772         18.69       1.232    33.451     3.256     39862       3.2e-06          0.8              0      
    14.779     287.41    198.79    25.321     487.58      32.955    17.606    -0.20213        2.22        19.064      1.2304    33.221    3.5482     39539       3.6e-06          0.8              0      
    43.848     4.3805    137.31    19.175     110.93      35.275    7.5471    -0.70987      2.7751        13.858      1.1586    35.382    2.2525     42335         4e-07          0.8              0      
    14.839     303.74    176.33    23.665     392.38      32.908    17.638    -0.19533       2.237        19.561      1.2376    33.175    3.5358     39484       3.6e-06          0.8              0      
    44.151     133.99    159.09    26.973      434.6       33.76    12.137    -0.37195      2.5289        16.849      1.1925    33.939    2.8477     40507       2.4e-06          0.8              0      
    43.848    0.43902    134.89    18.997     12.417      35.562    7.8636     -0.6853      2.6661         13.91      1.1502    35.673    2.3088     42682         1e-09          0.8              0      
    43.969     12.292    124.71    22.448     478.48      34.986    8.0954    -0.71245      2.9268        15.015      1.1585    35.101    2.2984     41987         8e-07          0.8              0      

Значения переменных отказа для каждого члена ансамбля (строка в таблице данных) могут быть преобразованы во флаги отказа и флаги отказа, объединенные к одному флагу, который получает различное состояние отказа каждого члена.

% Convert the fault variable values to flags
data.LeakFlag = data.LeakFault > 1e-6;
data.BlockingFlag = data.BlockingFault < 0.8;
data.BearingFlag = data.BearingFault > 0; 
data.CombinedFlag = data.LeakFlag+2*data.BlockingFlag+4*data.BearingFlag;

Создайте классификатор, который берет в качестве входа индикаторы состояния и возвращает объединенный флаг отказа. Обучите машину опорных векторов, которая использует 2-е ядро полинома порядка. Используйте cvpartition команда, чтобы разделить члены ансамбля в набор для обучения и набор для валидации.

rng('default') % for reproducibility
predictors = data(:,1:idxLastFeature); 
response = data.CombinedFlag;
cvp = cvpartition(size(predictors,1),'KFold',5);

% Create and train the classifier
template = templateSVM(...
    'KernelFunction', 'polynomial', ...
    'PolynomialOrder', 2, ...
    'KernelScale', 'auto', ...
    'BoxConstraint', 1, ...
    'Standardize', true);
combinedClassifier = fitcecoc(...
    predictors(cvp.training(1),:), ...
    response(cvp.training(1),:), ...
    'Learners', template, ...
    'Coding', 'onevsone', ...
    'ClassNames', [0; 1; 2; 3; 4; 5; 6; 7]);

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

% Check performance by computing and plotting the confusion matrix
actualValue = response(cvp.test(1),:);
predictedValue = predict(combinedClassifier, predictors(cvp.test(1),:));
confdata = confusionmat(actualValue,predictedValue);
figure,
labels = {'None', 'Leak','Blocking', 'Leak & Blocking', 'Bearing', ...
    'Bearing & Leak', 'Bearing & Blocking', 'All'};
h = heatmap(confdata, ...
    'YLabel', 'Actual leak fault', ...
    'YDisplayLabels', labels, ...
    'XLabel', 'Predicted fault', ...
    'XDisplayLabels', labels, ...
    'ColorbarVisible','off');

График беспорядка показывает для каждой комбинации отказов число раз, комбинация отказа была правильно предсказана (диагональные элементы графика) и число раз, комбинация отказа была неправильно предсказана (недиагональные записи).

График беспорядка показывает, что классификатор правильно не классифицировал некоторые условия отказа (от диагональных терминов). Однако никакое условие отказа не было правильно предсказано. В нескольких местах не было предсказано никакое условие отказа, когда был отказ (первый столбец), в противном случае отказ был предсказан несмотря на то, что это не может быть точно правильное условие отказа. В целом точность валидации составляла 66% и точность при предсказании, что существует отказ 94%.

% Compute the overall accuracy of the classifier
sum(diag(confdata))/sum(confdata(:))
ans = 0.6625
% Compute the accuracy of the classifier at predicting 
% that there is a fault
1-sum(confdata(2:end,1))/sum(confdata(:))
ans = 0.9375

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

vData = data(cvp.test(1),:);
b1 = (actualValue==2) & (predictedValue==0);
fData = vData(b1,15:17)
fData=10×3 table
    LeakFault    BlockingFault    BearingFault
    _________    _____________    ____________

      1e-09          0.71              0      
      1e-09          0.77              0      
      1e-09          0.71              0      
      1e-09          0.77              0      
      1e-09          0.71              0      
      1e-09          0.77              0      
      1e-09          0.71              0      
      1e-09          0.74              0      
      1e-09          0.77              0      
      1e-09          0.77              0      

Найдите случаи в данных о валидации, где фактический отказ был отказом подшипника, но никакой отказ не был предсказан.

b2 = (actualValue==4) & (predictedValue==0);
vData(b2,15:17)
ans =

  0×3 empty table

При исследовании случаев, где никакой отказ не был прогнозирующим, но действительно существовал отказ, показывает, что они происходят, когда блокирующееся значение отказа 0,77 близко к его номинальной стоимости 0,8, или значение отказа подшипника 6.6e-5 близко к его номинальной стоимости 0. Графический вывод спектра для случая с маленьким значением отказа блокирования и сравнения с отказом, свободное условие показывает, что спектры являются очень похожим трудным обнаружением создания. Переобучение классификатора, но включая блокирующееся значение 0,77 как не дает сбой, условие значительно улучшало бы производительность детектора отказа. В качестве альтернативы использование дополнительных измерений насоса могло предоставить больше информации и улучшить способность обнаружить маленькие отказы блокирования.

% Configure the ensemble to only read the flow and fault variable values
ens.SelectedVariables = ["qOut_meas","LeakFault","BlockingFault","BearingFault"];
reset(ens)

% Load the ensemble member data into memory
data = gather(tall(ens));
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: 0% complete
Evaluation 0% complete

- Pass 1 of 1: Completed in 31 sec
Evaluation completed in 31 sec
% Look for the member that was incorrectly predicted, and 
% compute its power spectrum
idx = ...
    data.BlockingFault == fData.BlockingFault(1) & ...
    data.LeakFault == fData.LeakFault(1) & ...
    data.BearingFault == fData.BearingFault(1);
flow1 = data(idx,1);
flow1 = flow1.qOut_meas{1};
[flow1P,flow1F] = pspectrum(flow1);

% Look for a member that does not have any faults
idx = ...
    data.BlockingFault == 0.8 & ...
    data.LeakFault == 1e-9 & ...
    data.BearingFault == 0;
flow2 = data(idx,1);
flow2 = flow2.qOut_meas{1};
[flow2P,flow2F] = pspectrum(flow2);

% Plot the power spectra
semilogx(...
    flow1F,pow2db(flow1P),...
    flow2F,pow2db(flow2P));
xlabel('Hz')
legend('Small blocking fault','No fault')

Заключение

Этот пример показал, как использовать модель Simulink для отказов модели в поршневом насосе, симулировать модель под различными комбинациями отказа и строгим обращением, индикаторы состояния извлечения от выхода насоса текут и используют индикаторы состояния, чтобы обучить классификатор обнаруживать отказы насоса. Пример исследовал эффективность обнаружения отказа с помощью классификатора и отметил, что маленькие отказы блокирования не очень похожи ни на какое условие отказа и не могут быть надежно обнаружены.

Вспомогательные Функции

function [flow,flowSpectrum,flowFrequencies,faultValues] = preprocess(data)
% Helper function to preprocess the logged reciprocating pump data.

% Remove the 1st 0.8 seconds of the flow signal
tMin = seconds(0.8);
flow = data.qOut_meas{1};
flow = flow(flow.Time >= tMin,:);
flow.Time = flow.Time - flow.Time(1);

% Ensure the flow is sampled at a uniform sample rate
flow = retime(flow,'regular','linear','TimeStep',seconds(1e-3));

% Remove the mean from the flow and compute the flow spectrum
fA = flow;
fA.Data = fA.Data - mean(fA.Data);
[flowSpectrum,flowFrequencies] = pspectrum(fA,'FrequencyLimits',[2 250]);

% Find the values of the fault variables from the SimulationInput
simin = data.SimulationInput{1};
vars = {simin.Variables.Name};
idx = strcmp(vars,'leak_cyl_area_WKSP');
LeakFault = simin.Variables(idx).Value;
idx = strcmp(vars,'block_in_factor_WKSP');
BlockingFault = simin.Variables(idx).Value;
idx = strcmp(vars,'bearing_fault_frict_WKSP');
BearingFault = simin.Variables(idx).Value;

% Collect the fault values in a cell array
faultValues = {...
    'LeakFault', LeakFault, ...
    'BlockingFault', BlockingFault, ...
    'BearingFault', BearingFault};
end

function ci = extractCI(flow,flowP,flowF)
% Helper function to extract condition indicators from the flow signal 
% and spectrum.

% Find the frequency of the peak magnitude in the power spectrum.
pMax = max(flowP);
fPeak = flowF(flowP==pMax);

% Compute the power in the low frequency range 10-20 Hz.
fRange = flowF >= 10 & flowF <= 20;
pLow = sum(flowP(fRange));

% Compute the power in the mid frequency range 40-60 Hz.
fRange = flowF >= 40 & flowF <= 60;
pMid = sum(flowP(fRange));

% Compute the power in the high frequency range >100 Hz.
fRange = flowF >= 100;
pHigh = sum(flowP(fRange));

% Find the frequency of the spectral kurtosis peak
[pKur,fKur] = pkurtosis(flow);
pKur = fKur(pKur == max(pKur));

% Compute the flow cumulative sum range.
csFlow = cumsum(flow.Data);
csFlowRange = max(csFlow)-min(csFlow);

% Collect the feature and feature values in a cell array. 
% Add flow statistic (mean, variance, etc.) and common signal 
% characteristics (rms, peak2peak, etc.) to the cell array.
ci = {...
    'qMean', mean(flow.Data), ...
    'qVar',  var(flow.Data), ...
    'qSkewness', skewness(flow.Data), ...
    'qKurtosis', kurtosis(flow.Data), ...
    'qPeak2Peak', peak2peak(flow.Data), ...
    'qCrest', peak2rms(flow.Data), ...
    'qRMS', rms(flow.Data), ...
    'qMAD', mad(flow.Data), ...
    'qCSRange',csFlowRange, ...
    'fPeak', fPeak, ...
    'pLow', pLow, ...
    'pMid', pMid, ...
    'pHigh', pHigh, ...
    'pKurtosis', pKur(1)};
end 

Смотрите также

Похожие темы