L i1TdZddlZddlmZmZddlZddlmZddl m Z GddZ y)z5 Unit tests for TNC optimization routine from tnc.py N)assert_allclose assert_equalpow)optimizeceZdZdZdZd*dZd*dZd*dZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*y))+TestTnczTNC non-linear optimization. These tests are taken from Prof. K. Schittkowski's test examples for constrained non-linear programming. http://www.uni-bayreuth.de/departments/math/~kschittkowski/home.htm cddd|_y)NF)dispmaxfun)opts)selfs c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_tnc.py setup_methodzTestTnc.setup_methods"c2 cl|t|dt|ddz dztd|dz dzS)Nr?rrxas rf1z TestTnc.f1s;3!s1Q4|+a003sQqTz13EEErcxddg}d|z|dt|ddz z|d<d|d|ddz zdzz|d<|S)Nrrrrr)rrrdifs rg1z TestTnc.g1sY!fQ!A$QqT1-.A1Q#.45A rcJ|j|||j||fSN)rrrs rfg1z TestTnc.fg1$s!wwq!}dggam++rc>|dt|d|dz ddzzS)Nrrrh㈵>rrrs rf3z TestTnc.f3's)tc!A$1+q)F222rcLddg}d|d|dz zdz|d<d|dz |d<|S)Nrrrr#rrrrs rg3z TestTnc.g3*s@!f1!%.As1vA rcF|j||j|fSr )r%r)r$s rfg3z TestTnc.fg30wwqz4771:%%rc8t|ddzddz |dzS)Nrrg@rrr$s rf4z TestTnc.f43s%1Q4#:q!C'!A$..rcBddg}t|ddzd|d<d|d<|S)Nrrrrrr(s rg4z TestTnc.g46s1!fQqTCZ#AA rcF|j||j|fSr )r/r1r$s rfg4z TestTnc.fg4<r,rctj|d|dzt|d|dz dzd|dzz d|dzzdzS)Nrrr?@r)npsinrr$s rf5z TestTnc.f5?s_vvadQqTk"S1!a%88ad  1Q4Z(*-. .rcddg}tj|d|dz}d|d|dz z}||zdz |d<||z dz|d<|S)Nrr@r5r6)r7cos)rrrv1v2s rg5z TestTnc.g5Csb!f VVAaD1Q4K  !A$1+ b3Ab3A rcF|j||j|fSr )r9r?r$s rfg5z TestTnc.fg5Lr,rc Zdt|dt|ddz dztd|dz dzdt|dt|ddz dzztd|dz dzdt|ddz dt|ddz dzzzd |ddz z|ddz zzd zS) NY@rrrrgV@r.g333333$@3@r#rr$s rf38z TestTnc.f38OsAaD3qtQ</33C!A$J"#%)C!s1Q4|0CQ,G%GHC!A$J"#%)S1Q-?-01Q-?.@&AA!s #qtcz2 37= = =rcgd}d|dz|dt|ddz zdd|dz zz dz|d<d |dt|ddz zd |ddz zzd |d dz zzdz|d<d |dz|d t|ddz zdd|dz zz dz|d<d|d t|ddz zd |d dz zzd |ddz zzdz|d <|S)N)rrrrgyrrrr;rr#gi@g3333334@rDr.gvgf@rr(s rg38z TestTnc.g38Vs81Q4-1Q4#adA,#67qt$%(./A1Q4#adA,./$!A$*2EE!A$*%&)/0AAaD.AaD3qtQ<$78qt$%(./A1Q4#adA,./$!A$*2EE!A$*%&)/0A rcF|j||j|fSr )rErGr$s rfg38z TestTnc.fg38bxx{DHHQK''rcHd|d|dz|dz|dz|dzdz z S)Nr;rrrr.^@r'r$s rf45z TestTnc.f45es9QqTAaD[1Q4'!A$.15===rc>dgdz}|d |dz|dz|dzdz |d<|d |dz|dz|dzdz |d<|d |dz|dz|dzdz |d<|d |dz|dz|dzdz |d<|d |dz|dz|dzdz |d<|S)Nrrrr.rLrMr'r(s rg45z TestTnc.g45hscAgQ4!A$1%!,u4AQ4!A$1%!,u4AQ4!A$1%!,u4AQ4!A$1%!,u4AQ4!A$1%!,u4A rcF|j||j|fSr )rNrQr$s rfg45z TestTnc.fg45qrJrc Zddgtj dgddgf}}ddg}g}tj|j|d|j ||j |j}t|j|j |dtt||jy)NrTNC)methodjacboundsoptionscallback:0yE>atol) r7infrminimizerrrappendrfunrlennit)rx0bndsxoptiterxress rtest_minimize_tnc1zTestTnc.test_minimize_tnc1vs7rvvgt_tTl;D1vEtww'+TYY).7 T:SZ)rc0tjddgtj dgddgf}}ddg}tj|j |d||j j}t|j ||j |dy)NrUrrVrW)rXrZr[-C6?r^) r7arrayr`rrarrrrrrfrgrhrs rtest_minimize_tnc1bzTestTnc.test_minimize_tnc1bs{88RG$t &ED1v   dggr%%)499 >>?a  DGGDM=rc ddgtj dgddgf}}ddg}tj|j|dd||j j }t|j||j|dy) NrUrrVrWTrXrYrZr[r]r^) r7r`rrar!rrrrros rtest_minimize_tnc1czTestTnc.test_minimize_tnc1csw7rvvgt_dD\:D1v   dhh5"&t&*ii 112   DGGDM=rc ddgtj dgddgf}}ddg}tj|j|d|j ||j j}t|j ||j |dy) NrUrr5A RrWrrr]r^) r7r`rrarrrrrros rtest_minimize_tnc2zTestTnc.test_minimize_tnc2s|7rvvgt_sDk:D#S)   dggr%"&''$&*ii 112   DGGDM=rc ddgtj dgddgf}}ddg}tj|j|d|j ||j j}t|j ||j |dy) N rrrWrrr]r^) r7r`rrar%r)rrrros rtest_minimize_tnc3zTestTnc.test_minimize_tnc3s{7rvvgt_sDk:D1v   dggr%"&''$&*ii 112   DGGDM=rcddgddg}}ddg}tj|j|d|j||jj }t |j||j|d y) N??rNrNrrrWrrr]r^)rrar/r1rrrros rtest_minimize_tnc4zTestTnc.test_minimize_tnc4sm%.9i"841v   dggr%"&''$&*ii 112   DGGDM=rcddgddg}}ddg}tj|j|d|j||jj }t |j||j|d y) NrrVrLr.Zpes-8RrWrrr]r^)rrar9r?rrrros rtest_minimize_tnc5zTestTnc.test_minimize_tnc5soq6Ig.D$&9:   dggr%"&''$&*ii 112   DGGDM=rc(tjgddgdz}}dgdz}tj|j|d|j ||j j}t|j ||j |dy) NrrrirxrLrrWrrr]r^) r7rnrrarErGrrrros rtest_minimize_tnc38zTestTnc.test_minimize_tnc38sv88,- {1}Ds1u   dhh5"&((4&*ii 112   TXXd^$?rcdgdzgd}}gd}tj|j|d|j||jj }t |j||j|dy) NrrP)rr)rr)rr.)rrL)rrPrrr.rLrPrWrrr]r^)rrarNrQrrrros rtest_minimize_tnc45zTestTnc.test_minimize_tnc45sg37DD   dhh5"&((4&*ii 112   TXXd^$?rc^|jddgtj dgddgf}}}ddg}tj|||dtj j d\}}}t|j||j|ddtj j|z y) NrUrrVrCr )rZargsmessagesr r]TNC failed with status: r_err_msg r!r7r`rfmin_tnc_tncMSG_NONErr RCSTRINGSrfgrrZrhnfrcs r test_tnc1zTestTnc.test_tnc1s2q'bffWdOdD\+JvA1v%%b!F/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rcZddgtj dgddgf}}ddg}tj|j|d|tj j d\}}}t|j ||j |ddtj j|z y) NrUrrVTr ) approx_gradrZrr rmrr) r7r`rrrrrrrrrrZrhrrs r test_tnc1bzTestTnc.test_tnc1bsGwod|<61v%%dggqd-3/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rcnddgtj dgddgf}}ddg}tj|j||j |tj jd\}}}t|j ||j |ddtj j|zy) NrUrrVr )fprimerZrr r]rr) r7r`rrrrrrrrrs r test_tnc1czTestTnc.test_tnc1csGwod|<61v%%dggq-3/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rc\|jddgtj dgddgf}}}ddg}tj|||tj j d\}}}t|j||j|ddtj j|z y) NrUrr5rur rZrr r]rrrrs r test_tnc2zTestTnc.test_tnc2s2q'bffWdOc4[+IvA#S)%%b!F/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rc\|jddgtj dgddgf}}}ddg}tj|||tj j d\}}}t|j||j|ddtj j|z y) Nrxrryrr rr]rr) r+r7r`rrrrrr%rrs r test_tnc3zTestTnc.test_tnc3s2q'bffWdOc4[+IvA1v%%b!F/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rc6|jddgddg}}}ddg}tj|||tjjd\}}}t |j ||j |d d tjj|z y) Nr|r}r~rrrr rr]rr)r3rrrrrr/rrs r test_tnc4zTestTnc.test_tnc4s5%.9i2HvA1v%%b!F/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rc6|jddgddg}}}ddg}tj|||tjjd\}}}t |j ||j |dd tjj|z y) Nrrrrrr rr]rr)rArrrrrr9rrs r test_tnc5zTestTnc.test_tnc5 s1a&9W*=vA$&9:%%b!F/7}}/E/E-02 2r  DGGDM : ( 7 7 ;!< =rcd|jtjgddgdz}}}dgdz}tj|||tj j d\}}}t|j||j|ddtj j|z y) NrrrLrr rr]rr) rIr7rnrrrrrrErrs r test_tnc38zTestTnc.test_tnc38s 288,<#= {1}vAs1u%%b!F/7}}/E/E-02 2r  TXXd^$ : ( 7 7 ;!< =rc:|jdgdzgd}}}gd}tj|||tjjd\}}}t |j ||j |ddtjj|z y) NrrPrrr rr]rr)rSrrrrrrNrrs r test_tnc45zTestTnc.test_tnc45#s A37-=vA%%b!F/7}}/E/E-02 2r  TXXd^$ : ( 7 7 ;!< =rc8d}d}d}tjt5tj|ddgddddtjt 5tj|ddgd|dddy#1swYGxYw#1swYyxYw) Nctd)Nmyfunc) RuntimeErrorrs rrz/TestTnc.test_raising_exceptions..myfunc3s x( (rc,tj|Sr )rrosenrs rmyfunc1z0TestTnc.test_raising_exceptions..myfunc16s>>!$ $rctd)Nr\) ValueErrorrs rr\z1TestTnc.test_raising_exceptions..callback9s Z( (rrrrW)rX)rXr\)pytestraisesrrrar)rrrr\s rtest_raising_exceptionszTestTnc.test_raising_exceptions0s ) % )]]< ( <   fq!fU ; <]]: &    !Q    < <  sBBB Bcpd}tj}dgdz}gd}tj|||dddi}tj|||dddi| }t|j|jt|j |j t |j|jy) Ncyr r'rs rr\zDTestTnc.test_callback_shouldnt_affect_minimization..callbackJs r)rrxrL)rrr.g@rWr i)rZrXr[)rZrXr[r\)rrrarrrcrnfev)rr\rcrZrfrjres2s r*test_callback_shouldnt_affect_minimizationz2TestTnc.test_callback_shouldnt_affect_minimizationDs  nnQ  F58T:J   F58T:J  &#''*TYY)rNr)+__name__ __module__ __qualname____doc__rrrr!r%r)r+r/r1r3r9r?rArErGrIrNrQrSrkrprsrvrzrrrrrrrrrrrrrrrr'rrr r s3 F ,3 &/ &.&= (>( *>>>>>>@@ = = = = = = = = =(*rr ) rr numpy.testingrrnumpyr7mathrscipyrr r'rrrs'7L*L*r