+
    /i@                         R t ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
Ht ^ RIt^ RIt^ R	IHtHtHt ^ R
IHt ^ RIHt ^ RIt ! R R4      tR# )z4
Unit tests for the dual annealing global optimizer
)dual_annealingBounds)EnergyState)LocalSearchWrapper)ObjectiveFunWrapper)StrategyChain)VisitingDistribution)rosen	rosen_derN)assert_equalassert_allcloseassert_array_less)raises)check_random_statec                   ^  a  ] tR t^t o R tR tR'R ltR'R lt]P                  P                  R. R(O4      R 4       t]P                  P                  R. R)O4      R 4       tR tR	 t]P                  P                  ^
4      R
 4       tR t]P                  P                  ^
4      R 4       tR tR tR t]P                  P                  ^
4      R 4       tR tR tR tR tR tR tR tR tR tR t R t!]P                  P                  R. R*O4      R 4       t"R t#R t$]P                  P                  ^
4      R  4       t%]P                  P                  R!. R+O4      R" 4       t&]P                  P                  ^
4      R# 4       t']P                  P                  ^
4      R$ 4       t(R%t)V t*R&# ),TestDualAnnealingc                   R  V n         R.^,          V n        V P                  ^,          V n        RV n        RV n        RV n        RV n        RV n        \        P                  ! 4       V n
        \        P                  ! 4       V n        R# )c                 "    \         P                  # N)npinfxs   &g/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/optimize/tests/test__dual_annealing.py<lambda>0TestDualAnnealing.setup_method.<locals>.<lambda>   s    266    i  in  g?(\@  N{Gz{Gz@)	weirdfunc	ld_bounds	hd_boundsnbtestvalueshigh_temperaturelow_temperatureqvseed	threadinglocalnb_fun_callngevselfs   &r   setup_methodTestDualAnnealing.setup_method   sj    )'1,!+  $"	$??,OO%	r   c                    VR 8:  d   R# R# )      ?TN )r/   r   fcontexts   &&&&r   callbackTestDualAnnealing.callback+   s     8 r   c           	        V'       d   TpM^ p\         P                  ! W,
          ^,          ^
\         P                  ! ^\         P                  ,          W,
          ,          4      ,          ,
          4      ^
\         P                  ! V4      ,          ,           V,           p\        V P                  R4      '       g   ^ V P                  n        V P                  ;P                  ^,          un        V# )    c)r   sumcospisizehasattrr,   r;   )r/   r   argsshiftys   &&&  r   funcTestDualAnnealing.func1   s    EEFFAI!#b266!bee)I3 , '  
?+-23t''--!"Dar   c                    \        V P                  R 4      '       g   ^ V P                  n        V P                  ;P                  ^,          un        \        V.VO5!  # )r;   )r@   r-   r;   r
   )r/   r   rA   s   &&&r   rosen_der_wrapper#TestDualAnnealing.rosen_der_wrapper>   s@    tyy#&&DIIK		q"T""r   r(   c                |   \         P                  P                  R 4      p\        \	        V P
                  !  4      p\         P                  ! V^ ,          4      p\         P                  ! V^,          4      pVP                  p\        WEW4      p\         P                  ! V4      pVP                  V^ V P                  4      p	\        \         P                  ! V	^ 4      R4       \         P                  ! V4      pVP                  WV P                  4      p
