¿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 que no he encontrado equivalente. Una solución basada en NumPy sería ideal, pero cualquier lenguaje servirá.¿Alternativa de código abierto a la función fmincon de MATLAB?
Respuesta
¿Su 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 lineal (LP) Programa cuadrática (QP) convexo Programa cuadrática cuadrática con restricciones (QCQP) Segundo Programa Cono Orden (SOCP) Programa semidefinida (SDP) no lineal convexa Problema No- Problema convexo
También hay problemas combinatorios, como los Programas lineales de enteros mixtos (MILP), pero no los hombres cualquier clase de restricciones de integralidad, basta con decir que caen en una clase diferente de problemas.
El paquete CVXOpt te será de gran utilidad si tu 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.
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.
GNU Octave es otro clon de MATLAB que podría tener lo que necesita.
No sé si está allí, pero hay una distribución de pitón 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.
Otras dos personas agregaron enlaces que no estaban seguros de si sus sugerencias tendrían o no lo que quería el póster original. Por qué el down vota Un comentario sería bueno aquí. – wcm
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 fmincon creo). Una vez que tenga instalado SciPy escriba lo siguiente en el símbolo del sistema Python
ayuda (scipy.optimize)
El documento resultante es muy amplia e incluye los siguientes elementos que creo que podría ser de utilidad 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
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, utilizando un algoritmo diferente. Puede leer el manual si está interesado en los detalles).
Es de código abierto pero no está bajo GPL.
Para la optimización numérica en Python es posible echar un vistazo a solucionadores OpenOpt:
Python software de optimización:
OpenOpthttp://openopt.org(éste es a base de numpy como desee, con la diferenciación automática por FuncDesigner)
Pyomohttps://software.sandia.gov/trac/coopr/wiki/Package/pyomo
- 1. ¿Alternativa de código abierto a Mosek?
- 2. R equivalente al fmincon de MATLAB para la optimización restringida?
- 3. Cualquier alternativa de código abierto a la maqueta de balsamiq
- 4. Alternativa de código abierto para "Intellitrace"
- 5. ¿Alternativa de código abierto para Mathworks Polyspace?
- 6. Alternativa de código abierto para Drop Box
- 7. ¿Algún software de código abierto como matlab?
- 8. Código abierto/Alternativa libre de Typemock Isolator
- 9. La mejor alternativa a las variables globales de MATLAB
- 10. ¿Puedo distribuir mi programa MATLAB como de código abierto?
- 11. Alternativa de código abierto para listas de Sharepoint
- 12. Maxip GeoIP País/Ciudad Alternativa de código abierto de MySQL
- 13. ¿Hay alguna alternativa de código abierto para Google Docs?
- 14. ¿alternativas de código abierto a la coherencia de Oracle?
- 15. Alternativa de código abierto para DITA Open Toolkit
- 16. ¿Hay alguna alternativa de código abierto para Crystal Reports?
- 17. ¿Hay alguna alternativa de código abierto para ReplayDIRECTOR/Chronon Debugger?
- 18. ¿Cómo acceder a una función de matlab desde código java?
- 19. ¿Alternativa de origen abierto al aerofreno?
- 20. ¿Cuál es una buena alternativa de código abierto para Kannel para la puerta de enlace SMS?
- 21. MATLAB: la función Separar
- 22. ¿Alternativa a FogBugz?
- 23. ¿Existen marcos comparables a dynaTrace que sean de código abierto?
- 24. ¿Cuál es la mejor alternativa de código abierto para MS Team Foundation Server?
- 25. Alternativas de código abierto a WCF
- 26. ¿Alternativas de código abierto a Flex Builder?
- 27. Llamar a la función de Matlab desde python
- 28. la promoción de proyectos de código abierto
- 29. ¿Existe una alternativa de código abierto para el modelo de desbordamiento de pila?
- 30. OCR de código abierto
¿Has probado Jmodelica? Es una implementación de código abierto de Modelica Language además de OpenModelica. Creo que Modelica también tiene envoltorios de Python. El paquete Jmodelica viene con una herramienta de optimización llamada Optimica si no me equivoco. – Foad