levmar

Programinė įranga Screenshot:
levmar
Programinė detalės:
Versija: 2.6
Įkėlimo datą: 15 Apr 15
Kūrėjas: Manolis Lourakis
Licencija: Nemokamai
Populiarumas: 18

Rating: 5.0/5 (Total Votes: 1)

levmar yra iš Levenberg-Marquardt netiesinio įgyvendinimas mažiausių kvadratų algoritmai C / C ++.

Lmder įprastas nuo Minpack, įgyvendinamos pradžioje 80-ųjų tuo Argonne nacionalinės laboratorijos, galbūt plačiausiai naudojamas nemokamą įgyvendinimą LM algoritmas. lmder parašyta FORTRAN77 ir per metus įrodė, kad patikimas gabalas programinės įrangos. Atsižvelgiant į tai, Fortran kasdienybe gali būti vadinamas iš C / C ++, galima stebėtis apie motyvacijos rašyti apie LM C Na versiją, problema yra ta, kad kai Fortran vadinamas nuo C programuotojas turi žinoti (ir atitinka ) kelios taisyklės vardas gręžimo, Argumentų perdavimas, daugiamačių masyvo atminties išdėstymo, svirtimis konvencijų, ir tt, kurie yra nenatūralus, palyginti su paprastų C taisykles. Antroji priežastis yra ta, kad šis metodas užima savaime suprantama, kad Fortran kompiliatorius už tikslinę programavimo aplinka yra, kuris nebūtinai gali būti atvejis. Dar viena priežastis, turi daryti su nesupratimas vidaus darbu yra Fortran įgyvendinimo: Kartais, kai tai būtina tiksliai suprasti, ką Fortran kodas daro tam tikri kūriniai gali atrodyti nesuvokiama programuotojų be jokių FORTRAN žinių. Automatinis Fortran C vertėjų (pvz f2c) neišsprendžia problemos, nes gaminami C kodas yra gana neįskaitomas į "uninitiated" žmonėms. Be to, dokumentai, aprašantys matematika, ant kurio įgyvendinimas grindžiamas gali būti neaiškus arba neprieinami. Paskutinis, bet ne mažiau svarbu, kandidatas LM įgyvendinimas C turėtų būti nemokama ir techniškai garso. Pavyzdžiui, C variantas LM algoritmas pateikiama "Skaitiniai receptai" knyga (ty mrqmin), ne visada yra perspektyvus pasirinkimas: Be jos yra apsaugota autorinėmis teisėmis, tai yra galinga trūksta tvirtumo

. Dėl pirmiau nurodytų priežasčių, aš sukūrėme levmar paketą, kuris apima C realizacijomis LM skonių, kurie taip pat naudoti su C ++. levmar apima ir dvigubomis tikslumo LM diegimo, tiek analitinis ir baigtinių skirtumų suderintos Jacobians. Ji teikiama nemokamai, pagal GNU General Public License sąlygas. Matematinė teorija atsilieka nevaržomu levmar yra išsamiai aprašyta paskaitų užrašų teisę metodai nelinijinių mažiausių kvadratų Problemos, K. Madsen, HB Nielsen O. Tingleff, Danijos technikos universitetas; Matlab įdiegtų algoritmų pateiktų į paskaitų yra taip pat prieinama. Tačiau atkreipkite dėmesį, kad mažinimo problema čia priimta formuluotė šiek tiek skiriasi nuo aprašytos paskaitų

funkcijos paskirtis:.

Levmar siūlo keletą vartotojui pareikalavimo funkcijas paklusdamas po įvardijimo susitarimas: pirmoji raidė (D arba -ų) nurodo dvigubą arba vieną tikslumą ir priesaga (_der arba _dif) žymi analitinis ar apytikslę Jacobian. Jei yra, LEC, BC ir BLEC komponentai reikšti tiesinė lygtis, langelį ir tuo pat metu langelį ir tiesinė lygtis apribojimus, atitinkamai. Tiksliau, levmar apima funkcijas žemiau:

nevaržomu optimizavimas

dlevmar_der (): dvigubo tikslumo, analitinis Jacobian
dlevmar_dif (): dvigubo tikslumo, baigtinių skirtumų suderintos Jacobian
slevmar_der (): nevedęs precizijos, analitinis Jacobian
slevmar_dif (): nevedęs precizijos, baigtinių skirtumų suderintos Jacobian

suvaržyti optimizavimas

dlevmar_lec_der () : dvigubo tikslumo, tiesinė lygtis suvaržymai, analitinis Jacobian
dlevmar_lec_dif (): dvigubo tikslumo, tiesinė lygtis suvaržymai, baigtinių skirtumų suderintos Jacobian
slevmar_lec_der (): vieną tikslumą, tiesinė lygtis apribojimus, analitinis Jacobian
slevmar_lec_dif (): nevedęs precizijos, tiesinė lygtis suvaržymai, baigtinių skirtumų suderintos Jacobian

