Ë
    âQ(h=  ã                   óp   — d Z ddlZddlZddlmZmZmZ ddlm	Z	m
Z
mZmZmZ  G d„ d«      Z G d„ d«      Zy)	z5
Unit tests for trust-region optimization routines.

é    N)Úassert_Úassert_equalÚassert_allclose)ÚminimizeÚrosenÚ	rosen_derÚ
rosen_hessÚrosen_hess_prodc                   ó   — e Zd ZdZd„ Zd„ Zy)ÚAccumulatorz This is for testing callbacks.c                 ó    — d| _         d | _        y )Nr   )ÚcountÚaccum©Úselfs    úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_trustregion.pyÚ__init__zAccumulator.__init__   s   € ØˆŒ
Øˆ�
ó    c                 ó¦   — | xj                   dz  c_         | j                  €t        j                  |«      | _        y | xj                  |z  c_        y )Né   )r   r   ÚnpÚarray)r   Úxs     r   Ú__call__zAccumulator.__call__   s5   € Ø�
Š
�a‰�
Ø�:‰:ÐÜŸ™ !›ˆD�Jà�JŠJ˜!‰OŽJr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      s   „ Ù)òór   r   c                   ót   — e Zd Zd„ Zd„ Zd„ Zej                  j                  d„ «       Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zy
)ÚTestTrustRegionSolversc                 ó:   — ddg| _         ddg| _        ddg| _        y )Ng      ð?g       @g333333ó¿)Úx_optÚ
easy_guessÚ
hard_guessr   s    r   Úsetup_methodz#TestTrustRegionSolvers.setup_method   s#   € Ø˜3�ZˆŒ
Ø ˜*ˆŒØ ˜+ˆ�r   c           
      óÜ   — | j                   }t        t        |t        t        ddddi¬«      }t        ||d   d   «       t        |d   |d   d	   «       t        |d   | j                  «       y )
Nç:Œ0âŽyE>ÚdoglegÚ
return_allT©ÚjacÚhessÚtolÚmethodÚoptionsÚallvecsr   r   éÿÿÿÿ)r%   r   r   r   r	   r   r#   ©r   Úx0Úrs      r   Útest_dogleg_accuracyz+TestTrustRegionSolvers.test_dogleg_accuracy!   se   € à�_‰_ˆÜ”U˜B¤I´JÀDØ$¨|¸TÐ.BôEˆä˜˜A˜i™L¨™OÔ,Ü˜˜#™  )¡¨RÑ 0Ô1Ü˜˜#™ §
¡
Õ+r   c                 óH  — t        «       }d}t        t        | j                  t        t
        |dd|dœ¬«      }t        |j                  |«       t        t        |d   «      |dz   «       t        |d   |d   d	   «       t        t        |d   dd  «      |j                  «       y )
Né   r)   T)r*   Úmaxiter)r,   r-   Úcallbackr/   r0   r1   r   r   r2   )r   r   r   r%   r   r	   r   r   Úlenr   Úsumr   )r   Úaccumulatorr9   r5   s       r   Útest_dogleg_callbackz+TestTrustRegionSolvers.test_dogleg_callback*   s’   € ä!“mˆØˆÜ”U˜DŸO™O´ÄØ)°(Ø,0¸WÑEôHˆô 	�[×&Ñ&¨Ô0Ü”S˜˜9™Ó&¨°©	Ô2Ü˜˜#™  )¡¨RÑ 0Ô1Üœ˜A˜i™L¨¨Ð,Ó-¨{×/@Ñ/@ÕAr   c                 ó¸   — t        j                  t        d¬«      5  t        t        | j
                  t        t        ddddœ¬«       d d d «       y # 1 sw Y   y xY w)NzMaximum number of iterations)Úmatchr)   Tr   )Údispr9   )r,   r-   r/   r0   )ÚpytestÚwarnsÚRuntimeWarningr   r   r%   r   r	   r   s    r   Útest_dogleg_user_warningz/TestTrustRegionSolvers.test_dogleg_user_warning6   sH   € ä�\‰\œ.Ø ?ôAñ 	=ä”U˜DŸO™O´Ü$¨XØ&*°qÑ9õ=÷	=÷ 	=ñ 	=ús   œ+AÁAc                 ót  — t         }t        }t        }| j                  | j                  fD �]
  }t        ||||ddddi¬«      }t        ||||ddddi¬«      }t        ||||ddddi¬«      }t        ||||ddddi¬«      }t        ||||dd	ddi¬«      }	t        | j                  |d
   «       t        | j                  |d
   «       t        | j                  |d
   «       t        | j                  |d
   «       t        | j                  |	d
   «       t        t        |d   «      t        |d   «      k  «       �Œ y )Nr(   r)   r*   Tr+   ú	trust-ncgútrust-krylovz	newton-cgútrust-exactr   r1   )
