levmar

Screenshot Software:
levmar
Mga detalye ng Software:
Bersyon: 2.6
I-upload ang petsa: 15 Apr 15
Nag-develop: Manolis Lourakis
Lisensya: Libre
Katanyagan: 18

Rating: 5.0/5 (Total Votes: 1)

levmar ay isang pagpapatupad ng Levenberg-Marquardt nonlinear hindi bababa sa parisukat algorithm sa C / C ++.

Ang lmder routine mula Minpack, ipinatupad sa mga unang 'mula sa 80s sa Argonne Pambansang Lab, ay marahil ang pinaka-tinatanggap na ginamit ng libreng implementasyon ng LM algorithm. lmder ay nakasulat sa FORTRAN77 at sa paglipas ng mga taon ay napatunayang isang maaasahang piraso ng software. Isinasaalang-alang na FORTRAN gawain ay maaaring tinawag mula sa C / C ++, maaaring magtaka isa tungkol sa pagganyak para sa pagsusulat ng isang bersyon ng LM sa C. Well, ang problema ay na kapag FORTRAN ay tinatawag na mula sa C, ang programmer ay dapat magkaroon ng kamalayan ng (at sumusunod sa ) ilang mga patakaran tungkol sa pangalan mangling, argumento nagdaraan, maraming interes array na layout memorya, Linkage ng mga convention, atbp, na hindi likas na kumpara sa ordinaryong mga panuntunan C. Ang pangalawang dahilan ay na ang paraan na ito ay tumatagal para sa ipinagkaloob na ang isang FORTRAN compiler para sa kapaligiran target programming ay magagamit, na maaaring hindi kinakailangang maging ang kaso. Isa pang dahilan ay ang gagawin sa pagkabigo upang maunawaan ang mga panloob na workings ng isang FORTRAN pagpapatupad: Paminsan-minsan, kapag ito ay kinakailangan upang tumpak na maunawaan kung ano ang ginagawa ng FORTRAN code, ilang mga bahagi ng ito ay maaaring mukhang hindi kayang unawain sa mga programmer na walang anumang kaalaman sa FORTRAN. Ang awtomatikong FORTRAN C tagapagsalin sa (eg f2c) ay hindi malutas ang problema mula noong ginawa C code ay medyo hindi mabasa sa "uninitiated" mga tao. Dagdag pa rito, dokumentasyon na naglalarawan sa matematika na kung saan ang pagpapatupad ay batay maaaring nakatago o hindi maa-access. Huling ngunit hindi bababa sa, isang kandidato LM pagpapatupad sa C ay dapat na libre at technically tunog. Halimbawa, ang C variant ng LM algorithm na ipinakita sa aklat "Mga Recipe numerical" (ibig sabihin mrqmin), ay hindi palaging isang praktikal na pagpipilian: Bukod nito ini-copyright, ito ay ipinalalagay na walang katabaan

. Para sa mga dahilan sa itaas, na binuo ko ang levmar pakete na kasama ang C pagpapatupad ng LM lasa na kapaki-pakinabang sa C ++ din. levmar kasamang double at single na katumpakan LM pagpapatupad, parehong may pagkakaiba analitiko at may hangganan sa tinatayang Jacobians. Ito ay ibinigay ng libre, sa ilalim ng mga tuntunin ng GNU General Public License. Ang matematika teorya sa likod ng kusa levmar ay inilarawan nang detalyado sa mga tala panayam na may pamagat na Mga Paraan para sa Non-De-Pinaka-hindi parisukat Problema, sa pamamagitan ng K. Madsen, HB Nielsen at O. Tingleff, University Teknikal ng Denmark; MATLAB mga pagpapatupad ng mga algorithm iniharap sa mga tala panayam Available din. Tandaan gayunpaman na ang pagbabalangkas ng problema minimization pinagtibay dito ay bahagyang naiiba mula sa na inilarawan sa mga tala panayam Paggamit

Ang function na ay:.

Levmar nag-aalok ng iba't-ibang mga function user-callable pagsunod sa sumusunod na pagbibigay ng pangalan sa convention: Ang unang titik (d o mga) Tinutukoy ng double o single katumpakan at ang suffix (_der o _dif) Tinutukoy ng Jacobian pagsusuri o tinatayang. Kung kasalukuyan, ang lec, BC at blec bahagi magpahiwatig linear na equation, box at sabay-sabay na kahon at linear na equation hadlang, ayon sa pagkakabanggit. Mas partikular, levmar kinabibilangan ng mga pag-andar sa ibaba:

kusa sa pag-optimize

dlevmar_der (): mag-double katumpakan, Jacobian analitiko
dlevmar_dif (): mag-double katumpakan, tinatayang may hangganan pagkakaiba Jacobian
slevmar_der (): single na katumpakan, analitiko Jacobian
slevmar_dif (): single na katumpakan, may hangganan pagkakaiba sa tinatayang Jacobian

na nilimitahan ang pag-optimize

dlevmar_lec_der () : double precision, ang mga linear na equation hadlang, Jacobian analitiko
dlevmar_lec_dif (): mag-double precision, ang mga linear na equation hadlang, may hangganan pagkakaiba sa tinatayang Jacobian
slevmar_lec_der (): solong precision, ang mga linear na equation hadlang, analitiko Jacobian
slevmar_lec_dif (): solong precision, ang mga linear na equation hadlang, tinatayang may hangganan pagkakaiba Jacobian

dlevmar_bc_der (): mag-double katumpakan, hadlang sa kahon, Jacobian analitiko
dlevmar_bc_dif (): mag-double katumpakan, hadlang sa kahon, may wakas pagkakaiba sa tinatayang Jacobian
slevmar_bc_der (): single na katumpakan, hadlang sa kahon, analitiko Jacobian
slevmar_bc_dif (): single na katumpakan, hadlang sa kahon, may hangganan pagkakaiba sa tinatayang Jacobian

