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:

# 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 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

Feature v0.1.0 v1.0.0 Planned v2.0.0
Problem Types LP, GP CSP, LP, GP + MIP, QP
Solvers OR-Tools OR-Tools, Gurobi + CPLEX, SCIP
Special Constraints Basic Full support + Advanced nonlinear
Documentation Basic Comprehensive + Interactive tutorials
Examples Limited Extensive + Industry-specific

Download Information

Current Stable Release: 1.0.0

Installation:

# Latest stable
git clone https://github.com/yourusername/optix.git
cd OptiX
poetry install

Development Version:

# 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