Open source alternatief vir MATLAB se fmincon funksie?
-
09-06-2019 - |
Vra
Is daar 'n open-source alternatief vir MATLAB se fmincon
funksie lewer vir lineêre optimering? Ek is herskryf 'n MATLAB program om Python / Numpy / Scipy en dit is die enigste funksie wat ek nog nie gevind nie 'n gelykstaande aan. A-Numpy gebaseerde oplossing sou ideaal wees, maar enige taal sal doen.
Oplossing
Is jou probleem konvekse? Lineêre? Nie-lineêre? Ek stem saam dat SciPy.optimize waarskynlik die werk sal doen, maar fmincon is 'n soort van bazooka vir die oplos van optimeringsprobleme, en jy sal beter daaraan toe wees as jy dit kan beperk tot een van die onderstaande kategorieë (in toenemende moeilikheidsgraad te los doeltreffend)
Lineêre Program (LP) Kwadratiese Program (QP) Konvekse kwadratisch-bande Kwadratiese Program (QCQP) Tweede Orde Cone Program (SOCP) Semi-Program (SDP) Nie-lineêre Hol Probleem Nie-Hol Probleem
Daar is ook combinatoric probleme soos Gemengde-Integer lineêre programme (MILP), maar jy het 'n soort van volledigheid beperkings nie noem, voldoende om te sê dat hulle val in 'n ander klas van probleme.
Die CVXOpt pakket sal van groot nut wees vir julle as jou probleem is konveks.
As jou probleem is nie konveks, moet jy kies tussen die vind van 'n plaaslike oplossing of die globale oplossing. Baie konvekse solvers 'n soort van 'werk in 'n nie-konvekse domein. Dit vind van 'n goeie benadering tot die globale oplossing sou een of ander vorm Gesimuleerde Uitgloeiing of genetiese algoritme vereis. Dit vind van die globale oplossing sal 'n opsomming van al die plaaslike oplossings of 'n kombinatoriese strategie soos Tak en gebind.
vereisAnder wenke
Python optimalisering sagteware:
-
OpenOpt http://openopt.org (hierdie een is Numpy-gebaseerde as jy wil, met outomatiese differensiasie deur FuncDesigner)
-
Pyomo https: // sagteware .sandia.gov / TRAC / coopr / wiki / pakket / pyomo
Die open source Python pakket, Scipy , het nogal 'n groot versameling van optimalisering roetines insluitend 'n paar vir meerveranderlike probleme met beperkings (en dit is wat fmincon doen ek glo). Sodra jy Scipy geïnstalleer tik die volgende by die Python command prompt
hulp (scipy.optimize)
Die gevolglike dokument is omvangryk en sluit die volgende wat ek glo van gebruik kan word om jou.
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
GNU Octave is nog 'n MATLAB kloon wat dalk wat jy nodig het.
Vir numeriese optimalisering in Python kan jy 'n blik op OpenOpt solvers:
Het jy 'n blik op http://www.aemdesign.com/downloadfsqp.htm .
Daar sal jy C-kode wat dieselfde funksie as fmincon
bied te vind. (Maar 'n ander algoritme. Jy kan die handleiding as jy belangstel in die besonderhede is gelees.)
Dit is open source, maar nie onder GPL.
Daar is 'n program genaamd Scilab dit is 'n MATLAB kloon.
Ek het dit nie gebruik nie, maar dit is open source en kan die funksie wat jy soek nie.
Ek weet nie of dit in daar, maar daar is 'n luislang verspreiding genoem Enthought wat dalk waarna jy soek vir. Dit is spesifiek ontwerp vir data-analise het meer as 60 bykomende biblioteke.