
    4[g]                     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)	zt
Unit tests for trust-region optimization routines.

To run it in its simplest form::
  nosetests test_optimize.py

    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    `/var/www/html/bid-api/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
::!DJJJ!OJr   N)__name__
__module____qualname____doc__r   r    r   r   r   r      s    )r   r   c                   B    e Zd Zd Zd Zd Z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#    3Z
*+r   c           
          | j                   }t        t        |t        t        ddddi      }t        ||d   d          t        |d   |d   d	          t        |d   | j                         y )
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$   se    __UBIJD$|T.BEAiL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UDOO)(,0WEH 	[&&0S9&	2#)R 01AiL,-{/@/@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_warning9   sF    \\. ?AUDOO$X&*q9=A A A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@   sL   
 ??DOO4B211$'/,9MOH"1baaT*5,8$+?AK &a*8,8$+?AN Qt$/,9MOE"1baaT*7,8$+?AK DJJ6DJJC(89DJJs(;<DJJc
3DJJC(89C+,s53C/DDE' 5r   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]   sI    ??DOOTZZ@B	!+7ADJJ#/ Ar   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_optimumc   s/    Utzzyzk3

AcF+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_optimumh   s/    Utzzyzn6

AcF+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_optimumm   s/    Utzzyzm5

AcF+r   N)r   r   r   r&   r6   r>   rE   rR   rU   rZ   r\   r^   r   r   r   r!   r!      s1    &
,
B=F:0,
,
,r   r!   )r   rB   numpyr   numpy.testingr   r   r   scipy.optimizer   r   r   r	   r
   r   r!   r   r   r   <module>rb      s8      @ @- - S, S,r   