§
    fŠtjÛ@  ã                   óÄ   — d Z ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
mZ dd	lZdd	lZdd
lmZmZmZ ddlmZ ddlmZ dd	lZ G d„ d¦  «        Zd	S )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                   óp  — e Zd Zd„ Zd„ Zd,d„Zd,d„Zej         	                    dg d¢¦  «        d„ ¦   «         Z
ej         	                    dg d	¢¦  «        d
„ ¦   «         Zd„ Zd„ Zej                             d¦  «        d„ ¦   «         Zd„ Zej                             d¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zej                             d¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ej         	                    d g d!¢¦  «        d"„ ¦   «         Z!d#„ Z"d$„ Z#ej                             d¦  «        d%„ ¦   «         Z$ej         	                    d&g d'¢¦  «        d(„ ¦   «         Z%ej                             d¦  «        d)„ ¦   «         Z&ej                             d¦  «        d*„ ¦   «         Z'd+S )-ÚTestDualAnnealingc                 óð   — d„ | _         dgdz  | _        | j        dz  | _        d| _        d| _        d| _        d| _        d	| _        t          j	        ¦   «         | _
        t          j	        ¦   «         | _        d S )
Nc                 ó   — t           j        S ©N)ÚnpÚinf©Úxs    úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/optimize/tests/test__dual_annealing.pyú<lambda>z0TestDualAnnealing.setup_method.<locals>.<lambda>   s   € ¥2¤6€ ó    ©ç{®GázÀç{®Gáz@é   é   iˆ  in  gš™™™™™¹?çö(\�Âõ@éÒ  )Ú	weirdfuncÚ	ld_boundsÚ	hd_boundsÚnbtestvaluesÚhigh_temperatureÚlow_temperatureÚqvÚseedÚ	threadingÚlocalÚnb_fun_callÚngev©Úselfs    r   Úsetup_methodzTestDualAnnealing.setup_method   sq   € à)Ð)ˆŒà'˜¨1Ñ,ˆŒàœ¨!Ñ+ˆŒà ˆÔØ $ˆÔØ"ˆÔØˆŒØˆŒ	Ý$œ?Ñ,Ô,ˆÔÝ”OÑ%Ô%ˆŒ	ˆ	ˆ	r   c                 ó   — |dk    rdS d S )Nç      ð?T© )r1   r   ÚfÚcontexts       r   ÚcallbackzTestDualAnnealing.callback+   s   € ð �Š8ˆ8Ø�4ð ˆ8r   r5   c           	      ó@  — |r|}nd}t          j        ||z
  dz  dt          j        dt           j        z  ||z
  z  ¦  «        z  z
  ¦  «        dt          j        |¦  «        z  z   |z   }t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        |S )Nr   r    é
   Úcé   )r   ÚsumÚcosÚpiÚsizeÚhasattrr.   r;   )r1   r   ÚargsÚshiftÚys        r   ÚfunczTestDualAnnealing.func1   s¸   € àð 	ØˆEˆEàˆEÝŒF�A˜‘I !Ñ# b­2¬6°!µb´e±)Ø�‰Iñ3ñ ,ô ,ñ 'ñ ñ ô Ø¥¤¨¡
¤
™?ñ+Ø-2ñ3ˆå�tÔ'¨Ñ-Ô-ð 	#Ø!"ˆDÔÔØÔÐÔ˜aÑÐÔØˆr   c                 óˆ   — t          | j        d¦  «        sd| j        _        | j        xj        dz  c_        t          |g|¢R Ž S )Nr;   r   r<   )rA   r/   r;   r   )r1   r   rB   s      r   Úrosen_der_wrapperz#TestDualAnnealing.rosen_der_wrapper>   sG   € Ý�t”y #Ñ&Ô&ð 	ØˆDŒIŒKØŒ	ˆŒ�qÑˆŒÝ˜Ð"˜TÐ"Ð"Ð"Ð"r   r*   )gš™™™™™ñ?g�Âõ(\�ö?r    r"   ç333333@c                 ól  — t           j                             d¦  «        }t          t	          | j        Ž ¦  «        }t          j        |d         ¦  «        }t          j        |d         ¦  «        }|j        }t          ||||¦  «        }t          j	        |¦  «        }| 
                    |d| j        ¦  «        }	t          t          j        |	d¦  «        d¦  «         t          j	        |¦  «        }| 
                    ||| j        ¦  «        }
