Main codes for half-cell model, PINN and co-kriging implemented for physics-informed degradation diagnostics project: https://doi.org/10.1016/j.ensm.2024.103343
Note: The dataset used in this project is confidential and cannot be shared due to agreements with industry collaborators.
A physics-informed neural network (PINN) model designed for battery degradation diagnostics. This model combines:
Defines the hybrid loss function, including:
- Data-driven MSE loss (between predictions and real data).
- Physics-based loss (constraining outputs using a half-cell model).
- Peak loss (minimizing dQ/dV peak differences using a surrogate model).
Implements a fully connected neural network (FCNN) with:
- Input layer →
input_size
neurons. - Two hidden layers with ReLU activation.
- Output layer →
output_size
neurons.
Handles the training pipeline, including:
- Loading pre-trained surrogate and half-cell models.
- Training with Adam optimizer and early stopping.
- Batch-based training using PyTorch DataLoader.
- Validation to monitor performance.
Co-kriging is an extension of Gaussian process regression (GPR) that enables multi-fidelity modeling. This allows us to model a high-fidelity function using both high-fidelity (experimental) and low-fidelity (simulated by the half-cell model) datasets. This method utilizes a joint covariance function to simultaneously model the auto-covariances of each individual process and the cross-covariance between two related processes.
The CoKrigingModel
class handles training, optimization, and prediction.
__init__()
→ Initializes the model, loads data, and defines the kernels.get_data_and_split()
→ Loads the dataset and splits it into training/testing sets.train_model()
→ Optimizes the Co-Kriging model using maximum likelihood estimation.predict()
→ Generates predictions for new test inputs.run()
→ Trains the model, makes predictions, and calculates RMSPE.
This function serves as the main entry point to train and evaluate the co-kriging model.