\        \         P                  ! V
^ ,          ^ 4      R4       R# )r   TN)r   randomdefault_rnglistzipr#   arrayr?   r   zerosvisitingr&   r   	not_equal)r/   r(   rnglulowerupperdimvdvalues
x_step_lowx_step_highs   &&         r   test_visiting_stepping(TestDualAnnealing.test_visiting_steppingF   s    ii##D)#t~~&'AAjj!%8#[[D,A,AB
R\\*a0$7#kk&t/D/DER\\+a.!4d;r   c                   \         P                  P                  R 4      p\        \	        V P
                  !  4      p\         P                  ! V^ ,          4      p\         P                  ! V^,          4      p\        WEW4      pVP                  V P                  V P                  4      p\        \         P                  ! V4      R4       \        R\         P                  ! V4      4       R# )r   g|=g    _BN)r   rJ   rK   rL   rM   r#   rN   r   visit_fnr&   r%   r   minmax)r/   r(   rR   rS   rT   rU   rW   rX   s   &&      r   #test_visiting_dist_high_temperature5TestDualAnnealing.test_visiting_dist_high_temperatureW   s    ii##D)#t~~&'AA!%8 T22D4E4EF 	"&&.%0%0r   c                <   \        V P                  4      p\        \        V P                  !  4      p\
        P                  ! V^ ,          4      p\
        P                  ! V^,          4      p\        W44      p\        \        VP                  V\        R4      4       R# )r:   N)r   r"   rL   rM   r#   r   rN   r   assert_raises
ValueErrorresetr   )r/   owfrS   rT   rU   ess   &     r   
test_resetTestDualAnnealing.test_resetj   sg    !$..1#t~~&'AA&j"((C1CD1IJr   c                    \        V P                  V P                  V P                  R 7      p\	        VP
                  RRR7       VP                  '       g   Q hR# rR           g-q=atolN)r   rD   r#   r)   r   funsuccessr/   rets   & r   test_low_dimTestDualAnnealing.test_low_dimr   s=    IIt~~4996%0{{{{r   c                    \        V P                  V P                  V P                  R 7      p\	        VP
                  RRR7       VP                  '       g   Q hR# rl   )r   rD   r$   r)   r   rq   rr   rs   s   & r   test_high_dimTestDualAnnealing.test_high_dimx   s:    TYYDIIF%0{{{{r   c                    \        V P                  V P                  R V P                  R7      p\	        VP
                  RRR7       R# )T)no_local_searchr)   rn   -C6?ro   Nr   rD   r#   r)   r   rq   rs   s   & r   test_low_dim_no_ls$TestDualAnnealing.test_low_dim_no_ls~   s2    TYY-1		C$/r   c                    \        V P                  V P                  R V P                  R7      p\	        VP
                  RRR7       R# )Tr{   rR   rn   giUMu?ro   N)r   rD   r$   r)   r   rq   rs   s   & r   test_high_dim_no_ls%TestDualAnnealing.test_high_dim_no_ls   s2    TYY-1tyyB&1r   c                    ^ V P                   n        \        V P                  V P                  V P
                  R7      p\        V P                   P                  VP                  4       R# )r:   rm   Nr,   r;   r   rD   r#   r)   r   nfevrs   s   & r   test_nb_fun_call"TestDualAnnealing.test_nb_fun_call   sD    TYYDIIFT%%''2r   c                    ^ V P                   n        \        V P                  V P                  RV P
                  R7      p\        V P                   P                  VP                  4       R# )r:   Tr   Nr   rs   s   & r   test_nb_fun_call_no_ls(TestDualAnnealing.test_nb_fun_call_no_ls   sJ    TYY-1tyyBT%%''2r   c                Z    \        \        \        V P                  V P                  4       R # r   )rd   re   r   r"   r#   r.   s   &r   test_max_reinit!TestDualAnnealing.test_max_reinit   s    j.$..nn	&r   c                   \        V P                  V P                  V P                  R 7      p\        V P                  V P                  V P                  R 7      p\        V P                  V P                  V P                  R 7      p\	        VP
                  VP
                  4       \	        VP
                  VP
                  4       R# )rm   N)r   rD   r#   r)   r   r   )r/   res1res2res3s   &   r   test_reproduce TestDualAnnealing.test_reproduce   sv    diiTYYGdiiTYYGdiiTYYG 	TVVTVV$TVVTVV$r   c                J   \         P                  P                  ^4      p\        V P                  V P
                  VR7      p\         P                  P                  ^4      p\        V P                  V P
                  VR7      p\        VP                  VP                  4       R# )   rm   N)r   rJ   rK   r   rD   r#   r   r   )r/   rR   r   r   s   &   r   test_rand_genTestDualAnnealing.test_rand_gen   sl     ii##A&diiSAii##A&diiSA 	TVVTVV$r   c                N    . ROp\        \        \        V P                  V4       R# )r!   N)r   )r   r:   )r!   r!   )rd   re   r   rD   )r/   wrong_boundss   & r   test_bounds_integrity'TestDualAnnealing.test_bounds_integrity   s    <j.$))"	$r   c                F   R\         P                  ) ^ 3R.p\        \        \        V P
                  V4       R^ \         P                  3R.p\        \        \        V P
                  V4       R^ \         P                  3R.p\        \        \        V P
                  V4       R# )   N)r   )r   r   rd   re   r   rD   nan)r/   invalid_boundss   & r   test_bound_validity%TestDualAnnealing.test_bound_validity   s    !RVVGQ<9j.$))$	&!Arvv;8j.$))$	&!Arvv;8j.$))$	&r   c           
         R  p\        \        RR	.^^.4      4      p\        P                  ! \        RR7      ;_uu_ 4        \        VVRRRV/R7       RRR4       R#   + '       g   i     R# ; i)