t          t          j        |
d         d¦  «        d¦  «         d S )Nr#   r   r<   T)r   ÚrandomÚdefault_rngÚlistÚzipr%   Úarrayr@   r	   ÚzerosÚvisitingr(   r   Ú	not_equal)r1   r*   ÚrngÚluÚlowerÚupperÚdimÚvdÚvaluesÚ
x_step_lowÚx_step_highs              r   Útest_visiting_steppingz(TestDualAnnealing.test_visiting_steppingF   só   € åŒi×#Ò# DÑ)Ô)ˆÝ•#�t”~Ð&Ñ'Ô'ˆÝ”˜˜Aœ‘”ˆÝ”˜˜Aœ‘”ˆØŒjˆÝ! %¨°°CÑ8Ô8ˆÝ”˜#‘”ˆØ—[’[ ¨¨DÔ,AÑBÔBˆ
å•R”\ *¨aÑ0Ô0°$Ñ7Ô7Ð7Ý”˜#‘”ˆØ—k’k &¨#¨tÔ/DÑEÔEˆå•R”\ +¨a¤.°!Ñ4Ô4°dÑ;Ô;Ð;Ð;Ð;r   )g      @r"   rH   c                 óÎ  — t           j                             d¦  «        }t          t	          | j        Ž ¦  «        }t          j        |d         ¦  «        }t          j        |d         ¦  «        }t          ||||¦  «        }|                     | j	        | j
        ¦  «        }t          t          j        |¦  «        d¦  «         t          dt          j        |¦  «        ¦  «         d S )Nr#   r   r<   g»½×Ùß|Û=g    _ B)r   rJ   rK   rL   rM   r%   rN   r	   Úvisit_fnr(   r'   r   ÚminÚmax)r1   r*   rR   rS   rT   rU   rW   rX   s           r   Ú#test_visiting_dist_high_temperaturez5TestDualAnnealing.test_visiting_dist_high_temperatureW   s³   € åŒi×#Ò# DÑ)Ô)ˆÝ•#�t”~Ð&Ñ'Ô'ˆÝ”˜˜Aœ‘”ˆÝ”˜˜Aœ‘”ˆÝ! %¨°°CÑ8Ô8ˆð —’˜TÔ2°DÔ4EÑFÔFˆõ 	�"œ& ™.œ.¨%Ñ0Ô0Ð0Ý˜%¥¤¨¡¤Ñ0Ô0Ð0Ð0Ð0r   c                 ó>  — t          | j        ¦  «        }t          t          | j        Ž ¦  «        }t          j        |d         ¦  «        }t          j        |d         ¦  «        }t          ||¦  «        }t          t          |j
        |t          d ¦  «        ¦  «         d S )Nr   r<   )r   r$   rL   rM   r%   r   rN   r   Úassert_raisesÚ
