This project focuses on optimizing the erosion resistance of protective coatings using Atmospheric Plasma Spraying (APS) through batch optimization techniques.
Atmospheric Plasma Spraying (APS) is used to deposit protective coatings on material substrates. The goal is to apply a high-hardness metallic coating to improve erosion resistance, measured by mass loss under sand blasting.
- Testing requires shipping samples to a specialized laboratory
- Each test takes approximately 4 days
- Budget: 30 experiments total
- Solution: Batch optimization approach (3 samples per batch)
- Total optimization time reduced from 120 to 40 days
| Parameter | Range | Units |
|---|---|---|
| Primary Gas Flow Rate | 30 - 80 | SLPM |
| Secondary Gas Flow Rate | 10 - 50 | SLPM |
| Gun Current | 300 - 800 | A |
| Carrier Gas Flow Rate | 2 - 10 | SLPM |
| Power Feed Rate | 10 - 100 | g/min |
| Spray Distance | 50 - 150 | mm |
To protect the APS device, the following constraint must be satisfied:
device_stress_index = primary_gas_flow_rate + secondary_gas_flow_rate + gun_current <= 750Use Honegumi to set up and run the optimization problem:
- Configure parameters and constraints
- Implement batch processing
- Handle device stress constraints
Report:
- Optimal parameters
- Associated erosion rate
- Device stress index
Calculate the number of solutions in the bottom 15% of trials that have a stress index > 700.
For non-Sobol batches:
- Calculate how many experiments per batch were lower than the previous best
- Compute the average of these improvements
For non-Sobol batches:
- Calculate diversity using Euclidean distance between parameters
- Identify most and least diverse batches
- Uses synthetic objective function
measure_erosion()fromutils.py - Implements proper error handling and validation
- Provides comprehensive logging
- Ensures reproducibility through seed setting
.
├── qSOBO_assignment.py # Main optimization implementation
├── utils.py # Utility functions and measurements
├── requirements.txt # Project dependencies
└── README.md # Project documentation
- Install dependencies:
pip install -r requirements.txt- Run the optimization:
python qSOBO_assignment.py- First 3 batches use Sobol sampling
- Subsequent batches use Bayesian optimization
- All parameters are validated before optimization
- Device stress constraint is enforced throughout optimization