c                 X    \         P                  ! V ^,
          V ^,
          ,          4      # r   r   r<   r   s   &r   rD   KTestDualAnnealing.test_deprecated_local_search_options_bounds.<locals>.func       661q5QU+,,r   Method CG cannot handle matchmethodCGboundsr   minimizer_kwargsNr   )rL   rM   pytestwarnsRuntimeWarningr   r/   rD   r   s   &  r   +test_deprecated_local_search_options_bounds=TestDualAnnealing.test_deprecated_local_search_options_bounds   s_    	-c2r(QF+, \\.0KLL"*D(F!CE MLLLs   AA/	c           
        R  p\        \        R	R
.^^.4      4      p\        VVRRRV/R7       \        P                  ! \
        RR7      ;_uu_ 4        \        VVRRRV/R7       RRR4       R#   + '       g   i     R# ; i)c                 X    \         P                  ! V ^,
          V ^,
          ,          4      # r   r   r   s   &r   rD   <TestDualAnnealing.test_minimizer_kwargs_bounds.<locals>.func   r   r   r   SLSQPr   r   r   r   r   Nr   r   )rL   rM   r   r   r   r   r   s   &  r   test_minimizer_kwargs_bounds.TestDualAnnealing.test_minimizer_kwargs_bounds   sz    	-c2r(QF+,&6B	D
 \\.0KLL"*D(F!CE MLLLs   A00B	c                p   \        V P                  V P                  ^dV P                  R7      p\	        \        \        V P                  4      \        P                  ,          \        P                  4      \        P                  4      pVP                  ^dV,           8:  g   Q hVP                  '       d   Q hR# )d   )maxfunrR   N)r   rD   r#   r)   r_   r`   lenr   LS_MAXITER_RATIOLS_MAXITER_MINLS_MAXITER_MAXr   rr   )r/   rt   ls_max_iters   &  r   test_max_fun_ls!TestDualAnnealing.test_max_fun_ls   s    TYYs!%, #"4"E"EE--/ --/ xx3,,,,;;;;r   c                    \        V P                  V P                  R RV P                  R7      pVP                  R8:  g   Q hVP
                  '       d   Q hR# )Ti  )r{   r   rR   N)r   rD   r#   r)   r   rr   rs   s   & r   test_max_fun_no_ls$TestDualAnnealing.test_max_fun_no_ls   sD    TYY-1#499Nxx3;;;;r   c                    \        V P                  V P                  R V P                  R7      pVP                  R 8:  g   Q hR# )i  )maxiterrR   N)r   rD   r#   r)   nitrs   s   & r   test_maxiterTestDualAnnealing.test_maxiter   s1    TYY!%,ww#~~r   c                    \        V P                  V P                  RV P                  R7      p\	        VP
                  R RR7       R# )n!	@)rA   rR   ư>ro   Nr   r}   rs   s   & r   test_fun_args_ls"TestDualAnnealing.test_fun_args_ls   s1    TYY#-DII?t4r   c                    \        V P                  V P                  RRV P                  R7      p\	        VP
                  R RR7       R# )r   T)rA   r{   rR   r|   ro   Nr   r}   rs   s   & r   test_fun_args_no_ls%TestDualAnnealing.test_fun_args_no_ls   s6    TYY#.!%, 	t4r   c                    \        V P                  V P                  V P                  V P                  R 7      pVP
                  R8:  g   Q hRVP                  ^ ,          9   g   Q hVP                  '       d   Q hR# ))r7   rR   r3   z
