Skip to main content

A Convolutional Autoencoder trained Using the PSO algorithm for extracting latent monotonic factors from multivariate time series

Project description

CAE-PSO

PyPI version Python versions License: MIT

A Convolutional Autoencoder trained using the PSO (Particle Swarm Optimization) algorithm for extracting latent monotonic factors from multivariate time series.

Here we provide information about:

  1. Introduction
  2. Installation
  3. Basic usage
  4. Citation
  5. License

1. Introduction

cae-pso is a Python package designed for unsupervised feature extraction from complex multivariate time series. By integrating a Convolutional Autoencoder (CAE) with Particle Swarm Optimization (PSO), this model is optimized to construct latent monotonic factors. This approach is highly effective for applications such as generating robust health indicators for predictive maintenance, condition monitoring, and degradation tracking (e.g., bearing health assessment) in wind energy and aerospace systems.

The package implements the hybrid training methodology proposed in the following research:

A hybrid Convolutional Autoencoder training algorithm for unsupervised bearing health indicator construction Engineering Applications of Artificial Intelligence, Volume 139, 2025. Read the full paper on ScienceDirect

In this work, the model is applied to extract the monotonic factor describing the degradation in bearings, i.e., Health Indicators (HIs). Leveraging PSO for training the CAE architecture enables maximising the global monotonicity of the extracted factor.

2. Installation

You can install the latest release of the package directly from PyPI.

pip install cae-pso

3. Basic usage

⚠️ Important Note on Multiprocessing: Because the train method uses Python's multiprocessing library to distribute the PSO population workload, you must wrap your execution code inside an if __name__ == '__main__': block. Failing to do so will cause recursive spawning of subprocesses and crash your program.

Below is a quick-start example demonstrating how to initialize the CAE model, prepare your data with the expected dimensional shapes, run the PSO training, and extract the monotonic health indicator (HI).

import numpy as np
from cae_pso import CAE


if __name__ == '__main__':
    # 1. Prepare your multivariate time series data
    # The model expects a list of arrays for training (e.g., multiple run-to-failure trajectories).
    # Each array MUST have the shape: (1, total_time_steps, n_features, 1)
    total_time_steps = 1000
    n_features = 4
    time_window = 10
    
    # Creating a single dummy run-to-failure (RTF) trajectory
    rtf_trajectory = np.random.rand(1, total_time_steps, n_features, 1)
    train_data = [rtf_trajectory] # Add more trajectories to this list as needed
    
    # 2. Initialize the model
    # Define the time window (sequence length) and the number of features
    cae = CAE(
        time_w=time_window, 
        n_features=n_features,
        n_filters=16,       # Default: 16 filters
        activation='elu'    # Default: Exponential Linear Unit
    )
    
    # The Keras model can be accessed using cae.model
    print(cae.model.summary())
    
    # 3. Train the model using PSO
    # The train method utilizes multiprocessing and logs the generation stats
    history = cae.train(
        data=train_data, 
        n_gen=10,                   # Number of generations
        pop_size=10,                # Particle swarm population size
        log_filepath='./logs/'      # The directory to save the training logs
    )
    
    # Access training history if needed
    # print("Best Fitness:", history.maxs[-1])
    
    # 4. Extract the Health Indicator (HI)
    # Pass a single trajectory to get_hi() to extract the smoothened, monotonic trend
    # Output will be a 1D array representing the health indicator over time
    health_indicator = cae.get_hi(rtf_trajectory)
    
    print(f"Extracted HI shape: {health_indicator.shape}")

4. Citation

If you use this package in your research or work, please cite the original paper:

@article{Milani2025,
  title = {A hybrid Convolutional Autoencoder training algorithm for unsupervised bearing health indicator construction},
  volume = {139},
  ISSN = {0952-1976},
  url = {http://dx.doi.org/10.1016/j.engappai.2024.109477},
  DOI = {10.1016/j.engappai.2024.109477},
  journal = {Engineering Applications of Artificial Intelligence},
  publisher = {Elsevier BV},
  author = {Milani,  Ali Eftekhari and Zappalá,  Donatella and Watson,  Simon J.},
  year = {2025},
  month = Jan,
  pages = {109477}
}

5. License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cae_pso-0.0.4.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cae_pso-0.0.4-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file cae_pso-0.0.4.tar.gz.

File metadata

  • Download URL: cae_pso-0.0.4.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cae_pso-0.0.4.tar.gz
Algorithm Hash digest
SHA256 f95c801d1e041283a8792bd9421e3b275e846a268c48a12055e159d3ddd8c1f7
MD5 0299fc8933f0c5c4298f30ecb2899389
BLAKE2b-256 5ba876858a1919e203a6a8dd3b573b580a87fa2c872503592c29f4de7b4ee4d3

See more details on using hashes here.

File details

Details for the file cae_pso-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: cae_pso-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cae_pso-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3e0c6434809e529852dc6e77fb549b6580748cb630f1e1dca9bc13f4179cf483
MD5 fa9defec87acb702f0cb1762a92c5de3
BLAKE2b-256 8076164fc3d95c142fe8e0cff216abc74f74575a32bb7f76d98703dfd64c67b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page