convertir - ode45 python
¿Alternativa de código abierto a la función fmincon de MATLAB? (8)
¿Tu problema es convexo? ¿Lineal? No lineal? Estoy de acuerdo en que SciPy.optimize probablemente hará el trabajo, pero fmincon es una especie de bazooka para resolver problemas de optimización, y estarás mejor si puedes limitarlo a una de las siguientes categorías (en un nivel de dificultad creciente para resolverlo). eficientemente)
Programa cuadrático (LP) Programa cuadrático (QP) Programa cuadrático cuadrático constreñido (QCQP) Programa de cono de segundo orden (SOCP) Programa semidefinido (SDP) Problema convexo no lineal Problema no convexo
También existen problemas combinatorios como los Programas Lineales de Entero Mixto (MILP), pero no mencionó ningún tipo de restricciones de integralidad, basta con decir que caen en una clase diferente de problemas.
El paquete CVXOpt será de gran utilidad para usted si su problema es convexo.
Si su problema no es convexo, debe elegir entre encontrar una solución local o la solución global. Muchos "solucionadores" convexos funcionan en un dominio no convexo. Encontrar una buena aproximación a la solución global requeriría algún tipo de Recocido Simulado o Algoritmo Genético. Encontrar la solución global requerirá una enumeración de todas las soluciones locales o una estrategia combinatoria como Branch y Bound.
¿Existe una alternativa de código abierto a la función fmincon
de MATLAB para la optimización lineal restringida? Estoy reescribiendo un programa MATLAB para usar Python / NumPy / SciPy y esta es la única función a la que no he encontrado equivalente. Una solución basada en NumPy sería ideal, pero cualquier lenguaje servirá.
Eche un vistazo a http://www.aemdesign.com/downloadfsqp.htm .
Allí encontrará el código C que proporciona la misma funcionalidad que fmincon
. (Sin embargo, usando un algoritmo diferente. Puede leer el manual si está interesado en los detalles).
Es de código abierto, pero no bajo GPL.
El paquete de código abierto Python, SciPy , tiene un conjunto bastante grande de rutinas de optimización, incluidas algunas para problemas multivariables con restricciones (que es lo que creo fmincon). Una vez que haya instalado SciPy, escriba lo siguiente en el símbolo del sistema de Python
ayuda (scipy.optimize)
El documento resultante es extenso e incluye lo siguiente que creo que podría ser útil para usted.
Constrained Optimizers (multivariate)
fmin_l_bfgs_b -- Zhu, Byrd, and Nocedal''s L-BFGS-B constrained optimizer
(if you use this please quote their papers -- see help)
fmin_tnc -- Truncated Newton Code originally written by Stephen Nash and
adapted to C by Jean-Sebastien Roy.
fmin_cobyla -- Constrained Optimization BY Linear Approximation
Hay un programa llamado SciLab que es un clon de MATLAB.
No lo he usado en absoluto, pero es de código abierto y podría tener la función que está buscando.
No sé si está ahí, pero hay una distribución de Python llamada Enthought que podría tener lo que estás buscando. Fue diseñado específicamente para el análisis de datos tiene más de 60 bibliotecas adicionales.
Para la optimización numérica en Python puede echar un vistazo a los solucionadores de OpenOpt:
Software de optimización de Python:
OpenOpt http://openopt.org (este está basado en Numpy como desees, con diferenciación automática por FuncDesigner)
Pyomo https://software.sandia.gov/trac/coopr/wiki/Package/pyomo
GNU Octave es otro clon de MATLAB que podría tener lo que necesita.