dlevmar_blec_der (): double katumpakan, kahon at linear na equation hadlang, analitiko Jacobian
dlevmar_blec_dif (): mag-double katumpakan, kahon at linear na equation hadlang, may hangganan pagkakaiba sa tinatayang Jacobian
slevmar_blec_der (): single na katumpakan, hadlang sa kahon at linear na equation, Jacobian sa pagsusuri
() slevmar_blec_dif: hadlang sa iisang katumpakan, kahon at linear na equation, may hangganan pagkakaiba sa tinatayang Jacobian

Abiso na ang paggamit ng tiyak na mga pagkakaiba, upang matantiya ang Jacobian mga resulta sa paulit-ulit na mga pagsusuri ng pag-andar na nilagyan. Pagpuntirya upang bawasan ang kabuuang bilang ng mga pagsusuri, ang mga pag-andar xxxxxxx_dif ipatupad sikent pagtatantiya sa Jacobian gamit ang ranggo ng isang update Broyden iyon. Ang lahat ng mga pag-andar na malutas ang parehong problema, ibig sabihin, maghanap sila ang parameter ng vector p na pinakamahusay na naglalarawan (sa mga tuntunin ng L2 pamantayan) ang sukat ng vector x. Mas tiyak, bibigyan ng vector function na f: R ^ m -> R ^ n may n> = m, kino-compute sila ap tulad na f (p) ~ = x, ibig sabihin, ang squared pamantayan || || e ^ 2 = | | xf (p) || ^ 2 ay nai-minimize. Gayundin, hadlang sa form LB box [i]

Ano ang bagong sa paglabas:

  • Ang bersyon na ito ay nagdadagdag ng suporta para sa diagonal scale sa xlevmar_bc_der (), na maaaring mapabuti ang tagpo kapag ang panimulang punto ay malayo mula sa tunay na minimizer.
  • Ang isang linear na sistema ng Solver pagsuporta sa parallel Cholesky agnas na may plasma, ang linear algebra library para sa multi-core processor.
  • De-solvers Na-naayos nang sa gayon ay nagpapatakbo ang mga ito sa mas mababang triangles ng timbang matrices, na nagreresulta sa mas mahusay na pagganap cache.
  • Ang CMake configuration file para sa pagbuo ng proyekto ay na-binagong.
  • Ang ilang mga iba pang mga menor de edad pagbabago ang nagawa.

Ano ang bagong sa bersyon 2.5:

  • Mag-ingat PARA SA mga nakaraang bersyon USERS: Para sa mas mahusay pagkakapare-pareho at maiwasan ang pagsasalungat, ang pangalan ng header na file levmar ni ay nabago mula sa lm.h sa levmar.h; paki-update ang iyong mga file pinagmulan nang naaayon.
  • Nagdagdag ng suporta para sa minimization sa ilalim ng sabay-sabay na kahon, ang mga linear na equation at hindi pagkakapantay o pagkakapantay-pantay hadlang (tingnan ang mga pag-andar xlevmar_bleic_der () & xlevmar_bleic_dif ()).
  • Ipinatupad sa kaginhawahan ng mga wrappers sa xlevmar_bleic_der () & xlevmar_bleic_dif () pagharap sa mas simple na nilimitahan ang kaso, hal xlevmar_blic_der () & xlevmar_blic_dif () suporta minimization sa ilalim ng kahon at linear na hadlang sa hindi pagkakapantay o pagkakapantay-pantay lamang.
  • Nagdagdag ng linear Solver mga sistema batay sa UDUt agnas (ibig sabihin, sqrt-free Cholesky).
  • Inalis ang ilang mga hindi kinakailangang memorya pagkopya mula sa karamihan ng mga linear solvers.
  • Nagdagdag ng bagong problema pagsubok ng data na umaangkop (Osborne).
  • Ginawa ng ilang iba pang mga menor de edad pagbabago.

Ano ang bagong sa bersyon 2.4:

  • Mag-ingat PARA SA mga nakaraang bersyon USERS: Ang laki ng argumento ng impormasyon (ibig sabihin, LM_INFO_SZ) ay nadagdagan ng isa upang mapagkasya ang isang bagong field return (ibig sabihin, impormasyon [9]) na nauugnay sa kabuuang bilang ng mga linear na sistema ng malutas sa panahon ng kurso ng minimization. Ang mga indeks ng dati ibinalik field sa array ng impormasyon ay hindi magbabago.
  • Ipinatupad ng isang mas cache-mahusay na pamamaraan para sa computing ang tinatayang Hesyan J ^ T * J at J ^ T * e para sa maliit-sized na mga problema minimization.
  • natiyak na ang anumang mga nagtatrabaho memory pinanatili sa pagitan ng mga invocation ng linear solvers inilabas sa pagwawakas ng levmar gawain.
  • natiyak na linear solvers nagpapatupad ng minimum na kinakailangang halaga ng pandiwang pantulong memorya, pag-iwas sa paminsan-minsang mga over-paglalaan.
  • Ipinatupad ng loop unrolling pamamaraan para sa pagpapabilis ng pag-compute ng e = x-hx.
  • Mga Fixed ilang mga isyu sa pag-align ng memory sa 64 bit system.
  • Nagdagdag mga pag-andar para sa pag-compute ng koepisyent ng pagpapasiya.
  • Aaksyunan ng ilang menor de edad isyu.

Katulad na software

MBDyn
MBDyn

2 Jun 15

ConvertAll
ConvertAll

17 Feb 15

Genius
Genius

22 Jun 18

Mga komento sa levmar

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!