dlevmar_bc_der (): dvigubo tikslumo, dėžutė suvaržymai, analitinis Jacobian
dlevmar_bc_dif (): dvigubo tikslumo, dėžutė suvaržymai, baigtinių Skirtumas suderintos Jacobian
slevmar_bc_der (): vieną tikslumo, dėžutė apribojimus, analitinis Jacobian
slevmar_bc_dif (): nevedęs tikslumo, dėžutė apribojimus, baigtinių skirtumų suderintos Jacobian

dlevmar_blec_der (): dvigubas tikslumo, dėžutė ir tiesinė lygtis suvaržymai, analitinis Jacobian
dlevmar_blec_dif (): dvigubo tikslumo, dėžutė ir tiesinė lygtis suvaržymai, baigtinių skirtumų suderintos Jacobian
slevmar_blec_der (): vieną tikslumą, dėžutė ir tiesinė lygtis apribojimus, analitinis Jacobian
slevmar_blec_dif (): nevedęs tikslieji, dėžutė ir tiesinė lygtis suvaržymai, baigtinių skirtumų suderintos Jacobian

Atkreipkite dėmesį, kad, naudojant baigtinių skirtumų suderinti Jacobian rezultatų pasikartojantis vertinimų funkcijos turi būti sumontuotas. Siekiant sumažinti skaičių šių vertinimų, kad xxxxxxx_dif funkcijos įgyvendinti kertantysis artėjimą į Jacobian per Broyden anketa rangas vieną atnaujinimus. Visos funkcijos išspręsti tą pačią problemą, ty siekti, kad parametras vektoriaus p, kuris geriausiai apibūdina (kalbant apie L2 normoje) matavimai vektoriaus x. Tiksliau, atsižvelgiant į vektorinę funkcijas f: R ^ m -> R ^ n N> = M, jie apskaičiuoti ap toks, kad f (p) ~ = x, ty kvadrato norma || || E ^ 2 = | | xf (p) || ^ 2 mažinimą. Be to, dėžutė suvaržymai forma lb [i]

Kas naujo , šioje laidoje:

  • Ši versija prideda paramą įstrižainės skalę xlevmar_bc_der (), kurios gali pagerinti konvergenciją, kai atskaitos taškas yra toli nuo tikrosios minimizer.
  • Linijinės sistemos Solver remti lygiagrečiai Cholesky irimą su plazma, tiesinės algebros biblioteką multi-core procesorių.
  • Linijiniai sprendžiame buvo nustatytos taip, kad jie veiktų mažesnes trikampių simetriškos matricų, o dėl geresnės talpyklos efektyvumą.
  • cmake konfigūracijos failus pastato projektą buvo peržiūrėtas.
  • Kai kurie kiti smulkūs pakeitimai buvo padaryti.

Kas naujo 2.5 versija:

  • DĖMESIO ankstesnių versijų NARIAMS: Dėl geresnio nuoseklumo ir išvengti konfliktų, apie levmar antraštės failo pavadinimas buvo pakeistas iš lm.h į levmar.h; prašome atnaujinti savo šaltinio failus pakeisti.
  • Pridėta parama mažinimo pagal vienalaikio dėžutė, tiesinė lygtis ir nelygybė apribojimus (žr funkcijas xlevmar_bleic_der () & xlevmar_bleic_dif ()).
  • Įgyvendinti patogios Vyniojimo į xlevmar_bleic_der () & xlevmar_bleic_dif () nagrinėjantį paprastesnių apribotas atvejais, pvz xlevmar_blic_der () & xlevmar_blic_dif () paramos sumažinimo pagal dėžutė ir linijiniai nelygybė apribojimų tik.
  • Pridėta linijinį sistemos Solver remiantis UDUt skilimo (ty, sqrt be Cholesky).
  • Pašalinta kai nereikalingas atminties kopijavimas iš daugelio linijinių sprendžiame.
  • Pridėta naują duomenų montavimo testus problemą (Osborne).
  • padarė keletą kitų nedidelių pakeitimų.

Kas naujo versijoje 2.4:

  • DĖMESIO ankstesnių versijų VARTOTOJŲ: iš informacijos argumentas dydis (ty, LM_INFO_SZ) buvo padidintas vieną, kad tilptų naują grąžinimo srityje (ty, informacijos [9]), kuris atitinka bendro skaičiaus linijinių sistemų išsprendžiama per visą minimizavimo metu. Iš anksčiau grąžinti srityse info masyvo indeksai nesikeičia.
  • įgyvendino daugiau cache taupančių schemą skaičiavimo apytikslę Heseno J ^ T * J ir J ^ T * E mažų mažinimo problemas.
  • užtikrinti, kad bet kokia darbinė atmintis išsaugojo tarp invokacijos linijinio sprendžiame yra išleistas ant levmar kasdienybe nutraukimo.
  • užtikrinti, kad linijiniai sprendžiame įdarbinti minimalų reikiamą kiekį pagalbinės atminties, išvengiant kartais per asignavimų.
  • Įvykdyti kilpa unrolling schemą spartinti e = x-HX skaičiavimus.
  • Fiksuotas klausimų su atminties derinimą porą 64 bitų sistemos.
  • Pridėta funkcijas už nustatymo koeficiento apskaičiavimo.
  • nagrinėjo keletą nedidelių problemų.

Panaši programinė įranga

Komentarai levmar

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!