levmar

Software screenshot:
levmar
Software informatie:
Versie: 2.6
Upload datum: 15 Apr 15
Ontwikkelaar: Manolis Lourakis
Licentie: Gratis
Populariteit: 96

Rating: 5.0/5 (Total Votes: 1)

levmar is een implementatie van de Levenberg-Marquardt niet-lineaire kleinste kwadraten algoritmen in C / C ++.
De lmder routine uit Minpack, in de vroege jaren '80 aan het Argonne National Lab geïmplementeerd, is misschien wel de meest gebruikte vrije implementatie van de LM-algoritme. lmder is geschreven in FORTRAN77 en door de jaren heen heeft bewezen een betrouwbare stukje software zijn. Aangezien FORTRAN routines kunnen worden aangeroepen vanuit C / C ++, kan men zich afvragen over de motivatie voor het schrijven van een versie van LM in C. Wel, het probleem is dat wanneer FORTRAN wordt aangeroepen vanuit C, moet de programmeur zich bewust zijn van (en conform ) een aantal regels met betrekking tot de naam mangelen, het doorgeven van argumenten, multidimensionale array geheugen layout, koppeling conventies, etc, die onnatuurlijk zijn in vergelijking met de gewone regels C. Een tweede reden is dat deze aanpak het vanzelfsprekend dat een FORTRAN compiler voor het doel programmeeromgeving beschikbaar, die niet noodzakelijkerwijs het geval zou kunnen zijn. Een andere reden heeft te maken met het falen om de innerlijke werking van een FORTRAN implementatie te begrijpen: Af en toe, wanneer het nodig is om precies te begrijpen wat de FORTRAN code doet, bepaalde stukken van het misschien onbegrijpelijk voor programmeurs lijken zonder enige kennis van FORTRAN. Automatische Fortran naar C vertalers (bijv f2c) niet het probleem op te lossen, omdat de geproduceerde C-code is vrij onleesbaar "ingewijden" mens. Bovendien documentatie beschrijft de wiskunde waarop de implementatie is gebaseerd onduidelijke of ontoegankelijk kunnen zijn. Last but not least, moet een kandidaat LM implementatie in C gratis en technisch verantwoord zijn. Bijvoorbeeld, de C-variant van de LM-algoritme gepresenteerd in de "Numerical Recipes" boek (dwz mrqmin), is niet altijd een levensvatbare keuze: Naast haar wordt auteursrechtelijk beschermd, het is befaamd om robuustheid missen
. Om bovengenoemde redenen heb ik de levmar pakket dat C implementaties van LM smaken die ook bruikbaar met C ++ omvat ontwikkeld. levmar inclusief dubbele en enkele precisie LM-implementaties, zowel met analytische en eindige verschil benaderd Jacobianen. Het wordt gratis ter beschikking gesteld, onder de voorwaarden van de GNU General Public License. De wiskundige theorie achter ongedwongen levmar wordt in detail beschreven in het dictaat getiteld methoden voor niet-lineaire kleinste kwadraten problemen, door K. Madsen, HB Nielsen en O. Tingleff, Technische Universiteit van Denemarken; Matlab-implementaties van de algoritmes die in het dictaat zijn ook beschikbaar. Merk echter op dat de formulering van de hier aangenomen minimalisatie probleem is iets anders dan die in de syllabus beschreven
Functie's Gebruik:.
Levmar biedt verschillende gebruiksvriendelijke opvraagbare functies gehoorzamen van de volgende naamgeving: De eerste letter (d of s) specificeert dubbele of enkele precisie en het achtervoegsel (_der of _dif) staat voor analytische of bij benadering Jacobian. Indien aanwezig, de LEC, bc en BLEC componenten impliceren lineaire vergelijking, box en gelijktijdige box en lineaire vergelijking beperkingen, respectievelijk. Meer specifiek, levmar omvat de onderstaande functies:
Unconstrained optimalisatie
dlevmar_der (): double precision, analytische Jacobian
dlevmar_dif (): double precision, eindige verschil benaderd Jacobian
slevmar_der (): enkele precisie, analytische Jacobian
slevmar_dif (): enkele precisie, eindige verschil benaderd Jacobian
Beperkt optimalisatie
dlevmar_lec_der () : dubbele precisie, lineaire vergelijking beperkingen, analytische Jacobian
dlevmar_lec_dif (): double precision, lineaire vergelijking beperkingen, eindige verschil benaderd Jacobian
slevmar_lec_der (): enkele precisie, lineaire vergelijking beperkingen, analytische Jacobian
slevmar_lec_dif (): enkele precisie, lineaire vergelijking beperkingen, eindige verschil benaderd Jacobian
dlevmar_bc_der (): double precision, doos beperkingen, analytische Jacobian
dlevmar_bc_dif (): double precision, doos beperkingen, eindige verschil benaderd Jacobian
slevmar_bc_der (): enkele precisie, doos beperkingen, analytische Jacobian
slevmar_bc_dif (): enkele precisie, doos beperkingen, eindige verschil benaderd Jacobian
dlevmar_blec_der (): double precisie, doos & lineaire vergelijking beperkingen, analytische Jacobian
dlevmar_blec_dif (): double precision, doos & lineaire vergelijking beperkingen, eindige verschil benaderd Jacobian
slevmar_blec_der (): enkele precisie, doos & lineaire vergelijking beperkingen, analytische Jacobian
slevmar_blec_dif (): enkele precisie, doos & lineaire vergelijking beperkingen, eindige verschil benaderd Jacobian
Merk op dat het gebruik van eindige verschillen met de Jacobian resultaten in repetitieve evaluaties van de functie te benaderen om te worden gemonteerd. Gericht op het totale aantal van deze evaluaties te verminderen, de xxxxxxx_dif functies te implementeren secant benaderingen om de Jacobian behulp van rang één updates Broyden's. Alle functies hetzelfde probleem oplossen, dat wil zeggen zij zoeken de parameter vector p dat het beste beschrijft (in termen van de L2-norm) de metingen vector x. Meer precies, een gegeven vector functie f: R ^ m -> R ^ n met n> = m, ze berekenen ap zodanig dat f (p) ~ = x, dat wil zeggen het kwadraat norm || e || ^ 2 = | | xf (p) || ^ 2 wordt geminimaliseerd. Ook doos beperkingen van de vorm lb [i]

