levmar

Sagteware kiekie:
levmar
Sagteware besonderhede:
Weergawe: 2.6
Upload datum: 15 Apr 15
Ontwikkelaar: Manolis Lourakis
Lisensie: Gratis
Populariteit: 18

Rating: 5.0/5 (Total Votes: 1)

levmar is 'n implementering van die Levenberg-Marquardt lineêre kleinstekwadrate algoritmes in C / C ++.

Die lmder roetine van Minpack, in die vroeë 80's by die Argonne National Lab geïmplementeer word, is miskien die mees gebruikte gratis uitvoering van die LM-algoritme. lmder is in FORTRAN77 geskryf en oor die jare het bewys dat 'n betroubare stuk sagteware te wees. Ag geneem word dat FORTRAN roetines van C / C ++ genoem kan word, kan 'n mens wonder oor die motivering vir die skryf van 'n weergawe van LM in C. Wel, die probleem is dat wanneer FORTRAN is van C genoem word, die programmeerder moet bewus wees van (en te voldoen aan ) 'n paar reëls oor naam mangling, argument verby, multidimensionele skikking geheue uitleg, koppeling konvensies, ens, wat onnatuurlik in vergelyking met gewone C reëls. 'N Tweede rede is dat hierdie benadering neem as vanselfsprekend aanvaar dat 'n FORTRAN vertaler vir die teiken programmeer omgewing beskikbaar is, wat dalk nie noodwendig die geval wees nie. Nog 'n rede het te doen met die versuim om die innerlike werking van 'n FORTRAN implementering te verstaan: Soms, wanneer dit nodig is om presies te verstaan ​​wat die FORTRAN kode doen, kan sekere stukke van dit lyk onverstaanbaar programmeerders sonder enige kennis van FORTRAN. Outomatiese FORTRAN C vertalers (bv f2c) nie die probleem op te los nie, aangesien die geproduseer C-kode is redelik onleesbaar na "oningewydes" mens. Verder, dokumentasie wat die wiskunde waarop die implementering is gebaseer onduidelik of ontoeganklik sou wees. Laaste maar nie die minste nie, moet 'n kandidaat LM implementering in C gratis en tegnies goed wees. Byvoorbeeld, die C variant van die LM algoritme wat in die "Numeriese Resepte" boek (dws mrqmin), is nie altyd 'n lewensvatbare keuse: Behalwe die feit dat dit kopiereg, is dit na bewering robuustheid gebrek aan

. vir die bogenoemde redes, het ek die levmar pakket wat insluit C implementering van LM geure wat ook bruikbaar met C ++ ontwikkel. levmar sluit dubbel en enkel presisie LM implementering, albei met analitiese en eindige verskil benader Jacobiane. Dit is gratis verskaf, onder die voorwaardes van die GNU General Public License. Die wiskundige teorie agter onbeperkte levmar word beskryf in detail in die lesing notas geregtig Metodes vir Nie-Lineêre Least Squares Probleme deur K. Madsen, HB Nielsen en O. Tingleff, Tegniese Universiteit van Denemarke; Matlab implementering van die algoritmes wat in die lesing notas is ook beskikbaar. Let egter daarop dat die formulering van die hier aangeneem minimalisering probleem is effens anders as wat beskryf word in die lesing notas

Function se gebruik.

Levmar bied verskeie gebruikers-call able funksies gehoorsaamheid aan die volgende naamkonvensie: Die eerste letter (d of s) spesifiseer dubbel of enkel akkuraatheid en die agtervoegsel (_der of _dif) dui analitiese of benaderde Jakobiaan. Indien teenwoordig, die lektrise, BC en blec komponente impliseer lineêre vergelyking, boks en gelyktydige boks en lineêre vergelyking beperkings, onderskeidelik. Meer spesifiek, levmar sluit die funksies hieronder:

onbeperkte optimering

dlevmar_der (): dubbele presisie, analitiese Jakobiaan
dlevmar_dif (): dubbele presisie, eindige verskil benader Jakobiaan
slevmar_der (): enkele presisie, analitiese Jakobiaan
slevmar_dif (): enkele presisie, eindige verskil benader Jakobiaan beperkte optimering



dlevmar_lec_der () : dubbele presisie, lineêre vergelyking beperkings, analitiese Jakobiaan
dlevmar_lec_dif (): dubbele presisie, lineêre vergelyking beperkings, eindige verskil benader Jakobiaan
slevmar_lec_der (): enkele presisie, lineêre vergelyking beperkings, analitiese Jakobiaan
slevmar_lec_dif (): enkele presisie, lineêre vergelyking beperkings, eindige verskil benader Jakobiaan

dlevmar_bc_der (): dubbele presisie, boks beperkings, analitiese Jakobiaan
dlevmar_bc_dif (): dubbele presisie, boks beperkings, eindige verskil benader Jakobiaan
slevmar_bc_der (): enkele presisie, boks beperkings, analitiese Jakobiaan
slevmar_bc_dif (): enkele presisie, boks beperkings, eindige verskil benader Jakobiaan

