VBAF.Visualization.Example-Dashboard.ps1
|
#Requires -Version 5.1 # Dashboard 1 <# .SYNOPSIS Learning Dashboard Demo .DESCRIPTION Demonstrates the learning dashboard with simulated training data. Shows neural network training and RL agent learning simultaneously. .NOTES FIXED: Clean class loading to avoid caching issues #> # CRITICAL: Check if classes are already loaded (cache issue) if ([System.Management.Automation.PSTypeName]'MetricsCollector'.Type) { Write-Host "? WARNING: Classes already loaded in this session!" -ForegroundColor Yellow Write-Host " For best results, close PowerShell and start fresh." -ForegroundColor Yellow Write-Host " Or run: Launch-Dashboard-Clean.ps1" -ForegroundColor Cyan Write-Host "" $continue = Read-Host "Continue anyway? (y/n)" if ($continue -ne 'y') { exit } } $basePath = $PSScriptRoot # Load visualization components IN ORDER . "$basePath\VBAF.Visualization.MetricsCollector.ps1" . "$basePath\VBAF.Visualization.GraphRenderer.ps1" . "$basePath\VBAF.Visualization.LearningDashboard.ps1" Write-Host "`n+----------------------------------------------+" -ForegroundColor Cyan Write-Host "� LEARNING DASHBOARD - DEMO �" -ForegroundColor Cyan Write-Host "+----------------------------------------------+" -ForegroundColor Cyan Write-Host "`nStarting dashboard with simulated training..." -ForegroundColor Yellow Write-Host "This will show:" Write-Host " � Neural network error decreasing" Write-Host " � RL agent rewards increasing" Write-Host " � Epsilon (exploration) decaying" Write-Host " � Real-time statistics" Write-Host "" Write-Host "Controls:" -ForegroundColor Cyan Write-Host " [SPACE] - Pause/Resume updates" Write-Host " [R] - Reset all metrics" Write-Host "" # Create dashboard $dashboard = New-Object LearningDashboard -ArgumentList "VBAF Training Visualization" # Simple training data generator (no background jobs - they cause issues) $script:epoch = 0 $script:startError = 0.5 $script:startReward = 5.0 $script:epsilonValue = 1.0 # Create timer that generates and updates data $dataTimer = New-Object System.Windows.Forms.Timer $dataTimer.Interval = 100 # 100ms = 10 data points per second $dataTimer.Add_Tick({ $script:epoch++ if ($script:epoch -le 500) { # Simulate neural network error decreasing $trainingError = $script:startError * [Math]::Exp(-$script:epoch / 100.0) + (Get-Random -Minimum 0.0 -Maximum 0.05) # Simulate RL reward increasing $baseReward = $script:startReward + ($script:epoch / 50.0) $rewardValue = $baseReward + (Get-Random -Minimum -2.0 -Maximum 2.0) # Epsilon decay $script:epsilonValue *= 0.995 if ($script:epsilonValue -lt 0.01) { $script:epsilonValue = 0.01 } # Update dashboard - EXPLICIT TYPE CASTING $dashboard.Metrics.RecordError([double]$trainingError) $dashboard.Metrics.RecordReward([double]$rewardValue) $dashboard.Metrics.RecordEpsilon([double]$script:epsilonValue) # Show progress in console if ($script:epoch % 50 -eq 0) { Write-Host "Epoch $($script:epoch): Error=$($trainingError.ToString('F4')), Reward=$($rewardValue.ToString('F2')), Epsilon=$($script:epsilonValue.ToString('F3'))" } } else { # Training complete Write-Host "`n? Training simulation complete (500 epochs)" -ForegroundColor Green $dataTimer.Stop() } }.GetNewClosure()) # Start data generation $dataTimer.Start() # Show dashboard (blocking) try { $dashboard.Show() } finally { # Cleanup $dataTimer.Stop() $dataTimer.Dispose() } Write-Host "`n? Dashboard closed" -ForegroundColor Green |