Changelog
=========
All notable changes to the OptiX project are documented in this file.
The format is based on `Keep a Changelog `_,
and this project adheres to `Semantic Versioning `_.
[Unreleased]
------------
Added
~~~~~
- OR-Tools solver integration with ``OXORToolsSolverInterface``
- Comprehensive solver interface framework (``OXSolverInterface``)
- Solution management system with ``OXSolverSolution`` and ``OXSolutionStatus``
- Special constraints support (``OXSpecialConstraints``)
- Solver factory pattern for easy solver selection
- Bus assignment problem example demonstrating real-world usage
- Diet problem optimization example showcasing classic linear programming
- Enhanced constraint value tracking and evaluation
- Comprehensive package structure with proper ``__init__.py`` files
- Extended test coverage for all major components
- Comprehensive API documentation across all modules
- Complete Sphinx documentation with modern themes
Enhanced
~~~~~~~~
- Problem classes now support constraint satisfaction problems (CSP)
- Improved variable creation from database objects
- Enhanced expression handling in ``OXpression``
- Better serialization support for complex data structures
- Extended utility functions for class loading and management
- Documentation coverage for base, data, constraints, OXpression, serialization, utilities, variables, solvers, and test modules
- Sample problem documentation with detailed API references
Fixed
~~~~~
- Core framework bugs and improved test functionality
- Variable and constraint management in solver interfaces
- Solution retrieval and value tracking
- Database integration and object relationships
- Fraction calculation and import paths in constraints module
[1.0.0] - 2024-12-15
--------------------
Added
~~~~~
- Initial stable release of OptiX Mathematical Optimization Framework
- Complete documentation system with Sphinx
- Multi-solver architecture supporting OR-Tools and Gurobi
- Three problem types: CSP, LP, and GP with progressive complexity
- Special constraints for non-linear operations
- Database integration with OXData and OXDatabase
- Comprehensive examples and tutorials
- Full API documentation
- Custom HTML and LaTeX themes
- Interactive documentation features
Changed
~~~~~~~
- Reorganized project structure for better maintainability
- Improved import paths and module organization
- Enhanced error handling and validation
- Standardized naming conventions across all modules
[0.1.0] - 2024-06-01
--------------------
Added
~~~~~
- Initial release of OptiX
- Framework for defining and solving optimization problems
- Support for linear programming (LP) and goal programming (GP)
- Decision variables with bounds
- Constraint definition with relational operators
- Objective function creation (minimize/maximize)
- Custom exception handling with OXception
- Data management with OXData and OXDatabase
- Variable management with OXVariable and OXVariableSet
- Serialization utilities
- Class loading utilities
Requirements
~~~~~~~~~~~~
- Python 3.12 or higher
- Poetry for dependency management
Migration Guide
---------------
Upgrading from 0.1.0 to 1.0.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Import Changes:**
.. code-block:: python
# Old (0.1.0)
from problem.OXProblem import OXLPProblem
from constraints.OXConstraint import RelationalOperators
from solvers.OXSolverFactory import solve
# New (1.0.0)
from problem import OXLPProblem, ObjectiveType
from constraints import RelationalOperators
from solvers import solve
**API Changes:**
- Simplified import structure
- Enhanced solver interface
- Improved error handling
- Better documentation integration
**New Features:**
- Gurobi solver support
- Special constraints
- Comprehensive documentation
- Enhanced examples
Deprecation Notices
-------------------
**Version 1.0.0:**
- None
**Future Deprecations:**
- Legacy import paths will be deprecated in version 2.0.0
- Direct solver instantiation will be replaced by factory pattern
Breaking Changes
----------------
**Version 1.0.0:**
- Import path restructuring (see migration guide)
- Solver interface standardization
- Enhanced type checking
Security Updates
----------------
**Version 1.0.0:**
- Enhanced input validation
- Improved error handling
- Secure serialization methods
Performance Improvements
------------------------
**Version 1.0.0:**
- Optimized variable and constraint management
- Improved solver interface performance
- Enhanced memory usage for large problems
- Better algorithm complexity for search operations
Bug Fixes
----------
**Version 1.0.0:**
- Fixed constraint evaluation edge cases
- Resolved variable bounds validation issues
- Corrected serialization of complex objects
- Fixed solver status reporting
Known Issues
------------
**Current Issues:**
- None known
**Workarounds:**
- For very large problems (>100k variables), consider problem decomposition
- Use appropriate solver timeouts for complex problems
Contributing
------------
Contributions to OptiX are welcome! Please see our contribution guidelines:
1. **Bug Reports**: Use GitHub Issues with detailed reproduction steps
2. **Feature Requests**: Discuss in GitHub Discussions before implementation
3. **Code Contributions**: Follow our development guidelines
4. **Documentation**: Help improve and expand documentation
Reporting Issues
~~~~~~~~~~~~~~~
When reporting issues, please include:
- OptiX version
- Python version
- Operating system
- Minimal reproduction example
- Expected vs. actual behavior
- Error messages and stack traces
Release Process
--------------
OptiX follows semantic versioning:
- **Major** (X.0.0): Breaking changes, major new features
- **Minor** (0.X.0): New features, enhancements, backwards compatible
- **Patch** (0.0.X): Bug fixes, documentation updates
Release Schedule
~~~~~~~~~~~~~~~
- **Major releases**: Annually
- **Minor releases**: Quarterly
- **Patch releases**: As needed for critical fixes
Acknowledgments
--------------
**Core Contributors:**
- Tolga BERBER - Lead Developer & Project Architect
- Beyzanur SİYAH - Core Developer & Research Assistant
**Special Thanks:**
- OR-Tools team for the excellent optimization library
- Gurobi team for solver integration support
- OptiX community for feedback and contributions
**Dependencies:**
- OR-Tools: Google's optimization tools
- Gurobi: Commercial optimization solver
- Python ecosystem: NumPy, SciPy, and other supporting libraries
License Information
------------------
OptiX is licensed under the Academic Free License (AFL) v. 3.0.
See the `LICENSE <../license.html>`_ file for full license text.
**Key Points:**
- Academic and research use encouraged
- Commercial use permitted with attribution
- Modifications and redistribution allowed
- No warranty provided
Support and Resources
--------------------
**Documentation:**
- Complete API reference
- Tutorials and examples
- User guides and best practices
**Community:**
- GitHub Discussions for questions and ideas
- GitHub Issues for bug reports
- Academic publications and research papers
**Professional Support:**
- Consulting services available
- Custom development and integration
- Training and workshops
Version Comparison
------------------
.. raw:: html
Download Information
-------------------
**Current Stable Release:** 1.0.0
**Installation:**
.. code-block:: bash
# Latest stable
git clone https://github.com/yourusername/optix.git
cd OptiX
poetry install
**Development Version:**
.. code-block:: bash
# Development branch
git clone -b develop https://github.com/yourusername/optix.git
**Release Archives:**
- `v1.0.0 Source `_
- `v0.1.0 Source `_
Statistics
----------
**Project Metrics (v1.0.0):**
- Lines of code: ~15,000
- Test coverage: >95%
- Documentation pages: 50+
- Example problems: 10+
- Supported platforms: Windows, macOS, Linux
**Community Growth:**
- Contributors: 2+
- GitHub stars: Growing
- Academic citations: In progress
- Commercial adoption: Emerging