dlevmar_blec_der (): dubbel presisie, box & lineêre vergelyking beperkings, analitiese Jakobiaan
dlevmar_blec_dif (): dubbele presisie, box & lineêre vergelyking beperkings, eindige verskil benader Jakobiaan
slevmar_blec_der (): enkele presisie, box & lineêre vergelyking beperkings, analitiese Jakobiaan
slevmar_blec_dif (): enkele presisie, box & lineêre vergelyking beperkings, eindige verskil benader Jakobiaan

Let daarop dat die gebruik van eindige verskille die Jakobiaan resultate in herhalende evaluerings van die funksie te benader toegerus word. Ter bevordering van die totale aantal van hierdie evaluerings te verminder, die xxxxxxx_dif funksies implementeer snylyn benaderings tot die Jakobiaan met behulp Broyden se rang een updates. Alle funksies los dieselfde probleem, naamlik hulle soek die parameter vektor p wat die beste beskryf (in terme van die L2 norm) die metings vektor x. Meer presies, gegee 'n vektor funksie f: R ^ m -> R ^ n met n> = m, het hulle bereken ap sodanig dat f (p) ~ = x, dit wil sê die kwadraat norm || e || ^ 2 = | | xf (p) || ^ 2 geminimaliseer. Ook, boks beperkinge van die vorm lb [i]

Wat is nuut in hierdie release:

  • Hierdie weergawe voeg ondersteuning vir skuins skalering te xlevmar_bc_der (), wat kan verbeter konvergensie wanneer die beginpunt is ver van die ware Minimizer.
  • 'n lineêre stelsels oplosser ondersteun parallel Cholesky ontbinding met plasma, die lineêre algebra biblioteek vir multi-core processors.
  • Lineêre solvers is vasgestel dat hulle werk op 'n laer driehoeke van simmetriese matrikse, wat lei tot 'n beter kas prestasie.
  • Die CMake konfigurasielêers vir die bou van die projek is hersien.
  • Verskeie ander klein veranderinge aangebring is.

Wat is nuut in die weergawe 2.5:

  • WAARSKUWING vorige weergawes GEBRUIKERS: Vir 'n beter konsekwentheid en vermyding van konflikte, is die naam van levmar se kop lêer van lm.h te levmar.h verander; werk jou bron lêers dienooreenkomstig.
  • Bygevoeg ondersteuning vir minimalisering onder gelyktydige boks, lineêre vergelyking en ongelykheid beperkings (sien funksies xlevmar_bleic_der () & xlevmar_bleic_dif ()).
  • Geïmplementeer gerief omhulsels te xlevmar_bleic_der () & xlevmar_bleic_dif () wat met eenvoudiger beperk gevalle, bv xlevmar_blic_der () & xlevmar_blic_dif () ondersteuning minimalisering onder boks en lineêre ongelykheid beperkings alleen.
  • Bygevoeg 'n lineêre stelsels oplosser gebaseer op die UDUt ontbinding (dws, sqrt-vrye Cholesky).
  • verwyder sommige onnodige geheue kopiëring van die meeste lineêre solvers.
  • 'n Nuwe data-pas toets probleem (Osborne).
  • 'n paar ander klein veranderinge.

Wat is nuut in die weergawe 2.4:

  • WAARSKUWING vorige weergawes GEBRUIKERS: Die grootte van die inligting argument (dit wil sê, LM_INFO_SZ) is verhoog deur die een 'n nuwe terugkeer veld te akkommodeer (dws, Info [9]) wat ooreenstem met die totale getal van lineêre stelsels opgelos in die loop van die minimalisering. Die indekse van voorheen teruggekeer velde in die info array bly onveranderd.
  • geïmplementeer 'n meer kas-doeltreffende skema vir die berekening van die geskatte Hessiaan J ^ T * J en J ^ T * e vir klein-grootte minimalisering probleme.
  • verseker dat enige werkende geheue behou tussen aanroepingen van die lineêre solvers is op die beëindiging van levmar roetines vrygestel.
  • verseker dat lineêre solvers in diens van die minimum vereiste bedrag van die hulp geheue, vermy Sosiale oor-toekennings.
  • geïmplementeer 'n lus afwikkeling skema vir die bespoediging van die berekening van e = x-hx.
  • Vaste 'n paar van die probleme met die geheue belyning op 64 bit stelsels.
  • Bygevoeg funksies vir die berekening van die bepaaldheidskoëffisiënt.
  • gehandel oor 'n paar klein probleme.

Soortgelyke sagteware

NetworkX
NetworkX

20 Feb 15

Kalamaris
Kalamaris

2 Jun 15

NZMATH
NZMATH

12 May 15

Hypre
Hypre

11 May 15

Kommentaar te levmar

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!