# Examples Practical snippets for every OptimizR component. ## Differential Evolution (global optimization) ```python import numpy as np from optimizr import differential_evolution def sphere(x): return np.sum(x**2) best_x, best_fx = differential_evolution( objective_fn=sphere, bounds=[(-10, 10)] * 5, strategy="rand1", maxiter=300, adaptive=True, ) print(best_fx) ``` ## Grid Search (hyper-parameter sweep) ```python from optimizr import grid_search def objective(params): lr, momentum = params["lr"], params["momentum"] return (lr - 0.05)**2 + (momentum - 0.9)**2 best_params, best_score = grid_search( objective_fn=objective, param_grid={"lr": [0.01, 0.05, 0.1], "momentum": [0.8, 0.9, 0.95]}, ) print(best_params, best_score) ``` ## Hidden Markov Models (regime detection) ```python import numpy as np from optimizr import HMM returns = np.random.randn(800) * 0.02 + 0.005 returns[400:] -= 0.015 # regime shift model = HMM(n_states=2).fit(returns) states = model.predict(returns) print(np.bincount(states)) ``` ## MCMC (posterior sampling) ```python import numpy as np from optimizr import mcmc_sample def log_likelihood(params, data): mu, sigma = params residuals = (data - mu) / sigma return -0.5 * np.sum(residuals**2) - len(data) * np.log(sigma) data = np.random.randn(500) + 1.0 samples = mcmc_sample( log_likelihood_fn=log_likelihood, data=data, initial_params=np.array([0.0, 1.0]), param_bounds=[(-5, 5), (0.1, 5.0)], ) print(samples.mean(axis=0)) ``` ## Mean Field Games (1D solver) ```python from optimizr import MFGConfig, solve_mfg_1d_rust config = MFGConfig(nx=64, nt=32, x_min=-2.0, x_max=2.0, T=1.0, epsilon=0.1, kappa=1.0) solution = solve_mfg_1d_rust(config) print(solution.converged) ``` ## Sparse Optimization (Sparse PCA) ```python import numpy as np from optimizr import sparse_pca_py X = np.random.randn(200, 10) components = sparse_pca_py(X, n_components=3, l1_ratio=0.2) print(components.shape) ``` ## Risk Metrics (time series) ```python import numpy as np from optimizr import hurst_exponent_py, estimate_half_life_py returns = np.random.randn(1000) * 0.01 print("Hurst:", hurst_exponent_py(returns)) print("Half-life:", estimate_half_life_py(returns)) ``` ## Notebooks Explore interactive tutorials on GitHub: - **Differential Evolution**: [`03_differential_evolution_tutorial.ipynb`](https://github.com/ThotDjehuty/optimiz-r/blob/main/examples/notebooks/03_differential_evolution_tutorial.ipynb) - **Mean Field Games**: [`mean_field_games_tutorial.ipynb`](https://github.com/ThotDjehuty/optimiz-r/blob/main/examples/notebooks/mean_field_games_tutorial.ipynb) - **HMM**: [`01_hmm_tutorial.ipynb`](https://github.com/ThotDjehuty/optimiz-r/blob/main/examples/notebooks/01_hmm_tutorial.ipynb) - **MCMC**: [`02_mcmc_tutorial.ipynb`](https://github.com/ThotDjehuty/optimiz-r/blob/main/examples/notebooks/02_mcmc_tutorial.ipynb) - **Optimal Control & Kalman**: [`03_optimal_control_tutorial.ipynb`](https://github.com/ThotDjehuty/optimiz-r/blob/main/examples/notebooks/03_optimal_control_tutorial.ipynb) - **Performance Benchmarks**: [`05_performance_benchmarks.ipynb`](https://github.com/ThotDjehuty/optimiz-r/blob/main/examples/notebooks/05_performance_benchmarks.ipynb) ## Contribute Examples 1. Fork the [repository](https://github.com/ThotDjehuty/optimiz-r) and add notebooks under `examples/notebooks/` 2. Keep dependencies minimal (NumPy/Matplotlib preferred) 3. Ensure the notebook runs end-to-end before submitting a PR