stop earlyN)r   rD   r#   r7   r)   rq   messagerr   rs   s   & r   test_callback_stop$TestDualAnnealing.test_callback_stop   s^     TYY&*mmDww#~~s{{1~---;;;;r   zmethod, atolc                    \        V P                  V P                  \        VR 7      V P                  R7      p\        VP                  RVR7       R# )r   r   rR   rn   ro   N)r   rD   r#   dictr)   r   rq   )r/   r   rp   rt   s   &&& r   test_multi_ls_minimizer)TestDualAnnealing.test_multi_ls_minimizer  s;     TYY.2&.A!%, 	$/r   c                    \        \        \        V P                  V P                  ^R7       \        \        \        V P                  V P                  ^ R7       R# )r   )restart_temp_ratioN)rd   re   r   rD   r#   r.   s   &r   test_wrong_restart_temp)TestDualAnnealing.test_wrong_restart_temp  s8    j.$))nn	<j.$))nn	<r   c                    R V P                   /p\        \        V P                  VV P                  R7      pVP
                  V P                  P                  8X  g   Q hR# )jacr   N)rG   r   r	   r#   r)   njevr-   r;   )r/   minimizer_optsrt   s   &  r   test_gradient_gnev$TestDualAnnealing.test_gradient_gnev  sN    4))
 UDNN.<!%, xx499;;&&&r   c           	         R  pR	.^
,          pR.^
,          p\        V\        \        W#4      4      RR7      p\        VP                  . R
ORR7       \        VP
                  RRR7       R# )c                     \         P                  ! W ,          ^
\         P                  ! ^\         P                  ,          V ,          4      ,          ,
          4      ^
