Main Content

시뮬레이션된 데이터를 사용한 다중 클래스 결함 검출

이 예제에서는 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개의 시뮬레이션을 병렬로 실행하면 표준 데스크탑에서 약 1시간이 소요되며 약 620MB의 데이터가 생성됩니다. 시뮬레이션 시간을 줄이려면 runAll = truerunAll = false로 변경하여 결함 조합의 개수를 20개로 줄이십시오. 데이터셋 크기가 클수록 분류기 성능이 강력해집니다.

% 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 객체를 만듭니다. 각 시뮬레이션 입력값에 대해 서로 다른 결과가 생성되도록 난수 시드값을 다르게 설정합니다.

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')

유속 스펙트럼은 예상한 주파수에 공명 피크가 있음을 나타냅니다. 구체적으로 보면, 펌프 모터 속도는 950rpm/15.833Hz이고, 펌프에 실린더가 3개 있으므로 유속은 3*15.833Hz=47.5Hz에 기본주파수를, 47.5Hz의 배수에 고조파를 가질 것으로 예상됩니다. 유속 스펙트럼에서 예상되는 공명 피크를 명확히 확인할 수 있습니다. 펌프의 실린더 중 하나에서 발생한 결함은 펌프 모터 속도 15.833Hz와 그 고조파에서 공명으로 나타납니다.

유속 스펙트럼과 느린 신호를 통해 상태 지표가 될 수 있을 만한 특징을 대략적으로 파악할 수 있습니다. 구체적으로는 평균, 분산과 같은 일반적인 신호 통계량과 스펙트럼 특징이 여기에 해당합니다. 피크 크기를 갖는 주파수, 15.833Hz 부근의 에너지, 47.5Hz 부근의 에너지, 100Hz 이상에서의 에너지와 같은 예상되는 고조파와 관련된 스펙트럼 상태 지표가 계산됩니다. 스펙트럼 첨도 피크의 주파수도 계산됩니다.

상태 지표를 위한 데이터 변수와 결함 변수 값을 위한 상태 변수로 앙상블을 구성합니다. 그런 다음 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

서로 다른 결함 상태와 심각도하에서 스펙트럼이 예상 주파수에서 고조파를 포함하는 것을 볼 수 있습니다.

펌프 결함 검출 및 분류하기

이전 섹션에서는 서로 다른 결함 조합과 심각도를 갖는 시뮬레이션 결과에 대응되는 시뮬레이션 앙상블의 모든 멤버에 대해 유속 신호로부터 상태 지표를 전처리하고 계산했습니다. 상태 지표는 펌프 유속 신호에서 펌프 결함을 검출하고 분류하는 데 사용할 수 있습니다.

상태 지표를 읽을 수 있도록 시뮬레이션 앙상블을 구성하고, tall 및 gather 명령을 사용하여 모든 상태 지표와 결함 변수 값을 메모리로 불러옵니다.

% 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 

참고 항목

관련 항목