
    ^Mh=                     ~    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dS )	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dS )Accumulatorz This is for testing callbacks.c                 "    d| _         d | _        d S )Nr   )countaccumselfs    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_trustregion.py__init__zAccumulator.__init__   s    



    c                     | xj         dz  c_         | j        t          j        |          | _        d S | xj        |z  c_        d S )N   )r   r   nparray)r   xs     r   __call__zAccumulator.__call__   s?    

a

:!DJJJJJ!OJJJJr   N)__name__
__module____qualname____doc__r   r    r   r   r   r      s8        ))      r   r   c                   h    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d
S )TestTrustRegionSolversc                 <    ddg| _         ddg| _        ddg| _        d S )Ng      ?g       @g333333)x_opt
easy_guess
hard_guessr   s    r   setup_methodz#TestTrustRegionSolvers.setup_method   s'    3Z
*+r   c           
         | j         }t          t          |t          t          ddddi          }t          ||d         d                    t          |d         |d         d	                    t          |d         | j                   d S )
N:0yE>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!   s    _UBIJD$|T.BE E EAiLO,,,#)R 0111#
+++++r   c                    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                   d S )
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    !mmUDO)(,0WEEH H H 	[&000S9&&	222#)R 0111AiL,--{/@AAAAAr   c                     t          j        t          d          5  t          t          | j        t          t          dddd           d d d            d S # 1 swxY w Y   d S )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   s    \. ?A A A 	= 	=UDO$X&*q99= = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   -AAAc                    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                =d S )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>   s   
 ?DO4 	F 	FB211$'/,9MO O OH"1baaT*5,8$+?A A AK &a*8,8$+?A A AN Qt$/,9MO O OE"1baaT*7,8$+?A A AK DJ666DJC(8999DJs(;<<<DJc
333DJC(8999C+,,s53C/D/DDEEEE'	F 	Fr   c           	          | j         | j        | j        fD ]A}t          t          |t
          t          dd          }t          | j        |d                    Bd S )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[   sb    ?DOTZ@ 	0 	0B	!+7 7 7ADJ#////	0 	0r   c                     t          t          | j        t          t          dd          }t          | j        |d                    d S )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   sA    Utzyzk3 3 3
AcF+++++r   c                     t          t          | j        t          t          dd          }t          | j        |d                    d S )Nr(   rH   rW   r   rX   rY   s     r   "test_trust_krylov_start_in_optimumz9TestTrustRegionSolvers.test_trust_krylov_start_in_optimumf   sA    Utzyzn6 6 6
AcF+++++r   c                     t          t          | j        t          t          dd          }t          | j        |d                    d S )Nr(   rI   rW   r   rX   rY   s     r   !test_trust_exact_start_in_optimumz8TestTrustRegionSolvers.test_trust_exact_start_in_optimumk   sA    Utzyzm5 5 5
AcF+++++r   N)r   r   r   r&   r6   r>   rB   markthread_unsaferE   rR   rU   rZ   r\   r^   r   r   r   r!   r!      s        & & &
, , ,
B 
B 
B [= = =F F F:0 0 0, , ,
, , ,
, , , , ,r   r!   )r   rB   numpyr   numpy.testingr   r   r   scipy.optimizer   r   r   r	   r
   r   r!   r   r   r   <module>rd      s          @ @ @ @ @ @ @ @ @ @- - - - - - - - - - - - - -       T, T, T, T, T, T, T, T, T, T,r   