r   r   r	   r$   r%   r   r   r#   r   r;   )
r   ÚfÚgÚhr4   Úr_doglegÚr_trust_ncgÚr_trust_krylovÚr_ncgÚr_iteratives
             r   Útest_solver_concordancez.TestTrustRegionSolvers.test_solver_concordance>   sS  € ô
 ˆÜˆÜˆØ—?‘? D§O¡OÐ4ó 	FˆBÜ  2¨1°1¸$Ø'/¸,ÈÐ9MôOˆHä" 1 b¨a°a¸TØ*5Ø,8¸$Ð+?ôAˆKô & a¨°¸ÀØ*8Ø,8¸$Ð+?ôAˆNô ˜Q ¨°°tØ$/¸,ÈÐ9MôOˆEä" 1 b¨a°a¸TØ*7Ø,8¸$Ð+?ôAˆKô ˜DŸJ™J¨°©Ô6Ü˜DŸJ™J¨°CÑ(8Ô9Ü˜DŸJ™J¨°sÑ(;Ô<Ü˜DŸJ™J¨¨c©
Ô3Ü˜DŸJ™J¨°CÑ(8Ô9Ü”C˜ Ñ+Ó,¬s°5¸Ñ3CÓ/DÑDÖEñ'	Fr   c           	      óÀ   — | j                   | j                  | j                  fD ]8  }t        t        |t
        t        dd¬«      }t        | j                  |d   «       Œ: y )Nr(   rG   )r,   Úhesspr.   r/   r   )r$   r%   r#   r   r   r   r
   r   r3   s      r   Útest_trust_ncg_hesspz+TestTrustRegionSolvers.test_trust_ncg_hessp[   sM   € Ø—?‘? D§O¡O°T·Z±ZÐ@ò 	0ˆBÜœ ¬	¼Ø!¨+ô7ˆAä˜DŸJ™J¨¨#©Õ/ñ	0r   c                 ó„   — t        t        | j                  t        t        dd¬«      }t        | j                  |d   «       y )Nr(   rG   ©r4   r,   r-   r.   r/   r   ©r   r   r#   r   r	   r   ©r   r5   s     r   Útest_trust_ncg_start_in_optimumz6TestTrustRegionSolvers.test_trust_ncg_start_in_optimuma   s/   € Ü”U˜tŸz™z¬y¼zØ kô3ˆä˜Ÿ
™
 A c¡FÕ+r   c                 ó„   — t        t        | j                  t        t        dd¬«      }t        | j                  |d   «       y )Nr(   rH   rW   r   rX   rY   s     r   Ú"test_trust_krylov_start_in_optimumz9TestTrustRegionSolvers.test_trust_krylov_start_in_optimumf   s/   € Ü”U˜tŸz™z¬y¼zØ nô6ˆä˜Ÿ
™
 A c¡FÕ+r   c                 ó„   — t        t        | j                  t        t        dd¬«      }t        | j                  |d   «       y )Nr(   rI   rW   r   rX   rY   s     r   Ú!test_trust_exact_start_in_optimumz8TestTrustRegionSolvers.test_trust_exact_start_in_optimumk   s/   € Ü”U˜tŸz™z¬y¼zØ mô5ˆä˜Ÿ
™
 A c¡FÕ+r   N)r   r   r   r&   r6   r>   rB   ÚmarkÚthread_unsaferE   rR   rU   rZ   r\   r^   r   r   r   r!   r!      sJ   „ ò&ò
,ò
Bð ‡[�[×Ññ=ó ð=òFò:0ò,ò
,ó
,r   r!   )r   rB   Únumpyr   Únumpy.testingr   r   r   Úscipy.optimizer   r   r   r	   r
   r   r!   r   r   r   ú<module>rd      s8   ðñó Û ß @Ñ @÷-õ -÷ñ ÷T,ò T,r   