ó
    Û“,j)  ã                   ón   • S r S/rSSKrSSKJr  SSKJr  SSK	r
SSKJr  S
S jrS r\S	:X  a  \" 5         gg)zR
Author(s): Matthew Loper

See LICENCE.txt for licensing and contact information.
Úminimizeé    Né   )Úch)Úminimize_doglegc                 óž  ^^^^^^• TS:X  a  Uc  0 n[        U 4UTS.UD6$ [        U [        5      (       d  [        U [        5      (       a4  [        R
                  " U  Vs/ s H  oˆR                  5       PM     sn5      n [        U [        5      (       aK  [        R
                  " [        U R                  5       5       Vs/ s H  oˆR                  5       PM     sn5      n U n	Un
SSKJ	n  S mS nU	R                  S:X  a  U	nO,U" U	5      nUUU4S jmTR                  5       S:w  a  UUU4S jnUU4S jmU4S	 jnUU4S
 jmUU4S jm[        R                  R                  TUT[        R
                  " U
 Vs/ s H  oÿR                   R                  5       PM     sn5      TTXÉXÚ4X4XWS9R"                  nT" UX�U
5        U
$ s  snf s  snf s  snf )NÚdogleg)Úfree_variablesÚon_stepr   )ÚSumOfSquaresc                 ó¶  >• T" XX45        [        TS5      (       d  U S-  S-   Tl        [        R                  " [        R                  " U TR                  -
  5      5      S:”  a:  T" XX45      nUTl        SUR                  R                  U5      -  Tl        U Tl        [        R                  " TR                  R                  U5      5      R                  5       $ ©NÚvsr   ç €à7yÃACg       @)Úhasattrr   ÚnpÚmaxÚabsÚJÚTÚdotÚHÚarrayÚravel)	r   ÚpÚobjÚ
obj_scalarr	   r   Ú
changevarsÚhesspÚ
ns_jacfuncs	         €€€Ú¡C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\chumpy/optimization.pyr   Úminimize.<locals>.hessp<   s    ø€ Ù�r˜jÔ8Ü˜5 $×'Ñ'Ø˜a™4 ™9�”Ü�vŠv”b—f’f˜R §¡™[Ó)Ó*¨QÓ.á˜r jÓ@�Ø�”Ø˜qŸs™sŸw™w q›z™/�”Ø�”Ü—8’8˜EŸG™GŸK™K¨›NÓ+×1Ñ1Ó3Ð3ó    z	newton-cgc                 ó8  >• T" XX#5        [        TS5      (       d  U S-  S-   Tl        [        R                  " [        R                  " U TR                  -
  5      5      S:”  a,  T" XX#5      nSUR
                  R                  U5      -  Tl        TR                  $ r   )r   r   r   r   r   r   r   r   )r   r   r   r	   r   r   r   r   s        €€€r    ÚhessÚminimize.<locals>.hessJ   sw   ø€ Ù˜2 *Ô<Ü˜u d×+Ñ+Ø! !™t D™y�E”HÜ—6’6œ"Ÿ&š&  E§H¡H¡Ó-Ó.°Ó2Ù" 2¨*ÓD�AØ  1§3¡3§7¡7¨1£:™o�E”GØ—w‘w�r"   c                 ó®  >• SnSn[        U5       H˜  u  pgUR                  R                  nXXH-    R                  5       R	                  X6   R
                  5      n	[        R                  " [        R                  " X“U   -
  5      R                  5       5      S:”  a	  X“U   S S & SnXH-  nMš     Sn
Tb#  U(       a  TR                  5       U
;   a  T" S 5        U$ )Nr   FT)ÚannealÚpowellÚcobylaÚslsqp)Ú	enumerateÚrÚsizeÚcopyÚreshapeÚshaper   r   r   r   Úlower)r   r   r   r	   ÚcurÚchangedÚidxÚfreevarÚszÚnewvalsÚmethods_without_callbackÚcallbackÚmethods              €€r    r   Úminimize.<locals>.changevarsS   sÂ   ø€ ØˆØˆÜ% nÖ5‰LˆCØ—‘—‘ˆBØ˜S™V�n×)Ñ)Ó+×3Ñ3°NÑ4G×4MÑ4MÓNˆGÜ�vŠv”b—f’f˜W°CÑ%8Ñ8Ó9×?Ñ?ÓAÓBÀQÓFØ)0˜sÑ#¡AÐ&Ø�à‰IŠCñ 6ð $KÐ ØÑ¦G°·±³ÐBZÓ0ZÙ�TŒNàˆr"   c                 óT   >• T" XX#5        UR                   R                  5       S   nU$ )Nr   )r,   r   )r   r   r   r	   Ú	residualsr   s        €r    r=   Úminimize.<locals>.residualse   s*   ø€ Ù�2˜JÔ7Ø—L‘L×&Ñ&Ó(¨Ñ+ˆ	ØÐr"   c                 ó  >• [        T
S5      (       d  U S-  S-   T
l        [        R                  " [        R                  " U T
R                  -
  5      5      S:X  a  T
R
                  $ T	" XX#5         [        R                  " U Vs/ s HM  n[        R                  " UR                  U[        R                  " S//5      5      5      R                  5       PMO     sn5      nUT
l        U T
l        UR                  5       $ s  snf )Nr   r   r   r   )r   r   r   r   r   r   Úconcatenater   Úlopr   Údr_wrtr+   ÚspÚissparseÚtodense)r   r   r   r	   ÚwrtÚresultÚjacsr4   Újacr   Úscalar_jacfuncs            €€r    rJ   Ú minimize.<locals>.scalar_jacfuncj   sÌ   ø€ Ü�~ t×,Ñ,Ø " 1¡ T¡	ˆNÔÜ�6Š6”"—&’&˜˜N×-Ñ-Ñ-Ó.Ó/°1Ó4Ø!×#Ñ#Ð#á�2˜JÔ7àÜ—^’^ÑguÓ$vÒguÐ`c¤R§X¢X¨j¯n©n¸SÄ"Ç(Â(ÈQÈCÈ5Ã/Ó.RÓ%S×%YÑ%YÖ%[ÑguÑ$vÓwˆFð "ˆÔØˆÔØ�|‰|‹~Ðùò %ws   ÂAC>c                 ó`  >• [        TS5      (       d  U S-  S-   Tl        [        R                  " [        R                  " U TR                  -
  5      5      S:X  a  TR
                  $ T" XX#5        U Vs/ s H  oAR                  U5      PM     nn[        U5      nUTl        U Tl        U$ s  snf )Nr   r   r   )r   r   r   r   r   r   rB   Úhstack)	r   r   r   r	   rF   rH   rG   r   r   s	          €€r    r   Úminimize.<locals>.ns_jacfunc   s‘   ø€ Ü�z 4×(Ñ(Ø˜q™D ™IˆJŒMÜ�6Š6”"—&’&˜˜JŸM™MÑ)Ó*Ó+¨qÓ0Ø—<‘<Ðá�2˜JÔ7Ù+9Ó:ª> C—
‘
˜3–©>ˆÐ:Ü˜“ˆàˆ
ŒØˆ
ŒØˆùò ;s   Á4B+)r:   Úfunr9   Úx0rI   r   r$   ÚargsÚboundsÚconstraintsÚtolÚoptions)r   Ú
isinstanceÚlistÚtupler   r@   r   ÚdictÚvaluesr   r-   r1   ÚscipyÚoptimizer   r   r,   Úx)rO   rP   r:   rR   rS   rT   r9   rU   Úfr   r	   r   r$   r   r=   Úfree_variableÚx1r   r   r   rJ   s     `   `          @@@@r    r   r   %   sŽ  ý€ à�ÓØ‰? b˜GÜ˜sÐS°2¸xÑSÈ7ÑSÐSä�#”t×Ñ¤
¨3´× 6Ñ 6Ü�nŠn±Ó5²¨AŸg™gži±Ñ5Ó6ˆÜ�#”t×ÑÜ�nŠn´°c·j±j³lÔ1CÓDÒ1C¨AŸg™gžiÑ1CÑDÓEˆØ
€CØ€Nõ !à€EØ€DØ
‡x�x�1ƒ}Ø‰
á! #Ó&ˆ
÷
	4ð �<‰<‹>˜[Ó(÷öõ$ö
ö*ô 
�‰×	 Ñ	 ØØØÜ�>Š>ÉÓWÊ°}Ÿ?™?×0Ñ0Ö2ÉÑWÓXØØ˜$¨:Ð%FØ°Cð 
!ð 
J÷ KLÉ!ð ñ ˆr�3 NÔ3ØÐùòY 6ùâDùòH Xs   ÁG Â?GÅ7#G
c                  ó   • g )N© rb   r"   r    Úmainrc   ›   s   € Ør"   Ú__main__)r   Nrb   NNN)Ú__doc__Ú__all__Únumpyr   Ú r   Úscipy.sparseÚsparserC   Úscipy.optimizer[   Úoptimization_internalr   r   rc   Ú__name__rb   r"   r    Ú<module>rn      sB   ðñð ˆ,€ã Ý Ý Û å 2ô*sòl	ð ˆzÓÙ…Fð r"   