Este repositorio contiene ejemplos de técnicas de optimización en Python, organizados en tres categorías:
- Programación lineal
- Programación no lineal
- Programación entera
- Python 3.7 o superior
- NumPy
- SciPy (>= 1.7)
- JAX
Se recomienda usar mamba, un gestor de paquetes rápido compatible con conda.
-
Si no tienes mamba, instálalo con:
conda install -c conda-forge mamba
-
Crea un entorno y activa:
mamba create -n optimizacion python=3.9 numpy scipy jaxlib jax -c conda-forge conda activate optimizacion
Nota: Si usas Apple Silicon o GPU, revisa la documentación de JAX para instrucciones específicas.
pip install numpy scipy jaxlinear-programming/: ejemplos de programación lineal usandoscipy.optimize.linprog.non-linear-programming/: ejemplos de optimización no lineal usando SciPy y JAX.integer-programming/: ejemplos de problemas de programación entera (MILP) con SciPy.
linear-programming/linprog.py
Resuelve problemas de optimización lineal (minimización o maximización) usando scipy.optimize.linprog.
python linear-programming/linprog.pygrad.py: optimización con métodos BFGS y Nelder-Mead (SciPy + JAX).grad-desc.py: descenso de gradiente explícito usandojax.grad.manual-grad-implementation.py: método de Lagrange y resolución de raíces conscipy.optimize.root.slsqp.py: optimización con SLSQP y restricciones de desigualdad.
python non-linear-programming/grad.py
python non-linear-programming/grad-desc.py
python non-linear-programming/manual-grad-implementation.py
python non-linear-programming/slsqp.pyinteger-programming/milp.py
Resuelve problemas de programación entera mixta (MILP) usando scipy.optimize.milp y LinearConstraint.
python integer-programming/milp.pyEste proyecto está disponible bajo la licencia MIT.