ValueErrorÚresetr   )r1   ÚowfrS   rT   rU   Úess         r   Ú
test_resetzTestDualAnnealing.test_resetj   s{   € Ý! $¤.Ñ1Ô1ˆÝ•#�t”~Ð&Ñ'Ô'ˆÝ”˜˜Aœ‘”ˆÝ”˜˜Aœ‘”ˆÝ˜ Ñ&Ô&ˆÝ•j "¤(¨CÕ1CÀDÑ1IÔ1IÑJÔJÐJÐJÐJr   c                 óˆ   — t          | j        | j        | j        ¬¦  «        }t	          |j        dd¬¦  «         |j        sJ ‚d S ©N©rR   ç        gê-�™—q=©Úatol)r   rE   r%   r+   r   ÚfunÚsuccess©r1   Úrets     r   Útest_low_dimzTestDualAnnealing.test_low_dimr   sM   € ÝØŒI�t”~¨4¬9ð6ñ 6ô 6ˆå˜œ ¨%Ð0Ñ0Ô0Ð0ØŒ{ÐÐˆ{ÐÐr   r:   c                 óˆ   — t          | j        | j        | j        ¬¦  «        }t	          |j        dd¬¦  «         |j        sJ ‚d S ri   )r   rE   r&   r+   r   rn   ro   rp   s     r   Útest_high_dimzTestDualAnnealing.test_high_dimx   sF   € å˜TœY¨¬¸D¼IÐFÑFÔFˆÝ˜œ ¨%Ð0Ñ0Ô0Ð0ØŒ{ÐÐˆ{ÐÐr   c                 óx   — t          | j        | j        d| j        ¬¦  «        }t	          |j        dd¬¦  «         d S )NT)Úno_local_searchr+   rk   ç-Cëâ6?rl   ©r   rE   r%   r+   r   rn   rp   s     r   Útest_low_dim_no_lsz$TestDualAnnealing.test_low_dim_no_ls~   sE   € Ý˜TœY¨¬Ø-1¸¼	ðCñ Cô Cˆå˜œ ¨$Ð/Ñ/Ô/Ð/Ð/Ð/r   c                 óx   — t          | j        | j        d| j        ¬¦  «        }t	          |j        dd¬¦  «         d S )NT©rv   rR   rk   giUMu?rl   )r   rE   r&   r+   r   rn   rp   s     r   Útest_high_dim_no_lsz%TestDualAnnealing.test_high_dim_no_lsƒ   sE   € å˜TœY¨¬Ø-1°t´yðBñ Bô Bˆå˜œ ¨&Ð1Ñ1Ô1Ð1Ð1Ð1r   c                 óž   — d| j         _        t          | j        | j        | j        ¬¦  «        }t          | j         j        |j        ¦  «         d S )Nr   rj   ©r.   r;   r   rE   r%   r+   r   Únfevrp   s     r   Útest_nb_fun_callz"TestDualAnnealing.test_nb_fun_call‰   sE   € ØˆÔÔÝ˜TœY¨¬¸D¼IÐFÑFÔFˆÝ�TÔ%Ô'¨¬Ñ2Ô2Ð2Ð2Ð2r   c                 ó    — d| j         _        t          | j        | j        d| j        ¬¦  «        }t          | j         j        |j        ¦  «         d S )Nr   Tr{   r~   rp   s     r   Útest_nb_fun_call_no_lsz(TestDualAnnealing.test_nb_fun_call_no_lsŽ   sQ   € ØˆÔÔÝ˜TœY¨¬Ø-1°t´yðBñ Bô Bˆå�TÔ%Ô'¨¬Ñ2Ô2Ð2Ð2Ð2r   c                 óR   — t          t          t          | j        | j        ¦  «         d S r   )rb   rc   r   r$   r%   r0   s    r   Útest_max_reinitz!TestDualAnnealing.test_max_reinit”   s+   € Ý•j¥.°$´.Ø”nñ	&ô 	&ð 	&ð 	&ð 	&r   c                 ó4  — t          | j        | j        | j        ¬¦  «        }t          | j        | j        | j        ¬¦  «        }t          | j        | j        | j        ¬¦  «        }t	          |j        |j        ¦  «         t	          |j        |j        ¦  «         d S )Nrj   )r   rE   r%   r+   r   r   )r1   Úres1Úres2Úres3s       r   Útest_reproducez TestDualAnnealing.test_reproduce˜   s€   € å˜dœi¨¬¸T¼YÐGÑGÔGˆÝ˜dœi¨¬¸T¼YÐGÑGÔGˆÝ˜dœi¨¬¸T¼YÐGÑGÔGˆõ 	�T”V˜TœVÑ$Ô$Ð$Ý�T”V˜TœVÑ$Ô$Ð$Ð$Ð$r   c                 ó&  — t           j                             d¦  «        }t          | j        | j        |¬¦  «        }t           j                             d¦  «        }t          | j        | j        |¬¦  «        }t          |j        |j        ¦  «         d S )Nr<   rj   )r   rJ   rK   r   rE   r%   r   r   )r1   rR   r†   r‡   s       r   Útest_rand_genzTestDualAnnealing.test_rand_gen¢   sz   € õ Œi×#Ò# AÑ&Ô&ˆå˜dœi¨¬¸SÐAÑAÔAˆåŒi×#Ò# AÑ&Ô&ˆÝ˜dœi¨¬¸SÐAÑAÔAˆõ 	�T”V˜TœVÑ$Ô$Ð$Ð$Ð$r   c                 óP   — g d¢}t          t          t          | j        |¦  «         d S )N)r   )r<   r   )r   r   )rb   rc   r   rE   )r1   Úwrong_boundss     r   Útest_bounds_integrityz'TestDualAnnealing.test_bounds_integrity¯   s4   € Ø<Ð<Ð<ˆÝ•j¥.°$´)Ø"ñ	$ô 	$ð 	$ð 	$ð 	$r   c                 ó4  — dt           j         dfdg}t          t          t          | j        |¦  «         ddt           j        fdg}t          t          t          | j        |¦  «         ddt           j        fdg}t          t          t          | j        |¦  «         d S )N)éûÿÿÿé   r   )r   r   rb   rc   r   rE   Únan)r1   Úinvalid_boundss     r   Útest_bound_validityz%TestDualAnnealing.test_bound_validity´   s›   € Ø!¥R¤V G¨Q <°Ð9ˆÝ•j¥.°$´)Ø$ñ	&ô 	&ð 	&à! A¥r¤v ;°Ð8ˆÝ•j¥.°$´)Ø$ñ	&ô 	&ð 	&à! A¥r¤v ;°Ð8ˆÝ•j¥.°$´)Ø$ñ	&ô 	&ð 	&ð 	&ð 	&r   c                 óà   — d„ }t          t          ddgddg¦  «        ¦  «        }t          j        t          d¬¦  «        5  t          ||d|d	œ¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó<   — t          j        | dz
  | dz
  z  ¦  «        S ©Nr‘   r<   ©r   r=   r   s    r   rE   zKTestDualAnnealing.test_deprecated_local_search_options_bounds.<locals>.funcÀ   ó   € Ý”6˜1˜q™5 Q¨¡UÑ+Ñ,Ô,Ð,r   éúÿÿÿr�   é   r‘   úMethod CG cannot handle ©ÚmatchÚCG©ÚmethodÚbounds©r¢   Úminimizer_kwargs)rL   rM   ÚpytestÚwarnsÚRuntimeWarningr   ©r1   rE   r¢   s      r   Ú+test_deprecated_local_search_options_boundsz=TestDualAnnealing.test_deprecated_local_search_options_bounds¿   sì   € ð	-ð 	-ð 	-å•c˜2˜r˜( Q¨ FÑ+Ô+Ñ,Ô,ˆõ Œ\�.Ð0KÐLÑLÔLð 	Eð 	EÝØØØ,0¸FÐ!CÐ!CðEñ Eô Eð Eð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Es   Á A#Á#A'Á*A'c                 ó
  — d„ }t          t          ddgddg¦  «        ¦  «        }t          ||d|dœ¬¦  «         t          j        t
          d	¬
¦  «        5  t          ||d|dœ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó<   — t          j        | dz
  | dz
  z  ¦  «        S r—   r˜   r   s    r   rE   z<TestDualAnnealing.test_minimizer_kwargs_bounds.<locals>.funcÌ   r™   r   rš   r�   r›   r‘   ÚSLSQPr    r£   rœ   r�   rŸ   )rL   rM   r   r¥   r¦   r§   r¨   s      r   Útest_minimizer_kwargs_boundsz.TestDualAnnealing.test_minimizer_kwargs_boundsË   s  € ð	-ð 	-ð 	-å•c˜2˜r˜( Q¨ FÑ+Ô+Ñ,Ô,ˆåØØØ(/¸6ÐBÐBð	Dñ 	Dô 	Dð 	Dõ
 Œ\�.Ð0KÐLÑLÔLð 	Eð 	EÝØØØ,0¸FÐ!CÐ!CðEñ Eô Eð Eð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Es   ÁA8Á8A<Á?A<c                 ó  — t          | j        | j        d| j        ¬¦  «        }t	          t          t          | j        ¦  «        t          j        z  t          j	        ¦  «        t          j
        ¦  «        }|j        d|z   k    sJ ‚|j        rJ ‚d S )Néd   )ÚmaxfunrR   )r   rE   r%   r+   r^   r_   Úlenr   ÚLS_MAXITER_RATIOÚLS_MAXITER_MINÚLS_MAXITER_MAXr   ro   )r1   rq   Úls_max_iters      r   Útest_max_fun_lsz!TestDualAnnealing.test_max_fun_lsÛ   s“   € Ý˜TœY¨¬¸sØ!%¤ð,ñ ,ô ,ˆõ �#Ý�”ÑÔÕ"4Ô"EÑEÝÔ-ñ/ô /õ Ô-ñ/ô /ˆð Œx˜3 Ñ,Ò,Ð,Ð,Ð,Ø”;ÐÐˆÐÐr   c                 óx   — t          | j        | j        dd| j        ¬¦  «        }|j        dk    sJ ‚|j        rJ ‚d S )NTiô  )rv   r°   rR   )r   rE   r%   r+   r   ro   rp   s     r   Útest_max_fun_no_lsz$TestDualAnnealing.test_max_fun_no_lsæ   sL   € Ý˜TœY¨¬Ø-1¸#À4Ä9ðNñ Nô NˆàŒx˜3ŠˆˆˆØ”;ÐÐˆÐÐr   c                 ód   — t          | j        | j        d| j        ¬¦  «        }|j        dk    sJ ‚d S )Ni¼  )ÚmaxiterrR   )r   rE   r%   r+   Únitrp   s     r   Útest_maxiterzTestDualAnnealing.test_maxiterì   s8   € Ý˜TœY¨¬ÀØ!%¤ð,ñ ,ô ,ˆàŒw˜#Š~ˆ~ˆ~ˆ~ˆ~ˆ~r   c                 óx   — t          | j        | j        d| j        ¬¦  «        }t	          |j        dd¬¦  «         d S )N©çn†ðù!	@)rB   rR   r¿   ç�íµ ÷Æ°>rl   rx   rp   s     r   Útest_fun_args_lsz"TestDualAnnealing.test_fun_args_lsò   sB   € Ý˜TœY¨¬Ø#-°D´Ið?ñ ?ô ?ˆå˜œ ¨tÐ4Ñ4Ô4Ð4Ð4Ð4r   c                 óz   — t          | j        | j        dd| j        ¬¦  «        }t	          |j        dd¬¦  «         d S )Nr¾   T)rB   rv   rR   r¿   rw   rl   rx   rp   s     r   Útest_fun_args_no_lsz%TestDualAnnealing.test_fun_args_no_lsø   sG   € Ý˜TœY¨¬Ø#.ÀØ!%¤ð,ñ ,ô ,ˆõ 	˜œ ¨tÐ4Ñ4Ô4Ð4Ð4Ð4r   c                 ó¢   — t          | j        | j        | j        | j        ¬¦  «        }|j        dk    sJ ‚d|j        d         v sJ ‚|j        rJ ‚d S )N)r8   rR   r4   z
stop earlyr   )r   rE   r%   r8   r+   rn   Úmessagero   rp   s     r   Útest_callback_stopz$TestDualAnnealing.test_callback_stopþ   se   € õ ˜TœY¨¬Ø&*¤m¸¼ðDñ Dô DˆàŒw˜#Š~ˆ~ˆ~ˆ~Ø˜sœ{¨1œ~Ð-Ð-Ð-Ð-Ø”;ÐÐˆÐÐr   zmethod, atol))zNelder-Meadgñhãˆµøô>)ÚCOBYLAgñhãˆµøä>)ÚCOBYQAç:Œ0âŽyE>)ÚPowellrÉ   )rŸ   rÉ   )ÚBFGSrÉ   )ÚTNCrÉ   )r¬   gH¯¼šò×Š>c                 ó”   — t          | j        | j        t          |¬¦  «        | j        ¬¦  «        }t          |j        d|¬¦  «         d S )N©r¡   ©r¤   rR   rk   rl   )r   rE   r%   Údictr+   r   rn   )r1   r¡   rm   rq   s       r   Útest_multi_ls_minimizerz)TestDualAnnealing.test_multi_ls_minimizer  sR   € õ ˜TœY¨¬Ý.2¸&Ð.AÑ.AÔ.AØ!%¤ð,ñ ,ô ,ˆõ 	˜œ ¨$Ð/Ñ/Ô/Ð/Ð/Ð/r   c                 ó¦   — t          t          t          | j        | j        d¬¦  «         t          t          t          | j        | j        d¬¦  «         d S )Nr<   )Úrestart_temp_ratior   )rb   rc   r   rE   r%   r0   s    r   Útest_wrong_restart_tempz)TestDualAnnealing.test_wrong_restart_temp  sX   € Ý•j¥.°$´)Ø”n¸ð	<ñ 	<ô 	<ð 	<å•j¥.°$´)Ø”n¸ð	<ñ 	<ô 	<ð 	<ð 	<ð 	<r   c                 óŠ   — d| j         i}t          t          | j        || j        ¬¦  «        }|j        | j        j        k    sJ ‚d S )NÚjacrÏ   )rG   r   r
   r%   r+   Únjevr/   r;   )r1   Úminimizer_optsrq   s      r   Útest_gradient_gnevz$TestDualAnnealing.test_gradient_gnev  sT   € à�4Ô)ð
ˆõ �U D¤NØ.<Ø!%¤ð,ñ ,ô ,ˆð Œx˜4œ9œ;Ò&Ð&Ð&Ð&Ð&Ð&r   c           	      óÞ   — d„ }dgdz  }dgdz  }t          |t          t          ||¦  «        ¦  «        d¬¦  «        }t          |j        g d¢d¬	¦  «         t          |j        d
d¬	¦  «         d S )Nc                 ó°   — t          j        | | z  dt          j        dt           j        z  | z  ¦  «        z  z
  ¦  «        dt          j        | ¦  «        z  z   S ©Nr:   r    ©r   r=   r>   r?   r@   r   s    r   rE   z3TestDualAnnealing.test_from_docstring.<locals>.func(  sE   € Ý”6˜!˜a™% "¥r¤v¨aµ"´%©i¸!©mÑ'<Ô'<Ñ"<Ñ<Ñ=Ô=ÀÅRÄWÈQÁZÄZÁÑOÐOr   r   r:   r   r#   ©r¢   rR   )
g„[Çt»P2¾g“f¯ÇÒ0¾gË¯>ßíú¾gçç,â1¾gft˜;¾g¿š¤h<¾g#žÖÜç0¾gÆÁ¦(<¾g¿eÔ‘:¾gi¨Äé€5¾g:Œ0âŽye>rl   rk   gê-�™—a=)r   rL   rM   r   r   rn   )r1   rE   ÚlwÚuprq   s        r   Útest_from_docstringz%TestDualAnnealing.test_from_docstring&  sœ   € ð	Pð 	Pð 	PàˆW�r‰\ˆØˆV�b‰[ˆÝ˜T­$­s°2°r©{¬{Ñ*;Ô*;ÀÐFÑFÔFˆÝ˜œð*ð *ð *ð 15ð		6ñ 	6ô 	6ð 	6õ
 	˜œ °Ð6Ñ6Ô6Ð6Ð6Ð6r   z'new_e, temp_step, accepted, accept_rate))r   r¯   éè  g„‘]Öø'ð?)r   r    râ   g‹r�ù¢(ô?)r:   r¯   in  gíþD…ì?)r:   é<   i·  g‰t%Íå?)r    r¯   iÞ  gw’‘ô«ï?c           	      óê  — t          d¦  «        }d}d}d}d}	t          |¦  «        D ]n}
t          d d ¬¦  «        }|                     |	dg¦  «         t	          |d d d ||¦  «        }||_        |                     d|dg¬¦  «         |j        |k    r|dz  }Œo||k    sJ ‚dd|z
  ||	z
  z  |z  z
  }|dk    rdn+t          j	        t          j
        |¦  «        d|z
  z  ¦  «        }t          ||¦  «         d S )	Né{   r   râ   r�   r<   )rT   rU   r    )ÚjÚeÚx_visit)r   Úranger   Úupdate_currentr   Útemperature_stepÚaccept_rejectÚcurrent_energyr   ÚexpÚlogr   )r1   Únew_eÚ	temp_stepÚacceptedÚaccept_rateÚrsÚcount_acceptedÚ
iterationsÚaccept_paramrí   Ú_Úenergy_stateÚchainÚpqvÚrates                  r   Ú test_accept_reject_probabilisticz2TestDualAnnealing.test_accept_reject_probabilistic4  s:  € õ   Ñ$Ô$ˆàˆØˆ
àˆØˆÝ�zÑ"Ô"ð 	$ð 	$ˆAÝ&¨T¸Ð>Ñ>Ô>ˆLà×'Ò'¨¸¸Ñ<Ô<Ð<å!Ø˜d D¨$°°LñBô BˆEð &/ˆEÔ"ð ×Ò ! u°q°cÐÑ:Ô:Ð:ØÔ*¨eÒ3Ð3Ø !Ñ#�øà Ò)Ð)Ð)Ð)ð �1�|Ñ#¨°Ñ(>Ñ?À)ÑKÑKˆØ˜1’H�Hˆqˆq¥"¤&­¬°©¬¸¸LÑ8HÑ)IÑ"JÔ"Jˆå˜˜kÑ*Ô*Ð*Ð*Ð*r   c                 óÖ  — d„ }dgdz  }dgdz  }d|d<   d|d<   d	|d
<   d|d<   t          ||¦  «        }t          ||d¬¦  «        }t          t          ||¦  «        ¦  «        }t          ||d¬¦  «        }t	          |j        |j        d¬¦  «         t	          |j        t          j        dd
¦  «        d¬¦  «         t	          |j        |j        d¬¦  «         |j	        |j	        k    sJ ‚d S )Nc                 ó´   — t          j        | | z  dt          j        dt           j        z  | z  ¦  «        z  z
  ¦  «        dt          j        | ¦  «        z  z   }|S rÜ   rÝ   )r   r6   s     r   rE   z1TestDualAnnealing.test_bounds_class.<locals>.funca  sI   € Ý”�q˜1‘u˜r¥B¤F¨1­r¬u©9°q©=Ñ$9Ô$9Ñ9Ñ9Ñ:Ô:¸RÅ"Ä'È!Á*Ä*¹_ÑLˆAØˆHr   r   r‘   r   g       Àr   g      ð¿r<   r4   é   g       @r!   r#   rÞ   rÉ   rl   éþÿÿÿgH¯¼šò×z>g•Ö&è.>)
