Prediction of Remaining Useful Life (RUL) of JET engine

Prediction of Remaining Useful Life (RUL) of JET engine
Photo by Mario Jacome on Dribbble

The main goal of this post is to detail my development of a model for doing predictive maintenance on commercial turbofan engines. The predictive maintenance method utilized here is a data-driven method, which means that data from the operating jet engine is used to simulate predictive maintenance.

The project’s goal is to develop a prediction model for estimating a jet engine’s Remaining Useful Life ( RUL) based on run-to-failure data from a fleet of comparable jet engines.

Overview of the data set

The Prognostics and Health Management PHM08 Challenge Data Set was developed by NASA and is now available to the public. The data collection is used to forecast jet engine problems over time. The Prognostics CoE at NASA Ames contributed the data set.

https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/#turbofan

The data set for the jet engine comprises time-series measurements of different pressures, temperatures, and rotating equipment speeds. In a commercial contemporary turbofan engine, these metrics are routinely taken.

Although all engines are of the same kind, each one begins with varying degrees of early wear and manufacturing process differences that are undisclosed to the user. Each machine has three alternative settings that may be utilized to alter its performance. Each engine contains 21 sensors that gather data about the engine’s status while it’s running.

Let’s make time series plots for two units, so we can get a sense of the data.

time series plots for unit1
time series plots for unit1

time series plots for unit99
time series plots for unit99

We can see that the different unit numbers have a different number of total cycles before they fail.

Let’s look at this more closely:

count    100.000000
mean     206.310000
std       46.342749
min      128.000000
25%      177.000000
50%      199.000000
75%      229.250000
max      362.000000
Name: time_in_cycles, dtype: float64

Number of cycles and units
Number of cycles and units

From this, we can infer that the remaining useful life (RUL) of each unit in the training data is time_in_cycles.max() minus the current time in cycles, for any given cycle. Let\’s add that as our dependent variable. (For the testing data, the RUL is in a separate file.)

We can check to make sure the RUL looks like we would expect:

time in cycles
time in cycles

Model Construction & Training

Model: "sequential_3"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
normalization_3 (Normalizati (None, None, 14)          29        
_________________________________________________________________
lstm_3 (LSTM)                (None, 32)                6016      
_________________________________________________________________
dense_3 (Dense)              (None, 1)                 33        
_________________________________________________________________
lambda_3 (Lambda)            (None, 1)                 0         
=================================================================
Total params: 6,078
Trainable params: 6,049
Non-trainable params: 29
Epoch 1/499
10/10 [==============================] - 0s 6ms/step - loss: 10796.3320 - root_mean_squared_error: 103.9054
Epoch 2/499
10/10 [==============================] - 0s 6ms/step - loss: 7954.4033 - root_mean_squared_error: 89.1875
Epoch 3/499
10/10 [==============================] - 0s 6ms/step - loss: 6400.0864 - root_mean_squared_error: 80.0005
Epoch 4/499
10/10 [==============================] - 0s 4ms/step - loss: 4885.1406 - root_mean_squared_error: 69.8938
Epoch 5/499
10/10 [==============================] - 0s 4ms/step - loss: 4010.2659 - root_mean_squared_error: 63.3267
Epoch 6/499
10/10 [==============================] - 0s 4ms/step - loss: 3276.9802 - root_mean_squared_error: 57.2449
Epoch 7/499
10/10 [==============================] - 0s 4ms/step - loss: 3066.4707 - root_mean_squared_error: 55.3757
Epoch 8/499
10/10 [==============================] - 0s 4ms/step - loss: 2769.1394 - root_mean_squared_error: 52.6226
Epoch 9/499
10/10 [==============================] - 0s 4ms/step - loss: 2351.2549 - root_mean_squared_error: 48.4897
Epoch 10/499
10/10 [==============================] - 0s 4ms/step - loss: 2101.9841 - root_mean_squared_error: 45.8474
Epoch 11/499
10/10 [==============================] - 0s 4ms/step - loss: 1967.6283 - root_mean_squared_error: 44.3580
Epoch 12/499
10/10 [==============================] - 0s 4ms/step - loss: 2045.3716 - root_mean_squared_error: 45.2258
Epoch 13/499
10/10 [==============================] - 0s 4ms/step - loss: 1932.9287 - root_mean_squared_error: 43.9651
Epoch 14/499
10/10 [==============================] - 0s 4ms/step - loss: 1792.9589 - root_mean_squared_error: 42.3433
.
.
.
.
Epoch 491/499
10/10 [==============================] - 0s 4ms/step - loss: 62.6952 - root_mean_squared_error: 7.9180
Epoch 492/499
10/10 [==============================] - 0s 4ms/step - loss: 58.7008 - root_mean_squared_error: 7.6616
Epoch 493/499
10/10 [==============================] - 0s 4ms/step - loss: 48.0873 - root_mean_squared_error: 6.9345
Epoch 494/499
10/10 [==============================] - 0s 4ms/step - loss: 78.2315 - root_mean_squared_error: 8.8449
Epoch 495/499
10/10 [==============================] - 0s 4ms/step - loss: 84.7828 - root_mean_squared_error: 9.2078
Epoch 496/499
10/10 [==============================] - 0s 4ms/step - loss: 64.7266 - root_mean_squared_error: 8.0453
Epoch 497/499
10/10 [==============================] - 0s 4ms/step - loss: 68.3690 - root_mean_squared_error: 8.2686
Epoch 498/499
10/10 [==============================] - 0s 4ms/step - loss: 61.5877 - root_mean_squared_error: 7.8478
Epoch 499/499
10/10 [==============================] - 0s 4ms/step - loss: 53.9489 - root_mean_squared_error: 7.3450

Evaluation

Loss vs Epochs
Loss vs Epochs

RMSE vs Epochs
RMSE vs Epochs

Predictions
Predictions

Conclusion

The model created is able to predict RUL with RMSE ~7.

Platform: cAInvas

Code: Here

Written By: Dheeraj Perumandla

Also Read: Handwritten Optical Character Recognition Calculator using CNN and Deep Learning