
    *YHh                         d dl Z d dlZd dl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 Zej                   j#                  dg d	      d
        Zd Zy)    N)fmin_ncg)ConvergenceWarning)Bunch)assert_allclose)_check_optimize_result
_newton_cgc                    t         j                  j                  |       }|j                  d      t        j                  d      }fd}fdfd}fd}t        j
                  t        j                  t        |||d	      d
         dk        sJ t        t        |||d	      d
   t        |||      d       y )N)
   r
   )sizer
   c                 N    j                  |       }d|j                  |      z  S Ng      ?)dot)xAxAs     Z/var/www/html/planif/env/lib/python3.12/site-packages/sklearn/utils/tests/test_optimize.pyfuncztest_newton_cg.<locals>.func   s#    UU1XbXXb\!!    c                 X    j                   j                  j                  |             S NTr   r   r   s    r   gradztest_newton_cg.<locals>.grad   s    sswwquuQx  r   c                     |j                  j                  j                  j                  | j                                           S r   )r   r   all)r   pr   s     r   hessztest_newton_cg.<locals>.hess   s-    uuQSSWWQUU1557^,--r   c                      |       fdfS )Nc                 X    j                   j                  j                  |             S r   r   r   s    r   <lambda>z3test_newton_cg.<locals>.grad_hess.<locals>.<lambda>   s    !##''!%%("3 r    )r   r   r   s    r   	grad_hessz!test_newton_cg.<locals>.grad_hess   s    Aw333r   g|=)tolr   gHz>)fx0fprimefhess_pgh㈵>)atol)
nprandomRandomStatenormalonesr   absr   r   r   )global_random_seedrngr&   r   r   r#   r   r   s         @@r   test_newton_cgr2      s     ))

 2
3C


!A	B"!.4
 66"&&ItT25I!LMQUUVVV9dD"$7:4BtT:r   verbose)r         c           
      ^   t        j                  d      t        j                  ddgt              t	        fdfdfdt        j
                  j                  d         |       | j                         }|dk(  r|j                  d	k(  sJ g d
}|D ]  }||j                  v rJ  |dk\  rg d}|D ]  }||j                  v rJ  |dk\  rt        j                  ddgddgg      dz  t        j                  ddg      t        j                  t              5  t	        fdfdfdt        j                  ddg      |       ddd       | j                         }g d}|D ]  }||j                  v rJ  t        j                  ddgddgg      t        j                  ddg      t        j                  t              5  t	        fdfdfd|d       ddd       | j                         }dg}|D ]  }||j                  v rJ  t        j                  d      t        j                  ddg      t        j                  t              5  t	        fdfdfdt        j                  ddg      |d       ddd       | j                         }d g}|D ]  }||j                  v rJ  t        j                  g d!      t        j                  g d"      t        j                  t              5  t	        fd#fd$fd%t        j                        |dd&       ddd       | j                         }d'g}|D ]  }||j                  v rJ  yy# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w)(z0Test the std output of verbose newton_cg solver.r5   r4   )dtypec                     | z  z
  fdfS )Nc                     | z  S r   r"   zr   s    r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>2   s    !a% r   r"   r   r   bs    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>2   s    QUQY8 r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>3   s    sQw{QQ. r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>4   s    q1uqy r   r   )r#   r   r   r&   r3    )zNewton-CG iter = 1zCheck Convergencezmax |gradient|zSolver did converge at loss = )z(Inner CG solver iteration 1 stopped withzsum(|residuals|) <= tolzLine Searchztry line search wolfe1z!wolfe1 line search was successfulg      ?   gꌠ9Y>)F       @c                     | z  z
  fdfS )Nc                     | z  S r   r"   r:   s    r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>Z       !a% r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>Z       QUQY$@ r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>[       sQw{QQ6 r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>\       q1uqy r          N)z%wolfe1 line search was not successfulz-check loss |improvement| <= eps * |loss_old|:z,check sum(|gradient|) < sum(|gradient_old|):z#last resort: try line search wolfe2g      @c                     | z  z
  fdfS )Nc                     | z  S r   r"   r:   s    r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>p   rE   r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>p   rF   r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>q   rH   r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>r   rJ   r   )r#   r   r   r&   r3   maxiterztiny_|p| = eps * ||p||^2c                     | z  z
  fdfS )Nc                      | z  S r   r"   r:   s    r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>   s    1"q& r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   s    QUQY0@$A r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rH   r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rJ   r      z9Inner CG solver iteration 0 fell back to steepest descent)gMbP?r4   g     @@)rK   r4   rB   c                     | z  z
  fdfS )Nc                     | z  S r   r"   r:   s    r   r!   z<test_newton_cg_verbosity.<locals>.<lambda>.<locals>.<lambda>   rE   r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rF   r   c                 &    d| z  z  | z  | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rH   r   c                     | z  z
  S r   r"   r<   s    r   r!   z*test_newton_cg_verbosity.<locals>.<lambda>   rJ   r   )r#   r   r   r&   r3   rP   maxinnerz*Inner CG solver stopped reaching maxiter=1)r*   eyearrayfloatr   zerosshape
