L iF dZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZddlZddlmZddlZddlmZddlmZmZddlmZmZmZddlmZdd lmZdd lmZdd l m!Z!dd l"m#Z#m$Z$dd l%m&Z&m'Z'm(Z(ddl)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3ddl4m5Z5ddl6m7Z7ddl8m9Z9egZ:dZ;GddZ<Gdde<Z=dZ>dZ?dZ@dZAdZBdZCdZDejjdZGejjd ZHd!ZIGd"d#e=ZJGd$d%e=ZKGd&d'e=ZLGd(d)e=ZMGd*d+e<ZNejjd,gd-d.ZPGd/d0ZQGd1d2ZRGd3d4ZSd5ZTGd6d7ZUd8ZVd9ZWd:ZXd;ZYd<ZZGd=d>Z[d?Z\d@Z]dAZ^dBdCgZ_dDdEgZ`dFZadGZbGdHdIZcdJZddKZedLZfdMZgGdNdOZhejjejjdPdQZjGdRdSZkdTZlGdUdVZmejdWZodXZpdYZqdZZrd[Zsd\ZtetZuejjd]ejjejd^_d`dadbdck(d]dejjd,eudeejjdfeudfejjdgeudhejjdieudiejjdjeudkdlZyejjd,eudedmZzdnZ{doZ|dpZ}ejjd,dqdrZ~dsZGdtduZdvZdwZejjd,dxdygejjdze.e/e0e1e2e3gd{Zejjd|ddEgejjd,gd}Gd~dZy)zx Unit tests for optimization routines from optimize.py Authors: Ed Schofield, Nov 2005 Andrew Straw, April 2008 N)assert_allclose assert_equalassert_almost_equalassert_no_warnings assert_warnsassert_array_lesssuppress_warnings)raises)optimize)BoundsNonlinearConstraint)MINIMIZE_METHODSMINIMIZE_METHODS_NEW_CBMINIMIZE_SCALAR_METHODS)LINPROG_METHODS) ROOT_METHODS)ROOT_SCALAR_METHODS)QUADRATIC_ASSIGNMENT_METHODS)ScalarFunction FD_METHODS) MemoizeJac show_optionsOptimizeResult)rosen rosen_der rosen_hess) coo_matrix csc_matrix csr_matrix coo_array csr_array csc_array)xp_assert_equal)make_xp_test_case) MapWrapperc Bd}d}tjdg}tj|||}t |dtj|||dd}t |dtj|||d }t |dtj|||ddd }t |dt tj|||d dz }|d kDsJt tj|||d dd dz }|d kDsJd }d}tj ddd}tj|||dd}t |dtttj|||ddtjtttdd}|dksJy)Nc:ddtj| zz SNnpexpxs h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_optimize.pyexpitztest_check_grad..expit0sAr N##chtj| dtj| zdzz SNr)r*r-s r/ der_expitz"test_check_grad..der_expit3s*vvqbzQ^a///r1?rrandom) directionseedư>)epsilon)r<r9rng皙?Hz>cN|tj|zjSN)r+sinsumr-s r/x_sinxztest_check_grad..x_sinxLs"&&)   ""r1c^tj||tj|zzSrAr+rBcosr-s r/ der_x_sinxz#test_check_grad..der_x_sinxOs!vvay1RVVAY;&&r1r4皙?)r9r=random_projectionallgƠ>) r+arrayr check_gradrabsarange assert_raises ValueErrorhimmelblau_gradhimmelblau_hess himmelblau_x0)r0r5x0rrDrHs r/test_check_gradrW,s$0 3%BE9b1A1E9b&.T ;A1E9b$?A1E9b$&.D :A1 H  y"d Ca GHA t8O8 H  y"d*2 >@A B CA t8O8#' 1a BFJ&.D :A1*h11*b/T; O_m&+ 7A t8O8r1c.eZdZdZdZdZdZdZdZy) CheckOptimizez Base test case for a simple constrained entropy maximization problem (the machine translation example of Berger et al in Computational Linguistics, vol 22, num 1, pp 39--72, 1996.) ctjgdgdgdgdgdg|_tjgd|_tjdtj |_tjgd|_d|_tj|_ tj|_ tj|_ y) Nr)r)r))r)r)r)r)rr))r)rr)?333333??)g\g)3?)r+rLFKzerosfloat64 startparamssolutionmaxiter threadinglocal funccalls gradcallstraceselfs r/ setup_methodzCheckOptimize.setup_methodhs9$$$$ &' .)88Arzz2!@A  "*"*__& r1ct|jdsd|j_t|jdsd|j_|jxjdz c_|jjdkDr t dt j |j|}t jtt j|}|t j |j|z }t|jdsg|j_ |jjjt j||S)Ncrr)ipz+too many iterations in optimization routinet)hasattrrkrrrl RuntimeErrorr+dotrblogrCr,rcrmrsappendcopy)ror.log_pdotlogZfs r/funczCheckOptimize.funcvst~~s+ DNN t~~s+ DNN  A >>  d "LM M66$&&!$vvc"&&*+, 266$&&!$ $tzz3'DJJL BGGAJ'r1ct|jdsd|j_|jxjdz c_tj|j |}tj ttj|}tj||z }tj|j j||jz S)Nrrrr)) rtrlrrr+rvrbrwrCr, transposercror.rzr{ps r/gradzCheckOptimize.gradst~~s+ DNN  A66$&&!$vvc"&&*+, FF8d? #vvdff&&(!,tvv55r1c tj|j|}tjt tj |}tj ||z }tj|jj tjtj||jtj|jj |z SrA)r+rvrbrwrCr,Tdiagrs r/hesszCheckOptimize.hesss66$&&!$vvc"&&*+, FF8d? #vvdffhhffRWWQZ"&&12E)EFH Hr1cLtj|j||SrA)r+rvrror.rs r/hesspzCheckOptimize.hesspsvvdiilA&&r1N) __name__ __module__ __qualname____doc__rpr}rrrr1r/rYrYbs! '$6H'r1rYcjeZdZdZdZdZdZdZdZe jjddZ d Z d Zd Ze jj!d d gddgddgddggdZdZe jj'ddZdZdZdZdZdZdZdZdZd Zd!Zd"Zy#)$CheckOptimizeParameterizedc >|jrp|j|jdd}tj|j |j dd|j|}|d|d|d|d |d f\}}}}}nWtj|j |j |jd|jd |jd }|\}}}}}t|j ||j |jd |jjdk(sJ|jj|jjdk(sJ|jjt|jjddgdgdgddy)NFrhdisp return_allrCG)argsmethodjacoptionsr.funnfevnjevstatusT)rh full_outputrretallr;atol r4)rr^)rg;ӱ.g)`$|;?+=r?rrtol) use_wrapperrhrr minimizer}rfrfmin_cgrrgrkrrrlrmrs) rooptsresparamsfopt func_calls grad_callswarnflagretvals r/test_cgz"CheckOptimizeParameterized.test_cgsp   #||TYY"')D##DIIt/?/?b+/TYY,02CC#e*c&k3v;H M ;FD*j(%%dii1A1A&*iiT\\26TYY-24F@F .fs(!bffT1s7^44q88 8r1gr_Grrr^h㈵>r)r+linspacer rsuccessrr.)ror|rUsols r/test_cg_cornercasez-CheckOptimizeParameterized.test_cg_cornercasesY 9 ++eQ+ 5B##AtD9C;; ; CEEC5t 4 5r1c V|jrz|j|jdd}tj|j |j |jdd|}|d|d|d|d |d |d |d f\}}}}}}} nYtj|j |j |jd|jd |jd} | \}}}}}}} t|j ||j |jd|jjdk(sJ|jj|jjdk(sJ|jjt|jjddgdgdgddy)NFrBFGSrrrrrr.rrhess_invrrrTrrhrrrr;r )rg&/LgB_ _E7?)rg$g |3?rr?r)rrhrr rr}rfr fmin_bfgsrrgrkrrrlrmrs) rorrrrgoptHoptrrrrs r/ test_bfgsz$CheckOptimizeParameterized.test_bfgss   #||TYY"')D##DIIt/?/?(, &r,02C Hc%j#e*c*oKVc(mJ= FFD$j*h'' 43C3CTYY-/48tyy/46F 28 /VT4 X &)499T]]+C! # ~~2%7t~~'7'77%~~1$6dnn&6&66$  Qq)==?" /r1c(tjtd5tjgd}|j tj d d}tjtj|dd|dddy#1swYyxYw) N+'hess_inv0' matrix isn't positive definite.matchg?ffffff?皙?ffffff?333333?r hess_inv0rrrUrrr) pytestr rQr+rLreyer rr)rorUrs r/test_bfgs_hess_inv0_negz2CheckOptimizeParameterized.test_bfgs_hess_inv0_negsp]]:.01 ,34B IIRVVAYJ?D   hnnF&* ,  , , ,s A#BBc4tjtd5tjgd}tj d}d|d<|j |d}tjtj|dd | dddy#1swYyxYw) Nrrrrrrrrrrr) rr rQr+rLrrr rr)rorUrrs r/test_bfgs_hess_inv0_semiposz6CheckOptimizeParameterized.test_bfgs_hess_inv0_semiposs|]]:.01 ,34Bq IIdO III>D   hnnF&* ,  , , ,s A)BBc`tj}tjgd}|jdtj dzd}tj ||dd|}tj ||ddd|ji}t|j|jd y) Nr{Gz?rrrrrrr;r) r rr+rLrrrrr)rorrUrrres_trues r/test_bfgs_hess_inv0_sanityz5CheckOptimizeParameterized.test_bfgs_hess_inv0_sanitysnn XX/ 0 rvvay0@A6(,.$$SRR.4dii-@BD9r1ignore::UserWarningc fdfd}dg}tjd5|jr-d|ji}t j ||dd| d }n#t j |||j }tj|rJ dddy#1swYyxYw) Nc,tj| z SrA)r+er-s r/r}z;CheckOptimizeParameterized.test_bfgs_infinite..funcsDDaRL= r1c| SrAr)r.r}s r/fprimez=CheckOptimizeParameterized.test_bfgs_infinite..fprimesG8Or1rignore)overrrrrr.r)r+errstaterrr rrisfinite)rorrUrr.r}s @r/test_bfgs_infinitez-CheckOptimizeParameterized.test_bfgs_infinite s ! S [[h ' , *%%dBF6+-t==@B&&tRdiiH{{47+ +++ , , ,s A:B''B0cgd}tjtj|dddi}tjtj|dddi}|j|jk7sJy)NrbfgsxrtolMbP?rrgtolr rrnit)rorUrrefs r/test_bfgs_xrtolz*CheckOptimizeParameterized.test_bfgs_xrtolsa & "6GT?L "6FD>Kww#''!!!r1cgd}tjtj|dddi}tjtj|dddi}|j|jkDsJy)Ng$@g333334@g%@r333333rc1:0yE>rr>)r rrr)rorU res_c1_small res_c1_bigs r/ test_bfgs_c1z'CheckOptimizeParameterized.test_bfgs_c1%sg+(()+FT4LR &&x~~')&4,P   :??222r1cgd}tjtj|dddi}tjtj|dddi}|j|jkDsJy)Nrrc2?rrr)rorU res_defaultres_mods r/ test_bfgs_c2z'CheckOptimizeParameterized.test_bfgs_c20sc'''(*6D":O ##HNN$&vd|M,,,r1rrr^r4皙r>rIc tjtd5gd}tjtj |d||ddddy#1swYyxYw)Nz 'c1' and 'c2'rrcg)rrr)rr rQr rr)rorrrUs r/test_invalid_c1_c2z-CheckOptimizeParameterized.test_invalid_c1_c2:sL]]:_ = <.B   hnnb-/r&: < < < r) rrhrr rr}rf fmin_powellrrgrkrrrl rorrrrrnumiterrrrs r/ test_powellz&CheckOptimizeParameterized.test_powellCsd   #||TYY"')D##DIIt/?/?b+3TCCHc%j#g,E KXB0 >FD%*h))$))T5E5E/14<<6:168FDJ @VT5':x &)499T]]+C! # qr DMM!"$5DA~~8+=T^^-=-==+~~1$6dnn&6&66$r1zeThis part of test_powell fails on some platforms, but the solution returned by powell is still valid.reasonc |jrj|j|jdd}tj|j |j dd|}|d|d|d|d |d |d f\}}}}}}nMtj|j |j d|jd |jd } | \}}}}}}t|jddgdgdgdgdgdgddy)NFrrr r r.rrrrrTr"')病~W?f"Bܿg%?)rrg:&?)gSϼW?gf"Bg{år?)rr{år?)gB?rrrr?r) rrhrr rr}rfrrrmrs r/test_powell_gh14014z.CheckOptimizeParameterized.test_powell_gh14014es   #||TYY"')D##DIIt/?/?b+3TCCHc%j#g,E KXB0 >FD%*h))$))T5E5E/14<<6:168FDJ @VT5':x  2b)>>>>> @ #  /r1cN|jDcgc]#}tj tjf%}}|jr|j|j dd}t j|j|jd|d|}|d|d}}||jjk(sJt|j||j|jdd |jjd ksJ|jjd k(sJyycc}w) NFrrr )rboundsrrr.rr;rrr)rfr+pirrhrr rr}rkrrrrgrl)ro_rrrrrs r/test_powell_boundedz.CheckOptimizeParameterized.test_powell_boundeds,0+;+;>##x/ //>>##q( ((' =s(D"c |jre|j|jdd}tj|j |j dd|}|d|d|d|d |d f\}}}}}nLtj|j |j d|jd |jd }|\}}}}}t|j ||j |jd |jjdk(sJ|jj|jjdk(sJ|jjt|jjddgdgdgddy)NFrr Nelder-meadr r.rrrrTrr;rrLN)g dװ?g]fgt䝁?)gә ?g#=^goT?rr?r)rrhrr rr}rffminrrgrkrrrlrmrs) rorrrrrrrrs r/test_neldermeadz*CheckOptimizeParameterized.test_neldermeadsc   #||TYY"')D##DIIt/?/?b+8$HCHc%j#e*c&kM;# 7FD':x]]499d.>.>(*DLL/3$))*/1F=C 9VT7J &)499T]]+C! # ~~3&8(8(88&~~1$6dnn&6&66$  R+=>@" /r1c tjd}|j|d<tdD]}||dz|fxxdz cc<|jrq|j dd|d}t j|j|jd d | }|d |d |d|d|df\}}}}} t|dd|dnCt j|j|jd |j ddd|} | \}}}}} t|j||j|jd|jjdk(sJ|jj|jjdk(sJ|jjt|jj ddgdgdgddy)N)rr_.r_r)r>FTrhrrinitial_simplexrr%r r.rrrrallvecsrrrhrrrr-r;rd24)gIt?g?'ΛTgx8?)gҢ_׆?goMg囎|52?rr?r)r+rdrfrangerrhr rr}rr)rgrkrrrlrmrs) rosimplexjrrrrrrrrs r/test_neldermead_initial_simplexz:CheckOptimizeParameterized.test_neldermead_initial_simplexs((6"'' q #A AaCFOs "O #   #||U"&7DD##DIIt/?/?b+8$HC;>s8;>u:;>u:;>v;;>x= ;J 7FD':x C N1-wqz :]]499d.>.>(*DLL/3%3:)r_r_Fr,rr%r Tr/) r+rdrfr3rxrrhrPrQr rr}r))ro bad_simplicesr4r5rs r/#test_neldermead_initial_simplex_badz>CheckOptimizeParameterized.test_neldermead_initial_simplex_bads  ((6"''+ q #A AaCFOs "O #W%((6"W%$ 7G#'<<&+Ij&//"ii"..#%%2&* ,j(--"ii)9)9#%t||*.U5.5 7 7r1cd}tj|dgdgd}t|jdgtj|ddgddgd}t|jddgy) Nc2tj|dzSNr4r+rCr-s r/quadz>CheckOptimizeParameterized.test_neldermead_x0_ub..quad 66!Q$< r1r))rr\ nelder-meadrrrr4)r)@r rrr.)ror>rs r/test_neldermead_x0_ubz0CheckOptimizeParameterized.test_neldermead_x0_ubst   C9   s#  FW%   1v&r1cddi}tj|j|jd|jd|}|j dk(sJy)Nrh Newton-CGrrrrrr))r rr}rfrr)rorresults r/test_ncg_negative_maxiterz4CheckOptimizeParameterized.test_ncg_negative_maxitersK2""499d.>.>*5499(*D:}}!!!r1c d}d}dg}d}tj|||dt|}|jdk(sJt |j dt jy)Nc2tj|dSNr)r+rGr-s r/cosinez=CheckOptimizeParameterized.test_ncg_zero_xtol..cosine(s66!A$< r1c4tj|d SrM)r+rBr-s r/rz:CheckOptimizeParameterized.test_ncg_zero_xtol..jac+sFF1Q4L= r1r>r newton-cg)xtol)rUrrr)r rdictrrr.r+r!)rorNrrUrQrIs r/test_ncg_zero_xtolz-CheckOptimizeParameterized.test_ncg_zero_xtol&sf  !U""6&('**5+/T? < }}!!!FHHQK/r1c |jrW|j|jdd}tj|j |j d|jd|d}nOtj|j |j |jd|jd|jd}|}t|j ||j |jd |jjd k(sJ|jj|jjd ksJ|jjt|jjd d gdgdgddy)NFrrGrrHr.rr;rrr_r(6-H=g?g4u3?rWg_g/N3?r?r)rrhrr rr}rfrfmin_ncgrrgrkrrrlrmrsrorrrs r/test_ncgz#CheckOptimizeParameterized.test_ncg8s:   #||TYY"')D&&tyy$2B2B.9tyy,.>>ACF&&tyy$2B2BDII,. 38tyy.35F  &)499T]]+C! # ~~1$6dnn&6&66$~~2%7t~~'7'77%  Qq)KKM! .r1c ,|jrb|j|jdd}tj|j |j d|j|jd|d}nZtj|j |j |j|jd|jd|jd }|}t|j ||j |jd |jjd ksJ|jj|jjd ksJ|jjt|jj d d gdgdgddy)NFrrGr)rrrrrr.)fhessrrhrrrr;rrr_rrVrXr?r)rrhrr rr}rfrrrYrrgrkrrrlrmrsrZs r/ test_ncg_hessz(CheckOptimizeParameterized.test_ncg_hessYsK   #||TYY"')D&&tyy$2B2B.9tyy,0II,.>?BCF &&tyy$2B2BDII-1YY,. 38tyy.3 5F  &)499T]]+C! # ~~1$6dnn&6&66$~~2%7t~~'7'77%  Qq)KKM! .r1c ,|jrb|j|jdd}tj|j |j d|j|jd|d}nZtj|j |j |j|jd|jd|jd }|}t|j ||j |jd |jjd ksJ|jj|jjd ksJ|jjt|jj d d gdgdgddy)NFrrGr)rrrrrr.)fhess_prrhrrrr;rrr^r_rrVrXr?r)rrhrr rr}rfrrrYrrgrkrrrlrmrsrZs r/test_ncg_hesspz)CheckOptimizeParameterized.test_ncg_hessp{sK   #||TYY"')D&&tyy$2B2B.9tyy-1ZZ,.>?BCF &&tyy$2B2BDII/3zz,. 38tyy.3 5F  &)499T]]+C! # ~~1$6dnn&6&66$~~2%7t~~'7'77%  Qq)KKM! .r1cp|jrtj|j|jd|j |j d}t|j|j|jd|jjdksJ|jjyy)Ncobyqarhrrr;rA) rr rr}rfrhrrrrgrkrrrors r/ test_cobyqaz&CheckOptimizeParameterized.test_cobyqas   ##   $(LL$))D C CGGTYYt}}%=D I>>##w. @0@0@ @. r1N) rrrrrrrrrrmarkfilterwarningsrrrr parametrizer rxfailrr#r*r6r9rDrJrSr[r_rbrhrr1r/rrs/> 5 /D, , : [[ 56,7, " 3- [[dD\S!H-13K-0#J,89<9< 7D [[&'/'/@)2/>&/P7>'."0$.B .D .DAr1rc tjjdfd}dD]=}dD]6}tj|jd|d|i}|d|k(r6J?y) Nl .costszz!}t##r1)r)rr1)r  Nelder-Meadrmaxfevrr)r+r7 default_rngr r)rqimaxfevrrIr=s @r/test_maxfev_testrvs{ ))   G HC$-0 -F&&tSZZ^.408'/BDF&>W, ,,  - -r1cd}tjj|tjdd\}}t dD]*}|tj||d|dzk(r*Jd}t tjj|5|tjdddtjj|tjdd\}}d}t t|5|tjddgdddy#1swYzxYw#1swYyxYw)Nc|SrArr-s r/func_z8test_wrap_scalar_function_with_validation..func_sr1r)rrzToo many function callsr@The user-provided objective function must return a scalar value.) r _optimize'_wrap_scalar_function_maxfun_validationr+asarrayr3rP_MaxFuncCallErrorrQrL)ryfcallsr}imsgs r/)test_wrap_scalar_function_with_validationrs%%//rzz!}aHFD1X  RZZ]ayAaC  $C x));;3 G RZZ]%%//rzz!}aHFD MC z - RXXq!f sD/D;/D8;Ecd}tt|5tjdt j ddgddddy#1swYyxYw)Nrzrc|SrArr-s r/z.test_obj_func_returns_scalar..sAr1r)rr)rPrQr rr+rLrs r/test_obj_func_returns_scalarrsM&E z /H+rxxA'7GHHHs /A  Actjgd}tjj tj |d}|j dksJy)Nrr)xatoliS)r+rLr _minimize_minimize_neldermeadrr)rUrs r/test_neldermead_iteration_numrsG + ,B    1 1(.."8< 2 >C 77c>>r1ctjddgjtj}d}t j ||dy)N@@cj|jtjk(sJtj|SrA)dtyper+float32r rr-s r/rosen_z*test_neldermead_respect_fp..rosen_s'ww"**$$$~~a  r1rrr)r+rLastyperr r)rUrs r/test_neldermead_respect_fprs< 3*  $ $RZZ 0B! fb7r1cVd}tjj|ddgdddy)Nc$|ddz|ddzzSNrr4r)rr-s r/r}z)test_neldermead_xatol_fatol..funcstqy1Q419$$r1r)r4r)rhrfatol)r rr)r}s r/test_neldermead_xatol_fatolrs2% ++D1a&!26d,Dr1cd}gd}tj||d}t|jdtj||dddi}t|jdy) Nc2tj|dzSr<r=r-s r/r}z&test_neldermead_adaptive..funcvva1f~r1)gM@'?gOC?g~?g -?g ?g#j?g?g~^g?gܠr#?g^cǽ?g)i ?g'?g?g1?g[VΤ?rrrFadaptiveTr)r rrr)r}p0rs r/test_neldermead_adaptivers_ FB   D"] ;Ce$   D"]%/$6 8Cd#r1c d}d}gd}ttj5tj|||d}dddt j t jdgt|zdt|jd t|jd gd gd gd g}ttj5tj|||dd|i}dddt |j t jgddt|jdt|jdy#1swYxYw#1swYpxYw)Nc2tj|dzSr<r=r-s r/r}z/test_bounded_powell_outsidebounds..funcrr1)rFr)rr)r^gr rAr`r;rTrrrr)rr)r)rrr)r)rrr)grrFr) rr OptimizeWarningrrr.r+rLlenrrr)r}rrUrrs r/!test_bounded_powell_outsideboundsr s  &F B h.. /JbIJCEE288RD3r7N3$?d#Q  9 -E h.. /:b'-h)0%(8::CEE288K0t<e$Q%JJ::sE  E EE"cd}d}gd}ddd}tj||d|}t|jdd t|jdd tj||||d }t j gd }t|j|d t|j||d d t j dfdt jfddf}tj||||d }t j gd }t|j|d t|j||d d}dgdz}gd}tj||d}tj|||d}t|jdd t|jdd t j t jfgdz}tj|||d}t|j|jd t|j|jd t|j|jd gd}dgdz}ttj5tj|||d}dddt|jdd y#1swY"xYw)Nc2tj|dzSr<r=r-s r/r}z+test_bounded_powell_vs_powell..func5rr1))rF)r)r)gffffff"@)rgffffff@g/)ggrrr绽|=ftolrQr rr`r;r)rrr)rFrr)rr)NrFrr))rNrc|tj|d tj|dztj|d |dzztj|dz}|tjtj|d|dztj|dzz}|dzSNrr)r4rFr.rss r/r}z+test_bounded_powell_vs_powell..funcSs FFAaD5MBFF1Q4L (2661Q4%!A$,+? ?"&&1, N RVVBFF1Q4!A$;'"&&1,6 77!t r1)rrr_)rrrrrAg8:}?r)gb4F@g:gW?@) r rrr.rr+rLinfrrr)r}rrUr res_powellres_bounded_powellrs r/test_bounded_powell_vs_powellr,s{ DF !Be,G""4HgNJJLL"40JNNBT2!**4W282:< %&A&((!$7&**DG$?266'3!RVVj+ MF!**4W282:< %&A&((!$7&**DG$?  Y]F B""4H=J!**4282:<JNN$8tD&**AD9 w 1 $F!**4282:<JNN$6$:$:FJOO%7%<%<4HJLL"4"6"6TB 2BY]F h.. /@%..tR6<6>@@&**AD9 @@s J>>Kcdtj dfgdzdddd}gd}d}tj||fi|}t |j d d d }tj||fi|}t |j d d}tj||fi|}t |j ddd}tj dfgdz|d<tj||fi|}t |j ddy)Nr g.Ar_rr)rrrr[c.tj| SrAr=r-s r/r|z1test_onesided_bounded_powell_stability..fsq zr1g`F-C6?rctjtj|dz tj|dkDrdzSdzS)Nr>rr)rFr+rNrCrKr-s r/r|z1test_onesided_bounded_powell_stability..fs<rvvay!c**266!a%=aIIbIIr1gwctjtj|dz tj|dkDrdzSdzS)Nrrr)rFrr-s r/r|z1test_onesided_bounded_powell_stability..fs<rvvay!R''q1u 1FF2FFr1gB+ Iar?rctjtj|dddz tjtj|dddzz }|tj|dkDrdz}|Sdz}|S)Nr4rr>rr)rFrrs r/r|z1test_onesided_bounded_powell_stability..fss VVBFF1Ra5M "a ' '"&&!"*?C*H H 266!a%=a)'))r1g@@rg4&k\)r+rr rrr)kwargsrUr|rs r/&test_onesided_bounded_powell_stabilityrys !66'3(1,"&57F B   Ar ,V ,CCGGT-J   Ar ,V ,CCGG_-G   Ar ,V ,CCGG\5 &&#'!+F8   Ar ,V ,CCGG9Er1ceZdZdZdZy)TestOptimizeWrapperDispTNrrrrrrr1r/rrs K Dr1rceZdZdZdZy)TestOptimizeWrapperNoDispTFNrrr1r/rrs K Dr1rceZdZdZdZy)TestOptimizeNoWrapperDispFTNrrr1r/rrs K Dr1rceZdZdZdZy)TestOptimizeNoWrapperNoDispFNrrr1r/rrs K Dr1rceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZej,j/dej,j1dej,j1dej,j3dgdezdZej,j3dgddZdZej,j3dgddZej,j>ej,j3dgddZ d Z!d!Z"d"Z#d#Z$ej,j3dgd$d%Z%ej,j3dgd&d'Z&ej,j1dej,j3de'ej,j3d(gd)d*Z(d+Z)ej,j3dd,d-Z*ej,j>ej,j3dgd.d/Z+y0)1TestOptimizeSimplecd}d}tjg}tjdd5tj|||d}tj ||sJ dddy#1swYyxYw)Nc|SrArr-s r/r}z.TestOptimizeSimple.test_bfgs_nan..funcsHr1c,tj|SrAr+ ones_liker-s r/rz0TestOptimizeSimple.test_bfgs_nan..fprime<<? "r1r)rinvalidFr)r+nanrr risnan)ror}rrUr.s r/ test_bfgs_nanz TestOptimizeSimple.test_bfgs_nansf  #ffX [[h 9 %""4V%@A88DG$ $$ % % %s 7A00A9cd}tjd5tj|d}dddtjdsJ|ddusJd}d }tjd5tj|d| }dddtj|dsJ|ddusJy#1swYxYw#1swY9xYw) Nc"tjSrAr+rr-s r/r}z5TestOptimizeSimple.test_bfgs_nan_return..func 66Mr1rrrrrFc0|dk(rdStjSrMrr-s r/r}z5TestOptimizeSimple.test_bfgs_nan_return..funcsQ1 *BFF *r1c,tj|SrArr-s r/rz7TestOptimizeSimple.test_bfgs_nan_return..fprimerr1)r)r+rr rr)ror}rIrs r/test_bfgs_nan_returnz'TestOptimizeSimple.test_bfgs_nan_returns  [[ * 0&&tQ/F 0xxu &&&i E))) + # [[ * <&&tQF;F <xxu &&&i E))) 0 0 <  "LFDx}}$v&&tyy$2B2B.4$)),02F>> !>  "I -Fz* -!!$))T-=-=)/TYY'+- - - - - -s <9DD cZd}tj|dgd}t|dddy)Nc|dkry|d|z zS)NrgBr\rr-s r/r|z/TestOptimizeSimple.test_bfgs_gh_2169..f s1u&2a4xr1$@Frr\rrr)r rr)ror|xss r/test_bfgs_gh_2169z$TestOptimizeSimple.test_bfgs_gh_2169 s-   C5u 5Cd6r1cXfd}ttj|ddddy)NcV|d}|vsJj|d|dzzd|zfS)Nrrr4)add)r.xpseens r/r|z:TestOptimizeSimple.test_bfgs_double_evaluations..fs91BT> !> HHRLad7BqD= r1rTr?)rrtol)setr r)ror|rs @r/test_bfgs_double_evaluationsz/TestOptimizeSimple.test_bfgs_double_evaluationss' ! u!T&dEr1c(tj|j|j|jd|j }|\}}}t |j||j|jd|jjdk(sJ|jj|jjdk(sJ|jjt |jjddgdgd gd d y) Nr)rrhr;rrrr_)g>#q &)499T]]+C! # ~~1$6dnn&6&66$~~1$6dnn&6&66$  Qq)D68" /r1ctj|j|jd|j}|\}}}t |j||j|j dy)NT) approx_gradrhr;r)r rr}rfrhrrgrs r/test_l_bfgs_b_numjacz'TestOptimizeSimple.test_l_bfgs_b_numjac5s]'' 43C3C4804 >#q &)499T]]+C! #r1cfd}tj|jj}|\}}}t j |j j dy)NcHj|j|fSrA)r}r)r.ros r/rz4TestOptimizeSimple.test_l_bfgs_b_funjac..funBs99Q<1- -r1rhr;r)r rrfrhrr}rg)rorrrrr s` r/test_l_bfgs_b_funjacz'TestOptimizeSimple.test_l_bfgs_b_funjac@s^ .''T-=-=04 >#q &)499T]]+C! #r1cGdd}|}tjtjddgd|ddi}t|jdt |j |j t |j|jt|jd|jd usJt|jd y) NceZdZdZdZy):TestOptimizeSimple.test_l_bfgs_b_maxiter..Callbackc.d|_d|_d|_yrM)rrr.rns r/__init__zCTestOptimizeSimple.test_l_bfgs_b_maxiter..Callback.__init__Qsr1cp||_tj||_|xjdz c_yr()r.r rrrror.s r/__call__zCTestOptimizeSimple.test_l_bfgs_b_maxiter..Callback.__call__Vs&#>>!,A r1Nrrrrrrr1r/CallbackrPs    r1rr`l-bfgs-brhr)rcallbackrr)Fz+STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT) r rrrrrr.rrrmessage)rorrrrs r/test_l_bfgs_b_maxiterz(TestOptimizeSimple.test_l_bfgs_b_maxiterMs   JR)*YND SWWa CEE133'CGGQUU+SZZ#{{e###S[[B Dr1c,d|ji}tj|j|jd|j |}t |j|j|j|jd|jj|jk(sJdx|j_ |j_ tj|j|jd|}|jj|jk(sJt |j|j|j|jddx|j_ |j_ tj|j|jdd| }|jj|jk(sJt |j|j|j|jdy) NrhL-BFGS-Brrrr;rrrrrrr)rhr rr}rfrrr.rgrlrrrrkr)rorrVras r/test_minimize_l_bfgs_bz)TestOptimizeSimple.test_minimize_l_bfgs_bgs4<<(   dii)9)9%/TYY&* ,  !## $--(@! #~~166))).//4>>+   tyy$*:*:&0$@~~277*** "$$4==)A! #/0/4>>+   tyy$*:*: &0$@~~277*** "$$4==)A! #r1c@d}dD]}|j|d}tj|j|jd|j |}|j|j }||}n||ksJt||j|j|y)N)r>rr?r)rhrr!r"r) rhr rr}rfrr.rrg)rov0rrrvs r/test_minimize_l_bfgs_b_ftolz.TestOptimizeSimple.test_minimize_l_bfgs_b_ftols , CC#||S9D##DIIt/?/?+5499,02C #%% Az2v v Atyy7c B Cr1ctjtjtjddgdtj ddi}|j rJy)Nrr\r!maxlsr)r")r rrr+rLrr)rors r/test_minimize_l_bfgs_maxlsz-TestOptimizeSimple.test_minimize_l_bfgs_maxlssI$0E'1x7I7I)0! 6;;;r1c|tjtj}gtjdd}fd}d\}}}tj ||||t dt|dD\}}||z} td|} tj ||| \} } } t| | y)Nrrac:|}j||SrA)rx)r.valuer|valuess r/objfunzMTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption..objfunsaDE MM% Lr1)r0i,)rmaxfunc3*K|] \}}||f ywrAr).0rys r/ zPTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption..sAdaAq6As) r rrr+fullrmax enumerateminr)rogrUr1lowmediumhighr(kr3targetxminr)r r|r0s @@r/*test_minimize_l_bfgs_b_maxfun_interruptionz=TestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruptions NN    WWQ  )VTvr!DAAivw&@AA1!VDS\" ..q"QvN dA$'r1c d d}gd}tjtj||td}t |j dddy) Nc|}||} d} d} d} d} | r| s| |krd} | dz } ttj|D]a}|||z |||zfD]6}tj|}|||<||g|}| dz } || ks1|} |}d} 8||||Y| |k\s_d} n| r| s| |krt j | || | | dkDS)Nr)rTFrr.rrr)r3r+sizeryr r)rrUrrsstepsizerhrrbestxbestyfuncallsniterimprovedstopdimstestxtestys r/custminz/TestOptimizeSimple.test_custom..custminsEGEHEHD4EGO   -C#Cj83U3Z(5JK, "%&c #E 1D 1 A  5=$)E$)E'+H, + )h&.@#4EGO&**u508519O Or1)g?rr皙?r皙?rHrr\rrrNr>r0N)r rrrRrr.)rorSrUrs r/ test_customzTestOptimizeSimple.test_customsI(7(,d(;=sD9r1cxddgdfd}ddg}tjtj||y)N)rr4)rr_ constraintscP|dusJ|dusJtjS)NrrZr r)rrUrrrZs r/rSz0TestOptimizeSimple.test_gh10771..custmins88$. ..=)[8 88**, ,r1r))rrrZ)r rr)rorSrUrrZs @@r/ test_gh10771zTestOptimizeSimple.test_gh10771sB6"#  - V(.."W!'[ Br1c Hd}d}dD]}|dvrd}n|}tj|ddg|d|}tj|ddg|d|}||j||jkrjJ|d ||jd ||jy) Nc4|\}}|dz|dzz|dzzdzS)Nr4rr)rzr.r6s r/r}z.funcs+DAqa419q!t#a' 'r1cp|\}}tjd|z|dzzd|dzzzd|dzz|zgS)Nr4rr_r+rLr`s r/dfuncz=TestOptimizeSimple.test_minimize_tol_parameter..dfuncsDDAq88QqSAX!Q$.!Q$q9: :r1 r@powellr rrPrtnccobylardslsqpr@rfrhrdr4r)rrrr\: z vs. )r rr.)ror}rdrrsol1sol2s r/test_minimize_tol_parameterz.TestOptimizeSimple.test_minimize_tol_parameters ( ;4 BFFF$$TAq6s,24D$$TAq6s,24D<$tvv,. BXRTVV ~U4<.A B. Br1rrignore::RuntimeWarningr)r)rrrrYrfmin_tnc fmin_slsqpc dvrd}n0tj}tj}tj}t j d}i}j dr6tt}dk(rd|d<nYdk(rd |d <nNd vrd |d <nDd|d <n>fd}dk(rtd |d<n$dk(rtd |d<ntd|d<dvr|d<ndvr|d<ndvr |d<|d<g fd}|||fd|i|t dkDsJtd DsJtj d} td| DrJy)N)rprcVtj|tj|fSrA)r rrr-s r/r}zDTestOptimizeSimple.test_minimize_callback_copies_array..funcs!~~a((*<*.routine%s"%8 ((!2r22r1rgr3rrhr)rYr)rPrrrrrrrct|tjrJj|t j |fyrA) isinstancer rrxr+ry)r.rrresultss r/rzHTestOptimizeSimple.test_minimize_callback_copies_array..callback<s1!!X%<%<= == NNArwwqz? +r1rr4c3RK|]\}}tj||k(!ywrA)r+rKr5r.r6s r/r7zITestOptimizeSimple.test_minimize_callback_copies_array..Es 6da266!q&>6s%'c3ZK|]#\}}tj|d|d%yw)rN)r+may_share_memoryrs r/r7zITestOptimizeSimple.test_minimize_callback_copies_array..Gs)P41ar**1Q416Ps)+)r rrrr+rd startswithgetattrrRrrKr combinationsany) rorr}rrrUrryrrr~s ` @r/#test_minimize_callback_copies_arrayz6TestOptimizeSimple.test_minimize_callback_copies_arrays 2 2 @>>D$$C&&D XXb\   V $h/G%!"v:%#&x 22$(y!$%y! 3$($4y!8#$($5y!$(Oy! ] ""F8  ~ %F5M ((F5M!F6N , b686v67|a6g6666 --gq9 P<PPPPPr1recxd}d}tjdg}||}|}|dk(r tdn td}|dvrd}tj||||| }t ||j |j|d k(rtjd ||j |ksJy) Nc|dz dzSr3rr-s r/r}z1TestOptimizeSimple.test_no_increase..funcPEA: r1cd|dz zdzdz S)Nr4r)rFrr-s r/bad_gradz5TestOptimizeSimple.test_no_increase..bad_gradSsa!e9#a' 'r1@rgrrzrrjr#rizSLSQP returns slightly worse) r+rLrRr rrr.rrrl) rorr}rrUf0rrrs r/test_no_increasez#TestOptimizeSimple.test_no_increaseIs  ( XXse_ "X%+u_$b/$r:J B BCbc&(/1T#%%[#''* W  LL7 8CEE{b   r1cd}d}tjgd}tj||dd|d}t |j tjgdd z d y) NcNt|tjgdz dzS)N)r\rrBrr4)rCr+rLr-s r/r|z7TestOptimizeSimple.test_slsqp_respect_bounds..fhs!BHH%566:; ;r1ctjgdgdg}tjtj||tjddgz|gS)N)rFrFrFrF)rrrFrr)r+rL concatenatervr.rws r/consz:TestOptimizeSimple.test_slsqp_respect_bounds..consksG*,<=>A>>266!Q<"((Ar72C#CQ"GH Hr1)r^r\r6rriineqtyperrrZ)r`r4rrr_g-q=r)r+rLr rrr.)ror|rrUrs r/test_slsqp_respect_boundsz,TestOptimizeSimple.test_slsqp_respect_boundsfs[ < IXX( )2g5;D,IKrxx 6q8uEr1) rrr rrrGr!SLSQPrrrrrrdc vd}tjd}ttj|dtj tj dd}|t|d}|dvr|j|d<n"|dvr|j|d<|j|d <tj|j|fi|}|j|k(sJ|j|jk\sJt|d r|j|j k\sJ|d k(r|j"d k(sJy|d k(r|j"dk(sJyy)Nrrrrr)rGrr{rrrrrdr)r+rdrr rrrrRrrrrrrrtrngevr)rorMAXITERrUsfrrs r/test_respect_maxiterz'TestOptimizeSimple.test_respect_maxiterts& XXb\ HNNBH4F4F$//t=#tG/DE ^ #GGF5M ((GGF5MWWF6N5f5ww'!!!xx277""" 3 88rww& && W ::? "? x ::? "? r1)rrr r)rc tjd}ttj|dtj tj dd}ddd}tjtd5|jdr%tt|}||j|fi|n#tj|j||| dddy#1swYyxYw) Nrrr)TrezMaximum number of iterationsrr)r)r+rdrr rrrrwarnsRuntimeWarningrrrr)rorrUrrrys r/test_runtime_warningz'TestOptimizeSimple.test_runtime_warningsXXb\ HNNBH4F4F$//t=. \\. ?A N  (!(F3.g.!!"&&"VWM  N N Ns 1ACCc d}tj}tj}tj}d}d|df}t j d}tj |||||dt|}|j|k(sJy) Nrc^tjd|dzd|dzz d|dzz gS)NrIr皙?r)Q?r4rcr-s r/rzRTestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraints..funs688S1Q4Z#!*4tad{BCD Dr1rrrrr)rZrrrr) r rrrr+rdrrRr) rorr|rrrrrUrs r/2test_respect_maxiter_trust_constr_ineq_constraintszETestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraintss NN  "" EXXb\24St'5(,W(=?ww'!!!r1cnd}d}tjdg}tj||}tj||d|dg}tj||dg}tj||d|dgdg }tj||d|dgd g }|||||fD]} | jrJt |j d d t |j dd t |j dd t |j dd t |j dd y)Nc |dzSr<rr-s r/r|z6TestOptimizeSimple.test_minimize_automethod..f a4Kr1c |dz Sr<rr-s r/rz9TestOptimizeSimple.test_minimize_automethod..conss q5Lr1rrr)rZ)rrr)rZrr)rrr?rr4r)r+rLr rrrr.) ror|rrUsol_0sol_1sol_2sol_3sol_4rs r/test_minimize_automethodz+TestOptimizeSimple.test_minimize_automethods-  XXse_!!!R(!!!Rv>B7D6EF!!!R :!!!R8>t/L.M*14!!!R8>t/L.M*145%6 C;; ; .....r1cd}dd}tjgd}tjjt |}t j ||||dy)Nc8tj||z dzSr<r=r.rrs r/Yz=TestOptimizeSimple.test_minimize_coerce_args_param..Ys661Q3(# #r1cd||z zSr<rrs r/dY_dxzATestOptimizeSimple.test_minimize_coerce_args_param..dY_dxsac7Nr1) r_r)rr)rrr4rrr_rr)rrrrA)r+rLr7randnrr r)rorrrrxinits r/test_minimize_coerce_args_paramz2TestOptimizeSimple.test_minimize_coerce_args_paramsI $  HH6 7 A'!UQGr1c gd}gd} fd} fd}tj||D]\ }|dvrt dz}n t} dkr|d vr.d g dg tj| ||| }|d d d |}|j sJ|t |jdg||jdksJ| dkDr.|dvrt dd| ddkDr ddkrJ|y)N)gJz5r)gd~QJ)rrr!rGcd"|ddk7rt|ddz d<t|jdkDr td|ddz dzzS)Nrg@zOptimization stepped far away!r)r4)rNr9AssertionError)r.first_step_sizescalerUs r/r|z7TestOptimizeSimple.test_initial_step_scaling..fslq!)adbem%(11%6"1vzz|c!$%EFF!A$(Q& &r1cBtj|ddz zgSNrr)rc)r.rs r/r<z7TestOptimizeSimple.test_initial_step_scaling..gs"88UAaD1H-./ /r1)rrr)rr)r!rGr# rkr\err_msgr_rg)\(?r^) rrrRr rrrr.r) roscalesrr|r<rrrrrrrUs @@@r/test_initial_step_scalingz,TestOptimizeSimple.test_initial_step_scalings6"9 ' 0'..vw? ME6'E$J/&u}+D!DB#fO##Arq,35C %?*;2cUCG;; ' '; CEEC5' :77a< ( (<u}^+#OA$6gN+1-38JQ8NWPWWN? r1)r@rfr rrPrrgrdrirrrrrc  |dkDr|dk(rtjdtjj ddgd}fd}d}d }tj d g}|d v}|d v} ||g} |r|gn|dg} | r|gn|dg} |d k(r t dn t d} tjd5t5}|jtd|jtd|jtdtj| | | D]:\}}}dgtj|||||| }t!|j"d< ddddddy#1swYxYw#1swYyxYw)Nr)rdz,COBYQA does not support concurrent executionr8rc"tjSrArr-s r/r}z0TestOptimizeSimple.test_nan_values..func#rr1cndxxdz cc<ddkDrtjSjSr)r+rr)r.countr=s r/func2z1TestOptimizeSimple.test_nan_values..func2&s0 !HMHQx!|vv xxz!r1c.tjdgSNr\rcr-s r/rz0TestOptimizeSimple.test_nan_values..grad-s88SE? "r1c0tjdggSrrcr-s r/rz0TestOptimizeSimple.test_nan_values..hess0s88cUG$ $r1r\rPrrrrrrrrrgrrzrrrdelta_grad == 0.*.*does not use Hessian.*.*does not use gradient.*)rrrrF)rskipr+r7 RandomStaterLrRrr filter UserWarningrrrr rrr)rornum_parallel_threadsr}rrrrU needs_grad needs_hessfuncsgradshesssrsupr|r<hrrr=s @@r/test_nan_valuesz"TestOptimizeSimple.test_nan_valuess ! #((: KKF Gii##D)  " # %XXse_ 77  ** u $4,$4,%+u_$b/$r:J [[ * 1,=,? 13 JJ{$7 8 JJ~'A B JJ~'B C$,,UE5A 11a''211V079S[[%0  1 1 1 1 1 1 1s%: E:BE.E:.E7 3E::F) r@r rrrgrhrdrirrrrrc ndx}}|dvr |j}|dvr |j}tjd5t 5}|j t dtj|j|j|||ddddddtdt|jjD]W}tj|jj|dz |jj|sKt!d|y#1swYxYw#1swYxYw) Nrrrrrrr)zDuplicate evaluations made by )rrr+rr rrr rr}rfr3rrmrs array_equalru)rorrrrrs r/test_duplicate_evaluationsz-TestOptimizeSimple.test_duplicate_evaluationsJsd - -))C   99D [[ * A,=,? A3 JJ{$7 8   dii)9)9%+4 A A A q#djjll+, ?A~~djjll1q514::<<?C"4VH=?? ?  A A A As$ D+AD D+D( $D++D4new_cb_interface)rr)r4c fd d _ fd} fd}d |dk(r fd}n|dk(rG fd d }|}n fd } fd  d _d _dgdz| ||d}tjdi|d|i}|dk(r dz |dk(r?tjdi|dd ii} |j| jcxk(r k(sJJ|dk(r{t t |ddz tjdi|dd ii} |jdk(sJ|jdk(sJ| jdk(sJ| jdk(sJytjdi|dd ii} |j| jcxk(r k(sJJ|j| jk(sJt|j| j|j|dvrdndk(sJy)Nc<d_tj|SNF)flagr rr.r|s r/r|z9TestOptimizeSimple.test_callback_stopiteration..fksAF>>!$ $r1Fc<d_tj|Sr)rr rrs r/r<z9TestOptimizeSimple.test_callback_stopiteration..gpsAF%%a( (r1c<d_tj|Sr)rr rrs r/rz9TestOptimizeSimple.test_callback_stopiteration..htsAF&&q) )r1rr)cV|j|jk(sJyrArr.)intermediate_resultrr|s r/callback_interfacezJTestOptimizeSimple.test_callback_stopiteration..callback_interface{s(*..!4G4I4I2JJJJ r1r4c eZdZdeffd Zy)@TestOptimizeSimple.test_callback_stopiteration..CallbackrcV|j|jk(sJyrAr)rorrr|s r/rzITestOptimizeSimple.test_callback_stopiteration..Callback.__call__s(.22a8K8M8M6NNNNJr1N)rrrrr)rr|sr/rrsr1rcyrAr)xkrrs r/rzJTestOptimizeSimple.test_callback_stopiteration..callback_interfaces r1c~xjdz c_d_jk(rd_ty)Nr)FT)rr StopIteration)rrhsr/rz@TestOptimizeSimple.test_callback_stopiteration..callbacks7 JJ!OJ!HMzzW$ $ #o%%r1rrT)rUrrrrrr@rdrrsrhrUrhr2zFReturn from COBYLA because the callback function requested terminationr_zRReturn from COBYLA because the objective function has been evaluated MAXFUN times.)rrdcr) rrr rrr9rrrrrrr.) rorrr<rrrrrrrr|rhs @@@r/test_callback_stopiterationz.TestOptimizeSimple.test_callback_stopiterationds# % ) * q   "  "*   &   a61a1F&F3EF ] "kG X ##JfJx6IJC88sxx272 22 22 x  '3vd|#4Q#67G##KfKy'6JKC::# ##;;$;< <<::? "?;;$FG GG ##KfKy'6JKC77cgg00 00 00ww#''!!!SUUCEE"zz6. $ a r1cd}tt|5tjdt j ddddy#1swYyxYw)Nz"'x0' must only have one dimension.rc|SrArr-s r/rz4TestOptimizeSimple.test_ndim_error..sr1)r4r))rPrQr rr+onesrors r/test_ndim_errorz"TestOptimizeSimple.test_ndim_errors>2 :S 1 <   k2776? ; < < .fr?r1r)r4r_rz?The number of bounds is not compatible with the length of `x0`.r)r)r4r_rUrr)r)rr))r_rr4z:An upper bound is less than the corresponding lower bound.)r rr rQr r)rorr|rrs r/test_minimize_invalid_boundsz/TestOptimizeSimple.test_minimize_invalid_boundss AA'O ]]:S 1 M   aIfV L M 9-J ]]:S 1 M   aIfV L M M  M M  M MsB'B3'B03B<)rr rPrfcL|dk(rindtji}|dk(rtntj}ddd}t j |d5tj dd d gf||d |dddd |d <tj d d d gf||d |y#1swY,xYw)NrfrTrrrhMaximum numberrc,tj|SrAr rr-s r/rzBTestOptimizeSimple.test_minimize_warnings_gh1953..sq(9r1rrFrc,tj|SrAr r-s r/rzBTestOptimizeSimple.test_minimize_warnings_gh1953..sHNN1$5r1)r rrrrrr)rorr warning_typers r/test_minimize_warnings_gh1953z0TestOptimizeSimple.test_minimize_warnings_gh1953s x'eX5G5G-H*0(*:%55  B/ \\,.> ? H   9Aq6 H%+W H@F H H 51v D!' D?@=Q @:7=Q~ [[X(LM!M!4 F [[X(23 # 3 #@ [[ [[X(?@ N@ N"(/4 H0d [[X(GH .1 H .1` [[X(GH ? H ?* [[ 89 [[X'>? [[/;L<@:L\<  [[X(89 M9 M [[ [[X'LMDNDr1rr)rrgr rrrdcd}tj|ddg|}|jsJt|jdgdy)Nc2tj|dzSr<r=r-s r/r|z$test_minimize_with_scalar..frr1)rr0rAr`rr)r rrrr.)rr|rs r/test_minimize_with_scalarrs?    Ar;- GC ;;;CEEC5t,r1ceZdZdZddZddZddZdZdZdZ e jjdd d gd d gd d ggd Z d Zy )TestLBFGSBBoundsc d|_d|_y)N))r)NNN)r)r)rrgrns r/rpzTestLBFGSBBounds.setup_methods/  r1c0d|z |d|z|d|zzzS)Nr\rr)rrs r/rzTestLBFGSBBounds.funs&Qw!A$'AaD!G+,,r1c||dz zSr(rrs r/rzTestLBFGSBBounds.jacs1q5zr1cJ|j|||j||fSrArrrs r/fjzTestLBFGSBBounds.fjs!xx1~txx1~--r1ctj|jddg|j|j\}}}|ddk(s J|dt ||j dy)NrrF)rrrtaskr;r)r rrrrrrgror.r|r s r/test_l_bfgs_b_boundsz%TestLBFGSBBounds.test_l_bfgs_b_boundss_((Ar70404 =1a}!,1V9,!4==t4r1ctj|jddgd|j\}}}|ddk(s J|dt ||j dy) NrrFr)rrrr r;r)r rrrrrgr!s r/rz%TestLBFGSBBounds.test_l_bfgs_b_funjacsX((1b'04 =1a}!,1V9,!4==t4r1ctj|jddgd|j|j}|ds J|dt |j |jdy) NrrFr!rrrrrr;r)r rrrrrr.rgrgs r/test_minimize_l_bfgs_b_boundsz.TestLBFGSBBounds.test_minimize_l_bfgs_b_boundssW1b'*$(HHT[[B9~-s9~-~t}}48r1r)rr)rctjtd5tj|j ddgd|j |dddy#1swYyxYw)Nz .*bound.*rrrFr!r&)rr rQr rrr)rors r/'test_minimize_l_bfgs_b_incorrect_boundsz8TestLBFGSBBounds.test_minimize_l_bfgs_b_incorrect_boundssL ]]:[ 9 ;   dhhB "&((6 ; ; ; ;s 1AAc gd}ddg}tj||D]j\}}tj|jddg|d||j ddi}|d s J|d t |j|jd ly) Nrr$rrrFr!finite_diff_rel_step)rrrrrrrr;r) rrr rrrrr.rg)rorargssrrrs r/ test_minimize_l_bfgs_b_bounds_FDz1TestLBFGSBBounds.test_minimize_l_bfgs_b_bounds_FDs , "**47 =IC##DHHq"gD+5(+DKK-CT,JLCy> 13y> 1> CEE4==t <  =r1Nr$)rrrrprrrr"rr'rrirkr)r-rr1r/rrsl-.559 [[X 7  7  7 ( ;  ; =r1rcleZdZdZd dZdZejjddZ dZ dZ dZ d Z d Zd Zejj!d gd dZejj!d gd dZejjdejj!d gd dZdZdZejj!d ddgdZejjdejj!d eejj!dddgejj!dgddZejj2ejj!d gddZy)!TestOptimizeScalarcd|_y)Nr6)rgrns r/rpzTestOptimizeScalar.setup_method*s  r1c||z dzdz S)zObjective functionr4rr)ror.rws r/rzTestOptimizeScalar.fun-sAzCr1ctj|j}t||jdtj|jd}t||jdtj|jd}t|d|jdtj|jd}t||jdd }t j t| 5tj|jd dddd }t j t| 5tj|jd dddy#1swYQxYw#1swYyxYw)Nr;rrrbrackTrrirF/\(f\(xb\) < f\(xa\)\) and \(f\(xb\) < f\(xc\)\)rrFrr)\(xa < xb\) and \(xb < xc\)rrFr))r brentrrrgrr rQ)ror.rs r/ test_brentzTestOptimizeScalar.test_brent1s NN488 $4==t4 NN4888 44==t4 NN488 6!dmm$7 NN488= 94==t4D ]]:W 5 7 NN488: 6 71 ]]:W 5 7 NN488: 6 7 7  7 7 7 7s"E5 "F5E>F rcXtj|j}t||jdtj|jd}t||jdtj|jd}t|d|jdtj|jd}t||jdtj|jd }t||jgd }|D]_}tj|jdd }tj|j|d }|d |d }}t ||z |ad }t jt|5tj|jddddd}t jt|5tj|jddddy#1swYQxYw#1swYyxYw)Nr;rr3r4Tr6rr7r)rr)r)rhrr4r9rr:r;r<) r goldenrrrgrrr rQ)ror.maxiter_test_casesrhrUnfev0rrs r/ test_goldenzTestOptimizeScalar.test_goldenFs OODHH %4==t4 OODHHH 54==t4 OODHH$ 7!dmm$7 OODHHM :4==t4 OODHH! ,4==)&) 0G1$GB'tLAQ%14E w /  0 E ]]:W 5 8 OODHHJ 7 81 ]]:W 5 8 OODHHJ 7 8 8  8 8 8 8s""H)"H H H)ctj|jdd}t|ddtj|jdd}t||jdtj|jt j dgt j dg}t||jdtttj|jddy)Nrr)rrrr;) r fminboundrrrgr+rLrPrQrs r/test_fminboundz!TestOptimizeScalar.test_fminboundfs   txxA .14(   txxA .4==t4   txx1#! F4==t4j("4"4dhh1Er1cdtjtd5tj|j t jdddddtj|j dt jd}t||jdy#1swYVxYw)Nz.*must be finite scalars.*rr)r4r)rr;r) rr rQr rFrr+rdrLrrgrs r/test_fminbound_scalarz(TestOptimizeScalar.test_fminbound_scalarqsw ]]:-I J >   txx&)91 = >   txxBHHQK 84==t4  > >s 5B&&B/c8d}tj|ddy)Nc |dzSr<rr-s r/rz,TestOptimizeScalar.test_gh11207..funyrr1r)r rF)rors r/ test_gh11207zTestOptimizeScalar.test_gh11207xs 31%r1c(tj|jj}t ||j dtj|jd}|j sJtj|jdtd}|j rJtj|jdd d j}t ||j dtj|jdd j}t ||j dtj|jd d d j}t ||j dtj|jdd d j}t ||j dtj|jd d j}t ||j dtj|jd d d j}t ||j dtj|jdd dj}t |ddtj|jdd dj}t ||j dtj|jtjdgtjdgftjdgfdj}t ||j dtttj|jddd tttj|jtjddfdd tj|jdtjdfdj}t ||j dy)Nr;rBrentrr_rrr3r6)bracketrr)rrr7rA)rr)Bounded)rrrr)r)r)rboundedrr6)rr)rrrr4rA) r minimize_scalarrr.rrgrrRr+rLrPrQrdrs r/test_minimize_scalarz'TestOptimizeScalar.test_minimize_scalar}s  $ $TXX . 0 04==t4  $ $TXXg >yyy  $ $TXXg-1!_ >99}  $ $TXXx*1' CCD1 4==t4  $ $TXXg*0 223! 4==t4  $ $TXX}*1' CCD1 4==t4  $ $TXXx*1( DDEA 4==t4  $ $TXXh*0 223! 4==t4  $ $TXX}*1( DDEA 4==t4  $ $TXXf6,5 778q 14(  $ $TXXf7,5 778q 4==t4  $ $TXXrxx}79xx}7F+-88SE?*=,5 789q  4==t4j(":":DHH#IG E j(":":DHH hhqk1-ig O  $ $TXXq"((1+6F,5 778q 4==t4r1c dd}tj|jd|td}t |j |j dy) Nc&|d|dzdz }||} d} d} d} d} | rU| sS| |krNd} | dz } ||z ||zfD]}||g|}| dz } || ks|} |}d} ||||| |k\rd} n | r| s| |krNtj| || | | dkDS)Nr)rrTFrFr\)rrQrrsrHrhrrrIrJrKrLrMrNrQrRs r/rSz?TestOptimizeScalar.test_minimize_scalar_custom..custminsQZ'!*,3EJEHEHD4EGO  #h.0@A(E--EMHu} % %#' ('UO%(f*<D4EGO **u508519O Or1)rrrUrV)rQrrr;rrW)r rUrrRrr.rg)rorSrs r/test_minimize_scalar_customz.TestOptimizeScalar.test_minimize_scalar_customsJAD*. O8&&txx.5/3T/BD t}}48r1cFtj|jdy)Nr6rr rUrrns r/&test_minimize_scalar_coerce_args_paramz9TestOptimizeScalar.test_minimize_scalar_coerce_args_params  4r1r)r=rSrAcXdD]%}tj|jd|i'y)N)rr)r4r_r)rr\)rorrs r/ test_dispzTestOptimizeScalar.test_disps-! GD  $ $TXX~ F Gr1c |dk(rdddgini}tj|jfd|i|}t|dsJt|dsJt|dsJt|d sJt|d sJt|d sJy) NrSrrrrr.rrrrr)r rUrrt)rorrrIs r/test_result_attributesz)TestOptimizeScalar.test_result_attributess*0I*=(S"I&2))$((L6LVLvs###vy)))vy)))vu%%%vv&&&vu%%%r1c  tjjddgfd}d}d}tjd5t 5}|j t d|j td |j td dg|d k(rd |ini}tj|fd |i||tdd}t|jdddddddy#1swYxYw#1swYyxYw)Nr8rcdxxdz cc<ddkDrtjS|dzdtj|zzS)Nrr)rr4r>)r+rrB)r.rs r/r}z0TestOptimizeScalar.test_nan_values..funcs? !HMHQx!|vv !tcBFF1Io--r1r:rrrrrrrSrrQrrrF) r+r7r:rr rrrr rUrRrr) rorr}rQrrrrrs @r/rz"TestOptimizeScalar.test_nan_valuess t . [[ * -,=,? -3 JJ{$7 8 JJ~'A B JJ~'B CCE+1Y+>h'BF**4EE-3E.frr1rrr)r)r0rr)rrr))r rUrr.)ror|rs r/%test_minimize_scalar_defaults_gh10911z8TestOptimizeScalar.test_minimize_scalar_defaults_gh10911sT &&q)qt,&&q07/?Aq!r1cd}tjt|5tjt j dt jfdddtjt|5tjt j t jdfdddy#1swYcxYw#1swYyxYw)Nz+Optimization bounds must be finite scalars.rr)r) rr rQr rUr+rBrrrs r/'test_minimize_non_finite_bounds_gh10911z:TestOptimizeScalar.test_minimize_non_finite_bounds_gh10911s< ]]:S 1 A  $ $RVVQK @ A ]]:S 1 A  $ $RVVRVVQK @ A A A A A As6B676C6B?C r=rAcd}tjt|5tjt j |ddddy#1swYyxYw)Nz'Use of `bounds` is incompatible with...rrIrr)rr rQr rUr+rB)rorrs r/2test_minimize_unbounded_method_with_bounds_gh10911zETestOptimizeScalar.test_minimize_unbounded_method_with_bounds_gh10911&sF8 ]]:S 1 K  $ $RVVF6 J K K Ks 'AArorr)r;fshape)rr)r)r)cpfd}d\}}|dk7rt||fn t||f}|jt||tj|fi|}|jj |j j cxk(r&||jj cxk(rk(sJJy)NcRtj|dzjSNr)r+rLreshape)r.rls r/r|zITestOptimizeScalar.test_minimize_scalar_dimensionality_gh16196..f6s 88AqD>))&1 1r1)rrIrS)rQr)rr)rRupdater rUr.shaper) rorrrlr|rwbrrs ` r/+test_minimize_scalar_dimensionality_gh16196z>TestOptimizeScalar.test_minimize_scalar_dimensionality_gh16196.s 21*0I*=$1v&Aq6*  d&c23&&q3F3uu{{cggmmGqx~~GGGGGGr1)rSr=rAcd}i}|dk(rdnd}ddg||<ddd }tjtjd 5tj|f||d |dddd |d<tj|f||d |y#1swY(xYw)Nc|dz dzSr3rr-s r/r|zBTestOptimizeScalar.test_minimize_scalar_warnings_gh1953..fFrr1rSrrQrrTr_r r rrFr)rrr rrU)rorr|rkwdrs r/$test_minimize_scalar_warnings_gh1953z7TestOptimizeScalar.test_minimize_scalar_warnings_gh1953As   I-h92hs A. \\(22:J K /  $ $Q /vw /'- / /   M67MfM  / /s BB NrP)rrrrprr>rrirjrDrGrJrMrVrYr]rkr_rarrfrhrkrrvrrzrr1r/r/r/)s 7* [[ 56878> F5& :5x!9F5 [[X'EFGGG  [[X'EF&G& [[ 56 [[X'EF-G7-: "A [[X':;K<K [[ 89 [[X'>? [[UQI. [[X'9: H;/@: H [[ [[X'EFNGNr1r/ceZdZejj ddZejjdddZy) TestBracketrocd}d}tjt|5tj|dddddtjt|5tj|dt j dddtjt|5tj|ddddtjt|5tj|ddddd}d }tjt|5tj|d d d dddy#1swY xYw#1swYxYw#1swYxYw#1swYqxYw#1swYyxYw)Nc&d|k|dkzr|dzSdSNrFr)r4gY@rr-s r/r|z3TestBracket.test_errors_and_status_false..f[ !VA.1a4 :U :r19The algorithm terminated without finding a valid bracket.rrFr)rr4cZd|dzzd|dzzzd|dzzz d|dzzzd|zz dzS) Nrrr r_ r4r)rr-s r/r|z3TestBracket.test_errors_and_status_false..fhsE19q1a4x'"q!t)3b1a4i?!a%G!K Kr1z8No valid bracket was found before the iteration limit...rr^rr) rr rur rQr+rr=rA)ror|rs r/test_errors_and_status_falsez(TestBracket.test_errors_and_status_falseXs) ;N ]].frrr1rr)rQrr_rr0)r rUrrrrr)rorr|rrs r/"test_minimize_scalar_success_falsez.TestBracket.test_minimize_scalar_success_falseosq ;N&&q'&I;;#++%%%xx1}}ww!||ww#~~r1N) rrrrrirjrrkrrr1r/r|r|VsJ [[ 897:7, [[X':; < r1r|cbtttjtj dy)Ng{Gzr@)rPrQr r=r+rGrr1r/test_brent_negative_tolerancers*hnnbff$?r1c$eZdZdZdZdZdZy) TestNewtonCgcPtjddg}tjtj|tj tj dd}|jsJ|jt|jtjddgdy Nrr\rrGrrrrr)rr) r+rLr rrrrrrrr.rorUrs r/test_rosenbrockzTestNewtonCg.test_rosenbrocksx XXtSk "$,$6$6%-%8%8$('2 4 {{'CKK'{rxxA/d;r1c.tjt}tjt |t tdd}|jsJ|jt|jtdt|jtdy)NrGr;)rrrrrrr)r+rLrTr r himmelblaurRrSrrrr.himmelblau_xoptrhimmelblau_minrs r/test_himmelblauzTestNewtonCg.test_himmelblaush XXm $ "$3%4'2$( * {{'CKK'{T:d;r1c4tjddg}tjtj|tj ddd}|j sJ|jt|jtjddgd y) Nrr\rrrGrr)rr) r+rLr rrrrrrr.rs r/test_finite_differencez#TestNewtonCg.test_finite_differencesr XXtSk "$,$6$6%.$('2 4 {{'CKK'{rxxA/d;r1cXtjddg}tjtj|tj tj dd}|jsJ|jt|jtjddgdyr) r+rLr rrrrrrrr.rs r/test_hessian_update_strategyz)TestNewtonCg.test_hessian_update_strategysx XXtSk "$,$6$6%-]]_$('2 4 {{'CKK'{rxxA/d;r1N)rrrrrrrrr1r/rrs< <<.func%vvq288$:;;ABBr1rrrrFrr4rr6rrrrr)r?r`rr)r)皙?rrrFr)r)fvalrr;rrrrr)r r{_linesearch_powellr+rLrr linesearch_powellr}rrrrrxilr|rr9s r/test_linesearch_powellrs **==C - B 8D((RVVG9q=)K((BFF8a<(K - "% - !$ - #& - #& . !4( - #& . !4(I 6A+D"b154A1i4B.func rr1rgrrrrFrr4rr6rrrrrrrrrrr;rg333333ӿr_g?rr]g333333ÿ)rrrr4rg333333)r r{rr+rLrrrs r/test_linesearch_powell_boundedr sh **==C - B 8D((C57#K((B46"K - "% - !$ - #& - #& . !4( - #& . !4(I6A+D"bd8C8C1571i 4B*K((C57bT>*K - #& - #& - #& - #& . !2& - #& . !4(I6A+D"bd8C8C1571i 4B.fun sK1VYY##%1 >*>*>*@@@AvQr1r rr)T)rr keep_feasiblecD|dk\r|dksJtj|Srr*r-s r/r}z test_powell_limits..func s#Av!q&  vvayr1r^rf)rrUrr)r r r)rr}rs @r/test_powell_limitsr sq __aVc2Y /F  csBiH__!dW EF $C5&Ir1ctddg}|D]=}tj|ddgd}tj|j r=Jy)Nc>tjt|SrAr+rLrr-s r/rz$test_powell_output.. sRXXeAh/r1c@tjt|gSrArr-s r/rz$test_powell_output.. s288U1XJ;Or1rrr )rUr)rr rr+isscalarr)funsrrs r/test_powell_outputr sM /1O PD$b (C{{377###$r1ceZdZeej dZeejdZeejejdZ y) TestRosenc|jgd}ttj||jdy)Nr[r`)r}r#r rrorr.s r/ test_rosenzTestRosen.test_rosen s0 JJy !q) 2 (r1c |jgd}ttj||j ||jdj y)N)r)r)r)r)r\)r)r}r#r r zeros_likerrs r/test_rosen_derzTestRosen.test_rosen_der sD JJ| $**1- arzz"~/C/C D Fr1c|jd}|jgd}|jgd}tj||}|j||j}tj ||z}t ||y)Nr\)r_rr)r4r4r4)r}r rosen_hess_prodrrrr#)roroner.rhpdothps r/test_hess_prodzTestRosen.test_hess_prod srjjn JJy ! JJy !  % %a + IIa ###A&*E"r1N) rrrr$r rrrrrrrrr1r/rr sfx~~&('( x))*F+F x**H,D,DE #F #r1rcN|\}}||z|zdz }|||zzdz }||z||zzS)zx R^2 -> R^1 test function for optimization. The function has four local minima where himmelblau(xopt) == 0. rrr)rr.r6rwrus r/rr sA DAq !a" A AaC! A Q319r1c|\}}tjd|dzzd|z|zzd|zz d|dzzzdz d|dzzd|z|zzd|dzzzd|zz dz gS)Nrr_*r4rUrcrr.r6s r/rRrR s DAq 88Qq!tVac!e^bd*Qq!tV3b8q!tVac!e^a1f,r!t3b8: ;;r1c|\}}tjd|dzzd|zzdz d|zd|zzgd|zd|zzd|zd|dzzzdz ggS)Nrr4rrrrcrs r/rSrS sr DAq 88bAg!mb(!A#!)4cAaCi1r!Q$w!346 77r1gHzGѿgr_r4r`cd}d}d}d|dd|dd|df}d}tj|gdd| }t|jgd d y) Ncdtjdd|dzz d|dzz d|dzz gS)NrIrrr)rr4rcr-s r/r}z0test_minimize_multiple_constraints..func s:xxcAaDj31:5qt CDEEr1c4tj|dgSr(rcr-s r/func1z1test_minimize_multiple_constraints..func1 xx1r1c4tj|dgSr<rcr-s r/rz1test_minimize_multiple_constraints..func2 rr1rrc*d|d|dz|dzzS)NrFrr)r4rr-s r/r|z-test_minimize_multiple_constraints..f s"QqTAaD[1Q4'((r1rrr)}rrrrrC)r}rrrr|rs r/"test_minimize_multiple_constraintsr s`F  D )E *E * ,D)   Ayd KCCEE;U3r1cTeZdZdZej j ddZy)TestOptimizeResultAttributescddg|_tj|_tj|_tj |_tj|_ ddg|_ y)Nr)r`r) rUr rr}rrrrrrrrns r/rpz)TestOptimizeResultAttributes.setup_method sKa&NN %%'' --  ), r1r4c gd}ddgi}tD]}t5}|jtdt j |j |j||j|j|j}ddd|D]+}||vr|||vrt|sJ|t|vr+JtjtrJy#1swYXxYw)N)rrr.rrrrrhrz7Method .+ does not use (gradient|Hessian.*) information)rrrr)rr rrr rr}rUrrrrtdirr}rstr)ro attributesrrrr attributes r/test_attributes_presentz4TestOptimizeResultAttributes.test_attributes_present s! 5'"& 0F"$ : >+-'' 4776,0HH499.2jj:  :( - T>i4<&?sI... CH,,,  -ckk3/ //! 0 : :s A$CC! N)rrrrprrirrrr1r/rr s*- [[100r1rc ~|\}}|\ }}}}}} } } } } }}}||dzz||z|zz||dzzz||zz||zz| zSr<rrarr.r6rwrurrr rr|r<rrr5r@rrs r/f1r sj DAq06-Aq!Q1aAq!Q 1Hq1uqy 1q!t8 +ac 1AaC 7! ;&>BqN6N *R^F^ ;;r1ceZdZdZdZdZdZejjddZ ejjdZ dZ y ) TestBrutecd|_tdddtdddf|_tjddg|_y)N) r4r_rrrr,rFr4rr)rr^rr?g_} gi?)rslicerrangesr+rLrgrns r/rpzTestBrute.setup_method5 s<D b!T*E"a,>? +z!:; r1ct|g|SrA)r)rorars r/rzTestBrute.brute_func: s!%f%%r1ctjt|j|jdtj }t |d|jdt |dt|jg|jdtjt|j|jdtj}t |d|jdt |dt|jg|jdtj|j|j|jdtj}t |d|jdy)NTrrfinishrrrr)) r bruterr rr)rrgr)roresbrutes r/ test_brutezTestBrute.test_brute> s >>*dll.28==J T]]> Z %L %L! #>>*dll.2)1):):<  T]]> Z %L %L! # >>$//4<<'+{{)1):):<  T]]>r1c>d}tj|dgddy)Ncht|jdk(sJ|jddk(sJ|dzS)Nr)rr4)rrtr-s r/r|zTestBrute.test_1D..fX s5qww<1$ $$771:? "?6Mr1rr_)Nsr)r r)ror|s r/test_1DzTestBrute.test_1DU s  q7)$7r1rctjt|j|jdd}tjt|j|jddd}t |d|dt |d|dy)NTrr4)rrrworkersrFr)r rrr rr)ror resbrute1s r/ test_workerszTestBrute.test_workers_ sr>>*dll.24ANN:t||$++/3D!M   " x|4 ! hqk2r1c tjjdfd}d}tjt |5t j||j|jddddy#1swYyxYw)Nr8c,jddzSrorp)rarr=s r/r}z,TestBrute.test_runtime_warning..funco s::a=4' 'r1zFfinal optimization did not succeed.*|Maximum number of function eval.*rT)rr) r+r7rtrrrr rr r)rocapsysr}rr=s @r/rzTestBrute.test_runtime_warningk seii##D) (W \\. 4 L NN4DKKd K L L Ls .A::Bcjd}tj|tdddfd}t|dy)Nc||dzSrMr)r.rs r/r|z+TestBrute.test_coerce_args_param..fx sQ< r1rrr r4r[r)r rr r)ror|rs r/test_coerce_args_paramz TestBrute.test_coerce_args_paramv s1 >>!eB3&7%9B!$r1N)rrrrprrrrrirrrrr"rr1r/rr3 s^< &?.8 [[2 3 3 [[LL%r1rrc^ ddl}ddl fd fddfd}fd}|jj5}g}|j |j ||j |j ||D]}|j  dddy#1swYyxYw)Nrc6jd|ddzS)Nr>rr4sleepr.times r/ objective1z*test_cobyla_threadsafe..objective1 s 3tQwr1c<jd|ddz dzS)Nr>rr)r4r%r's r/ objective2z*test_cobyla_threadsafe..objective2 s  3!Q{r1COBYLAc6tjdgSNr`rrv) min_methodr)sr/ minimizer1z*test_cobyla_threadsafe..minimizer1   '*e-79 9r1c6tjdgSr.rv)r/r+sr/ minimizer2z*test_cobyla_threadsafe..minimizer2 r1r1)concurrent.futuresr(futuresThreadPoolExecutorrxsubmitrI) concurrentr0r3pooltasksrsr/r)r+r(s @@@@r/test_cobyla_threadsafer; s J9 9    . . 0D T[[,- T[[,- A HHJ  s AB##B,cfeZdZdZdZej jddZdZ dZ y)TestIterationLimitsc6tj|_yrA)rirjrKrns r/rpz TestIterationLimits.setup_method s!) r1cPt|jdsd|j_|jxjdz c_tj|ddz|ddzztj |d|d}}tj |dz|z|dzzS)Nrrrr)r4rr^)rtrKrrr+rarctan2rB)ror(rVrss r/ slow_funczTestIterationLimits.slow_func st}}c*DMMO 1wwqtQwqtQw'AaD!A$)?1vvadQh#%%r1rc(|jddy)Nrr check_limitsrns r/test_neldermead_limitz)TestIterationLimits.test_neldermead_limit s --r1c(|jddy)NrfrarDrns r/test_powell_limitz%TestIterationLimits.test_powell_limit s (D)r1c ZddgddgddgfD]}dD]p}d|j_tj|j||d|i}|jj|dk(sJ|d r |d|kreJ|d|k\rpJdD]A}tj|j||d |i}|d r |d |kr6J|d |k\rAJd d gd d gd t j gfD]\}}d|j_tj|j||||d}|jj|dk(sJ|d r|d|kr |d |krqJ|d|k\r||d |k\rJt j dgdt j gfD]\}}d|j_tj|j||||d}|jj|dk(sJ|d r||d|dzkrnJ|d |dzkr|J|d|dzk\r|d |dzk\rJy)Nr>r)r4)r1irrsrrrrhrr1rJ)rhrs)rKrrr rrAr+r)ror default_itersstart_vmfevrmits r/rEz TestIterationLimits.check_limits sc QFQF3, >G' /"# ''/51940@B}}#f+555y>v;---v;$... /' -''/51:C0@By>u:,,,u:,,, - "2ht tRVVnE D c"# ''/5v;-#e*2CCCv;$.#e*2CCC D "vvtntRVVn= > c"# ''/5|"6{]1_<<<"5z]1_<<<K=?:"5z]1_<>= >=, >r1N) rrrrprArrirrFrHrErr1r/r=r= s9*& [[2..*->r1r=cbd}d}d}gd}|D]I}tj|tjdg|}|jj dk(rIJgd}|D]K}tj|tjdg||| }|jj dk(rKJy) Nc ||zSrArr-s r/rz2test_result_x_shape_when_len_x_is_one..fun s 1u r1c d|zSNrrr-s r/rz2test_result_x_shape_when_len_x_is_one..jac s Av r1c0tjdggSrRrcr-s r/rz3test_result_x_shape_when_len_x_is_one..hess sxx"r1) rrr rrr!rr,COBYQArr>rrm)rrrrrrGr)r rr+rLr.rt)rrrrrrs r/%test_result_x_shape_when_len_x_is_onerU s ,G#RXXse_VDuu{{d"""# ,G#RXXse_V%)+uu{{d"""#r1ceZdZdZdZy)FunctionWithGradientc6tj|_yrA)rirjnumber_of_callsrns r/rzFunctionWithGradient.__init__ s(0r1ct|jdsd|j_|jxjdz c_tj|dzd|zfS)Nrrrr)r4)rtrYrrr+rCrs r/rzFunctionWithGradient.__call__ sRt++S1%&D " !#vvad|QU""r1Nrrr1r/rWrW s 1#r1rWctSrA)rWrr1r/function_with_gradientr\ s  !!r1ct|}tjddg}t||d|jj dk(sJt|j |d|z|jj dk(sJdt|d|zdd |jj dk(sJdy) Nr\rrr)r4zHfunction is not recomputed if gradient is requested after function valueg4@(different input triggers new computationr)rr+rLrrYrr derivativer\memoized_functionrUs r/)test_memoize_jac_function_before_gradientrb s"#9: 3* B%b)3/ ! 1 1 3 3q 88 8%004a"f= ! 1 1 3 3q 88 88 8!b&!4:< " 1 1 3 3q 8323 8r1ct|}tjddg}t|j |d|z|j j dk(sJt||d|j j dk(sJdt|j d|zd|zd |j j dk(sJdy) Nr\rr4r)rzHfunction is not recomputed if function value is requested after gradientrr^r)rr+rLrr_rYrrr`s r/)test_memoize_jac_gradient_before_functionrd% s"#9: 3* B%004a"f= ! 1 1 3 3q 88 8%b)3/ ! 1 1 3 3q 88 88 8$$QV,a"f:< " 1 1 3 3q 8323 8r1c t|}|j}tj}t j ddg}t ||d||dd}|jjdk(sJ|j|dz|jjdk(sJ|j|dz|jjd k(sJy) z Tests that using MemoizedJac in combination with ScalarFunction and BFGS does not lead to repeated function evaluations. Tests changes made in response to GH11868. r\r^rNr)r>r4rIr_) rr_r rr+rLrrYrrr)r\rarrrUscalar_functions r/test_memoize_jac_with_bfgsrg8 s ##9:  & &C ==?D 3* B$2r3dD:O ! 1 1 3 3q 88 8S! ! 1 1 3 3q 88 8S! ! 1 1 3 3q 88 8r1ct5tjdtj tjddddy#1swYyxYw)Nc4tj|dzgSr<rcr-s r/rztest_gh12696..Q sbhh1v&r1Fr)rr rFr+r!rr1r/ test_gh12696rjM sC  C &E CCCCs 8A  Ac tjjd}|jd}tjgdtjgd}|k(dfd fdfdfd }fd }fd }fd }fd }fd}t |tj d} t |tj d|} t |tj d} t |tj d|} d} dddfdddf}dtf}dggf| | f| | f| g| gf| g| gf| | g| | gf| | g| | gf| | g| | gff }d||f}| ||||||d }|S)Nrr)rr4rFr)r_r4r4rTcV|r|jdk(sJ|rt|yyrq)rGr)r. check_size check_valuesi_ebrs r/check_xz(setup_test_equal_bounds..check_x^ s0 66Q; ;  AdGRX . r1c>|tj|SrAr r.rps r/r}z%setup_test_equal_bounds..funcd s ~~a  r1c>|tj|SrA)r rrrs r/rz%setup_test_equal_bounds..gradh s !!!$$r1c|yrAr)r.rrps r/rz)setup_test_equal_bounds..callbackl s  r1cNt|tsJ|jyrA)r}rr.)rrps r/ callback2z*setup_test_equal_bounds..callback2o s#-~>>>#%%&r1c(|d|dddz S)NFrnrr)rrrs r/ constraint1z,setup_test_equal_bounds..constraint1s s&1vzr1cP|dtj|}d|d<|S)NFrxr)rr+rr.dcrps r/ jacobian1z*setup_test_equal_bounds..jacobian1w )& ]]1 1 r1c(|d|dddz S)NFrxr4r_r^rrrs r/ constraint2z,setup_test_equal_bounds..constraint2} s&1v|r1cP|dtj|}d|d<|S)NFrxr)r4r{r|s r/ jacobian2z*setup_test_equal_bounds..jacobian2 rr1)r!rrFrc$||fSrAr)r.r}rs r/rz)setup_test_equal_bounds.. sQa1r1c,tt||SrA)listziprrs r/rz)setup_test_equal_bounds.. s$s2r{"3r1r) rkwds bound_typesrZ callbacksrrrUro)TT)r+r7rrrLr rr )r=rUrrrvryr~rrc1ac1bc2ac2brrrrZrdatarpr}rrors @@@@@r/setup_test_equal_boundsrV s ))   "C !B " #B / "B "HD/ !%'  kBFF7A 6C kBFF7Ay AC kBFF7A 6C kBFF7Ay AC+G ' &1  D 4K  "b:SzEC5>SEC5>#Jc +#Jc +#Jc + -Kx+I[&YBb$ 8D Kr1z0Failures due to floating point issues, not logicdicts)mode Compilersfortrannamez intel-llvmrrr bound_typerrZrrc tjdk(r#|dk(r|ddur|tjdtdtd}}td td }}|\} } | r|d k(stjd |d vrLt |rAt j|} dt| jvrtjd| | k7} |||} |j||| | |dtjdi|}tjtj||tj| | }|jsJt!|j"|j"dt!|j$|j$d| s|ddurt&j(|j*|<|j*j,ddk(sJt!|j*||j*|d|ds| st/| t0sod}tj||ddg|| ddd}t!|j"|j"t!|j$ddg|j$dyyyy)z Tests that minimizers still work if (bounds.lb == bounds.ub).any() gh12502 - Divide by zero in Jacobian numerical differentiation when equality bounds constraints are used aarch64rrFNzTolerance violation on aarchrrrUrorz)Only SLSQP supports nonlinear constraints)rrrz,SLSQP, TNC don't support intermediate_result)rUrrrZr)rrrrZg>rgMb@?rrr;ctjtjdtjdg}||ddg<tj|S)Nr4rFr)r+rLrr r)r.new_xs r/rztest_equal_bounds..fun s=HHbffa45EE1a&M>>%( (r1r4rjr)platformmachinerreb_datacallableinspect signaturer parametersrsr rrrrrrr.r+rrrtr}r )rrrrZrrrrUrotest_constraintsreference_constraintssig fd_neededrrexpectedrfd_ress r/test_equal_boundsr s? i'FeOU u$)= 23 T]GDMBt}gfoB.9++' 1 ?@ !!hx&8) C$7 7 KKF G"%::I B FKKrVv 0hHI    #d #C  F%-%7%7-BDH ;;;CGGX\\5CEE8::D1DK5(VV T 77== q  CGGDM8<<#5DA K+z&&/I ) ""3#%q!f:*0*01+7 , q!f vxxd;%0J+Kr1cdd}ddg}d}tj||||}|jsJt|j|ddg|j dk(sJ|j d k(sJd }tj||||| }|jsJt|j|ddgd |jd k(r.d}t|tj d}tj|||||g}|jdusJt|j|ddg|j dk(sJd}|j j|sJt|tj d}tj|||||g}|jdusJt|j|ddg|j dk(sJd}|j j|sJyy)Nr)cFtjj||zSrA)r+linalgnorm)r.p1s r/r|z test_all_bounds_equal..f syy~~a 2%%r1rn)r4r4)r\rBrAr\rz/All independent variables were fixed by bounds.)r4rTr4rc,tj|SrAr=r-s r/conz"test_all_bounds_equal..con s66!9 r1r`)rrrZFz3All independent variables were fixed by bounds, butrTz8All independent variables were fixed by bounds at valuesrm) r rrrrrrupperr r+rr) rr|rrUrrrnlcrs r/test_all_bounds_equalr s&f F B   Ar& @C ;;;CGGQSz]+ 88q== ;;K KK K D   Ar&d KC ;;;CGGQSz1-. ||~  !#w4 r&cU {{e###C:/xx1}}G{{%%g...!#w2 r&cU {{d"""C:/xx1}}L{{%%g...+!r1cd}d}d|dg}dgdz}d|d<tj|gd d || |d d |k(sJy)Nc<|ddz|ddzz|d|dzzS)Nrr_r)r4rr-s r/r|ztest_eb_constraints..f. s.tQw1q 1Q4!9,,r1c6|d|dz|dz|dzdz S)Nrr)r4r_(rr-s r/cfunz!test_eb_constraints..cfun1 s+tad{QqT!AaD(2--r1rr)rrr)rrr))r)r4r_rr)rUrrrZrrrv)r|rrZrs r/test_eb_constraintsr+ se-.#401KY]FF1I    q>% D (( (r1ctttttt d}|j D]\}}|D]}t||dddd}|j D]\}}ttt||y)N)rrUroot root_scalarlinprogquadratic_assignmentekkir )rmaximizemaximize_scalar) rrrrrritemsrrPrQ)solver_methodssolverrrunknown_solver_methods r/test_show_optionsrB s$2*" < N*//1) )F  ( )) ! 0557@j,?@r1ctjddgddg}tjtjt j ddgd|y)Nrrrrr r)r r rrr+rLrs r/test_bounds_with_listrZ sB __Rc3Z 8F 288QF+HVr1)rir rdrfr@rrrcptjgd}tjt||ddiy)NrrhgfffffY@r)r+rLr rr)rrUs r/ test_minimize_maxiter_nonintegerrb s, + ,B eRE8JKr1c <d}d}d}gd}gd}tjddz}tD]j}d}d}||vr|}||vr|}tj|||||} t | j tjtj|d ly) Nctjtj|}||z}||z}tj|SrA)r+rOrGrCrs r/fquadz/test_x_overwritten_user_function..fquado s8 IIbggaj ! Q Qvvayr1cptjtj|}|dz}|d|zz}|Sr<)r+rOrGrs r/ fquad_jacz3test_x_overwritten_user_function..fquad_jacu s3 IIbggaj ! Q QU r1cXtjtj|dzSrR)r+rrGr-s r/ fquad_hessz4test_x_overwritten_user_function..fquad_hess{ svvbggaj!C''r1)rPrrrrr)rrrrrrr6rg-C6*?r) r+rrr rrr.rOrG) rrrmeth_jac meth_hessrUmethrrrs r/ test_x_overwritten_user_functionrk s  (HI c B B 8 C 9 Dr$CdKryy5DABr1ceZdZdZy)TestGlobalOptimizationcd}tj|dtj|dgtj|dgtj|dgtj |dgg}|D]r}t |tjsJt|dsJt|dsJt|dsJt|dsJt|d sJt|d rrJy) Nc |dzSr<rr-s r/r}zDTestGlobalOptimization.test_optimize_result_attributes..func s 6Mr1r))rU)rrr.rrrrr) r basinhoppingdifferential_evolutionshgodual_annealingdirectr}rrt)ror}r~rIs r/test_optimize_result_attributesz6TestGlobalOptimization.test_optimize_result_attributes s ((!4224'C==y1**4';??4'3  *Ffh&=&=> >>63' ''69- --69- --65) ))66* **65) )) *r1N)rrrrrr1r/rr s*r1rctjtt}t |t tdtjtt }t |t tdy)Nrr)r approx_fprimerTrrrRrS)r<rs r/test_approx_fprimer sJ }j9AA}5DA}o>AA}5DAr1c~d}tddgddg}tj|dd|}ttjddgtjddg}tj|dd|}t |j |j t |j|jy)Nc*|ddz|ddz dzzSrrr-s r/r|ztest_gh12594..f s!tQw!A$(Q&&r1rrrrr r)r r rr+rLrrr.)r|rrrs r/ test_gh12594r s 'Szr2h /F   A&& IC rxxc +"b0B CF   A&& ICCGGSWW%CEE355!r1rGr sparse_typecfd}ddg}tjt||t|}tjt||tt}t |j |j t |j|j|j|jk(sJ|j|jk(sJ|j|jk(sJy)Nc&t|SrA)r)r.rs r/sparse_rosen_hessz.test_sparse_hessian..sparse_rosen_hess s:a=))r1rr) r rrrrrrr.rrnhev)rrrrU res_sparse res_denses ` r/test_sparse_hessianr s* bB""5"V'07HJJ!!%F&/jBIIMM:>>2IKK. >>Z__ ,, , >>Z__ ,, , >>Z__ ,, ,r1r) rrrirrGrrgrrceZdZdZdZdZy) TestWorkersc<tjgd|_y)N)r\rrB)r+rLrUrns r/rpzTestWorkers.setup_method s((?+r1c|xst}ddd}|dvrt|d<d|d<t|5}tjt |j fd|i|d|}dddtjt |j fd|i|}tj|jt|j|jy#1swYqxYw) N)rr)rGrrrrrr)rrr) maprr%r rrrUrr.r)rorrrmfrrs r/ test_smokezTestWorkers.test_smoke s.ST* ? ?#DK$DL   B##tww)22vIMC '' 477 #) -1  SUUKMM*SXX{//0  s +CCcR|xst}|dvrtj|dtgdgd}t |5}t j t|j|d|i|}dddjsJt|jddy#1swY1xYw) N)rrirrgz cannot use bounds)rrr`)rrrr)rrrr)r) rrrr r%r rrrUrrr.)rorrrrrs r/rzTestWorkers.test_equal_bounds s.S E E KK6("45 6 o6   B##twwv 2vC {{{a#&   s +BB&N)rrrrprrrr1r/rr s,1( 'r1r)rrrrrinumpyr+ numpy.testingrrrrrrr rr rPscipyr scipy.optimize._minimizer r rrrscipy.optimize._linprogrscipy.optimize._rootrscipy.optimize._root_scalarrscipy.optimize._qapr(scipy.optimize._differentiable_functionsrrscipy.optimize._optimizerrrscipy.optimizerrr scipy.sparserrrr r!r"scipy._lib._array_api_no_0dr#scipy._lib._array_apir$scipy._lib._utilr%lazy_xp_modulesrWrYrrvrrrrrrrirrrrrrrrrrkrrr/r|rrrrrrrrrrRrSrTrrrrrrrrrrr;r=rUrWfixturer\rbrdrgrjrrxfail_on_32bitrl show_configrrrrrrrrrrrrrr1r/r sAAA* @??4-;<OMM770073'*3l7'7'tRARAj-"0H8D $  >I:I:X'FT8  :  : "< d Dd DN :- -:=:=zjNjNZ &&R@)<)B>J#2##""3&3&9*CUp " #NO$5$$'2;? J6R LN79#561w}'=> (>?W[%9:A<;@?27NPA