Skip to content

Conversation

@napinoco
Copy link
Owner

Summary

  • Complete MATLAB/Octave solver integration with standardized timing measurement
  • Comprehensive UI improvements and responsive design enhancements
  • SDPLIB data corrections and validation improvements
  • Enhanced reporting with proper platform information and error handling
  • Database schema optimizations and result storage improvements
  • Documentation updates and system cleanup

Key Features

  • Fixed MATLAB solver solve_time measurement to use actual solver execution time
  • Corrected platform information reporting from 'unknown' to proper OS detection
  • Resolved report generation string formatting errors
  • Added comprehensive UI improvements for better user experience
  • Updated benchmark campaign results with complete documentation
  • Enhanced error handling and status reporting

Test Plan

  • All solver interfaces validated with test problems
  • Report generation tested with current dataset
  • Database operations verified with new schema
  • UI improvements tested across different screen sizes
  • Platform information correctly detected and reported

🤖 Generated with Claude Code

napinoco and others added 13 commits July 12, 2025 23:55
- Remove accidentally committed .DS_Store files from repository
- Add .DS_Store, .AppleDouble, and .LSOverride to .gitignore
- Prevent future macOS system files from being tracked

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- README.md: Added MATLAB/Octave solver support (SeDuMi, SDPT3)
- README.md: Updated solver counts (11 total: 9 Python + 2 MATLAB)
- README.md: Added component role definitions (loaders, runners, interfaces)
- detail_design.md: Added clear separation of concerns documentation
- Documented problem_name → ProblemData → SolverResult workflow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- CLAUDE.md: Updated development status to production ready with MATLAB integration
- history.md: Added Phase 6 completion with comprehensive MATLAB architecture details
- tasks.md: Updated to reflect production-ready status with 11 solvers
- Remove matlab_integration_design.md: Content merged into detail_design.md

Phase 6 achievements:
- MATLAB architecture simplification (4-file → 2-file for new solvers)
- Field name consistency across Python/MATLAB interfaces
- Unified solver interface design with symmetrical architecture
- Complete documentation consolidation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced iteration extraction for CVXPY solvers with fallback methods
- Document known limitations for CVXOPT and SDPA (no iteration info through CVXPY)
- Add iteration_info_limitation field to memo for transparency
- Pin all dependency versions for reproducible benchmarks
- Update requirements.txt with documentation and version control strategy

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add SolverResult.create_unsupported_result() method for proper incompatibility handling
- Make solve_time Optional to support UNSUPPORTED status (None when not applicable)
- Update validation logic to handle None solve_time values
- Implement pre-compatibility checking in Python interface
- Return UNSUPPORTED instead of ERROR for unsupported problem types
- Ensure accurate problem_type recording even for incompatible combinations
- Update logging to handle None solve_time gracefully
- Add problem_data parameter to store_error_result for better type detection

Example: scipy_linprog on SOCP problems now returns UNSUPPORTED instead of ERROR,
with correct problem_type=SOCP and descriptive reason in memo field.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix results matrix to show UNSUPPORTED status correctly
  - Updated get_results_matrix() to use only latest results per (problem, solver) pair
  - Fixed nb_L1 row showing ERROR instead of UNSUPPORTED for cvxpy_osqp and scipy_linprog
- Add CSS styling for OPTIMAL (INACCURATE) status
  - Added .status-optimal-inaccurate class with yellow background (#fff3cd)
  - Applied to results matrix, raw data, and overview pages
- Improve data consistency by filtering duplicate results with different timestamps
- Update status distribution and solver comparison to properly handle all status types

Both UNSUPPORTED and OPTIMAL (INACCURATE) statuses now display correctly with appropriate styling across all report pages.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Changed **bold** Markdown syntax to <strong> HTML tags in site_config.yaml
- Fixed Project Overview section in index.html to display bold text correctly
- Fixed Important Note section in results_matrix.html to display bold text correctly
- Direct HTML approach chosen for stability and simplicity (no additional dependencies)

The HTML formatting now displays correctly without requiring Markdown parsing libraries.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added 107+ problem benchmark results to database (77% completion rate)
- Fixed systematic error in tasks.md: Updated Python solver timeout records
- Added comprehensive benchmark summary documenting:
  - Overall completion statistics: 107/139 problems
  - Format-blocked problems: 26 (MCP/GPP families)
  - CLARABEL memory issues on large-scale problems
  - Solver performance insights and recommendations
- Updated problem registry and site configuration

MILESTONE: Production-ready benchmark system with comprehensive results

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed 'Unknown format code f for object of type str' error
- Added safe type conversion for numeric formatting:
  - known_objective_value formatting with error handling
  - objective_value formatting with fallback to string
  - duality_gap formatting with type checking
  - avg_solve_time formatting protection
- Reports now generate successfully with mixed numeric/string data

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…r OS

- Fixed data_exporter.py to use 'system' field instead of removed 'platform' field
- Fixed html_generator.py to use 'system' field instead of removed 'platform' field
- Regenerated all HTML reports with correct platform display (Darwin)
- Updated summary.json and CSV exports with proper platform information
- Issue caused by environment sanitization removing 'platform' but reports still referencing it

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…xecution time

- Modified _convert_matlab_result to prioritize solve_time from MATLAB JSON output
- Previously used subprocess execution time (MATLAB startup + solve time) which was inaccurate
- Set NaN for error cases to maintain transparency and avoid error masking
- Removed unused solve_time variable and parameter from _convert_matlab_result method
- Unified all error handling to use float('nan') instead of subprocess time

Test results:
- matlab_sedumi: 0.984s (actual MATLAB solve time)
- cvxpy_clarabel: 24.148s (Python solve time)
- Both achieve same optimal solution, enabling fair comparison

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Successfully re-executed matlab_sedumi on 132 problems (92% success rate)
- Successfully re-executed matlab_sdpt3 on 139 problems (97% success rate)
- New solver_time measurements captured with fixed calculation method
- Database size increased from 3.1MB to 4.1MB with new results

Results summary:
- SeDuMi: 122 SUCCESS, 9 TIMEOUT, 1 ERROR
- SDPT3: 136 SUCCESS, 4 TIMEOUT, 2 ERROR

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix SDPLIB objective value signs due to SDPA to SeDuMi format conversion (88 problems)
- Add responsive table sizing with 90vh height for optimal screen utilization
- Implement sticky headers for both results_matrix and raw_data tables
- Update accuracy thresholds to 1e-4 (0.01%) and 1e-2 (1%) for better classification
- Improve fastest time selection with excellent→good fallback logic
- Remove status restrictions for fastest time selection (accuracy-focused)
- Add comprehensive legend explaining accuracy and performance indicators
- Optimize horizontal scroll functionality to prevent page overflow
- Add solver display order configuration in site_config.yaml
- Regenerate all HTML reports with latest improvements

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions
Copy link

📊 Preview Reports Ready!

Your preview has been deployed and is available at:

🔗 View Preview Reports

Preview Details

Available Reports

Notes

  • Preview uses the pre-built reports from your branch
  • Preview will be updated automatically when you push new commits
  • Preview will be cleaned up automatically when the PR is closed

Preview deployment powered by GitHub Actions

@napinoco napinoco merged commit acedf05 into main Jul 20, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants