chore: clean root — move 7 doc files to docs/
- DOCUMENTATION_IMPROVEMENTS_NEEDED.md → docs/ - PUBLICATION_GUIDE_v1.0.0.md → docs/ - PUBLICATION_STATUS.md → docs/ - PYPI_PUBLISHING.md → docs/ - RELEASE_NOTES_v0.2.0.md, v0.3.0.md, v1.0.0.md → docs/ - Added build artifacts to .gitignore
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
# Documentation Improvements Needed
|
||||
|
||||
**Date:** 2026-02-17
|
||||
**Version:** v1.0.1
|
||||
|
||||
## Summary
|
||||
|
||||
The user identified several critical gaps in the Optimiz-rs documentation that need to be addressed:
|
||||
|
||||
1. **Optimal Control Page (`docs/source/algorithms/optimal_control.md`)**
|
||||
- Needs much more detail on HJB equations
|
||||
- Needs explanation of viscosity solutions
|
||||
- Needs to introduce what's actually in the code/module
|
||||
- Needs more mathematical foundations
|
||||
|
||||
2. **HMM API Page (`docs/source/api/hmm.md`)**
|
||||
- Currently almost empty (only ~16 lines)
|
||||
- Needs explanation of what algorithms are implemented
|
||||
- Needs details on how they work
|
||||
- Needs guidance on when/how to use them
|
||||
|
||||
3. **General Documentation**
|
||||
- Make more concise and detailed throughout
|
||||
- Better balance of theory and practice
|
||||
|
||||
## Required Enhancements
|
||||
|
||||
### 1. Optimal Control Documentation
|
||||
|
||||
#### Mathematical Foundations Needed:
|
||||
- **HJB Equation:** Full derivation and intuition
|
||||
- General form for stochastic processes
|
||||
- Specialization to Ornstein-Uhlenbeck process
|
||||
- Connection to optimal stopping/switching problems
|
||||
|
||||
- **Viscosity Solutions:** Detailed explanation
|
||||
- Why classical solutions don't exist (kinks at boundaries)
|
||||
- Definition of viscosity solutions
|
||||
- Numerical approximation via upwind schemes
|
||||
- Monotonicity and convergence properties
|
||||
|
||||
- **Finite Difference Methods:**
|
||||
- Grid discretization approach
|
||||
- Upwind vs central differences
|
||||
- Policy iteration algorithm
|
||||
- Convergence criteria
|
||||
|
||||
#### Implementation Details Needed:
|
||||
- **What's Actually in the Module:**
|
||||
- HJB solver for OU process (src/optimal_control/hjb_solver.rs)
|
||||
- Viscosity solution solver (src/optimal_control/viscosity.rs)
|
||||
- Regime switching (src/optimal_control/regime_switching.rs)
|
||||
- Jump diffusion (src/optimal_control/jump_diffusion.rs)
|
||||
- MRSJD - Multi-Regime Switching Jump Diffusion (src/optimal_control/mrsjd.rs)
|
||||
- OU parameter estimation (src/optimal_control/ou_estimator.rs)
|
||||
- Kalman filters: Linear, EKF, UKF (src/optimal_control/kalman_filter.rs)
|
||||
- Backtesting framework (src/optimal_control/backtest.rs)
|
||||
|
||||
#### Usage Guidance Needed:
|
||||
- When to use each algorithm
|
||||
- Parameter tuning guidelines
|
||||
- Diagnostic plots and convergence monitoring
|
||||
- Integration with other modules (HMM, Mean Field Games)
|
||||
- Real-world trading examples
|
||||
|
||||
### 2. HMM API Documentation
|
||||
|
||||
#### Algorithms to Document:
|
||||
- **Forward Algorithm:** Compute P(O|λ) efficiently
|
||||
- Forward variable α_t(i)
|
||||
- Recursive computation
|
||||
- Numerical stability (scaling)
|
||||
|
||||
- **Backward Algorithm:** Alternative for completeness
|
||||
- Backward variable β_t(i)
|
||||
- Use in Baum-Welch
|
||||
|
||||
- **Viterbi Algorithm:** Most likely state sequence
|
||||
- Dynamic programming approach
|
||||
- Backtracking for path recovery
|
||||
|
||||
- **Baum-Welch (EM) Algorithm:** Parameter learning
|
||||
- E-step: compute γ_t(i) and ξ_t(i,j)
|
||||
- M-step: update π, A, B parameters
|
||||
- Convergence properties
|
||||
|
||||
#### API Methods to Explain:
|
||||
- **`HMM(n_states)`:** Constructor
|
||||
- When to use 2 vs 3+ states
|
||||
- Initialization strategy
|
||||
|
||||
- **`fit(X, n_iterations, tolerance)`:** Training
|
||||
- What data X should look like
|
||||
- How many iterations needed
|
||||
- Convergence diagnostics
|
||||
- Multiple random restarts
|
||||
|
||||
- **`predict(X)`:** Viterbi decoding
|
||||
- Returns most likely state sequence
|
||||
- Use cases: regime detection, trading signals
|
||||
|
||||
- **`score(X)`:** Log-likelihood
|
||||
- Model comparison
|
||||
- Convergence monitoring
|
||||
- Anomaly detection
|
||||
|
||||
#### Usage Examples Needed:
|
||||
- **Regime Detection:**
|
||||
- Market regimes (bull/bear)
|
||||
- Volatility regimes (high/low)
|
||||
- Integration with optimal control
|
||||
|
||||
- **Parameter Estimation Per Regime:**
|
||||
- Combine with OU parameter estimation
|
||||
- Regime-specific HJB solving
|
||||
|
||||
- **Model Selection:**
|
||||
- BIC/AIC for choosing number of states
|
||||
- Cross-validation approaches
|
||||
|
||||
- **Numerical Best Practices:**
|
||||
- Data requirements (minimum samples)
|
||||
- Handling outliers
|
||||
- Initialization sensitivity
|
||||
- Convergence diagnostics
|
||||
|
||||
### 3. API Reference Page (`docs/source/api/optimal_control.md`)
|
||||
|
||||
Currently 117 lines but needs:
|
||||
- Complete function signatures
|
||||
- Parameter descriptions with types
|
||||
- Return value specifications
|
||||
- Detailed examples for each function
|
||||
- Error handling documentation
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
### Phase 1: Mathematical Foundations (High Priority)
|
||||
1. Expand optimal_control.md with HJB equation derivations
|
||||
2. Add viscosity solutions section with theory and numerics
|
||||
3. Add finite difference methods explanation
|
||||
|
||||
### Phase 2: Algorithm Details (High Priority)
|
||||
1. HMM API documentation expansion
|
||||
2. Detail each algorithm (forward, backward, Viterbi, Baum-Welch)
|
||||
3. Add mathematical formulas and intuition
|
||||
|
||||
### Phase 3: Usage Guidance (Medium Priority)
|
||||
1. Add "When to Use" sections for each algorithm
|
||||
2. Parameter tuning guidelines
|
||||
3. Diagnostic procedures
|
||||
4. Integration examples
|
||||
|
||||
### Phase 4: API Reference (Medium Priority)
|
||||
1. Complete function signatures
|
||||
2. Parameter and return types
|
||||
3. Error documentation
|
||||
4. Cross-references
|
||||
|
||||
### Phase 5: Examples and Tutorials (Low Priority)
|
||||
1. Jupyter notebooks for common use cases
|
||||
2. End-to-end workflows
|
||||
3. Performance benchmarking examples
|
||||
|
||||
## Technical Notes
|
||||
|
||||
### Current Implementation Status:
|
||||
|
||||
**Optimal Control Module (`src/optimal_control/`):**
|
||||
- ✅ HJB solver (hjb_solver.rs)
|
||||
- ✅ Viscosity solutions (viscosity.rs)
|
||||
- ✅ Regime switching (regime_switching.rs)
|
||||
- ✅ Jump diffusion (jump_diffusion.rs)
|
||||
- ✅ MRSJD (mrsjd.rs)
|
||||
- ✅ OU estimation (ou_estimator.rs)
|
||||
- ✅ Kalman filters (kalman_filter.rs, kalman_py_bindings.rs)
|
||||
- ✅ Backtesting (backtest.rs)
|
||||
|
||||
**HMM Module (`src/hmm/`):**
|
||||
- ✅ Gaussian emissions (emission.rs)
|
||||
- ✅ Forward-Backward algorithm (model.rs)
|
||||
- ✅ Viterbi decoding (viterbi.rs)
|
||||
- ✅ Baum-Welch training (model.rs)
|
||||
- ✅ Python bindings (python_bindings.rs)
|
||||
|
||||
### Documentation Files to Update:
|
||||
|
||||
1. `docs/source/algorithms/optimal_control.md` (currently 94 lines → target: 500+ lines)
|
||||
2. `docs/source/api/hmm.md` (currently 16 lines → target: 300+ lines)
|
||||
3. `docs/source/api/optimal_control.md` (currently 117 lines → target: 400+ lines)
|
||||
4. `docs/source/algorithms/hmm.md` (currently 607 lines → verify completeness)
|
||||
|
||||
### Backup Files Created:
|
||||
|
||||
- `docs/source/algorithms/optimal_control.md.backup`
|
||||
- `docs/source/api/hmm.md.backup`
|
||||
- `docs/source/api/optimal_control.md.backup`
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Immediate:** Write comprehensive optimal_control mathematical foundations
|
||||
2. **Immediate:** Expand HMM API documentation with algorithm details
|
||||
3. **Soon:** Add usage examples and integration guides
|
||||
4. **Later:** Create Jupyter notebook tutorials
|
||||
|
||||
## References Needed
|
||||
|
||||
### Optimal Control:
|
||||
- Fleming & Soner (2006): Controlled Markov Processes and Viscosity Solutions
|
||||
- Øksendal (2003): Stochastic Differential Equations
|
||||
- Pham (2009): Continuous-time Stochastic Control and Optimization
|
||||
- Barles & Souganidis (1991): Convergence of approximation schemes
|
||||
|
||||
### HMM:
|
||||
- Rabiner (1989): Tutorial on HMMs and selected applications
|
||||
- Murphy (2012): Machine Learning: A Probabilistic Perspective
|
||||
- Bishop (2006): Pattern Recognition and Machine Learning
|
||||
|
||||
### Kalman Filtering:
|
||||
- Kalman (1960): A New Approach to Linear Filtering
|
||||
- Julier & Uhlmann (1997): Unscented Kalman Filter
|
||||
|
||||
---
|
||||
|
||||
**Status:** Documentation gaps identified. Implementation in progress.
|
||||
**Priority:** High - These are critical for user onboarding and proper usage.
|
||||
@@ -0,0 +1,395 @@
|
||||
# OptimizR v1.0.0 Publication Guide
|
||||
|
||||
**Status:** ✅ READY FOR PUBLICATION
|
||||
**Date:** February 16, 2026
|
||||
**Repository:** https://github.com/ThotDjehuty/optimiz-r
|
||||
**Tag:** v1.0.0
|
||||
|
||||
---
|
||||
|
||||
## ✅ Completed Preparation
|
||||
|
||||
### 1. Fixed Cargo.toml (Commit: f44280e)
|
||||
- ✅ Removed `python-bindings` from default features
|
||||
- ✅ Updated version: 0.3.0 → 1.0.0
|
||||
- ✅ Updated authors: HFThot Research Lab <contact@hfthot-lab.eu>
|
||||
- ✅ Updated repository URL: https://github.com/ThotDjehuty/optimiz-r
|
||||
|
||||
### 2. Fixed pyproject.toml (Commit: f44280e, a3117fe)
|
||||
- ✅ Updated version: 0.3.0 → 1.0.0
|
||||
- ✅ Updated authors: HFThot Research Lab
|
||||
- ✅ Updated URLs (homepage, docs, repository)
|
||||
- ✅ Fixed maturin configuration to use python-bindings feature
|
||||
|
||||
### 3. Updated README.md (Commit: f44280e)
|
||||
- ✅ Version badge: 0.3.0 → 1.0.0
|
||||
- ✅ What's New section updated for v1.0.0
|
||||
- ✅ Citation author updated
|
||||
- ✅ Contact information updated
|
||||
|
||||
### 4. Added .gitignore (Commit: 0dfb9b8)
|
||||
- ✅ Excluded wheels/ directory from git
|
||||
|
||||
### 5. Created RELEASE_NOTES_v1.0.0.md (Commit: 07d4529)
|
||||
- ✅ Comprehensive release notes
|
||||
- ✅ Breaking changes documentation
|
||||
- ✅ Migration guide
|
||||
- ✅ Roadmap for future versions
|
||||
|
||||
### 6. Build Verification
|
||||
- ✅ `cargo publish --dry-run` - SUCCESS
|
||||
- ✅ `maturin build --release --features python-bindings` - SUCCESS
|
||||
- ✅ Wheel built: `optimizr-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
|
||||
|
||||
### 7. Git Tag & Push
|
||||
- ✅ Created tag: v1.0.0
|
||||
- ✅ Pushed to GitHub: main branch + v1.0.0 tag
|
||||
|
||||
---
|
||||
|
||||
## 📋 Next Steps: Actual Publication
|
||||
|
||||
### Step 1: Set Up crates.io Account
|
||||
|
||||
1. **Create Account** (if not already done)
|
||||
- Visit: https://crates.io/
|
||||
- Sign in with GitHub account
|
||||
|
||||
2. **Generate API Token**
|
||||
- Go to: https://crates.io/settings/tokens
|
||||
- Create new token: "OptimizR v1.0.0 Publication"
|
||||
- Copy the token (you won't see it again)
|
||||
|
||||
3. **Configure Credentials**
|
||||
```bash
|
||||
cargo login <your-crates-io-token>
|
||||
```
|
||||
This creates `~/.cargo/credentials` with your token
|
||||
|
||||
### Step 2: Publish to crates.io
|
||||
|
||||
```bash
|
||||
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
||||
|
||||
# Final verification (already tested ✅)
|
||||
cargo publish --dry-run
|
||||
|
||||
# Actual publication
|
||||
cargo publish
|
||||
|
||||
# Expected output:
|
||||
# Updating crates.io index
|
||||
# Packaging optimizr v1.0.0 (/Users/.../optimiz-r)
|
||||
# Uploading optimizr v1.0.0
|
||||
# Published optimizr v1.0.0
|
||||
```
|
||||
|
||||
**Verification:**
|
||||
- Visit: https://crates.io/crates/optimiz-rs
|
||||
- Should show v1.0.0 within a few minutes
|
||||
|
||||
---
|
||||
|
||||
### Step 3: Set Up PyPI Account
|
||||
|
||||
1. **Create PyPI Account** (if not already done)
|
||||
- Visit: https://pypi.org/account/register/
|
||||
- Verify email
|
||||
|
||||
2. **Enable 2FA** (required for publishing)
|
||||
- Settings → Account Security
|
||||
- Set up 2FA with authenticator app
|
||||
|
||||
3. **Create API Token**
|
||||
- Account settings → API tokens
|
||||
- Scope: Entire account (or specific project after first upload)
|
||||
- Copy the token (starts with `pypi-`)
|
||||
|
||||
4. **Configure Credentials**
|
||||
```bash
|
||||
# Create ~/.pypirc
|
||||
cat > ~/.pypirc << 'EOF'
|
||||
[distutils]
|
||||
index-servers =
|
||||
pypi
|
||||
|
||||
[pypi]
|
||||
username = __token__
|
||||
password = pypi-YOUR_TOKEN_HERE
|
||||
EOF
|
||||
|
||||
# Secure the file
|
||||
chmod 600 ~/.pypirc
|
||||
```
|
||||
|
||||
### Step 4: Publish to PyPI
|
||||
|
||||
```bash
|
||||
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
||||
|
||||
# Build wheels for multiple platforms (current: macOS only)
|
||||
# Option 1: Build for current platform only
|
||||
maturin build --release --features python-bindings
|
||||
|
||||
# Option 2: Use maturin publish which builds and uploads
|
||||
maturin publish --username __token__ --password pypi-YOUR_TOKEN_HERE
|
||||
|
||||
# OR if ~/.pypirc is configured:
|
||||
maturin publish
|
||||
```
|
||||
|
||||
**Multi-Platform Wheels (Optional but Recommended):**
|
||||
|
||||
To publish wheels for Linux, Windows, and macOS:
|
||||
|
||||
```bash
|
||||
# Use GitHub Actions (recommended)
|
||||
# Already have .github/workflows/ci.yml - extend it with:
|
||||
# - maturin publish on tag push
|
||||
# - Build wheels for: Linux (x86_64, aarch64), Windows (x86_64), macOS (x86_64, aarch64)
|
||||
|
||||
# Manual alternative: Use cibuildwheel
|
||||
pip install cibuildwheel
|
||||
cibuildwheel --platform linux
|
||||
cibuildwheel --platform windows
|
||||
cibuildwheel --platform macos
|
||||
|
||||
# Upload all wheels
|
||||
maturin upload target/wheels/*
|
||||
```
|
||||
|
||||
**Verification:**
|
||||
- Visit: https://pypi.org/project/optimizr/
|
||||
- Should show v1.0.0 within a few minutes
|
||||
- Test installation:
|
||||
```bash
|
||||
pip install optimizr==1.0.0
|
||||
python -c "import optimizr; print(optimizr.__version__)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 GitHub Actions Automation (Recommended)
|
||||
|
||||
To automate future releases, update `.github/workflows/ci.yml`:
|
||||
|
||||
```yaml
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
publish-crates:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
- name: Publish to crates.io
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_TOKEN }}
|
||||
run: cargo publish --token $CARGO_REGISTRY_TOKEN
|
||||
|
||||
publish-pypi:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- name: Install maturin
|
||||
run: pip install maturin
|
||||
- name: Build wheels
|
||||
run: maturin build --release --features python-bindings
|
||||
- name: Publish to PyPI
|
||||
env:
|
||||
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
||||
run: maturin publish --username __token__ --password $MATURIN_PYPI_TOKEN
|
||||
```
|
||||
|
||||
**Setup Secrets:**
|
||||
1. GitHub repo → Settings → Secrets and variables → Actions
|
||||
2. Add secrets:
|
||||
- `CRATES_TOKEN`: Your crates.io API token
|
||||
- `PYPI_TOKEN`: Your PyPI API token (starts with `pypi-`)
|
||||
|
||||
---
|
||||
|
||||
## 📊 Post-Publication Checklist
|
||||
|
||||
### Immediate (After Publishing)
|
||||
|
||||
- [ ] **Verify crates.io**: https://crates.io/crates/optimiz-rs/1.0.0
|
||||
- [ ] **Verify PyPI**: https://pypi.org/project/optimizr/1.0.0
|
||||
- [ ] **Test Rust installation**:
|
||||
```bash
|
||||
cargo new test-optimiz-rs
|
||||
cd test-optimiz-rs
|
||||
cargo add optimiz-rs
|
||||
cargo build
|
||||
```
|
||||
- [ ] **Test Python installation**:
|
||||
```bash
|
||||
python -m venv test-env
|
||||
source test-env/bin/activate
|
||||
pip install optimizr==1.0.0
|
||||
python -c "import optimizr; print(optimizr.__version__)"
|
||||
```
|
||||
|
||||
### Documentation Updates
|
||||
|
||||
- [ ] **Update OPEN_SOURCE_STRATEGY.md**:
|
||||
```markdown
|
||||
#### 2. **Optimiz-R** - Portfolio Optimization Engine
|
||||
- **Current Status:** ✅ v1.0.0 published (crates.io + PyPI)
|
||||
- **Repository:** https://github.com/ThotDjehuty/optimiz-r
|
||||
- **Documentation:** https://optimiz-r.readthedocs.io
|
||||
- **Installation:** `cargo add optimiz-rs` or `pip install optimiz-rs`
|
||||
```
|
||||
|
||||
- [ ] **Create GitHub Release**:
|
||||
- Go to: https://github.com/ThotDjehuty/optimiz-r/releases/new
|
||||
- Tag: v1.0.0
|
||||
- Title: "OptimizR v1.0.0 - First Stable Release"
|
||||
- Description: Copy from RELEASE_NOTES_v1.0.0.md
|
||||
- Attach assets: wheels from target/wheels/
|
||||
|
||||
### Marketing & Announcements
|
||||
|
||||
- [ ] **Blog Post** (https://hfthot-lab.eu):
|
||||
```markdown
|
||||
Title: "OptimizR v1.0.0: High-Performance Optimization in Rust"
|
||||
|
||||
Sections:
|
||||
1. What is OptimizR?
|
||||
2. Performance benchmarks (50-100× speedup)
|
||||
3. Key features & algorithms
|
||||
4. Getting started (Rust & Python)
|
||||
5. Why open source?
|
||||
6. Roadmap & community
|
||||
```
|
||||
|
||||
- [ ] **Social Media Announcements**:
|
||||
- Twitter/X: "🚀 OptimizR v1.0.0 is live! High-performance optimization algorithms in Rust with Python bindings. 50-100× faster than pure Python. MIT licensed. #rustlang #python #optimization"
|
||||
- LinkedIn: Professional announcement with benchmarks
|
||||
- Reddit:
|
||||
- r/rust: "OptimizR v1.0.0: Optimization algorithms with 50-100× speedup"
|
||||
- r/Python: "Fast optimization library (Rust-powered) now on PyPI"
|
||||
- r/algotrading: "Open-source optimization for quant finance"
|
||||
|
||||
- [ ] **Hacker News** (https://news.ycombinator.com/submit):
|
||||
```
|
||||
Title: "OptimizR v1.0.0 – High-Performance Optimization Algorithms in Rust"
|
||||
URL: https://github.com/ThotDjehuty/optimiz-r
|
||||
```
|
||||
|
||||
- [ ] **Dev.to Article**:
|
||||
- "Building a 100× Faster Optimization Library with Rust and PyO3"
|
||||
- Include benchmarks, code examples, lessons learned
|
||||
|
||||
### Community Building
|
||||
|
||||
- [ ] **Update README badges**:
|
||||
- Add crates.io badge: `[](https://crates.io/crates/optimiz-rs)`
|
||||
- Add PyPI badge: `[](https://pypi.org/project/optimizr/)`
|
||||
- Add downloads badge
|
||||
|
||||
- [ ] **Create Discord/Discussions**:
|
||||
- Enable GitHub Discussions for Q&A
|
||||
- Or create Discord server for community
|
||||
|
||||
- [ ] **Contributing Guide** (CONTRIBUTING.md):
|
||||
- How to contribute
|
||||
- Development setup
|
||||
- Code style guidelines
|
||||
- PR process
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Success Metrics (Month 1)
|
||||
|
||||
### Downloads
|
||||
- **Target crates.io**: 100 downloads
|
||||
- **Target PyPI**: 500 downloads
|
||||
|
||||
### Community
|
||||
- **GitHub Stars**: 50+
|
||||
- **Issues/Questions**: 5-10
|
||||
- **Contributors**: 2-3
|
||||
|
||||
### Documentation
|
||||
- **ReadTheDocs views**: 1000+
|
||||
- **Tutorial completions**: 50+
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Known Issues & Limitations
|
||||
|
||||
### Current Limitations
|
||||
1. **Single-platform wheels**: Only macOS built locally
|
||||
- **Solution**: Use GitHub Actions for multi-platform builds
|
||||
|
||||
2. **Compiler warnings**: 8 unused variable warnings
|
||||
- **Solution**: Run `cargo fix --lib -p optimizr` and commit
|
||||
|
||||
3. **Documentation**: Some examples could be more comprehensive
|
||||
- **Solution**: Add more real-world use cases to tutorials
|
||||
|
||||
### Not Yet Implemented
|
||||
- GPU acceleration (roadmap: v1.2.0)
|
||||
- Additional DE variants (JADE, SHADE) - roadmap: v1.1.0
|
||||
- Multi-objective optimization - roadmap: v2.0.0
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
If publication issues occur:
|
||||
|
||||
**Crates.io Issues:**
|
||||
- Check: https://crates.io/policies
|
||||
- Email: help@crates.io
|
||||
- Docs: https://doc.rust-lang.org/cargo/reference/publishing.html
|
||||
|
||||
**PyPI Issues:**
|
||||
- Check: https://pypi.org/help/
|
||||
- Docs: https://packaging.python.org/tutorials/packaging-projects/
|
||||
- Forum: https://discuss.python.org/c/packaging/14
|
||||
|
||||
**General:**
|
||||
- Email: contact@hfthot-lab.eu
|
||||
- GitHub Issues: https://github.com/ThotDjehuty/optimiz-r/issues
|
||||
|
||||
---
|
||||
|
||||
## ✅ Summary
|
||||
|
||||
**OptimizR v1.0.0 is READY FOR PUBLICATION**
|
||||
|
||||
All code changes committed ✅
|
||||
All tests passing ✅
|
||||
Documentation complete ✅
|
||||
Git tag created (v1.0.0) ✅
|
||||
Release notes written ✅
|
||||
Pushed to GitHub ✅
|
||||
|
||||
**Next Action:** Set up crates.io and PyPI credentials, then run:
|
||||
```bash
|
||||
cargo publish # For Rust users
|
||||
maturin publish # For Python users
|
||||
```
|
||||
|
||||
**Total Time Invested:** ~2 hours (as estimated)
|
||||
|
||||
**Publication Time:** 15-30 minutes (once credentials configured)
|
||||
|
||||
---
|
||||
|
||||
**Ready to publish! 🚀**
|
||||
@@ -0,0 +1,199 @@
|
||||
# Publication Status Report - OptimizR v1.0.0
|
||||
|
||||
**Date:** February 17, 2026
|
||||
**Author:** ThotDjehuty
|
||||
|
||||
---
|
||||
|
||||
## ✅ Completed Tasks
|
||||
|
||||
### 1. Notebook Fixes (100% Success Rate)
|
||||
- **05_performance_benchmarks.ipynb**: ✅ Fixed
|
||||
- Reduced HMM observation count from 50k to 10k max
|
||||
- Reduced Information Theory tests to 10k max
|
||||
- Added memory stability documentation
|
||||
- All benchmarks now run without kernel crashes
|
||||
|
||||
- **mean_field_games_tutorial.ipynb**: ✅ Fixed
|
||||
- Reduced grid from 100×100 to 50×50 for Python stability
|
||||
- Implemented CFL condition checking with auto-adjustment
|
||||
- Added semi-implicit schemes for HJB solver
|
||||
- Added sub-stepping for Fokker-Planck solver
|
||||
- Enhanced error handling (NaN/Inf detection)
|
||||
- Graceful convergence handling with detailed logging
|
||||
|
||||
**Result**: All 8 tutorial notebooks are now functional!
|
||||
|
||||
### 2. Documentation & Marketing
|
||||
|
||||
- **LINKEDIN_POST.md**: ✅ Created
|
||||
- Compelling narrative with real benchmarks
|
||||
- Clear value proposition (50-100× speedup)
|
||||
- Call-to-action for GitHub stars and contributions
|
||||
- Links to docs, crates.io, PyPI, GitHub
|
||||
|
||||
- **OPEN_SOURCE_STRATEGY.md**: ✅ Updated
|
||||
- Added v1.0.0 release status
|
||||
- Complete feature list
|
||||
- Performance metrics
|
||||
- Publication links (prepared for crates.io and PyPI)
|
||||
|
||||
### 3. Git Configuration
|
||||
- ✅ Configured as ThotDjehuty (admin@hfthot-lab.eu)
|
||||
- ✅ All commits properly attributed
|
||||
|
||||
### 4. Code Commits
|
||||
- ✅ Committed notebook fixes with detailed changelog
|
||||
- ✅ Pushed to GitHub remote (main branch)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Publication Issues
|
||||
|
||||
### crates.io - Email Verification Required
|
||||
**Status:** ❌ **Cannot publish yet**
|
||||
|
||||
**Error Message:**
|
||||
```
|
||||
the remote server responded with an error (status 400 Bad Request):
|
||||
A verified email address is required to publish crates to crates.io.
|
||||
Visit https://crates.io/settings/profile to set and verify your email address.
|
||||
```
|
||||
|
||||
**Action Required:**
|
||||
1. Visit https://crates.io/settings/profile
|
||||
2. Add and verify email address: melvin.caradu@gmail.com (or admin@hfthot-lab.eu)
|
||||
3. Re-run: `cargo publish`
|
||||
|
||||
**Package is ready:** All builds pass, just waiting for email verification.
|
||||
|
||||
---
|
||||
|
||||
### PyPI - Package Name Conflict
|
||||
**Status:** ❌ **Cannot publish under "optimizr"**
|
||||
|
||||
**Issue:** Package name "optimizr" is already taken on PyPI (v1.4.7)
|
||||
- URL: https://pypi.org/project/optimizr/
|
||||
- Owner: Different maintainer
|
||||
- Description: Different project (not our Rust library)
|
||||
|
||||
**Error Message:**
|
||||
```
|
||||
ERROR HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
|
||||
```
|
||||
|
||||
**Solutions:**
|
||||
|
||||
1. **Option A: Use Different Package Name** (Recommended)
|
||||
- `optimiz-rs` - Rust variant naming
|
||||
- `optimizr-hft` - HFT-focused variant
|
||||
- `hfthot-optimizr` - Branded name
|
||||
- `rustimizr` - Play on "Rust optimization"
|
||||
|
||||
**Steps:**
|
||||
```bash
|
||||
# 1. Update pyproject.toml
|
||||
[project]
|
||||
name = "optimiz-rs" # New name
|
||||
|
||||
# 2. Rebuild wheel
|
||||
maturin build --release
|
||||
|
||||
# 3. Upload to PyPI
|
||||
twine upload target/wheels/optimiz_rs-1.0.0-*.whl -u ThotDjehuty -p "..."
|
||||
```
|
||||
|
||||
2. **Option B: Contact Current Owner**
|
||||
- Request name transfer
|
||||
- Package appears abandoned (last update unclear)
|
||||
- This could take weeks/months
|
||||
|
||||
**Recommendation:** Go with Option A (alternative name) to unblock release immediately.
|
||||
|
||||
---
|
||||
|
||||
## 📝 Next Steps
|
||||
|
||||
### Immediate (Today)
|
||||
1. **crates.io:**
|
||||
- [ ] Verify email at https://crates.io/settings/profile
|
||||
- [ ] Run `cargo publish`
|
||||
- [ ] Update RELEASE_NOTES with crates.io link
|
||||
|
||||
2. **PyPI:**
|
||||
- [ ] Decide on alternative package name
|
||||
- [ ] Update `pyproject.toml` with new name
|
||||
- [ ] Rebuild wheel: `maturin build --release`
|
||||
- [ ] Upload: `twine upload target/wheels/*.whl -u ThotDjehuty -p "G2p._468pfSH73G"`
|
||||
- [ ] Update RELEASE_NOTES and LINKEDIN_POST with PyPI link
|
||||
|
||||
3. **Documentation:**
|
||||
- [ ] Update installation instructions with correct package names
|
||||
- [ ] Update README.md
|
||||
- [ ] Update ReadTheDocs references
|
||||
|
||||
### This Week
|
||||
- [ ] Post LinkedIn announcement (after both publications)
|
||||
- [ ] Create GitHub release v1.0.0 with notes
|
||||
- [ ] Announce on relevant subreddits (r/rust, r/algotrading)
|
||||
- [ ] Share on Hacker News
|
||||
- [ ] Reach out to Python/Rust communities
|
||||
|
||||
---
|
||||
|
||||
## 📊 Current Status Summary
|
||||
|
||||
| Task | Status | Notes |
|
||||
|------|--------|-------|
|
||||
| Fix notebooks | ✅ Complete | 8/8 working (100%) |
|
||||
| Create LinkedIn post | ✅ Complete | Ready to publish |
|
||||
| Update OPEN_SOURCE.md | ✅ Complete | v1.0.0 documented |
|
||||
| Git configuration | ✅ Complete | ThotDjehuty identity |
|
||||
| Commit changes | ✅ Complete | Pushed to GitHub |
|
||||
| **crates.io** | ⏸️ **Blocked** | **Need email verification** |
|
||||
| **PyPI** | ⏸️ **Blocked** | **Need alternative name** |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Recommended Package Name
|
||||
|
||||
**Suggested:** `optimiz-rs`
|
||||
|
||||
**Rationale:**
|
||||
- Clear that it's the Rust implementation
|
||||
- Follows Python packaging conventions for Rust bindings
|
||||
- SEO-friendly (people searching "optimizr rust" will find it)
|
||||
- Professional and descriptive
|
||||
- Available on PyPI (checked)
|
||||
|
||||
**Update locations:**
|
||||
1. `pyproject.toml` → `name = "optimiz-rs"`
|
||||
2. `README.md` → `pip install optimiz-rs`
|
||||
3. `docs/source/installation.rst` → Update pip command
|
||||
4. `LINKEDIN_POST.md` → Update installation instructions
|
||||
5. `RELEASE_NOTES_v1.0.0.md` → Update PyPI references
|
||||
|
||||
---
|
||||
|
||||
## 🔥 What We Achieved Today
|
||||
|
||||
✅ **ALL notebooks now functional** (8/8 = 100%)
|
||||
✅ **Professional marketing materials** (LinkedIn post ready)
|
||||
✅ **Documentation updated** (OPEN_SOURCE_STRATEGY.md)
|
||||
✅ **Code properly committed** (as ThotDjehuty)
|
||||
✅ **Wheel built successfully** (ready for PyPI)
|
||||
✅ **crates.io ready** (just needs email verification)
|
||||
|
||||
🎉 **OptimizR v1.0.0 is 99% ready for public release!**
|
||||
|
||||
Just need to:
|
||||
1. Verify email on crates.io (2 minutes)
|
||||
2. Choose PyPI name and rebuild (5 minutes)
|
||||
3. Publish both packages (2 minutes)
|
||||
4. Post LinkedIn announcement (copy-paste ready)
|
||||
|
||||
**Total time to completion: ~10 minutes of user action required**
|
||||
|
||||
---
|
||||
|
||||
**Status:** Ready for user decisions on crates.io email and PyPI package name.
|
||||
@@ -0,0 +1,88 @@
|
||||
# PyPI Publishing Instructions
|
||||
|
||||
## Current Status
|
||||
- ✅ Package built: `optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
|
||||
- ✅ Package name: `optimiz-rs` (to avoid conflict with existing "optimizr")
|
||||
- ❌ Need PyPI API token (username/password auth deprecated)
|
||||
|
||||
## Steps to Publish
|
||||
|
||||
### 1. Get PyPI API Token
|
||||
|
||||
1. Login to PyPI: https://pypi.org/account/login/
|
||||
- Username: `ThotDjehuty`
|
||||
- Password: `G2p._468pfSH73G`
|
||||
|
||||
2. Create API token: https://pypi.org/manage/account/token/
|
||||
- Click "Add API token"
|
||||
- Token name: `optimiz-rs-publishing`
|
||||
- Scope: "Entire account" (can limit to project later)
|
||||
- **IMPORTANT:** Copy the token immediately (starts with `pypi-`)
|
||||
- Store securely (won't be shown again)
|
||||
|
||||
### 2. Upload to PyPI
|
||||
|
||||
```bash
|
||||
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
||||
|
||||
# Upload with API token
|
||||
twine upload target/wheels/optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
||||
-u __token__ \
|
||||
-p pypi-YOUR_TOKEN_HERE
|
||||
```
|
||||
|
||||
**Note:** Username must be `__token__` (literal string) when using API tokens.
|
||||
|
||||
### 3. Verify Publication
|
||||
|
||||
After successful upload, verify at:
|
||||
- Package page: https://pypi.org/project/optimiz-rs/
|
||||
- Test install: `pip install optimiz-rs`
|
||||
|
||||
### 4. Update Documentation
|
||||
|
||||
Once published, update these files:
|
||||
- `RELEASE_NOTES_v1.0.0.md` - Change "(publishing in progress)" to actual link
|
||||
- `LINKEDIN_POST.md` - Update PyPI link
|
||||
- Commit and push changes
|
||||
|
||||
## Alternative: Store Token in ~/.pypirc
|
||||
|
||||
For future uploads, store token securely:
|
||||
|
||||
```bash
|
||||
# Create ~/.pypirc
|
||||
cat > ~/.pypirc << 'EOF'
|
||||
[pypi]
|
||||
username = __token__
|
||||
password = pypi-YOUR_TOKEN_HERE
|
||||
EOF
|
||||
|
||||
# Secure the file
|
||||
chmod 600 ~/.pypirc
|
||||
|
||||
# Then upload without credentials in command
|
||||
twine upload target/wheels/optimiz_rs-1.0.0-*.whl
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**403 Forbidden:**
|
||||
- PyPI deprecated username/password auth
|
||||
- Must use API tokens
|
||||
- Ensure username is `__token__` (not your actual username)
|
||||
|
||||
**Package name conflict:**
|
||||
- Already handled - using `optimiz-rs`
|
||||
- Cannot use `optimizr`, `optimiz-r`, or `optimizR` (all normalize to "optimizr")
|
||||
|
||||
**Token not working:**
|
||||
- Verify token copied completely (very long string)
|
||||
- Check token hasn't expired
|
||||
- Ensure no extra spaces/newlines
|
||||
|
||||
---
|
||||
|
||||
**Current Publication Status:**
|
||||
- ✅ crates.io: Published at https://crates.io/crates/optimiz-rs
|
||||
- ⏳ PyPI: Ready to publish (just need API token)
|
||||
@@ -0,0 +1,523 @@
|
||||
# OptimizR v0.2.0 Release Notes
|
||||
|
||||
**Release Date:** December 10, 2025
|
||||
**Focus:** Comprehensive Differential Evolution + Mathematical Toolkit + Optimal Control Framework
|
||||
|
||||
---
|
||||
|
||||
## 🎉 What's New
|
||||
|
||||
### 1. **Comprehensive Differential Evolution Implementation**
|
||||
|
||||
Complete rewrite of the Differential Evolution optimizer with advanced features:
|
||||
|
||||
#### Multiple Mutation Strategies
|
||||
- `rand/1/bin` - Classic strategy with robust exploration
|
||||
- `best/1/bin` - Fast convergence for unimodal problems
|
||||
- `current-to-best/1` - Balanced exploration/exploitation (recommended default)
|
||||
- `rand/2/bin` - Enhanced exploration for highly multimodal landscapes
|
||||
- `best/2/bin` - Aggressive convergence for final refinement
|
||||
|
||||
#### Adaptive Parameter Control (jDE Algorithm)
|
||||
- Self-adapting mutation factor F ∈ [0.1, 1.0]
|
||||
- Self-adapting crossover rate CR ∈ [0, 1]
|
||||
- Individual parameter values per population member
|
||||
- No manual parameter tuning required
|
||||
|
||||
#### Convergence Tracking & Diagnostics
|
||||
```python
|
||||
result = optimizr.differential_evolution(
|
||||
objective_fn=complex_function,
|
||||
bounds=[(-5, 5)] * 20,
|
||||
track_history=True,
|
||||
adaptive=True
|
||||
)
|
||||
|
||||
# Plot convergence
|
||||
generations, fitness = result.convergence_curve()
|
||||
plt.semilogy(generations, fitness)
|
||||
```
|
||||
|
||||
Features tracked:
|
||||
- Best fitness per generation
|
||||
- Mean and standard deviation of population fitness
|
||||
- Population diversity metrics
|
||||
- Convergence detection with early stopping
|
||||
|
||||
#### Enhanced API
|
||||
```python
|
||||
result = optimizr.differential_evolution(
|
||||
objective_fn=callable, # f(x: List[float]) -> float
|
||||
bounds=[(min, max), ...], # Parameter bounds
|
||||
popsize=15, # Population size multiplier
|
||||
maxiter=1000, # Max generations
|
||||
f=None, # Mutation factor (None = adaptive)
|
||||
cr=None, # Crossover rate (None = adaptive)
|
||||
strategy="currenttobest1",# Mutation strategy
|
||||
seed=42, # Random seed for reproducibility
|
||||
tol=1e-6, # Convergence tolerance
|
||||
atol=1e-8, # Absolute tolerance
|
||||
track_history=True, # Record convergence history
|
||||
adaptive=True # Use adaptive jDE
|
||||
)
|
||||
```
|
||||
|
||||
**Result Object:**
|
||||
- `x`: Best parameters found
|
||||
- `fun`: Best objective value
|
||||
- `nfev`: Number of function evaluations
|
||||
- `n_generations`: Generations executed
|
||||
- `history`: Optional convergence records
|
||||
- `success`: Convergence flag
|
||||
- `message`: Status message
|
||||
|
||||
### 2. **Mathematical Toolkit Module (`maths_toolkit`)**
|
||||
|
||||
Centralized mathematical utilities used across all optimization algorithms:
|
||||
|
||||
#### Numerical Differentiation
|
||||
- `gradient(f, x, h)` - First derivatives (central/forward differences)
|
||||
- `hessian(f, x, h)` - Second derivatives matrix
|
||||
- `jacobian(f, x, h)` - Jacobian for vector-valued functions
|
||||
|
||||
#### Statistics
|
||||
- `mean`, `variance`, `std_dev` - Basic statistics
|
||||
- `skewness`, `kurtosis` - Higher moments
|
||||
- `autocorrelation`, `acf` - Time series correlation
|
||||
- `correlation`, `correlation_matrix` - Multi-variable correlation
|
||||
|
||||
#### Linear Algebra
|
||||
- `matrix_norm`, `vector_norm` - L1, L2, L∞ norms
|
||||
- `normalize` - Vector normalization
|
||||
- `trace`, `outer_product` - Matrix operations
|
||||
- `condition_number_estimate` - Numerical stability check
|
||||
|
||||
#### Numerical Integration
|
||||
- `trapz` - Trapezoidal rule
|
||||
- `simpson` - Simpson's rule
|
||||
|
||||
#### Interpolation
|
||||
- `lerp` - Linear interpolation
|
||||
- `interp1d` - 1D interpolation on grids
|
||||
|
||||
#### Special Functions
|
||||
- `sigmoid`, `softplus`, `relu` - Activation functions
|
||||
- `soft_threshold` - LASSO regularization
|
||||
- `check_bounds`, `project_bounds` - Constraint handling
|
||||
|
||||
### 3. **Optimal Control Framework**
|
||||
|
||||
Generic framework for solving optimal control problems via Hamilton-Jacobi-Bellman equations:
|
||||
|
||||
#### Regime Switching Systems
|
||||
- Continuous-time Markov chains
|
||||
- Regime-dependent dynamics
|
||||
- Coupled HJB system solver
|
||||
|
||||
#### Jump Diffusion Processes
|
||||
- Lévy processes
|
||||
- Compound Poisson jumps
|
||||
- Jump kernel integration
|
||||
|
||||
#### MRSJD (Markov Regime Switching Jump Diffusion)
|
||||
- Combined framework for complex systems
|
||||
- Regime switching + jump diffusion
|
||||
- Generic optimal control (not portfolio-specific)
|
||||
|
||||
#### Numerical Methods
|
||||
- Finite difference schemes
|
||||
- Upwind schemes for stability
|
||||
- Value iteration
|
||||
- Policy iteration
|
||||
|
||||
#### Applications
|
||||
- Temperature control systems
|
||||
- Inventory management
|
||||
- Robot navigation
|
||||
- Resource allocation
|
||||
|
||||
**Tutorial Notebook:** `03_optimal_control_tutorial.ipynb` with detailed mathematical background, practical examples, and parameter selection guidance.
|
||||
|
||||
### 4. **Code Refactoring & Cleanup**
|
||||
|
||||
#### Removed Legacy Code
|
||||
- Deleted `hmm_legacy.rs`, `mcmc_legacy.rs`
|
||||
- Deleted `hmm_refactored.rs`, `mcmc_refactored.rs`
|
||||
- Deleted `de_refactored.rs`
|
||||
- Removed all finance-specific examples from core library
|
||||
|
||||
#### Modular Architecture
|
||||
```
|
||||
src/
|
||||
├── core.rs # Core traits and error types
|
||||
├── functional.rs # Functional programming utilities
|
||||
├── maths_toolkit.rs # Mathematical utilities
|
||||
├── differential_evolution.rs # Comprehensive DE
|
||||
├── sparse_optimization.rs # Sparse PCA, ADMM, Elastic Net
|
||||
├── risk_metrics.rs # Generic time series analysis
|
||||
├── optimal_control/ # HJB solvers, MRSJD framework
|
||||
├── hmm/ # Modular HMM implementation
|
||||
├── mcmc/ # Modular MCMC implementation
|
||||
└── de/ # DE module exports
|
||||
```
|
||||
|
||||
#### Generic Design
|
||||
- All algorithms now domain-agnostic
|
||||
- Portfolio-specific code moved to application layer
|
||||
- Reusable mathematical components
|
||||
- Clean separation of concerns
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Performance Improvements
|
||||
|
||||
### Differential Evolution Benchmarks
|
||||
|
||||
| Problem | Dimensions | Python (s) | Rust (s) | Speedup |
|
||||
|---------|-----------|------------|----------|---------|
|
||||
| Sphere | 10 | 12.3 | 0.14 | **88×** |
|
||||
| Rosenbrock | 10 | 15.2 | 0.18 | **84×** |
|
||||
| Rosenbrock | 20 | 62.5 | 0.71 | **88×** |
|
||||
| Rastrigin | 10 | 18.7 | 0.22 | **85×** |
|
||||
| Rastrigin | 20 | 72.1 | 0.84 | **86×** |
|
||||
| Portfolio | 50 | 145.0 | 1.95 | **74×** |
|
||||
|
||||
*Benchmarks: 500-1000 generations, population size 15×d to 20×d*
|
||||
|
||||
### Memory Efficiency
|
||||
|
||||
| Problem Dimensions | Python Memory | Rust Memory | Reduction |
|
||||
|-------------------|--------------|-------------|-----------|
|
||||
| 10D | 45 MB | 2.1 MB | **95%** |
|
||||
| 20D | 180 MB | 8.3 MB | **95%** |
|
||||
| 50D | 1.1 GB | 52 MB | **95%** |
|
||||
|
||||
### Compilation Performance
|
||||
|
||||
```bash
|
||||
cargo build --release --no-default-features
|
||||
# Time: 19.05s
|
||||
# Errors: 0
|
||||
# Warnings: 21 (all non-critical)
|
||||
```
|
||||
|
||||
### Parallel Infrastructure (Rayon)
|
||||
|
||||
- Population-based algorithms ready for parallelization
|
||||
- Pure Rust objectives fully parallelizable
|
||||
- 4-8× potential speedup on multi-core systems
|
||||
- Python callbacks kept serial due to GIL constraints
|
||||
|
||||
---
|
||||
|
||||
## 📚 Documentation Updates
|
||||
|
||||
### New Tutorial Notebooks
|
||||
|
||||
1. **`03_optimal_control_tutorial.ipynb`** (NEW)
|
||||
- Mathematical background: HJB equations, viscosity solutions
|
||||
- Regime switching systems
|
||||
- Jump diffusion processes
|
||||
- Combined MRSJD models
|
||||
- Practical parameter selection guide
|
||||
- Generic examples (not finance-specific)
|
||||
|
||||
### Updated Notebooks
|
||||
|
||||
2. **`03_differential_evolution_tutorial.ipynb`** (UPDATED)
|
||||
- All 5 mutation strategies demonstrated
|
||||
- Adaptive jDE examples
|
||||
- Convergence tracking visualizations
|
||||
- Real-world portfolio optimization
|
||||
- Performance comparisons
|
||||
|
||||
### Enhanced Documentation
|
||||
|
||||
- **README.md**: Updated with new features, benchmarks
|
||||
- **API Documentation**: Complete parameter descriptions
|
||||
- **Mathematical Theory**: Detailed algorithm explanations
|
||||
- **Usage Examples**: Production-ready code snippets
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
|
||||
1. **Fixed compilation warnings** (21 → 0 critical warnings)
|
||||
- Unused import cleanup
|
||||
- Variable naming consistency
|
||||
- Dead code elimination
|
||||
|
||||
2. **Type safety improvements**
|
||||
- Explicit type annotations on `collect()` calls
|
||||
- Proper error propagation
|
||||
- Boundary checking
|
||||
|
||||
3. **Numerical stability**
|
||||
- Upwind schemes in optimal control
|
||||
- Soft thresholding for sparse optimization
|
||||
- Normalized gradients
|
||||
|
||||
4. **Memory leaks fixed**
|
||||
- Proper Python object lifetime management
|
||||
- GIL handling improvements
|
||||
- Reference counting corrections
|
||||
|
||||
---
|
||||
|
||||
## 📦 Dependencies
|
||||
|
||||
### Rust Dependencies (Updated)
|
||||
|
||||
```toml
|
||||
pyo3 = "0.21" # Python bindings
|
||||
numpy = "0.21" # NumPy integration
|
||||
ndarray = "0.15" # N-dimensional arrays
|
||||
ndarray-linalg = "0.16" # Linear algebra
|
||||
rayon = "1.8" # Parallelization
|
||||
rand = "0.8" # Random number generation
|
||||
statrs = "0.17" # Statistics
|
||||
thiserror = "1.0" # Error handling
|
||||
```
|
||||
|
||||
### Python Requirements
|
||||
|
||||
```
|
||||
numpy >= 1.20.0
|
||||
scipy >= 1.7.0
|
||||
matplotlib >= 3.4.0 (for notebooks)
|
||||
jupyter >= 1.0.0 (for notebooks)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Breaking Changes
|
||||
|
||||
### API Changes
|
||||
|
||||
1. **Differential Evolution**
|
||||
```python
|
||||
# OLD (v0.1.0)
|
||||
result = differential_evolution(fn, bounds, popsize, maxiter, f, cr)
|
||||
|
||||
# NEW (v0.2.0)
|
||||
result = differential_evolution(
|
||||
fn, bounds, popsize, maxiter,
|
||||
f=None, # Now optional (adaptive)
|
||||
cr=None, # Now optional (adaptive)
|
||||
strategy="rand1", # NEW: strategy selection
|
||||
adaptive=True, # NEW: adaptive jDE
|
||||
track_history=True # NEW: convergence tracking
|
||||
)
|
||||
```
|
||||
|
||||
2. **Result Objects**
|
||||
```python
|
||||
# OLD: Simple tuple
|
||||
(x_best, f_best)
|
||||
|
||||
# NEW: Rich result object
|
||||
result.x # Best parameters
|
||||
result.fun # Best value
|
||||
result.nfev # Function evaluations
|
||||
result.n_generations # Generations
|
||||
result.history # Convergence history
|
||||
result.success # Convergence flag
|
||||
result.message # Status message
|
||||
```
|
||||
|
||||
3. **Module Imports**
|
||||
```python
|
||||
# OLD: Mixed imports
|
||||
from optimizr import differential_evolution, de_refactored
|
||||
|
||||
# NEW: Clean imports
|
||||
from optimizr import differential_evolution
|
||||
from optimizr.de import DEResult, DEStrategy
|
||||
```
|
||||
|
||||
### Removed APIs
|
||||
|
||||
- `de_refactored.differential_evolution` → Use `differential_evolution`
|
||||
- Legacy HMM/MCMC modules → Use modular versions in `hmm/`, `mcmc/`
|
||||
- Portfolio-specific constructors → Use generic interfaces
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Migration Guide
|
||||
|
||||
### From v0.1.0 to v0.2.0
|
||||
|
||||
#### Differential Evolution
|
||||
|
||||
```python
|
||||
# Before
|
||||
result = differential_evolution(rosenbrock, bounds, 15, 1000, 0.8, 0.7)
|
||||
x_best = result.x
|
||||
f_best = result.fun
|
||||
|
||||
# After (with new features)
|
||||
result = differential_evolution(
|
||||
rosenbrock,
|
||||
bounds,
|
||||
popsize=15,
|
||||
maxiter=1000,
|
||||
strategy="currenttobest1", # Better than rand1
|
||||
adaptive=True, # Auto-tune F and CR
|
||||
track_history=True # Monitor convergence
|
||||
)
|
||||
|
||||
# Check convergence
|
||||
if result.success:
|
||||
print(f"Converged in {result.n_generations} generations")
|
||||
|
||||
# Plot convergence
|
||||
if result.history:
|
||||
gen, fit = result.convergence_curve()
|
||||
plt.semilogy(gen, fit)
|
||||
```
|
||||
|
||||
#### Using New Mathematical Toolkit
|
||||
|
||||
```python
|
||||
# Before: Implement your own gradient
|
||||
def numerical_gradient(f, x, h=1e-5):
|
||||
grad = np.zeros_like(x)
|
||||
for i in range(len(x)):
|
||||
x_plus = x.copy()
|
||||
x_plus[i] += h
|
||||
x_minus = x.copy()
|
||||
x_minus[i] -= h
|
||||
grad[i] = (f(x_plus) - f(x_minus)) / (2 * h)
|
||||
return grad
|
||||
|
||||
# After: Use built-in toolkit
|
||||
from optimizr.maths_toolkit import gradient, hessian
|
||||
|
||||
grad = gradient(f, x)
|
||||
hess = hessian(f, x)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
### Test Coverage
|
||||
|
||||
```bash
|
||||
cargo test --release --no-default-features
|
||||
# Tests: 34 passed
|
||||
# Coverage: ~85%
|
||||
```
|
||||
|
||||
### Notebook Validation
|
||||
|
||||
All notebooks tested and validated:
|
||||
- ✅ `01_hmm_tutorial.ipynb`
|
||||
- ✅ `02_mcmc_tutorial.ipynb`
|
||||
- ✅ `03_differential_evolution_tutorial.ipynb`
|
||||
- ✅ `03_optimal_control_tutorial.ipynb`
|
||||
- ✅ `04_real_world_applications.ipynb`
|
||||
- ✅ `05_performance_benchmarks.ipynb`
|
||||
|
||||
---
|
||||
|
||||
## 📈 Known Issues & Limitations
|
||||
|
||||
1. **Parallel Python Callbacks**: Currently disabled due to GIL constraints. Pure Rust objectives support full parallelization.
|
||||
|
||||
2. **Windows Build**: Requires manual OpenBLAS installation. Working on pre-built wheels.
|
||||
|
||||
3. **Large Populations**: Memory usage scales O(N_pop × dimensions). Recommended max: 50,000 individuals.
|
||||
|
||||
4. **Notebook Compatibility**: Some visualizations require matplotlib ≥ 3.4.0.
|
||||
|
||||
---
|
||||
|
||||
## 🔮 Roadmap for v0.3.0
|
||||
|
||||
### Planned Features
|
||||
|
||||
1. **Additional DE Variants**
|
||||
- JADE (jDE with archive)
|
||||
- SHADE (Success-History based Adaptive DE)
|
||||
- L-SHADE (with linear population reduction)
|
||||
|
||||
2. **Multi-Objective Optimization**
|
||||
- NSGA-DE (Non-dominated Sorting)
|
||||
- MODE (Multi-Objective DE)
|
||||
- Pareto front computation
|
||||
|
||||
3. **GPU Acceleration**
|
||||
- CUDA kernels for population evaluation
|
||||
- OpenCL support
|
||||
- 10-100× additional speedup
|
||||
|
||||
4. **Additional Algorithms**
|
||||
- Particle Swarm Optimization (PSO)
|
||||
- CMA-ES (Covariance Matrix Adaptation)
|
||||
- Simulated Annealing
|
||||
- Ant Colony Optimization
|
||||
|
||||
5. **Python Callback Parallelization**
|
||||
- GIL-free callback mechanism
|
||||
- Sub-interpreter support
|
||||
- Process pool integration
|
||||
|
||||
---
|
||||
|
||||
## 🙏 Contributors
|
||||
|
||||
- Core Development: Melvin Alvarez
|
||||
- Mathematical Algorithms: Based on research papers (see References)
|
||||
- Testing & Validation: Community contributors
|
||||
|
||||
## 📚 References
|
||||
|
||||
### Differential Evolution
|
||||
- Storn & Price (1997). "Differential evolution–a simple and efficient heuristic for global optimization"
|
||||
- Das & Suganthan (2011). "Differential evolution: A survey of the state-of-the-art"
|
||||
- Brest et al. (2006). "Self-Adapting Control Parameters in DE: jDE Algorithm"
|
||||
|
||||
### Optimal Control
|
||||
- Fleming & Rishel. "Deterministic and Stochastic Optimal Control"
|
||||
- Øksendal & Sulem. "Applied Stochastic Control of Jump Diffusions"
|
||||
|
||||
### Sparse Optimization
|
||||
- d'Aspremont (2011). "Identifying Small Mean Reverting Portfolios"
|
||||
- Candès et al. (2011). "Robust Principal Component Analysis?"
|
||||
|
||||
---
|
||||
|
||||
## 📥 Download & Install
|
||||
|
||||
### PyPI (Coming Soon)
|
||||
```bash
|
||||
pip install optimizr==0.2.0
|
||||
```
|
||||
|
||||
### Source
|
||||
```bash
|
||||
git clone https://github.com/ThotDjehuty/optimiz-r.git
|
||||
cd optimiz-r
|
||||
git checkout v0.2.0
|
||||
maturin develop --release
|
||||
```
|
||||
|
||||
### Docker
|
||||
```bash
|
||||
docker pull thotdjehuty/optimizr:0.2.0
|
||||
docker run -p 8888:8888 thotdjehuty/optimizr:0.2.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
- **Issues**: [GitHub Issues](https://github.com/ThotDjehuty/optimiz-r/issues)
|
||||
- **Discussions**: [GitHub Discussions](https://github.com/ThotDjehuty/optimiz-r/discussions)
|
||||
- **Documentation**: [docs/](https://optimizr.readthedocs.io)
|
||||
|
||||
---
|
||||
|
||||
**Thank you for using OptimizR!** 🚀
|
||||
|
||||
@@ -0,0 +1,367 @@
|
||||
# OptimizR v0.3.0 Release Notes
|
||||
|
||||
**Release Date:** January 4, 2025
|
||||
**Status:** Major Feature Release 🚀
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Highlights
|
||||
|
||||
This release introduces **Mean Field Games (MFG)** algorithms with full Python integration and comprehensive tutorial notebooks. We've also audited and validated all example notebooks, ensuring production-ready quality.
|
||||
|
||||
### Major Additions
|
||||
|
||||
✨ **Mean Field Games Framework** - Complete implementation of 1D MFG solvers
|
||||
📚 **Validated Tutorial Notebooks** - All 7 example notebooks tested and working
|
||||
🏗️ **Maturin Build System** - Replaced cargo with maturin for reliable macOS builds
|
||||
🐍 **Enhanced Python Wrappers** - Smart OOP interfaces with automatic Rust acceleration
|
||||
|
||||
---
|
||||
|
||||
## 🆕 New Features
|
||||
|
||||
### 1. Mean Field Games (MFG) Module
|
||||
|
||||
Complete implementation of Mean Field Games for modeling large populations of interacting agents.
|
||||
|
||||
**New Classes & Functions:**
|
||||
- `MFGConfig` / `MFGConfigPy` - Configuration for MFG problems
|
||||
- `solve_mfg_1d_rust()` - 1D Mean Field Games solver
|
||||
|
||||
**Features:**
|
||||
- Hamilton-Jacobi-Bellman (HJB) backward solver
|
||||
- Fokker-Planck forward solver
|
||||
- Fixed-point iteration for coupled equations
|
||||
- Upwind finite difference schemes
|
||||
- Neumann boundary conditions
|
||||
- Convergence diagnostics
|
||||
|
||||
**Example:**
|
||||
```python
|
||||
from optimizr import MFGConfig, solve_mfg_1d_rust
|
||||
import numpy as np
|
||||
|
||||
# Configure MFG problem
|
||||
config = MFGConfig(
|
||||
nx=100, nt=100, # Grid: 100 spatial × 100 temporal points
|
||||
x_min=0.0, x_max=1.0, # Spatial domain [0, 1]
|
||||
T=1.0, # Time horizon
|
||||
nu=0.01, # Viscosity coefficient
|
||||
max_iter=50, # Max iterations for fixed-point
|
||||
tol=1e-5, # Convergence tolerance
|
||||
alpha=0.5 # Relaxation parameter
|
||||
)
|
||||
|
||||
# Initial distribution (Gaussian at x=0.3)
|
||||
x = np.linspace(0, 1, 100)
|
||||
m0 = np.exp(-50 * (x - 0.3)**2)
|
||||
m0 = m0 / (np.sum(m0) * (x[1] - x[0]))
|
||||
|
||||
# Terminal cost (quadratic: agents want to reach x=0.7)
|
||||
u_terminal = 0.5 * (x - 0.7)**2
|
||||
|
||||
# Solve MFG
|
||||
u, m, iterations = solve_mfg_1d_rust(
|
||||
m0, u_terminal, config,
|
||||
lambda_congestion=0.5
|
||||
)
|
||||
|
||||
print(f"Converged in {iterations} iterations")
|
||||
print(f"Solution shape: u{u.shape}, m{m.shape}")
|
||||
```
|
||||
|
||||
**Performance:**
|
||||
- **0.4 seconds** for 100×100 grid, 50 iterations
|
||||
- Stable computation (no NaN/overflow)
|
||||
- Handles complex agent dynamics
|
||||
|
||||
**Tutorial Notebook:**
|
||||
- `examples/notebooks/mean_field_games_tutorial.ipynb`
|
||||
- Full workflow with visualizations
|
||||
- Comparison with Python reference implementation
|
||||
- 3D surface plots of distribution evolution
|
||||
|
||||
### 2. Maturin Build System
|
||||
|
||||
Replaced cargo-based builds with maturin for improved reliability and compatibility.
|
||||
|
||||
**Benefits:**
|
||||
- ✅ Works reliably on macOS (fixes linker issues)
|
||||
- ✅ Creates proper Python wheels for abi3 (Python ≥ 3.8)
|
||||
- ✅ Editable installs with `maturin develop`
|
||||
- ✅ Better integration with Python packaging ecosystem
|
||||
|
||||
**Build Commands:**
|
||||
```bash
|
||||
# Install maturin
|
||||
pip install maturin
|
||||
|
||||
# Development build (editable)
|
||||
maturin develop --release --features python-bindings
|
||||
|
||||
# Production wheel
|
||||
maturin build --release --features python-bindings
|
||||
|
||||
# Install from wheel
|
||||
pip install target/wheels/optimizr-0.3.0-*.whl
|
||||
```
|
||||
|
||||
### 3. Python Wrapper Architecture
|
||||
|
||||
Discovered and documented the elegant two-layer architecture:
|
||||
|
||||
**Layer 1: Rust Core** (`src/` with PyO3)
|
||||
- Raw functions: `fit_hmm()`, `viterbi_decode()`, `solve_mfg_1d_rust()`
|
||||
- Parameter classes: `HMMParams`, `MFGConfig`
|
||||
- High-performance implementations
|
||||
|
||||
**Layer 2: Python Wrappers** (`python/optimizr/`)
|
||||
- User-friendly OOP interfaces: `HMM` class, etc.
|
||||
- Familiar API patterns (scikit-learn style)
|
||||
- Automatic Rust acceleration when available
|
||||
- Graceful fallback to pure Python
|
||||
|
||||
**Example: HMM Wrapper**
|
||||
```python
|
||||
# User-friendly interface
|
||||
from optimizr import HMM
|
||||
|
||||
hmm = HMM(n_states=3)
|
||||
hmm.fit(returns, n_iterations=100, tolerance=1e-6)
|
||||
predicted_states = hmm.predict(returns)
|
||||
|
||||
# Internally uses Rust:
|
||||
# - _rust_fit_hmm() for training
|
||||
# - _rust_viterbi() for prediction
|
||||
# - Automatic fallback if Rust unavailable
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 Documentation & Examples
|
||||
|
||||
### Tutorial Notebooks Audit
|
||||
|
||||
Comprehensive audit and testing of all 7 example notebooks:
|
||||
|
||||
✅ **01_hmm_tutorial.ipynb** - WORKING
|
||||
- Hidden Markov Models for regime detection
|
||||
- Baum-Welch training, Viterbi decoding
|
||||
- Market regime classification
|
||||
- All cells execute successfully
|
||||
|
||||
✅ **02_mcmc_tutorial.ipynb** - WORKING
|
||||
- Metropolis-Hastings MCMC
|
||||
- Bayesian parameter estimation
|
||||
- Posterior distributions
|
||||
- Imports verified
|
||||
|
||||
✅ **03_differential_evolution_tutorial.ipynb** - READY
|
||||
- Global optimization
|
||||
- Multiple test functions
|
||||
- Performance comparisons
|
||||
|
||||
ℹ️ **03_optimal_control_tutorial.ipynb** - THEORY ONLY
|
||||
- Educational content on optimal control
|
||||
- Stochastic differential equations
|
||||
- No optimizr imports (by design)
|
||||
|
||||
✅ **04_real_world_applications.ipynb** - FIXED & WORKING
|
||||
- Real-world crypto market analysis
|
||||
- Uses: HMM, MCMC, grid_search, mutual_information
|
||||
- Fixed: Removed invalid `random_state` parameter
|
||||
- All tested cells execute successfully
|
||||
|
||||
✅ **05_performance_benchmarks.ipynb** - WORKING
|
||||
- Rust vs Python comparisons
|
||||
- Benchmarks against hmmlearn, scipy, sklearn
|
||||
- Auto-installs dependencies
|
||||
|
||||
✅ **mean_field_games_tutorial.ipynb** - NEW & FULLY TESTED
|
||||
- Complete MFG workflow
|
||||
- 3D visualizations of agent distributions
|
||||
- Time-evolution plots
|
||||
- Performance metrics
|
||||
- All 12 code cells execute successfully
|
||||
|
||||
### New Documentation Files
|
||||
|
||||
- **MFG_TUTORIAL_COMPLETE.md** - Full MFG implementation summary
|
||||
- **NOTEBOOK_AUDIT_REPORT.md** - Comprehensive notebook validation report
|
||||
- **COMPLETE_NOTEBOOK_PROOF.md** - Execution proof with timestamps
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Bug Fixes
|
||||
|
||||
### Critical Fixes
|
||||
|
||||
1. **MFGConfig Parameter Fix**
|
||||
- **Issue:** Used `ny` parameter for 1D problems (should only be for 2D)
|
||||
- **Fix:** Removed `ny` from `MFGConfigPy` instantiation
|
||||
- **Impact:** MFG solver now works correctly for 1D problems
|
||||
|
||||
2. **HMM random_state Parameter**
|
||||
- **Issue:** `04_real_world_applications.ipynb` used non-existent `random_state` parameter
|
||||
- **Fix:** Removed `random_state` from `HMM()` constructor calls
|
||||
- **Files:** `04_real_world_applications.ipynb`
|
||||
|
||||
3. **macOS Build System**
|
||||
- **Issue:** cargo build failed with linker errors on macOS
|
||||
- **Fix:** Switched to maturin build system
|
||||
- **Impact:** Reliable builds on all platforms
|
||||
|
||||
### Stability Improvements
|
||||
|
||||
- **Numerical Stability:** MFG solver handles large gradients without overflow
|
||||
- **Convergence Reporting:** Fixed misleading "converged" message when hitting max_iter
|
||||
- **Python Solver:** Documented numerical instability in reference implementation
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Performance Improvements
|
||||
|
||||
### Mean Field Games
|
||||
- **Speed:** 0.4 seconds for 100×100 grid (10,000 space-time points)
|
||||
- **Stability:** No NaN or overflow in Rust implementation
|
||||
- **Scalability:** Handles complex agent dynamics with congestion
|
||||
|
||||
### Build System
|
||||
- **Compilation:** ~20% faster with maturin vs cargo
|
||||
- **Wheel Size:** Optimized for abi3 compatibility
|
||||
- **Install Time:** Editable mode for faster development
|
||||
|
||||
---
|
||||
|
||||
## 📦 Technical Details
|
||||
|
||||
### Dependencies Updated
|
||||
|
||||
**Build Tools:**
|
||||
- Added: `maturin >= 1.10.0`
|
||||
- Recommended: Use maturin instead of setuptools
|
||||
|
||||
**Python Requirements:**
|
||||
- Minimum: Python 3.8+ (abi3 compatible)
|
||||
- NumPy: >= 1.20.0
|
||||
- Matplotlib: >= 3.5.0 (for visualizations)
|
||||
|
||||
### Module Structure
|
||||
|
||||
```
|
||||
optimizr/
|
||||
├── src/
|
||||
│ ├── mean_field/ # NEW: MFG algorithms
|
||||
│ │ ├── mod.rs
|
||||
│ │ ├── config.rs
|
||||
│ │ ├── solver.rs
|
||||
│ │ └── python_bindings.rs
|
||||
│ ├── hmm/ # HMM algorithms
|
||||
│ ├── mcmc/ # MCMC samplers
|
||||
│ ├── differential_evolution/
|
||||
│ └── lib.rs # Updated with MFG exports
|
||||
├── python/optimizr/ # Python wrappers
|
||||
│ ├── __init__.py # Updated exports
|
||||
│ ├── hmm.py
|
||||
│ ├── core.py
|
||||
│ └── ...
|
||||
└── examples/notebooks/ # All validated
|
||||
├── mean_field_games_tutorial.ipynb # NEW
|
||||
├── 01_hmm_tutorial.ipynb
|
||||
├── 02_mcmc_tutorial.ipynb
|
||||
├── 03_differential_evolution_tutorial.ipynb
|
||||
├── 03_optimal_control_tutorial.ipynb
|
||||
├── 04_real_world_applications.ipynb
|
||||
└── 05_performance_benchmarks.ipynb
|
||||
```
|
||||
|
||||
### API Changes
|
||||
|
||||
**New Exports:**
|
||||
```python
|
||||
from optimizr import MFGConfig, solve_mfg_1d_rust # NEW in 0.3.0
|
||||
from optimizr import HMM, mcmc_sample, differential_evolution # Existing
|
||||
```
|
||||
|
||||
**No Breaking Changes:**
|
||||
- All existing APIs remain compatible
|
||||
- New features are additive only
|
||||
|
||||
---
|
||||
|
||||
## 🔮 Future Roadmap
|
||||
|
||||
### Planned for v0.4.0
|
||||
- [ ] 2D Mean Field Games solver
|
||||
- [ ] Multi-population MFG
|
||||
- [ ] GPU acceleration (CUDA/ROCm)
|
||||
- [ ] Distributed MFG on clusters
|
||||
|
||||
### Under Consideration
|
||||
- [ ] Mean Field Control (MFC)
|
||||
- [ ] Mean Field Type Control (MFTC)
|
||||
- [ ] Stochastic games with jumps
|
||||
- [ ] Deep learning integration
|
||||
|
||||
---
|
||||
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
This release includes:
|
||||
- Mean Field Games implementation inspired by Lasry-Lions and Achdou et al.
|
||||
- Finite difference schemes from Barles-Souganidis framework
|
||||
- Tutorial design following scikit-learn and scipy best practices
|
||||
|
||||
---
|
||||
|
||||
## 📊 Statistics
|
||||
|
||||
**Code Changes:**
|
||||
- **Files Added:** 15 (MFG module, tutorials, documentation)
|
||||
- **Files Modified:** 23 (notebooks, API, build system)
|
||||
- **Lines Added:** ~2,500
|
||||
- **Lines Removed:** ~300 (cleanup)
|
||||
|
||||
**Testing:**
|
||||
- All 7 example notebooks validated
|
||||
- Mean Field Games: 12/12 cells passing
|
||||
- HMM tutorial: 5/5 cells passing
|
||||
- Real-world app: Fixed and tested
|
||||
|
||||
**Documentation:**
|
||||
- 3 new comprehensive guides
|
||||
- 1 complete tutorial notebook
|
||||
- Audit report with findings
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Links
|
||||
|
||||
- **Repository:** https://github.com/ThotDjehuty/optimiz-r
|
||||
- **Documentation:** See README.md and tutorial notebooks
|
||||
- **Issues:** https://github.com/ThotDjehuty/optimiz-r/issues
|
||||
- **Previous Release:** [v0.2.0](RELEASE_NOTES_v0.2.0.md)
|
||||
|
||||
---
|
||||
|
||||
## 💾 Installation
|
||||
|
||||
```bash
|
||||
# Install from source
|
||||
git clone https://github.com/ThotDjehuty/optimiz-r.git
|
||||
cd optimiz-r
|
||||
git checkout v0.3.0
|
||||
|
||||
# Build and install
|
||||
pip install maturin
|
||||
maturin develop --release --features python-bindings
|
||||
|
||||
# Verify installation
|
||||
python -c "from optimizr import MFGConfig, solve_mfg_1d_rust; print('✓ MFG module installed')"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Full Changelog:** [v0.2.0...v0.3.0](https://github.com/ThotDjehuty/optimiz-r/compare/v0.2.0...v0.3.0)
|
||||
|
||||
**Happy Optimizing! 🚀**
|
||||
@@ -0,0 +1,231 @@
|
||||
# OptimizR v1.0.0 Release Notes
|
||||
|
||||
**Release Date:** February 16, 2026
|
||||
**Status:** ✅ Stable Release
|
||||
|
||||
---
|
||||
|
||||
## 🎉 First Stable Release
|
||||
|
||||
OptimizR v1.0.0 marks the first production-ready stable release with a commitment to semantic versioning going forward. The API is now stable and breaking changes will only occur in major version bumps.
|
||||
|
||||
## 📦 Distribution
|
||||
|
||||
### crates.io (Rust)
|
||||
```bash
|
||||
cargo add optimiz-rs
|
||||
```
|
||||
🔗 https://crates.io/crates/optimiz-rs
|
||||
|
||||
### PyPI (Python)
|
||||
```bash
|
||||
pip install optimiz-rs
|
||||
```
|
||||
🔗 https://pypi.org/project/optimiz-rs/
|
||||
|
||||
## 🆕 What's New in v1.0.0
|
||||
|
||||
### Publication & Distribution
|
||||
- ✅ **Published to crates.io** - Available in Rust package registry (Feb 17, 2026)
|
||||
- ✅ **Published to PyPI** - Available as `optimiz-rs` via pip install (Feb 17, 2026)
|
||||
- ✅ **Stable API** - Semantic versioning from v1.0.0 forward
|
||||
- ✅ **Production Ready** - Comprehensive testing and validation
|
||||
|
||||
**Note:** PyPI package is named `optimiz-rs` (not `optimizr`) to distinguish the Rust implementation.
|
||||
|
||||
### Documentation
|
||||
- 📚 **ReadTheDocs** - Full documentation at https://optimiz-r.readthedocs.io
|
||||
- 📖 **Getting Started Guide** - Quick start for new users
|
||||
- 📝 **API Reference** - Complete function and class documentation
|
||||
- 🎓 **Tutorials** - Step-by-step guides for all algorithms
|
||||
- 🔬 **Theory & Math** - Mathematical foundations and references
|
||||
|
||||
### Build System Improvements
|
||||
- 🏗️ **Fixed Cargo.toml** - Removed python-bindings from default features
|
||||
- Resolves linker errors when using as Rust library
|
||||
- Python bindings now opt-in feature (automatically enabled by maturin)
|
||||
- 🐍 **Maturin Configuration** - Explicit python-bindings feature in pyproject.toml
|
||||
- Ensures correct PyO3 extension builds for PyPI
|
||||
- Fixes cross-platform compatibility
|
||||
|
||||
### Metadata Updates
|
||||
- 👥 **Authors**: HFThot Research Lab <admin@hfthot-lab.eu>
|
||||
- 🔗 **Repository**: https://github.com/ThotDjehuty/optimiz-r
|
||||
- 📚 **Documentation**: https://optimiz-r.readthedocs.io
|
||||
|
||||
## 🚀 Features (Stable)
|
||||
|
||||
### Optimization Algorithms
|
||||
- ✅ **Differential Evolution** - 5 strategies (rand/1, best/1, current-to-best/1, rand/2, best/2)
|
||||
- ✅ **Adaptive jDE** - Self-tuning mutation factor and crossover rate
|
||||
- ✅ **Grid Search** - Exhaustive parameter space exploration
|
||||
|
||||
### Hidden Markov Models
|
||||
- ✅ **Baum-Welch Training** - EM algorithm for parameter learning
|
||||
- ✅ **Viterbi Decoding** - Most likely state sequence
|
||||
- ✅ **Gaussian Emissions** - Continuous observation models
|
||||
|
||||
### MCMC Sampling
|
||||
- ✅ **Metropolis-Hastings** - Bayesian parameter estimation
|
||||
- ✅ **Adaptive Proposals** - Gaussian random walk
|
||||
- ✅ **Convergence Diagnostics** - Acceptance rate tracking
|
||||
|
||||
### Mean Field Games (v0.3.0+)
|
||||
- ✅ **1D MFG Solver** - Large population dynamics
|
||||
- ✅ **HJB-Fokker-Planck Coupling** - Fixed-point iteration
|
||||
- ✅ **Agent Population Dynamics** - Spatial-temporal evolution
|
||||
|
||||
### Mathematical Toolkit
|
||||
- ✅ **Numerical Differentiation** - gradient(), hessian(), jacobian()
|
||||
- ✅ **Statistics** - mean(), variance(), skewness(), kurtosis()
|
||||
- ✅ **Linear Algebra** - norms, normalization, trace, outer product
|
||||
- ✅ **Information Theory** - mutual_information(), shannon_entropy()
|
||||
|
||||
## ⚡ Performance
|
||||
|
||||
- **50-100× faster** than pure Python implementations
|
||||
- **95% memory reduction** vs NumPy/SciPy
|
||||
- **Parallel-ready** with Rayon infrastructure
|
||||
- Production-tested on multi-dimensional problems
|
||||
|
||||
## 📊 Benchmarks
|
||||
|
||||
### Differential Evolution (Rosenbrock 10D)
|
||||
- OptimizR (Rust): **0.12s**
|
||||
- SciPy (Python): **8.9s**
|
||||
- **Speedup: 74×**
|
||||
|
||||
### HMM Training (1000 observations, 3 states)
|
||||
- OptimizR (Rust): **0.03s**
|
||||
- hmmlearn (Python): **2.4s**
|
||||
- **Speedup: 80×**
|
||||
|
||||
### Mean Field Games (100×100 grid)
|
||||
- OptimizR (Rust): **0.4s**
|
||||
- Pure Python: **45s**
|
||||
- **Speedup: 112×**
|
||||
|
||||
## 🔧 Breaking Changes from v0.3.0
|
||||
|
||||
### Cargo Feature Flags
|
||||
```toml
|
||||
# OLD (v0.3.0):
|
||||
[features]
|
||||
default = ["python-bindings"] # Always included
|
||||
|
||||
# NEW (v1.0.0):
|
||||
[features]
|
||||
default = [] # No default features
|
||||
python-bindings = ["pyo3", "numpy"] # Opt-in
|
||||
```
|
||||
|
||||
**Impact:**
|
||||
- Rust-only users: No breaking changes (python-bindings not needed)
|
||||
- Python users: No impact (maturin automatically enables python-bindings)
|
||||
|
||||
If you're using OptimizR as a Rust library and explicitly depend on Python bindings:
|
||||
```toml
|
||||
# Update your Cargo.toml:
|
||||
[dependencies]
|
||||
optimizr = { version = "1.0", features = ["python-bindings"] }
|
||||
```
|
||||
|
||||
## 📝 Migration Guide
|
||||
|
||||
### From v0.3.0 to v1.0.0
|
||||
|
||||
**For Rust Users:**
|
||||
No code changes required. If you were using python-bindings explicitly, add it to features list.
|
||||
|
||||
**For Python Users:**
|
||||
```bash
|
||||
# Install via pip
|
||||
pip install optimiz-rs
|
||||
|
||||
# Or specify version
|
||||
pip install optimiz-rs==1.0.0
|
||||
```
|
||||
|
||||
**Note:** Package name changed from `optimizr` to `optimiz-rs` to avoid PyPI naming conflict.
|
||||
|
||||
**API Compatibility:**
|
||||
✅ All Python APIs remain unchanged
|
||||
✅ All Rust APIs remain unchanged
|
||||
✅ Function signatures are identical
|
||||
✅ Return types are identical
|
||||
✅ No deprecations or removals
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
|
||||
- Fixed linking errors when using OptimizR as Rust-only library
|
||||
- Fixed PyInit__core symbol warning in maturin builds
|
||||
- Resolved flate2 yanked dependency warning
|
||||
|
||||
## 📚 Documentation
|
||||
|
||||
### New Documentation
|
||||
- Complete ReadTheDocs site: https://optimiz-r.readthedocs.io
|
||||
- Getting Started guide
|
||||
- Installation instructions for all platforms
|
||||
- Tutorial notebooks (7 validated examples)
|
||||
- API reference with examples
|
||||
- Theory and mathematical background
|
||||
|
||||
### Validated Tutorial Notebooks
|
||||
1. ✅ **Hidden Markov Models** - Regime detection
|
||||
2. ✅ **MCMC Sampling** - Bayesian inference
|
||||
3. ✅ **Differential Evolution** - Global optimization
|
||||
4. ✅ **Optimal Control** - HJB solver (theory)
|
||||
5. ✅ **Real-World Applications** - Complete workflows
|
||||
6. ✅ **Performance Benchmarks** - Rust vs Python
|
||||
7. ✅ **Mean Field Games** - Population dynamics
|
||||
|
||||
## 🔮 Roadmap
|
||||
|
||||
### v1.1.0 (Q2 2026)
|
||||
- [ ] Additional DE variants (JADE, SHADE, L-SHADE)
|
||||
- [ ] Particle Swarm Optimization (PSO)
|
||||
- [ ] CMA-ES algorithm
|
||||
- [ ] More HMM emission distributions
|
||||
|
||||
### v1.2.0 (Q3 2026)
|
||||
- [ ] GPU acceleration via CUDA/ROCm
|
||||
- [ ] Additional language bindings (R, Julia, JavaScript)
|
||||
- [ ] Distributed computing support
|
||||
- [ ] Advanced parallel strategies
|
||||
|
||||
### v2.0.0 (2027)
|
||||
- [ ] Neural Evolution Strategies (NES)
|
||||
- [ ] Multi-objective optimization
|
||||
- [ ] Constraint handling methods
|
||||
- [ ] Advanced uncertainty quantification
|
||||
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
Built with:
|
||||
- [Rust](https://www.rust-lang.org/) - Systems programming language
|
||||
- [PyO3](https://pyo3.rs/) - Rust bindings for Python
|
||||
- [Maturin](https://www.maturin.rs/) - Build and publish Rust crates as Python packages
|
||||
- [NumPy](https://numpy.org/) - Numerical computing in Python
|
||||
|
||||
Inspired by:
|
||||
- scipy.optimize
|
||||
- scikit-learn
|
||||
- hmmlearn
|
||||
- emcee
|
||||
|
||||
## 📞 Support & Community
|
||||
|
||||
- **Issues**: [GitHub Issues](https://github.com/ThotDjehuty/optimiz-r/issues)
|
||||
- **Discussions**: [GitHub Discussions](https://github.com/ThotDjehuty/optimiz-r/discussions)
|
||||
- **Email**: contact@hfthot-lab.eu
|
||||
|
||||
## 📄 License
|
||||
|
||||
MIT License - see [LICENSE](LICENSE) file for details.
|
||||
|
||||
---
|
||||
|
||||
**OptimizR v1.0.0** - Fast optimization for data science and machine learning 🚀
|
||||
|
||||
Thank you to all contributors and early adopters who helped make this release possible!
|
||||
Reference in New Issue
Block a user