r   r   rL   rM   r   r   r   Úarangern   r   )r1   rE   rß   rà   r¢   Úret_bounds_classÚ
bounds_oldÚret_bounds_lists           r   Útest_bounds_classz#TestDualAnnealing.test_bounds_class^  s  € ð	ð 	ð 	ð ˆW�q‰[ˆØˆV�a‰Zˆð ˆˆ1‰Øˆˆ1‰Øˆˆ1‰Øˆˆ1‰õ ˜˜B‘”ˆÝ)¨$°vÀ4ÐHÑHÔHÐå�#˜b "™+œ+Ñ&Ô&ˆ
Ý(¨°jÀdÐKÑKÔKˆõ 	Ð(Ô*¨OÔ,=ÀDÐIÑIÔIÐIÝÐ(Ô*­B¬I°b¸!Ñ,<Ô,<À4ÐHÑHÔHÐHÝ˜Ô+Ð-=Ô-AÈÐMÑMÔMÐMØÔ#Ð'7Ô'<Ò<Ð<Ð<Ð<Ð<Ð<r   c                 óT  ‡	— t           j                             d¦  «        }d„ }d„ }d„ Š	ˆ	fd„}t          |dddgddgg|t	          d	¬
¦  «        ¬¦  «        }t          |dddgddgg|t	          d	|¬¦  «        ¬¦  «        }t          |dddgddgg|t	          d|‰	¬¦  «        ¬¦  «        }t          |dddgddgg|t	          d||¬¦  «        ¬¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         d S )Nl   ¦°]k@A`Q c                 óT   — t          j        t          j        | |z  ¦  «        ¦  «        S r   )r   r=   rî   ©r   Úpowers     r   r6   zETestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.f‚  s    € Ý”6�"œ&  e¡Ñ,Ô,Ñ-Ô-Ð-r   c                 óH   — t          j        | |z  ¦  «        |z  | |dz
  z  z  S )Nr<   )r   rî   r	  s     r   rÖ   zGTestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.jac…  s)   € Ý”6˜!˜u™*Ñ%Ô%¨Ñ-°°e¸a±iÑ0@Ñ@Ð@r   c                 óŠ   — t          j        |t          j        | |z  ¦  «        z  | |dz
  z  z  || |z  z  |z   dz
  z  ¦  «        S )Nr    r<   )r   Údiagrî   r	  s     r   ÚhesszHTestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.hessˆ  sU   € å”7Ø�œ˜q E™zÑ*Ô*Ñ*¨Q°5¸1±9Ñ-=Ñ=Ø˜˜e™Ñ# eÑ+¨aÑ/ñ1ñô ð r   c                 ó"   •—  ‰| |¦  «        |z  S r   r5   )r   Úpr
  r  s      €r   ÚhesspzITestDualAnnealing.test_callable_jac_hess_with_args_gh11052.<locals>.hessp�  s   ø€ Ø�4˜˜5‘>”> AÑ%Ð%r   )r    r   r<   zL-BFGS-BrÎ   )rB   r¢   rR   r¤   )r¡   rÖ   z	newton-cg)r¡   rÖ   r  )r¡   rÖ   r  rÀ   )Úrtol)r   rJ   rK   r   rÐ   r   rn   )
r1   rR   r6   rÖ   r  r†   r‡   rˆ   Úres4r  s
            @r   Ú(test_callable_jac_hess_with_args_gh11052z:TestDualAnnealing.test_callable_jac_hess_with_args_gh11052{  sÇ  ø€ õ Œi×#Ò#Ð$8Ñ9Ô9ˆð	.ð 	.ð 	.ð	Að 	Að 	Að	ð 	ð 	ð	&ð 	&ð 	&ð 	&ð 	&õ ˜a e°a¸°V¸aÀ¸VÐ4DÈ#Ý/3¸:Ð/FÑ/FÔ/FðHñ Hô Hˆå˜a e°a¸°V¸aÀ¸VÐ4DÈ#Ý/3¸:Ø8;ð0=ñ 0=ô 0=ð>ñ >ô >ˆõ ˜a e°a¸°V¸aÀ¸VÐ4DÈ#Ý/3¸;Ø8;À$ð0Hñ 0Hô 0HðIñ Iô Iˆõ ˜a e°a¸°V¸aÀ¸VÐ4DÈ#Ý/3¸;Ø8;À5ð0Jñ 0Jô 0JðKñ Kô Kˆõ 	˜œ $¤(°Ð6Ñ6Ô6Ð6Ý˜œ $¤(°Ð6Ñ6Ô6Ð6Ý˜œ $¤(°Ð6Ñ6Ô6Ð6Ð6Ð6r   N)r5   )(Ú__name__Ú
__module__Ú__qualname__r2   r8   rE   rG   r¥   ÚmarkÚparametrizer[   r`   rg   rr   Ú	fail_slowrt   ry   r|   r€   r‚   r„   r‰   r‹   rŽ   r”   r©   r­   r¶   r¸   r¼   rÁ   rÃ   rÆ   rÑ   rÔ   rÙ   rá   rý   r  r  r5   r   r   r   r      sy  € € € € € ð&ð &ð &ð ð ð ðð ð ð ð#ð #ð #ð #ð „[×Ò˜TÐ#<Ð#<Ð#<Ñ=Ô=ð<ð <ñ >Ô=ð<ð  „[×Ò˜TÐ#4Ð#4Ð#4Ñ5Ô5ð1ð 1ñ 6Ô5ð1ð$Kð Kð Kðð ð ð „[×Ò˜2ÑÔðð ñ Ôðð
0ð 0ð 0ð
 „[×Ò˜2ÑÔð2ð 2ñ Ôð2ð
3ð 3ð 3ð
3ð 3ð 3ð&ð &ð &ð „[×Ò˜2ÑÔð%ð %ñ Ôð%ð%ð %ð %ð$ð $ð $ð
	&ð 	&ð 	&ð
Eð 
Eð 
EðEð Eð Eð 	ð 	ð 	ðð ð ðð ð ð5ð 5ð 5ð5ð 5ð 5ðð ð ð „[×Ò˜^ð 	.ð 	.ð 	.ñ 	ô 	ð0ð 0ñ	ô 	ð0ð<ð <ð <ð'ð 'ð 'ð „[×Ò˜2ÑÔð7ð 7ñ Ôð7ð „[×ÒÐFð Ið Ið Iñ ô ð!+ð !+ñô ð!+ðF „[×Ò˜2ÑÔð=ð =ñ Ôð=ð8 „[×Ò˜2ÑÔð#7ð #7ñ Ôð#7ð #7ð #7r   r   )Ú__doc__Úscipy.optimizer   r   Úscipy.optimize._dual_annealingr   r   r   r   r	   r
   r   r¥   Únumpyr   Únumpy.testingr   r   r   r   rb   Úscipy._lib._utilr   r,   r   r5   r   r   ú<module>r!     s:  ðð
ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø =Ð =Ð =Ð =Ð =Ð =Ø >Ð >Ð >Ð >Ð >Ð >Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø €€€Ø Ð Ð Ð Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ *Ð *Ð *Ð *Ð *Ð *Ø /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð ðF7ð F7ð F7ð F7ð F7ñ F7ô F7ð F7ð F7ð F7r   