feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
import { useState, useEffect, lazy, Suspense, useRef } from 'react';
|
2025-12-04 15:02:13 -05:00
|
|
|
|
import { useNavigate } from 'react-router-dom';
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
import { Terminal, Settings } from 'lucide-react';
|
2025-11-24 09:12:36 -05:00
|
|
|
|
import { useOptimizationWebSocket } from '../hooks/useWebSocket';
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
import { useNotifications, formatOptimizationNotification } from '../hooks/useNotifications';
|
2025-11-24 09:12:36 -05:00
|
|
|
|
import { apiClient } from '../api/client';
|
2025-12-04 15:02:13 -05:00
|
|
|
|
import { useStudy } from '../context/StudyContext';
|
2025-12-05 12:56:34 -05:00
|
|
|
|
import { useClaudeTerminal } from '../context/ClaudeTerminalContext';
|
2025-11-24 09:12:36 -05:00
|
|
|
|
import { Card } from '../components/common/Card';
|
2025-12-04 15:02:13 -05:00
|
|
|
|
import { ControlPanel } from '../components/dashboard/ControlPanel';
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
import { NotificationSettings } from '../components/NotificationSettings';
|
|
|
|
|
|
import { ConfigEditor } from '../components/ConfigEditor';
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
import { ParetoPlot } from '../components/ParetoPlot';
|
|
|
|
|
|
import { ParallelCoordinatesPlot } from '../components/ParallelCoordinatesPlot';
|
2025-12-02 22:01:49 -05:00
|
|
|
|
import { ParameterImportanceChart } from '../components/ParameterImportanceChart';
|
|
|
|
|
|
import { ConvergencePlot } from '../components/ConvergencePlot';
|
|
|
|
|
|
import { StudyReportViewer } from '../components/StudyReportViewer';
|
2025-12-04 07:41:54 -05:00
|
|
|
|
import { ConsoleOutput } from '../components/ConsoleOutput';
|
|
|
|
|
|
import { ExpandableChart } from '../components/ExpandableChart';
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
import { CurrentTrialPanel, OptimizerStatePanel } from '../components/tracker';
|
2025-12-04 20:59:31 -05:00
|
|
|
|
import type { Trial } from '../types';
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
2025-12-04 07:41:54 -05:00
|
|
|
|
// Lazy load Plotly components for better initial load performance
|
|
|
|
|
|
const PlotlyParallelCoordinates = lazy(() => import('../components/plotly/PlotlyParallelCoordinates').then(m => ({ default: m.PlotlyParallelCoordinates })));
|
|
|
|
|
|
const PlotlyParetoPlot = lazy(() => import('../components/plotly/PlotlyParetoPlot').then(m => ({ default: m.PlotlyParetoPlot })));
|
|
|
|
|
|
const PlotlyConvergencePlot = lazy(() => import('../components/plotly/PlotlyConvergencePlot').then(m => ({ default: m.PlotlyConvergencePlot })));
|
|
|
|
|
|
const PlotlyParameterImportance = lazy(() => import('../components/plotly/PlotlyParameterImportance').then(m => ({ default: m.PlotlyParameterImportance })));
|
|
|
|
|
|
|
|
|
|
|
|
// Loading placeholder for lazy components
|
|
|
|
|
|
const ChartLoading = () => (
|
|
|
|
|
|
<div className="flex items-center justify-center h-64 text-dark-400">
|
|
|
|
|
|
<div className="animate-pulse">Loading chart...</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2025-11-24 09:12:36 -05:00
|
|
|
|
export default function Dashboard() {
|
2025-12-04 15:02:13 -05:00
|
|
|
|
const navigate = useNavigate();
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
const { selectedStudy, refreshStudies, isInitialized } = useStudy();
|
2025-12-04 15:02:13 -05:00
|
|
|
|
const selectedStudyId = selectedStudy?.id || null;
|
|
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// All hooks must be declared before any conditional returns
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
const [allTrials, setAllTrials] = useState<Trial[]>([]);
|
2025-11-24 09:12:36 -05:00
|
|
|
|
const [displayedTrials, setDisplayedTrials] = useState<Trial[]>([]);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
const [bestValue, setBestValue] = useState<number>(Infinity);
|
|
|
|
|
|
const [prunedCount, setPrunedCount] = useState<number>(0);
|
|
|
|
|
|
const [alerts, setAlerts] = useState<Array<{ id: number; type: 'success' | 'warning'; message: string }>>([]);
|
|
|
|
|
|
const [alertIdCounter, setAlertIdCounter] = useState(0);
|
2025-11-24 09:12:36 -05:00
|
|
|
|
const [expandedTrials, setExpandedTrials] = useState<Set<number>>(new Set());
|
|
|
|
|
|
const [sortBy, setSortBy] = useState<'performance' | 'chronological'>('performance');
|
2025-12-04 17:36:00 -05:00
|
|
|
|
const [trialsPage, setTrialsPage] = useState(0);
|
|
|
|
|
|
const trialsPerPage = 50; // Limit trials per page for performance
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// Parameter Space axis selection (reserved for future use)
|
|
|
|
|
|
const [_paramXIndex, _setParamXIndex] = useState(0);
|
|
|
|
|
|
const [_paramYIndex, _setParamYIndex] = useState(1);
|
2025-12-02 22:01:49 -05:00
|
|
|
|
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
// Protocol 13: New state for metadata and Pareto front
|
|
|
|
|
|
const [studyMetadata, setStudyMetadata] = useState<any>(null);
|
|
|
|
|
|
const [paretoFront, setParetoFront] = useState<any[]>([]);
|
feat: Major update with validators, skills, dashboard, and docs reorganization
- Add validation framework (config, model, results, study validators)
- Add Claude Code skills (create-study, run-optimization, generate-report,
troubleshoot, analyze-model)
- Add Atomizer Dashboard (React frontend + FastAPI backend)
- Reorganize docs into structured directories (00-09)
- Add neural surrogate modules and training infrastructure
- Add multi-objective optimization support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:23:58 -05:00
|
|
|
|
const [allTrialsRaw, setAllTrialsRaw] = useState<any[]>([]); // All trials for parallel coordinates
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
2025-12-04 07:41:54 -05:00
|
|
|
|
// Chart library toggle: 'recharts' (faster) or 'plotly' (more interactive but slower)
|
|
|
|
|
|
const [chartLibrary, setChartLibrary] = useState<'plotly' | 'recharts'>('recharts');
|
|
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// Process status for tracker panels
|
|
|
|
|
|
const [isRunning, setIsRunning] = useState(false);
|
|
|
|
|
|
const [lastTrialTime, _setLastTrialTime] = useState<number | undefined>(undefined);
|
|
|
|
|
|
|
|
|
|
|
|
// Config editor modal
|
|
|
|
|
|
const [showConfigEditor, setShowConfigEditor] = useState(false);
|
|
|
|
|
|
|
2025-12-05 12:56:34 -05:00
|
|
|
|
// Claude terminal from global context
|
|
|
|
|
|
const { isOpen: claudeTerminalOpen, setIsOpen: setClaudeTerminalOpen, isConnected: claudeConnected } = useClaudeTerminal();
|
2025-11-24 09:12:36 -05:00
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// Desktop notifications
|
|
|
|
|
|
const { showNotification } = useNotifications();
|
|
|
|
|
|
const previousBestRef = useRef<number>(Infinity);
|
|
|
|
|
|
|
|
|
|
|
|
// Redirect to home if no study selected (but only after initialization completes)
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
|
if (isInitialized && !selectedStudy) {
|
|
|
|
|
|
navigate('/');
|
|
|
|
|
|
}
|
|
|
|
|
|
}, [selectedStudy, navigate, isInitialized]);
|
|
|
|
|
|
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
const showAlert = (type: 'success' | 'warning', message: string) => {
|
|
|
|
|
|
const id = alertIdCounter;
|
|
|
|
|
|
setAlertIdCounter(prev => prev + 1);
|
|
|
|
|
|
setAlerts(prev => [...prev, { id, type, message }]);
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
setAlerts(prev => prev.filter(a => a.id !== id));
|
|
|
|
|
|
}, 5000);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// WebSocket connection
|
2025-12-04 07:41:54 -05:00
|
|
|
|
const { connectionStatus: _connectionStatus } = useOptimizationWebSocket({
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
studyId: selectedStudyId,
|
2025-11-24 09:12:36 -05:00
|
|
|
|
onMessage: (msg) => {
|
|
|
|
|
|
if (msg.type === 'trial_completed') {
|
|
|
|
|
|
const trial = msg.data as Trial;
|
|
|
|
|
|
setAllTrials(prev => [...prev, trial]);
|
|
|
|
|
|
if (trial.objective !== null && trial.objective !== undefined && trial.objective < bestValue) {
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
const improvement = previousBestRef.current !== Infinity
|
|
|
|
|
|
? ((previousBestRef.current - trial.objective) / Math.abs(previousBestRef.current)) * 100
|
|
|
|
|
|
: 0;
|
|
|
|
|
|
|
2025-11-24 09:12:36 -05:00
|
|
|
|
setBestValue(trial.objective);
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
previousBestRef.current = trial.objective;
|
2025-11-24 09:12:36 -05:00
|
|
|
|
showAlert('success', `New best: ${trial.objective.toFixed(4)} (Trial #${trial.trial_number})`);
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
|
|
|
|
|
|
// Desktop notification for new best
|
|
|
|
|
|
showNotification(formatOptimizationNotification({
|
|
|
|
|
|
type: 'new_best',
|
|
|
|
|
|
studyName: selectedStudy?.name || selectedStudyId || 'Study',
|
|
|
|
|
|
message: `Best value: ${trial.objective.toExponential(4)}`,
|
|
|
|
|
|
value: trial.objective,
|
|
|
|
|
|
improvement
|
|
|
|
|
|
}));
|
2025-11-24 09:12:36 -05:00
|
|
|
|
}
|
|
|
|
|
|
} else if (msg.type === 'trial_pruned') {
|
|
|
|
|
|
setPrunedCount(prev => prev + 1);
|
|
|
|
|
|
showAlert('warning', `Trial pruned: ${msg.data.pruning_cause}`);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
}
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// Load initial trial history when study changes
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// PERFORMANCE: Use limit to avoid loading thousands of trials at once
|
|
|
|
|
|
const MAX_TRIALS_LOAD = 300;
|
|
|
|
|
|
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
useEffect(() => {
|
|
|
|
|
|
if (selectedStudyId) {
|
|
|
|
|
|
setAllTrials([]);
|
|
|
|
|
|
setBestValue(Infinity);
|
|
|
|
|
|
setPrunedCount(0);
|
2025-11-24 09:12:36 -05:00
|
|
|
|
setExpandedTrials(new Set());
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Single history fetch with limit - used for both trial list and charts
|
|
|
|
|
|
// This replaces the duplicate fetch calls
|
|
|
|
|
|
fetch(`/api/optimization/studies/${selectedStudyId}/history?limit=${MAX_TRIALS_LOAD}`)
|
|
|
|
|
|
.then(res => res.json())
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
.then(data => {
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Set trials for the trial list
|
|
|
|
|
|
const validTrials = data.trials.filter((t: any) => t.objective !== null && t.objective !== undefined);
|
2025-11-24 09:12:36 -05:00
|
|
|
|
setAllTrials(validTrials);
|
|
|
|
|
|
if (validTrials.length > 0) {
|
2025-12-04 17:36:00 -05:00
|
|
|
|
const minObj = Math.min(...validTrials.map((t: any) => t.objective));
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
setBestValue(minObj);
|
|
|
|
|
|
}
|
2025-12-04 17:36:00 -05:00
|
|
|
|
|
|
|
|
|
|
// Transform for charts (parallel coordinates, etc.)
|
|
|
|
|
|
const trialsData = data.trials.map((t: any) => {
|
|
|
|
|
|
let values: number[] = [];
|
|
|
|
|
|
if (t.objectives && Array.isArray(t.objectives)) {
|
|
|
|
|
|
values = t.objectives;
|
|
|
|
|
|
} else if (t.objective !== null && t.objective !== undefined) {
|
|
|
|
|
|
values = [t.objective];
|
|
|
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
|
|
|
trial_number: t.trial_number,
|
|
|
|
|
|
values,
|
|
|
|
|
|
params: t.design_variables || {},
|
|
|
|
|
|
user_attrs: t.user_attrs || {},
|
|
|
|
|
|
constraint_satisfied: t.constraint_satisfied !== false,
|
|
|
|
|
|
source: t.source || t.user_attrs?.source || 'FEA'
|
|
|
|
|
|
};
|
|
|
|
|
|
});
|
|
|
|
|
|
setAllTrialsRaw(trialsData);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
})
|
2025-11-24 09:12:36 -05:00
|
|
|
|
.catch(console.error);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
2025-11-24 09:12:36 -05:00
|
|
|
|
apiClient.getStudyPruning(selectedStudyId)
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
.then(data => {
|
2025-12-02 22:01:49 -05:00
|
|
|
|
setPrunedCount(data.count ?? data.pruned_trials?.length ?? 0);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
})
|
2025-11-24 09:12:36 -05:00
|
|
|
|
.catch(console.error);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Fetch metadata (small payload)
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
fetch(`/api/optimization/studies/${selectedStudyId}/metadata`)
|
|
|
|
|
|
.then(res => res.json())
|
2025-12-04 17:36:00 -05:00
|
|
|
|
.then(data => setStudyMetadata(data))
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
.catch(err => console.error('Failed to load metadata:', err));
|
|
|
|
|
|
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Fetch Pareto front (usually small)
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
fetch(`/api/optimization/studies/${selectedStudyId}/pareto-front`)
|
|
|
|
|
|
.then(res => res.json())
|
2025-11-24 09:12:36 -05:00
|
|
|
|
.then(paretoData => {
|
|
|
|
|
|
if (paretoData.is_multi_objective && paretoData.pareto_front) {
|
|
|
|
|
|
setParetoFront(paretoData.pareto_front);
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
} else {
|
|
|
|
|
|
setParetoFront([]);
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(err => console.error('Failed to load Pareto front:', err));
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
|
|
|
|
|
|
// Check process status
|
|
|
|
|
|
apiClient.getProcessStatus(selectedStudyId)
|
|
|
|
|
|
.then(data => {
|
|
|
|
|
|
setIsRunning(data.is_running);
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(err => console.error('Failed to load process status:', err));
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
}
|
|
|
|
|
|
}, [selectedStudyId]);
|
|
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// Poll process status periodically
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
|
if (!selectedStudyId) return;
|
|
|
|
|
|
|
|
|
|
|
|
const pollStatus = setInterval(() => {
|
|
|
|
|
|
apiClient.getProcessStatus(selectedStudyId)
|
|
|
|
|
|
.then(data => {
|
|
|
|
|
|
setIsRunning(data.is_running);
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(() => {});
|
|
|
|
|
|
}, 5000);
|
|
|
|
|
|
|
|
|
|
|
|
return () => clearInterval(pollStatus);
|
|
|
|
|
|
}, [selectedStudyId]);
|
|
|
|
|
|
|
2025-11-24 09:12:36 -05:00
|
|
|
|
// Sort trials based on selected sort order
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
|
let sorted = [...allTrials];
|
|
|
|
|
|
if (sortBy === 'performance') {
|
|
|
|
|
|
// Sort by objective (best first)
|
|
|
|
|
|
sorted.sort((a, b) => {
|
|
|
|
|
|
const aObj = a.objective ?? Infinity;
|
|
|
|
|
|
const bObj = b.objective ?? Infinity;
|
|
|
|
|
|
return aObj - bObj;
|
|
|
|
|
|
});
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// Chronological (newest first)
|
|
|
|
|
|
sorted.sort((a, b) => b.trial_number - a.trial_number);
|
|
|
|
|
|
}
|
|
|
|
|
|
setDisplayedTrials(sorted);
|
|
|
|
|
|
}, [allTrials, sortBy]);
|
|
|
|
|
|
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Auto-refresh polling for trial history
|
|
|
|
|
|
// PERFORMANCE: Use limit and longer interval for large studies
|
2025-11-24 09:12:36 -05:00
|
|
|
|
useEffect(() => {
|
|
|
|
|
|
if (!selectedStudyId) return;
|
|
|
|
|
|
|
|
|
|
|
|
const refreshInterval = setInterval(() => {
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Only fetch latest trials, not the entire history
|
|
|
|
|
|
fetch(`/api/optimization/studies/${selectedStudyId}/history?limit=${MAX_TRIALS_LOAD}`)
|
|
|
|
|
|
.then(res => res.json())
|
2025-11-24 09:12:36 -05:00
|
|
|
|
.then(data => {
|
2025-12-04 17:36:00 -05:00
|
|
|
|
const validTrials = data.trials.filter((t: any) => t.objective !== null && t.objective !== undefined);
|
2025-11-24 09:12:36 -05:00
|
|
|
|
setAllTrials(validTrials);
|
|
|
|
|
|
if (validTrials.length > 0) {
|
2025-12-04 17:36:00 -05:00
|
|
|
|
const minObj = Math.min(...validTrials.map((t: any) => t.objective));
|
2025-11-24 09:12:36 -05:00
|
|
|
|
setBestValue(minObj);
|
|
|
|
|
|
}
|
2025-12-04 17:36:00 -05:00
|
|
|
|
// Also update chart data
|
|
|
|
|
|
const trialsData = data.trials.map((t: any) => {
|
|
|
|
|
|
let values: number[] = [];
|
|
|
|
|
|
if (t.objectives && Array.isArray(t.objectives)) {
|
|
|
|
|
|
values = t.objectives;
|
|
|
|
|
|
} else if (t.objective !== null && t.objective !== undefined) {
|
|
|
|
|
|
values = [t.objective];
|
|
|
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
|
|
|
trial_number: t.trial_number,
|
|
|
|
|
|
values,
|
|
|
|
|
|
params: t.design_variables || {},
|
|
|
|
|
|
user_attrs: t.user_attrs || {},
|
|
|
|
|
|
constraint_satisfied: t.constraint_satisfied !== false,
|
|
|
|
|
|
source: t.source || t.user_attrs?.source || 'FEA'
|
|
|
|
|
|
};
|
|
|
|
|
|
});
|
|
|
|
|
|
setAllTrialsRaw(trialsData);
|
2025-11-24 09:12:36 -05:00
|
|
|
|
})
|
|
|
|
|
|
.catch(err => console.error('Auto-refresh failed:', err));
|
2025-12-04 17:36:00 -05:00
|
|
|
|
}, 15000); // Poll every 15 seconds for performance
|
2025-11-24 09:12:36 -05:00
|
|
|
|
|
|
|
|
|
|
return () => clearInterval(refreshInterval);
|
|
|
|
|
|
}, [selectedStudyId]);
|
|
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// Show loading state while initializing (restoring study from localStorage)
|
|
|
|
|
|
if (!isInitialized) {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<div className="flex items-center justify-center min-h-screen">
|
|
|
|
|
|
<div className="text-center">
|
|
|
|
|
|
<div className="animate-spin w-8 h-8 border-2 border-primary-500 border-t-transparent rounded-full mx-auto mb-4"></div>
|
|
|
|
|
|
<p className="text-dark-400">Loading study...</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
// Note: Chart data sampling is handled by individual chart components
|
2025-12-04 17:36:00 -05:00
|
|
|
|
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
// Calculate average objective
|
2025-11-24 09:12:36 -05:00
|
|
|
|
const validObjectives = allTrials.filter(t => t.objective !== null && t.objective !== undefined).map(t => t.objective);
|
|
|
|
|
|
const avgObjective = validObjectives.length > 0
|
|
|
|
|
|
? validObjectives.reduce((sum, obj) => sum + obj, 0) / validObjectives.length
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
: 0;
|
|
|
|
|
|
|
|
|
|
|
|
// Get parameter names
|
2025-11-24 09:12:36 -05:00
|
|
|
|
const paramNames = allTrials.length > 0 && allTrials[0].design_variables
|
|
|
|
|
|
? Object.keys(allTrials[0].design_variables)
|
|
|
|
|
|
: [];
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
2025-11-24 09:12:36 -05:00
|
|
|
|
// Toggle trial expansion
|
|
|
|
|
|
const toggleTrialExpansion = (trialNumber: number) => {
|
|
|
|
|
|
setExpandedTrials(prev => {
|
|
|
|
|
|
const newSet = new Set(prev);
|
|
|
|
|
|
if (newSet.has(trialNumber)) {
|
|
|
|
|
|
newSet.delete(trialNumber);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
newSet.add(trialNumber);
|
|
|
|
|
|
}
|
|
|
|
|
|
return newSet;
|
|
|
|
|
|
});
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Export functions
|
|
|
|
|
|
const exportJSON = () => {
|
|
|
|
|
|
if (allTrials.length === 0) return;
|
|
|
|
|
|
const data = JSON.stringify(allTrials, null, 2);
|
|
|
|
|
|
const blob = new Blob([data], { type: 'application/json' });
|
|
|
|
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
|
|
const a = document.createElement('a');
|
|
|
|
|
|
a.href = url;
|
|
|
|
|
|
a.download = `${selectedStudyId}_trials.json`;
|
|
|
|
|
|
a.click();
|
|
|
|
|
|
URL.revokeObjectURL(url);
|
|
|
|
|
|
showAlert('success', 'JSON exported successfully!');
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const exportCSV = () => {
|
|
|
|
|
|
if (allTrials.length === 0) return;
|
|
|
|
|
|
const headers = ['trial_number', 'objective', ...paramNames].join(',');
|
|
|
|
|
|
const rows = allTrials.map(t => [
|
|
|
|
|
|
t.trial_number,
|
|
|
|
|
|
t.objective,
|
2025-11-24 09:12:36 -05:00
|
|
|
|
...paramNames.map(k => t.design_variables?.[k] ?? '')
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
].join(','));
|
|
|
|
|
|
const csv = [headers, ...rows].join('\n');
|
|
|
|
|
|
const blob = new Blob([csv], { type: 'text/csv' });
|
|
|
|
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
|
|
const a = document.createElement('a');
|
|
|
|
|
|
a.href = url;
|
|
|
|
|
|
a.download = `${selectedStudyId}_trials.csv`;
|
|
|
|
|
|
a.click();
|
|
|
|
|
|
URL.revokeObjectURL(url);
|
|
|
|
|
|
showAlert('success', 'CSV exported successfully!');
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
2025-12-04 07:41:54 -05:00
|
|
|
|
<div className="w-full max-w-[2400px] mx-auto px-4">
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
{/* Alerts */}
|
|
|
|
|
|
<div className="fixed top-4 right-4 z-50 space-y-2">
|
|
|
|
|
|
{alerts.map(alert => (
|
|
|
|
|
|
<div
|
|
|
|
|
|
key={alert.id}
|
|
|
|
|
|
className={`px-4 py-3 rounded-lg shadow-lg transition-all duration-300 ${
|
|
|
|
|
|
alert.type === 'success'
|
|
|
|
|
|
? 'bg-green-900 border-l-4 border-green-400 text-green-100'
|
|
|
|
|
|
: 'bg-yellow-900 border-l-4 border-yellow-400 text-yellow-100'
|
|
|
|
|
|
}`}
|
|
|
|
|
|
>
|
|
|
|
|
|
{alert.message}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
))}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{/* Header */}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
<header className="mb-8 flex items-center justify-between border-b border-dark-600 pb-4">
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
<div>
|
2025-11-24 09:12:36 -05:00
|
|
|
|
<h1 className="text-3xl font-bold text-primary-400">Live Dashboard</h1>
|
|
|
|
|
|
<p className="text-dark-300 mt-1">Real-time optimization monitoring</p>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
<div className="flex gap-2">
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
{/* Config Editor Button */}
|
|
|
|
|
|
{selectedStudyId && (
|
|
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setShowConfigEditor(true)}
|
|
|
|
|
|
className="flex items-center gap-1.5 px-2 py-1 rounded text-xs bg-dark-700 text-dark-400 hover:bg-dark-600 hover:text-white transition-colors"
|
|
|
|
|
|
title="Edit study configuration"
|
|
|
|
|
|
>
|
|
|
|
|
|
<Settings className="w-4 h-4" />
|
|
|
|
|
|
<span className="hidden sm:inline">Config</span>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
|
|
{/* Notification Toggle */}
|
|
|
|
|
|
<NotificationSettings compact />
|
|
|
|
|
|
|
2025-12-04 15:02:13 -05:00
|
|
|
|
{/* Claude Code Terminal Toggle Button */}
|
|
|
|
|
|
<button
|
2025-12-05 12:56:34 -05:00
|
|
|
|
onClick={() => setClaudeTerminalOpen(!claudeTerminalOpen)}
|
2025-12-04 15:02:13 -05:00
|
|
|
|
className={`flex items-center gap-2 px-4 py-2 rounded-lg transition-colors ${
|
2025-12-05 12:56:34 -05:00
|
|
|
|
claudeTerminalOpen
|
2025-12-04 15:02:13 -05:00
|
|
|
|
? 'bg-primary-600 text-white'
|
2025-12-05 12:56:34 -05:00
|
|
|
|
: claudeConnected
|
|
|
|
|
|
? 'bg-green-700 text-white border border-green-600'
|
|
|
|
|
|
: 'bg-dark-700 text-dark-200 hover:bg-dark-600 hover:text-white border border-dark-600'
|
2025-12-04 15:02:13 -05:00
|
|
|
|
}`}
|
2025-12-05 12:56:34 -05:00
|
|
|
|
title={claudeConnected ? 'Claude Terminal (Connected)' : 'Open Claude Code terminal'}
|
2025-12-04 15:02:13 -05:00
|
|
|
|
>
|
|
|
|
|
|
<Terminal className="w-4 h-4" />
|
|
|
|
|
|
<span className="hidden sm:inline">Claude Code</span>
|
2025-12-05 12:56:34 -05:00
|
|
|
|
{claudeConnected && !claudeTerminalOpen && (
|
|
|
|
|
|
<span className="w-2 h-2 bg-green-400 rounded-full animate-pulse" />
|
|
|
|
|
|
)}
|
2025-12-04 15:02:13 -05:00
|
|
|
|
</button>
|
2025-12-02 22:01:49 -05:00
|
|
|
|
{selectedStudyId && (
|
|
|
|
|
|
<StudyReportViewer studyId={selectedStudyId} />
|
|
|
|
|
|
)}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => {
|
feat: Major update with validators, skills, dashboard, and docs reorganization
- Add validation framework (config, model, results, study validators)
- Add Claude Code skills (create-study, run-optimization, generate-report,
troubleshoot, analyze-model)
- Add Atomizer Dashboard (React frontend + FastAPI backend)
- Reorganize docs into structured directories (00-09)
- Add neural surrogate modules and training infrastructure
- Add multi-objective optimization support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:23:58 -05:00
|
|
|
|
// Open Optuna dashboard on port 8081
|
|
|
|
|
|
// Note: The dashboard needs to be started separately with the correct study database
|
|
|
|
|
|
window.open('http://localhost:8081', '_blank');
|
2025-11-24 09:12:36 -05:00
|
|
|
|
}}
|
|
|
|
|
|
className="btn-secondary"
|
feat: Major update with validators, skills, dashboard, and docs reorganization
- Add validation framework (config, model, results, study validators)
- Add Claude Code skills (create-study, run-optimization, generate-report,
troubleshoot, analyze-model)
- Add Atomizer Dashboard (React frontend + FastAPI backend)
- Reorganize docs into structured directories (00-09)
- Add neural surrogate modules and training infrastructure
- Add multi-objective optimization support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:23:58 -05:00
|
|
|
|
title="Open Optuna Dashboard (runs on port 8081)"
|
2025-11-24 09:12:36 -05:00
|
|
|
|
>
|
|
|
|
|
|
Optuna Dashboard
|
|
|
|
|
|
</button>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
<button onClick={exportJSON} className="btn-secondary" disabled={allTrials.length === 0}>
|
|
|
|
|
|
Export JSON
|
|
|
|
|
|
</button>
|
|
|
|
|
|
<button onClick={exportCSV} className="btn-secondary" disabled={allTrials.length === 0}>
|
|
|
|
|
|
Export CSV
|
|
|
|
|
|
</button>
|
2025-12-04 07:41:54 -05:00
|
|
|
|
{/* Chart library toggle */}
|
|
|
|
|
|
<div className="flex rounded-lg overflow-hidden border border-dark-500 ml-2">
|
|
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setChartLibrary('plotly')}
|
|
|
|
|
|
className={`px-3 py-1.5 text-sm transition-colors ${
|
|
|
|
|
|
chartLibrary === 'plotly'
|
|
|
|
|
|
? 'bg-primary-500 text-white'
|
|
|
|
|
|
: 'bg-dark-600 text-dark-200 hover:bg-dark-500'
|
|
|
|
|
|
}`}
|
|
|
|
|
|
title="Interactive Plotly charts with zoom, pan, and export"
|
|
|
|
|
|
>
|
|
|
|
|
|
Plotly
|
|
|
|
|
|
</button>
|
|
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setChartLibrary('recharts')}
|
|
|
|
|
|
className={`px-3 py-1.5 text-sm transition-colors ${
|
|
|
|
|
|
chartLibrary === 'recharts'
|
|
|
|
|
|
? 'bg-primary-500 text-white'
|
|
|
|
|
|
: 'bg-dark-600 text-dark-200 hover:bg-dark-500'
|
|
|
|
|
|
}`}
|
|
|
|
|
|
title="Simple Recharts visualization"
|
|
|
|
|
|
>
|
|
|
|
|
|
Simple
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</div>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
</header>
|
|
|
|
|
|
|
2025-12-04 20:59:31 -05:00
|
|
|
|
{/* Control Panel - Full Width on Top */}
|
|
|
|
|
|
<div className="mb-6">
|
|
|
|
|
|
<ControlPanel onStatusChange={refreshStudies} horizontal />
|
|
|
|
|
|
</div>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
{/* Tracker Panels - Current Trial and Optimizer State */}
|
|
|
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
|
|
|
|
|
|
<CurrentTrialPanel
|
|
|
|
|
|
studyId={selectedStudyId}
|
|
|
|
|
|
totalTrials={selectedStudy?.progress.total || 100}
|
|
|
|
|
|
completedTrials={allTrials.length}
|
|
|
|
|
|
isRunning={isRunning}
|
|
|
|
|
|
lastTrialTime={lastTrialTime}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<OptimizerStatePanel
|
|
|
|
|
|
sampler={studyMetadata?.sampler}
|
|
|
|
|
|
nTrials={selectedStudy?.progress.total || 100}
|
|
|
|
|
|
completedTrials={allTrials.length}
|
|
|
|
|
|
feaTrials={allTrialsRaw.filter(t => t.source === 'FEA').length}
|
|
|
|
|
|
nnTrials={allTrialsRaw.filter(t => t.source === 'NN').length}
|
|
|
|
|
|
objectives={studyMetadata?.objectives || []}
|
|
|
|
|
|
isMultiObjective={(studyMetadata?.objectives?.length || 0) > 1}
|
|
|
|
|
|
paretoSize={paretoFront.length}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2025-12-05 12:56:34 -05:00
|
|
|
|
{/* Main Layout: Charts (Claude Terminal is now global/floating) */}
|
|
|
|
|
|
<div className="grid gap-4 grid-cols-1">
|
2025-12-04 20:59:31 -05:00
|
|
|
|
{/* Main Content - Charts stacked vertically */}
|
2025-12-05 12:56:34 -05:00
|
|
|
|
<main>
|
2025-12-04 20:59:31 -05:00
|
|
|
|
{/* Study Name Header + Metrics in one row */}
|
|
|
|
|
|
<div className="mb-4 pb-3 border-b border-dark-600 flex items-center justify-between">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
{selectedStudyId && (
|
|
|
|
|
|
<>
|
|
|
|
|
|
<h2 className="text-xl font-semibold text-primary-300">
|
|
|
|
|
|
{selectedStudyId}
|
|
|
|
|
|
</h2>
|
|
|
|
|
|
{studyMetadata?.description && (
|
|
|
|
|
|
<p className="text-sm text-dark-400 mt-1">{studyMetadata.description}</p>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</>
|
2025-12-02 22:01:49 -05:00
|
|
|
|
)}
|
|
|
|
|
|
</div>
|
2025-12-04 20:59:31 -05:00
|
|
|
|
{/* Compact Metrics */}
|
|
|
|
|
|
<div className="flex gap-3">
|
|
|
|
|
|
<div className="text-center px-3">
|
|
|
|
|
|
<div className="text-2xl font-bold text-white">{allTrials.length}</div>
|
|
|
|
|
|
<div className="text-xs text-dark-400">Trials</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="text-center px-3 border-l border-dark-600">
|
|
|
|
|
|
<div className="text-2xl font-bold text-green-400">
|
|
|
|
|
|
{bestValue === Infinity ? '-' : bestValue.toFixed(4)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="text-xs text-dark-400">Best</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="text-center px-3 border-l border-dark-600">
|
|
|
|
|
|
<div className="text-2xl font-bold text-blue-400">
|
|
|
|
|
|
{avgObjective > 0 ? avgObjective.toFixed(4) : '-'}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="text-xs text-dark-400">Avg</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="text-center px-3 border-l border-dark-600">
|
|
|
|
|
|
<div className={`text-2xl font-bold ${prunedCount > 0 ? 'text-red-400' : 'text-green-400'}`}>
|
|
|
|
|
|
{prunedCount}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="text-xs text-dark-400">Pruned</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
|
2025-12-04 20:59:31 -05:00
|
|
|
|
{/* Pareto Front - Full Width */}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
{selectedStudyId && paretoFront.length > 0 && studyMetadata && studyMetadata.objectives && (
|
2025-12-04 20:59:31 -05:00
|
|
|
|
<div className="mb-4">
|
2025-12-04 07:41:54 -05:00
|
|
|
|
<ExpandableChart
|
|
|
|
|
|
title="Pareto Front"
|
2025-12-04 20:59:31 -05:00
|
|
|
|
subtitle={`${paretoFront.length} Pareto-optimal solutions | ${studyMetadata.sampler || 'NSGA-II'} | ${studyMetadata.objectives?.length || 2} objectives`}
|
2025-12-04 07:41:54 -05:00
|
|
|
|
>
|
|
|
|
|
|
{chartLibrary === 'plotly' ? (
|
|
|
|
|
|
<Suspense fallback={<ChartLoading />}>
|
|
|
|
|
|
<PlotlyParetoPlot
|
|
|
|
|
|
trials={allTrialsRaw}
|
|
|
|
|
|
paretoFront={paretoFront}
|
|
|
|
|
|
objectives={studyMetadata.objectives}
|
2025-12-04 20:59:31 -05:00
|
|
|
|
height={300}
|
2025-12-04 07:41:54 -05:00
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
) : (
|
|
|
|
|
|
<ParetoPlot
|
|
|
|
|
|
paretoData={paretoFront}
|
|
|
|
|
|
objectives={studyMetadata.objectives}
|
|
|
|
|
|
allTrials={allTrialsRaw}
|
|
|
|
|
|
/>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</ExpandableChart>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
2025-12-04 20:59:31 -05:00
|
|
|
|
{/* Parallel Coordinates - Full Width */}
|
feat: Major update with validators, skills, dashboard, and docs reorganization
- Add validation framework (config, model, results, study validators)
- Add Claude Code skills (create-study, run-optimization, generate-report,
troubleshoot, analyze-model)
- Add Atomizer Dashboard (React frontend + FastAPI backend)
- Reorganize docs into structured directories (00-09)
- Add neural surrogate modules and training infrastructure
- Add multi-objective optimization support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 19:23:58 -05:00
|
|
|
|
{allTrialsRaw.length > 0 && studyMetadata && studyMetadata.objectives && studyMetadata.design_variables && (
|
2025-12-04 20:59:31 -05:00
|
|
|
|
<div className="mb-4">
|
2025-12-04 07:41:54 -05:00
|
|
|
|
<ExpandableChart
|
2025-12-04 20:59:31 -05:00
|
|
|
|
title="Parallel Coordinates"
|
2025-12-04 07:41:54 -05:00
|
|
|
|
subtitle={`${allTrialsRaw.length} trials - Design Variables → Objectives`}
|
|
|
|
|
|
>
|
|
|
|
|
|
{chartLibrary === 'plotly' ? (
|
|
|
|
|
|
<Suspense fallback={<ChartLoading />}>
|
|
|
|
|
|
<PlotlyParallelCoordinates
|
|
|
|
|
|
trials={allTrialsRaw}
|
|
|
|
|
|
objectives={studyMetadata.objectives}
|
|
|
|
|
|
designVariables={studyMetadata.design_variables}
|
|
|
|
|
|
paretoFront={paretoFront}
|
2025-12-04 20:59:31 -05:00
|
|
|
|
height={350}
|
2025-12-04 07:41:54 -05:00
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
) : (
|
|
|
|
|
|
<ParallelCoordinatesPlot
|
|
|
|
|
|
paretoData={allTrialsRaw}
|
|
|
|
|
|
objectives={studyMetadata.objectives}
|
|
|
|
|
|
designVariables={studyMetadata.design_variables}
|
|
|
|
|
|
paretoFront={paretoFront}
|
|
|
|
|
|
/>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</ExpandableChart>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
2025-12-04 07:41:54 -05:00
|
|
|
|
{/* Convergence Plot - Full Width */}
|
2025-12-02 22:01:49 -05:00
|
|
|
|
{allTrialsRaw.length > 0 && (
|
2025-12-04 20:59:31 -05:00
|
|
|
|
<div className="mb-4">
|
2025-12-04 07:41:54 -05:00
|
|
|
|
<ExpandableChart
|
2025-12-04 20:59:31 -05:00
|
|
|
|
title="Convergence"
|
2025-12-04 07:41:54 -05:00
|
|
|
|
subtitle={`Best ${studyMetadata?.objectives?.[0]?.name || 'Objective'} over ${allTrialsRaw.length} trials`}
|
|
|
|
|
|
>
|
|
|
|
|
|
{chartLibrary === 'plotly' ? (
|
|
|
|
|
|
<Suspense fallback={<ChartLoading />}>
|
|
|
|
|
|
<PlotlyConvergencePlot
|
|
|
|
|
|
trials={allTrialsRaw}
|
|
|
|
|
|
objectiveIndex={0}
|
|
|
|
|
|
objectiveName={studyMetadata?.objectives?.[0]?.name || 'Objective'}
|
|
|
|
|
|
direction="minimize"
|
2025-12-04 20:59:31 -05:00
|
|
|
|
height={280}
|
2025-12-04 07:41:54 -05:00
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
) : (
|
|
|
|
|
|
<ConvergencePlot
|
|
|
|
|
|
trials={allTrialsRaw}
|
|
|
|
|
|
objectiveIndex={0}
|
|
|
|
|
|
objectiveName={studyMetadata?.objectives?.[0]?.name || 'Objective'}
|
|
|
|
|
|
direction="minimize"
|
|
|
|
|
|
/>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</ExpandableChart>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
|
|
{/* Parameter Importance - Full Width */}
|
|
|
|
|
|
{allTrialsRaw.length > 0 && (studyMetadata?.design_variables?.length > 0 || (allTrialsRaw[0]?.params && Object.keys(allTrialsRaw[0].params).length > 0)) && (
|
2025-12-04 20:59:31 -05:00
|
|
|
|
<div className="mb-4">
|
2025-12-04 07:41:54 -05:00
|
|
|
|
<ExpandableChart
|
|
|
|
|
|
title="Parameter Importance"
|
|
|
|
|
|
subtitle={`Correlation with ${studyMetadata?.objectives?.[0]?.name || 'Objective'}`}
|
|
|
|
|
|
>
|
|
|
|
|
|
{chartLibrary === 'plotly' ? (
|
|
|
|
|
|
<Suspense fallback={<ChartLoading />}>
|
|
|
|
|
|
<PlotlyParameterImportance
|
|
|
|
|
|
trials={allTrialsRaw}
|
|
|
|
|
|
designVariables={
|
|
|
|
|
|
studyMetadata?.design_variables?.length > 0
|
|
|
|
|
|
? studyMetadata.design_variables
|
|
|
|
|
|
: Object.keys(allTrialsRaw[0]?.params || {}).map(name => ({ name }))
|
|
|
|
|
|
}
|
|
|
|
|
|
objectiveIndex={0}
|
|
|
|
|
|
objectiveName={studyMetadata?.objectives?.[0]?.name || 'Objective'}
|
2025-12-04 20:59:31 -05:00
|
|
|
|
height={280}
|
2025-12-04 07:41:54 -05:00
|
|
|
|
/>
|
|
|
|
|
|
</Suspense>
|
|
|
|
|
|
) : (
|
|
|
|
|
|
<ParameterImportanceChart
|
|
|
|
|
|
trials={allTrialsRaw}
|
|
|
|
|
|
designVariables={
|
|
|
|
|
|
studyMetadata?.design_variables?.length > 0
|
|
|
|
|
|
? studyMetadata.design_variables
|
|
|
|
|
|
: Object.keys(allTrialsRaw[0]?.params || {}).map(name => ({ name }))
|
|
|
|
|
|
}
|
|
|
|
|
|
objectiveIndex={0}
|
|
|
|
|
|
objectiveName={studyMetadata?.objectives?.[0]?.name || 'Objective'}
|
|
|
|
|
|
/>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</ExpandableChart>
|
2025-12-02 22:01:49 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
2025-12-04 17:36:00 -05:00
|
|
|
|
{/* Trial History with Sort Controls and Pagination */}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
<Card
|
|
|
|
|
|
title={
|
|
|
|
|
|
<div className="flex items-center justify-between w-full">
|
|
|
|
|
|
<span>Trial History ({displayedTrials.length} trials)</span>
|
2025-12-04 17:36:00 -05:00
|
|
|
|
<div className="flex gap-2 items-center">
|
2025-11-24 09:12:36 -05:00
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setSortBy('performance')}
|
|
|
|
|
|
className={`px-3 py-1 rounded text-sm ${
|
|
|
|
|
|
sortBy === 'performance'
|
|
|
|
|
|
? 'bg-primary-500 text-white'
|
|
|
|
|
|
: 'bg-dark-500 text-dark-200 hover:bg-dark-400'
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
}`}
|
|
|
|
|
|
>
|
2025-11-24 09:12:36 -05:00
|
|
|
|
Best First
|
|
|
|
|
|
</button>
|
|
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setSortBy('chronological')}
|
|
|
|
|
|
className={`px-3 py-1 rounded text-sm ${
|
|
|
|
|
|
sortBy === 'chronological'
|
|
|
|
|
|
? 'bg-primary-500 text-white'
|
|
|
|
|
|
: 'bg-dark-500 text-dark-200 hover:bg-dark-400'
|
|
|
|
|
|
}`}
|
|
|
|
|
|
>
|
|
|
|
|
|
Newest First
|
|
|
|
|
|
</button>
|
2025-12-04 17:36:00 -05:00
|
|
|
|
{/* Pagination controls */}
|
|
|
|
|
|
{displayedTrials.length > trialsPerPage && (
|
|
|
|
|
|
<div className="flex items-center gap-1 ml-2 border-l border-dark-500 pl-2">
|
|
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setTrialsPage(Math.max(0, trialsPage - 1))}
|
|
|
|
|
|
disabled={trialsPage === 0}
|
|
|
|
|
|
className="px-2 py-1 text-sm bg-dark-500 rounded disabled:opacity-50 hover:bg-dark-400"
|
|
|
|
|
|
>
|
|
|
|
|
|
‹
|
|
|
|
|
|
</button>
|
|
|
|
|
|
<span className="text-xs text-dark-300 px-2">
|
|
|
|
|
|
{trialsPage + 1}/{Math.ceil(displayedTrials.length / trialsPerPage)}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
<button
|
|
|
|
|
|
onClick={() => setTrialsPage(Math.min(Math.ceil(displayedTrials.length / trialsPerPage) - 1, trialsPage + 1))}
|
|
|
|
|
|
disabled={trialsPage >= Math.ceil(displayedTrials.length / trialsPerPage) - 1}
|
|
|
|
|
|
className="px-2 py-1 text-sm bg-dark-500 rounded disabled:opacity-50 hover:bg-dark-400"
|
|
|
|
|
|
>
|
|
|
|
|
|
›
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
}
|
|
|
|
|
|
>
|
|
|
|
|
|
<div className="space-y-2 max-h-[600px] overflow-y-auto">
|
|
|
|
|
|
{displayedTrials.length > 0 ? (
|
2025-12-04 17:36:00 -05:00
|
|
|
|
displayedTrials.slice(trialsPage * trialsPerPage, (trialsPage + 1) * trialsPerPage).map(trial => {
|
2025-11-24 09:12:36 -05:00
|
|
|
|
const isExpanded = expandedTrials.has(trial.trial_number);
|
|
|
|
|
|
const isBest = trial.objective === bestValue;
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
|
<div
|
|
|
|
|
|
key={trial.trial_number}
|
|
|
|
|
|
className={`rounded-lg transition-all duration-200 cursor-pointer ${
|
|
|
|
|
|
isBest
|
|
|
|
|
|
? 'bg-green-900 border-l-4 border-green-400'
|
|
|
|
|
|
: 'bg-dark-500 hover:bg-dark-400'
|
|
|
|
|
|
}`}
|
|
|
|
|
|
onClick={() => toggleTrialExpansion(trial.trial_number)}
|
|
|
|
|
|
>
|
|
|
|
|
|
{/* Collapsed View */}
|
|
|
|
|
|
<div className="p-3">
|
|
|
|
|
|
<div className="flex justify-between items-center">
|
|
|
|
|
|
<span className="font-semibold text-primary-400">
|
|
|
|
|
|
Trial #{trial.trial_number}
|
|
|
|
|
|
{isBest && <span className="ml-2 text-xs bg-green-700 text-green-100 px-2 py-1 rounded">BEST</span>}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
<div className="flex items-center gap-3">
|
|
|
|
|
|
<span className={`font-mono text-lg ${
|
|
|
|
|
|
isBest ? 'text-green-400 font-bold' : 'text-dark-100'
|
|
|
|
|
|
}`}>
|
|
|
|
|
|
{trial.objective !== null && trial.objective !== undefined
|
|
|
|
|
|
? trial.objective.toFixed(4)
|
|
|
|
|
|
: 'N/A'}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
<span className="text-dark-400 text-sm">
|
|
|
|
|
|
{isExpanded ? '▼' : '▶'}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2025-12-02 22:01:49 -05:00
|
|
|
|
{/* Quick Preview - Show ALL metrics */}
|
2025-11-24 09:12:36 -05:00
|
|
|
|
{!isExpanded && trial.results && Object.keys(trial.results).length > 0 && (
|
|
|
|
|
|
<div className="text-xs text-primary-300 flex flex-wrap gap-3 mt-2">
|
2025-12-02 22:01:49 -05:00
|
|
|
|
{Object.entries(trial.results).slice(0, 6).map(([key, val]) => {
|
|
|
|
|
|
// Format value based on type
|
|
|
|
|
|
const formatValue = (v: unknown): string => {
|
|
|
|
|
|
if (typeof v === 'number') {
|
|
|
|
|
|
// Use fewer decimals for quick preview
|
|
|
|
|
|
return Math.abs(v) < 0.01 ? v.toExponential(2) : v.toFixed(2);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (Array.isArray(v)) return `[${v.length}]`;
|
|
|
|
|
|
return String(v);
|
|
|
|
|
|
};
|
|
|
|
|
|
// Format key: snake_case to Title Case, abbreviate long names
|
|
|
|
|
|
const formatKey = (k: string): string => {
|
|
|
|
|
|
const short = k.replace(/_/g, ' ')
|
|
|
|
|
|
.replace(/rel /g, 'Δ')
|
|
|
|
|
|
.replace(/filtered rms/g, 'fRMS')
|
|
|
|
|
|
.replace(/global rms/g, 'gRMS')
|
|
|
|
|
|
.replace(/ vs /g, '/')
|
|
|
|
|
|
.replace(/mfg /g, '')
|
|
|
|
|
|
.replace(/optician workload/g, 'work');
|
|
|
|
|
|
return short.length > 15 ? short.slice(0, 12) + '...' : short;
|
|
|
|
|
|
};
|
|
|
|
|
|
return (
|
|
|
|
|
|
<span key={key} title={`${key}: ${val}`}>
|
|
|
|
|
|
{formatKey(key)}: {formatValue(val)}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
);
|
|
|
|
|
|
})}
|
|
|
|
|
|
{Object.keys(trial.results).length > 6 && (
|
|
|
|
|
|
<span className="text-dark-400">+{Object.keys(trial.results).length - 6} more</span>
|
2025-11-24 09:12:36 -05:00
|
|
|
|
)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{/* Expanded View */}
|
|
|
|
|
|
{isExpanded && (
|
|
|
|
|
|
<div className="px-3 pb-3 space-y-3">
|
|
|
|
|
|
{/* Design Variables */}
|
|
|
|
|
|
{trial.design_variables && Object.keys(trial.design_variables).length > 0 && (
|
|
|
|
|
|
<div className="border-t border-dark-400 pt-3">
|
|
|
|
|
|
<h4 className="text-sm font-semibold text-dark-200 mb-2">Design Variables</h4>
|
|
|
|
|
|
<div className="grid grid-cols-2 gap-2 text-xs">
|
|
|
|
|
|
{Object.entries(trial.design_variables).map(([key, val]) => (
|
|
|
|
|
|
<div key={key} className="flex justify-between bg-dark-600 px-2 py-1 rounded">
|
|
|
|
|
|
<span className="text-dark-300">{key}:</span>
|
|
|
|
|
|
<span className="text-dark-100 font-mono">{val.toFixed(4)}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
))}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
|
|
{/* Results */}
|
|
|
|
|
|
{trial.results && Object.keys(trial.results).length > 0 && (
|
|
|
|
|
|
<div className="border-t border-dark-400 pt-3">
|
|
|
|
|
|
<h4 className="text-sm font-semibold text-dark-200 mb-2">Extracted Results</h4>
|
|
|
|
|
|
<div className="grid grid-cols-2 gap-2 text-xs">
|
|
|
|
|
|
{Object.entries(trial.results).map(([key, val]) => (
|
|
|
|
|
|
<div key={key} className="flex justify-between bg-dark-600 px-2 py-1 rounded">
|
|
|
|
|
|
<span className="text-dark-300">{key}:</span>
|
|
|
|
|
|
<span className="text-primary-300 font-mono">
|
|
|
|
|
|
{typeof val === 'number' ? val.toFixed(4) : String(val)}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
))}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
|
|
{/* All User Attributes */}
|
|
|
|
|
|
{trial.user_attrs && Object.keys(trial.user_attrs).length > 0 && (
|
|
|
|
|
|
<div className="border-t border-dark-400 pt-3">
|
|
|
|
|
|
<h4 className="text-sm font-semibold text-dark-200 mb-2">All Attributes</h4>
|
|
|
|
|
|
<div className="max-h-48 overflow-y-auto">
|
|
|
|
|
|
<pre className="text-xs text-dark-300 bg-dark-700 p-2 rounded">
|
|
|
|
|
|
{JSON.stringify(trial.user_attrs, null, 2)}
|
|
|
|
|
|
</pre>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
|
|
{/* Timestamps */}
|
|
|
|
|
|
{trial.start_time && trial.end_time && (
|
|
|
|
|
|
<div className="border-t border-dark-400 pt-3 text-xs text-dark-400">
|
|
|
|
|
|
<div className="flex justify-between">
|
|
|
|
|
|
<span>Duration:</span>
|
|
|
|
|
|
<span>
|
|
|
|
|
|
{((new Date(trial.end_time).getTime() - new Date(trial.start_time).getTime()) / 1000).toFixed(1)}s
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
2025-11-24 09:12:36 -05:00
|
|
|
|
);
|
|
|
|
|
|
})
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
) : (
|
|
|
|
|
|
<div className="text-center py-8 text-dark-300">
|
|
|
|
|
|
No trials yet. Waiting for optimization to start...
|
|
|
|
|
|
</div>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</Card>
|
2025-12-04 07:41:54 -05:00
|
|
|
|
|
|
|
|
|
|
{/* Console Output - at the bottom */}
|
2025-12-04 20:59:31 -05:00
|
|
|
|
<div className="mt-4">
|
2025-12-04 07:41:54 -05:00
|
|
|
|
<ConsoleOutput
|
|
|
|
|
|
studyId={selectedStudyId}
|
|
|
|
|
|
refreshInterval={2000}
|
2025-12-04 20:59:31 -05:00
|
|
|
|
maxLines={150}
|
2025-12-04 07:41:54 -05:00
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</main>
|
|
|
|
|
|
</div>
|
feat: Add Analysis page, run comparison, notifications, and config editor
Dashboard enhancements:
- Add Analysis page with tabs: Overview, Parameters, Pareto, Correlations, Constraints, Surrogate, Runs
- Add PlotlyCorrelationHeatmap for parameter-objective correlation analysis
- Add PlotlyFeasibilityChart for constraint satisfaction visualization
- Add PlotlySurrogateQuality for FEA vs NN prediction comparison
- Add PlotlyRunComparison for comparing optimization runs within a study
Real-time improvements:
- Replace watchdog file-watching with SQLite database polling for better Windows reliability
- Add DatabasePoller class with 2-second polling interval
- Enhanced WebSocket messages: trial_completed, new_best, pareto_update, progress
Desktop notifications:
- Add useNotifications hook using Web Notifications API
- Add NotificationSettings toggle component
- Notify users when new best solutions are found
Config editor:
- Add PUT /studies/{study_id}/config endpoint with auto-backup
- Add ConfigEditor modal with tabs: General, Variables, Objectives, Settings, JSON
- Prevents editing while optimization is running
Enhanced Pareto visualization:
- Add dark mode styling with transparent backgrounds
- Add stats bar showing Pareto, FEA, NN, and infeasible counts
- Add Pareto front connecting line for 2D view
- Add table showing top 10 Pareto-optimal solutions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 19:57:20 -05:00
|
|
|
|
|
|
|
|
|
|
{/* Config Editor Modal */}
|
|
|
|
|
|
{showConfigEditor && selectedStudyId && (
|
|
|
|
|
|
<ConfigEditor
|
|
|
|
|
|
studyId={selectedStudyId}
|
|
|
|
|
|
onClose={() => setShowConfigEditor(false)}
|
|
|
|
|
|
onSaved={() => refreshStudies()}
|
|
|
|
|
|
/>
|
|
|
|
|
|
)}
|
feat: Implement Protocol 13 - Real-Time Dashboard Tracking
Complete implementation of Protocol 13 featuring real-time web dashboard
for monitoring multi-objective optimization studies.
## New Features
### Backend (Python)
- Real-time tracking system with per-trial JSON writes
- New API endpoints for metadata, optimizer state, and Pareto fronts
- Unit inference from objective descriptions
- Multi-objective support using Optuna's best_trials API
### Frontend (React + TypeScript)
- OptimizerPanel: Real-time optimizer state (phase, strategy, progress)
- ParetoPlot: Pareto front visualization with normalization toggle
- 3 modes: Raw, Min-Max [0-1], Z-Score standardization
- Pareto front line connecting optimal points
- ParallelCoordinatesPlot: High-dimensional interactive visualization
- Objectives + design variables on parallel axes
- Click-to-select, hover-to-highlight
- Color-coded feasibility
- Dynamic units throughout all visualizations
### Documentation
- Comprehensive Protocol 13 guide with architecture, data flow, usage
## Files Added
- `docs/PROTOCOL_13_DASHBOARD.md`
- `atomizer-dashboard/frontend/src/components/OptimizerPanel.tsx`
- `atomizer-dashboard/frontend/src/components/ParetoPlot.tsx`
- `atomizer-dashboard/frontend/src/components/ParallelCoordinatesPlot.tsx`
- `optimization_engine/realtime_tracking.py`
## Files Modified
- `atomizer-dashboard/frontend/src/pages/Dashboard.tsx`
- `atomizer-dashboard/backend/api/routes/optimization.py`
- `optimization_engine/intelligent_optimizer.py`
## Testing
- Tested with bracket_stiffness_optimization_V2 (30 trials, 20 Pareto solutions)
- Dashboard running on localhost:3001
- All P1 and P2 features verified working
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:58:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|