123 lines
2.8 KiB
Markdown
123 lines
2.8 KiB
Markdown
|
|
# New Optimization Testing Guide
|
||
|
|
|
||
|
|
## Test Real-Time Dashboard with Active Optimization
|
||
|
|
|
||
|
|
This will let you see the WebSocket updates in real-time as trials complete.
|
||
|
|
|
||
|
|
## 1. Start Dashboard (Both Servers)
|
||
|
|
|
||
|
|
### Terminal 1 - Backend
|
||
|
|
```bash
|
||
|
|
cd atomizer-dashboard/backend
|
||
|
|
python -m uvicorn api.main:app --reload --port 8000
|
||
|
|
```
|
||
|
|
|
||
|
|
### Terminal 2 - Frontend
|
||
|
|
```bash
|
||
|
|
cd atomizer-dashboard/frontend
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
Visit: `http://localhost:3003`
|
||
|
|
|
||
|
|
## 2. Connect WebSocket to Existing Study
|
||
|
|
|
||
|
|
Open browser console and run:
|
||
|
|
```javascript
|
||
|
|
const ws = new WebSocket('ws://localhost:8000/api/ws/optimization/bracket_stiffness_optimization_V3');
|
||
|
|
|
||
|
|
ws.onmessage = (event) => {
|
||
|
|
const message = JSON.parse(event.data);
|
||
|
|
console.log(`[${message.type}]`, message.data);
|
||
|
|
};
|
||
|
|
|
||
|
|
ws.onopen = () => console.log('✓ Connected to optimization stream');
|
||
|
|
```
|
||
|
|
|
||
|
|
You should see:
|
||
|
|
```
|
||
|
|
✓ Connected to optimization stream
|
||
|
|
[connected] {study_id: "bracket_stiffness_optimization_V3", current_trials: 100, ...}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 3. Start a Small Optimization Run (5 Trials)
|
||
|
|
|
||
|
|
### Terminal 3 - Run Optimization
|
||
|
|
```bash
|
||
|
|
cd studies/bracket_stiffness_optimization_V3
|
||
|
|
python run_optimization.py --trials 5
|
||
|
|
```
|
||
|
|
|
||
|
|
## 4. Watch Real-Time Events
|
||
|
|
|
||
|
|
As trials complete, you'll see WebSocket events:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
// Trial completed
|
||
|
|
[trial_completed] {
|
||
|
|
trial_number: 101,
|
||
|
|
objective: 0.0234,
|
||
|
|
params: {rib_thickness_1: 2.3, ...},
|
||
|
|
...
|
||
|
|
}
|
||
|
|
|
||
|
|
// Progress update
|
||
|
|
[progress] {
|
||
|
|
current: 101,
|
||
|
|
total: 105,
|
||
|
|
percentage: 96.19
|
||
|
|
}
|
||
|
|
|
||
|
|
// New best found (if better than previous)
|
||
|
|
[new_best] {
|
||
|
|
trial_number: 103,
|
||
|
|
objective: 0.0198,
|
||
|
|
...
|
||
|
|
}
|
||
|
|
|
||
|
|
// Pareto front update (multi-objective)
|
||
|
|
[pareto_front] {
|
||
|
|
pareto_front: [{...}, {...}],
|
||
|
|
count: 49
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 5. Test Report Generation While Running
|
||
|
|
|
||
|
|
While optimization is running, generate a report:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl -X POST "http://localhost:8000/api/optimization/studies/bracket_stiffness_optimization_V3/generate-report?format=html"
|
||
|
|
```
|
||
|
|
|
||
|
|
Then download it:
|
||
|
|
```bash
|
||
|
|
curl http://localhost:8000/api/optimization/studies/bracket_stiffness_optimization_V3/reports/optimization_report.html -o report.html
|
||
|
|
```
|
||
|
|
|
||
|
|
Open `report.html` in browser to see formatted report with all 100+ trials.
|
||
|
|
|
||
|
|
## 6. Expected Behavior
|
||
|
|
|
||
|
|
- WebSocket receives events as trials complete (2-5 minute intervals per trial)
|
||
|
|
- Progress percentage updates
|
||
|
|
- Pareto front grows if new non-dominated solutions found
|
||
|
|
- Report can be generated at any point during optimization
|
||
|
|
- All endpoints remain responsive during optimization
|
||
|
|
|
||
|
|
## 7. Production Testing
|
||
|
|
|
||
|
|
For full production test:
|
||
|
|
```bash
|
||
|
|
python run_optimization.py --trials 50
|
||
|
|
```
|
||
|
|
|
||
|
|
This will run for several hours and provide extensive real-time data for dashboard testing.
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- Each trial takes 2-5 minutes (NX simulation solve time)
|
||
|
|
- WebSocket will broadcast updates immediately upon trial completion
|
||
|
|
- Frontend should handle all 6 event types gracefully
|
||
|
|
- Reports update dynamically as new trials complete
|