\         P                  ! V 4      ,          ,           # 
   r   r<   r=   r>   r?   r   s   &r   rD   3TestDualAnnealing.test_from_docstring.<locals>.func(  sC    66!%"rvva"%%i!m'<"<<=RWWQZOOr   r!   r   r   rR   g:0ye>ro   rn   g-a=Nr    )
g[tP2gf0g˯>g,1gft;gh<g#0g(<geԑ:gi5)r   rL   rM   r   r   rq   )r/   rD   lwuprt   s   &    r   test_from_docstring%TestDualAnnealing.test_from_docstring&  s_    	PWr\Vb[T$s2{*;F* 15		6
 	6r   z'new_e, temp_step, accepted, accept_ratec           	        \        ^{4      p^ pRpRp^p	\        V4       Fi  p
\        RRR7      pVP                  V	^ .4       \	        VRRRW[4      pW,n        VP                  ^V^.R7       VP                  V8X  g   K`  V^,          pKk  	  Wc8X  g   Q h^^V,
          W,
          ,          V,          ,
          pV^ 8:  d   ^ M7\        P                  ! \        P                  ! V4      ^V,
          ,          4      p\        W4       R# ){     N)rT   rU   )jex_visitr   )r   ranger   update_currentr   temperature_stepaccept_rejectcurrent_energyr   explogr   )r/   new_e	temp_stepacceptedaccept_raterscount_accepted
iterationsaccept_paramr  _energy_statechainpqvrates   &&&&&          r    test_accept_reject_probabilistic2TestDualAnnealing.test_accept_reject_probabilistic4  s      $
z"A&T>L''<!dD$BE &/" !uqc:**e3!# # ))) 1|#(>?)KK1Hq"&&L8H)I"J*r   c                   R  pR.^,          pR.^,          pRV^ &   RV^&   RV^&   RV^&   \        W#4      p\        WRR7      p\        \        W#4      4      p\        WRR7      p\	        VP
                  VP
                  RR7       \	        VP
                  \        P                  ! R^4      RR7       \	        VP                  VP                  R	R7       VP                  VP                  8X  g   Q hR
# )c                     \         P                  ! W ,          ^
\         P                  ! ^\         P                  ,          V ,          4      ,          ,
          4      ^
\         P                  ! V 4      ,          ,           pV# r   r   )r   r5   s   & r   rD   1TestDualAnnealing.test_bounds_class.<locals>.funca  sG    qurBFF1ruu9q=$999:R"''!*_LAHr   r!   g       @r3   r   r   :0yE>ro   gHz>g&.>Nr    g       g      )
r   r   rL   rM   r   r   r   arangerq   r   )r/   rD   r   r   r   ret_bounds_class
bounds_oldret_bounds_lists   &       r   test_bounds_class#TestDualAnnealing.test_bounds_class^  s    	 Wq[VaZ 1111 )$4H#b+&
(dK 	(**O,=,=DI(**BIIb!,<4H++-=-A-AM##'7'<'<<<<r   c                8  a	 \         P                  P                  R 4      pR pR pR o	V	3R lp\        VR^ ^.^ ^..V\	        RR7      R7      p\        VR^ ^.^ ^..V\	        RVR7      R7      p\        VR^ ^.^ ^..V\	        R	VS	R
7      R7      p\        VR^ ^.^ ^..V\	        R	W4R7      R7      p\        VP                  VP                  RR7       \        VP                  VP                  RR7       \        VP                  VP                  RR7       R# )l   ]k@A`Q c                 b    \         P                  ! \         P                  ! W,          4      4      # r   )r   r<   r  r   powers   &&r   r5   ETestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.f  s    66"&&,--r   c                 p    \         P                  ! W,          4      V,          W^,
          ,          ,          # )r   )r   r  r"  s   &&r   r   GTestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.jac  s$    66!*%-ai0@@@r   c                     \         P                  ! V\         P                  ! W,          4      ,          W^,
          ,          ,          WV,          ,          V,           ^,
          ,          4      #    )r   diagr  r"  s   &&r   hessHTestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.hess  sK    77qz**Q19-==e#e+a/1 r   c                 "   < S! W4      V,          # r   r4   )r   pr#  r+  s   &&&r   hesspITestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.hessp  s    >A%%r   zL-BFGS-Br   )rA   r   rR   r   )r   r   z	newton-cg)r   r   r+  )r   r   r/  r   )rtolNr(  )r   rJ   rK   r   r   r   rq   )
r/   rR   r5   r   r/  r   r   r   res4r+  s
   &        @r   (test_callable_jac_hess_with_args_gh11052:TestDualAnnealing.test_callable_jac_hess_with_args_gh11052{  s%    ii##$89	.	A		& aeaVaV4D#/3:/FHaeaVaV4D#/3:8;0=> aeaVaV4D#/3;8;$0HI aeaVaV4D#/3;8;0JK 	$((6$((6$((6r   )
r$   r&   r#   r'   r,   r%   r-   r(   r)   r"   N)r4   )g?g(\?r)  r   333333@)g      @r   r5  ))zNelder-Meadgh㈵>)COBYLAgh㈵>)COBYQAr  )Powellr  )r   r  )BFGSr  )TNCr  )r   gH׊>))r:   r   r   g]'?)r:   r)  r   gr(?)r   r   in  gD?)r   <   i  gt%?)r)  r   i  gw?)+__name__
__module____qualname____firstlineno__r0   r7   rD   rG   r   markparametrizer[   ra   ri   ru   	fail_slowrx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r3  __static_attributes____classdictcell__)__classdict__s   @r   r   r      s    & # [[T#<=< ><  [[T#451 61$K [[2 
0
 [[22 2
3
3& [[2% %%$
	&
EE 	55 [[^ 	. 	0	0<' [[27 7 [[F I !+!+F [[2= =8 [[2#7 #7r   r   )__doc__scipy.optimizer   r   scipy.optimize._dual_annealingr   r   r   r   r   r	   r
   r   numpyr   numpy.testingr   r   r   r   rd   scipy._lib._utilr   r*   r   r4   r   r   <module>rL     sB   
 2 6 = > 8 ? +   J J * / F7 F7r   