Wat is nieuw in deze release:

  • Deze versie voegt ondersteuning toe voor diagonale scaling naar xlevmar_bc_der (), die kan verbeteren convergentie bij het startpunt is verre van de ware minimizer.
  • Een lineaire systemen solver ondersteuning van parallelle Cholesky ontleding met PLASMA, de lineaire algebra bibliotheek voor multi-core processors.
  • Linear solvers zijn vastgesteld, zodat ze op de lagere driehoeken van symmetrische matrices, wat resulteert in betere prestaties cache werken.
  • De CMake configuratiebestanden voor de bouw van het project zijn herzien.
  • Een aantal andere kleine wijzigingen zijn aangebracht.

Wat is nieuw in versie 2.5:

  • LET OP VOOR vorige versies GEBRUIKERS: Voor een betere consistentie en het vermijden van conflicten, de naam van de header-bestand levmar werd veranderd van lm.h naar levmar.h; Aan de betreffende update uw bronbestanden.
  • Ondersteuning toegevoegd voor minimalisatie onder gelijktijdige doos, lineaire vergelijking en ongelijkheid beperkingen (zie functies xlevmar_bleic_der () & xlevmar_bleic_dif ()).
  • Uitgevoerd gemak wrappers om xlevmar_bleic_der () & xlevmar_bleic_dif () omgaan met eenvoudigere beperkte gevallen, bv xlevmar_blic_der () & xlevmar_blic_dif () steun minimalisering onder doos en lineaire ongelijkheidsbeperkingen alleen.
  • Voegde een lineaire systemen solver op basis van de UDUt ontleding (dwz-sqrt gratis Cholesky).
  • Removed aantal onnodige geheugen kopiëren van de meeste lineaire algebra.
  • Voegde een nieuwe data-fitting-test probleem (Osborne).
  • Maakte een paar andere kleine wijzigingen.

Wat is nieuw in versie 2.4:

  • LET OP VOOR vorige versies GEBRUIKERS: De grootte van de info argument (dwz LM_INFO_SZ) verhoogd met één in nieuw return veld tegemoet (dwz info [9]) die overeenkomt met het totale aantal lineaire systemen opgelost tijdens de minimalisatie. De indices van eerder teruggekeerd velden in de info array blijven ongewijzigd.
  • Implementatie van een cache-efficiënte regeling voor het berekenen van de geschatte Hessische J ^ T * J en J ^ T * e voor kleine minimalisatie problemen.
  • gezorgd dat eventuele werkgeheugen behouden tussen aanroepen van de lineaire algebra wordt vrijgegeven bij de beëindiging van levmar routines.
  • voor gezorgd dat lineaire solvers in dienst van de minimaal vereiste hoeveelheid extra geheugen, het vermijden van incidentele overbedelingen.
  • Implementatie van een lus afrollen regeling voor het versnellen van de berekening van e = x-HX.
  • Vast een paar problemen met het geheugen uitlijning op 64 bit systemen.
  • Toegevoegde functies voor de berekening van de determinatiecoëfficiënt.
  • Behandeld met een paar kleine problemen.

Vergelijkbare software

BoolStuff
BoolStuff

20 Feb 15

Genius
Genius

22 Jun 18

PHAML
PHAML

14 Apr 15

Reacties op levmar

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!