readouterroutpytestwarnsRuntimeWarningr   diag	ones_like)capsysr3   capturedmsgmr   r=   s        @@r   test_newton_cg_verbosityrk   +   s    	q	A
!Qu%A8. 88AGGAJ   "H!|||r!!!
  	%A$$$	% !|
  	%A$$$	% !| HHsAhA'(4/HHc3Z  \\.) 	@6(88T1I&	 $$&
  	%A$$$	%
 HHsAhI/0HHdAY\\,- 	@6(	 $$&&
  	%A$$$	% FF1IHHdAY\\.) 		A6(88S#J'		 $$&G
  	%A$$$	% GGN#HH^$\\,- 		@6(<<?		 $$&8
  	%A$$$	%g 	 	,	 	*		 		&		 		s0   &2M=N
+3N2N#=N
NN #N,c                  Z   t               } d| _        d| _        d| _        t	        j
                         5  t	        j                  d       t        d|        d d d        d| _        d| _        t        j                  t              5 }t        d|        d d d        t              dk(  sJ |d   j                  j                  d   }d|v sJ | j                  |v sJ d|vsJ d	|v sJ t        j                  t              5 }t        d| d
       d d d        t        |      dk(  sJ |d   j                  j                  d   }d|v sJ | j                  |v sJ d|v sJ d	|v sJ d| _        d| _        d| _        t        j                  t              5 }t        d| d
       d d d        t        |      dk(  sJ |d   j                  j                  d   }d|v sJ | j                  |v sJ d|vsJ d	|v sJ y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr4   r   OKerrorlbfgsz+STOP: TOTAL NO. OF ITERATIONS REACHED LIMITz-lbfgs failed to converge after 1 iteration(s)z!Increase the number of iterationszscale the data)max_iterr5   ABNORMALr
   z-lbfgs failed to converge after 2 iteration(s))r   nitstatusmessagewarningscatch_warningssimplefilterr   rb   rc   r   lenargs)resultrecordwarn_msgs      r   test_check_optimizer}      sO   WF FJFMFN		 	 	" 0g&w/0 FMBFN	(	) 0Vw/0 v;!ay  %%a(H:hFFF>>X%%%.h>>>x''' 
(	) <Vw;< v;!ay  %%a(H:hFFF>>X%%%.(:::x''' FJFMFN	(	) =Vw<= v;!ay  %%a(H:hFFF>>X%%%.h>>>x'''W0 00 0< <= =s/   "G:HHH!:HHH!H*)ru   numpyr*   rb   scipy.optimizer   sklearn.exceptionsr   sklearn.utils._bunchr   sklearn.utils._testingr   sklearn.utils.optimizer   r   r2   markparametrizerk   r}   r"   r   r   <module>r      sO       # 1 & 2 E< I.y% /y%x4(r   