
    Џkh                     r    d dl Z d dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZ  G d d      Zd Z G d d      Zy)	    N)assert_allcloseassert_array_almost_equal)fmin_cobylaminimizeBoundsNonlinearConstraintLinearConstraintOptimizeResultc                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)
TestCobylac                     t        j                  d      dg| _        t        j                  d      dg| _        ddddd| _        y )	Ng888@g7l'V?gUUUUUU?r      gư>d   )disprhobegtolmaxiter)npsqrtx0mathsolutionoptsselfs    \/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_cobyla.pysetup_methodzTestCobyla.setup_method   sA     77?+\:?3U;!D #%	    c                 6    |d   dz  t        |d         dz  z   S )Nr      r      )absr   xs     r   funzTestCobyla.fun   s!    tQwQqTA%%r   c                 *    |d   dz  |d   dz  z   dz
  S )Nr   r    r       r#   s     r   con1zTestCobyla.con1   s"    tQw1q 2%%r   c                 &    | j                  |       S N)r)   r#   s     r   con2zTestCobyla.con2   s    		!}r   c           	          t        | j                  | j                  | j                  | j                  gdddd      }t        || j                  d       y )Nr   h㈵>r   )r   rhoendmaxfunr   -C6?atol)r   r%   r   r)   r,   r   r   r#   s     r   test_simplezTestCobyla.test_simple   s@    $''DIItyy+A!#Ca94==t4r   c                     G d d      } G d d      } |       } |       }t        | j                  dt        j                        d| j                  df}t        | j                  | j                  d||| j                  	      }t        | j                  | j                  d||| j                  	      }t        |j                  | j                  d
       |j                  sJ |j                         |j                  dk  sJ |       |j                  dk  sJ |       |j                  | j                  | j                        dz   k  sJ |       t!        |j                  |j"                  dd       |j                  sJ |j                         |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j$                  |j$                  k(  sJ d       y )Nc                       e Zd Zd Zd Zy)1TestCobyla.test_minimize_simple.<locals>.Callbackc                      d| _         d | _        y Nr   n_callslast_xr   s    r   __init__z:TestCobyla.test_minimize_simple.<locals>.Callback.__init__&   s     "r   c                 <    | xj                   dz  c_         || _        y Nr   r:   r#   s     r   __call__z:TestCobyla.test_minimize_simple.<locals>.Callback.__call__*   s    !r   N__name__
__module____qualname__r=   r@   r(   r   r   Callbackr7   %   s    # r   rE   c                       e Zd Zd Zd Zy):TestCobyla.test_minimize_simple.<locals>.CallbackNewSyntaxc                     d| _         y r9   )r;   r   s    r   r=   zCTestCobyla.test_minimize_simple.<locals>.CallbackNewSyntax.__init__/   s	     r   c                 R    t        |t              sJ | xj                  dz  c_        y r?   )
isinstancer
   r;   )r   intermediate_results     r   r@   zCTestCobyla.test_minimize_simple.<locals>.CallbackNewSyntax.__call__2   s!    !"5~FFF!r   NrA   r(   r   r   CallbackNewSyntaxrG   .   s    !"r   rL   r   ineqtyper%   cobyla)methodconstraintscallbackoptionsr1   r2   r.   F   MbP?   zGLast design vector sent to the callback is not equal to returned value.)decimalerr_msgzGCallback is not called the same amount of times for old and new syntax.)r   r)   r   infr,   r   r%   r   r   r   r$   r   successmessagemaxcvnfevr   r<   r;   )r   rE   rL   rS   callback_new_syntaxconssolsol_news           r   test_minimize_simplezTestCobyla.test_minimize_simple$   s   	  	 	" 	" :/1 $DIIq"&&9		24txxt ($))=488TWWX4 3TYYHt}}48{{'CKK'{yy4$$xx"}!c!}ww$--0477<<7!EEOO$		
 //ww'++%%%yyGMM)))xx7<<'''#6#>#>> 	VU	V>r   c                     dd ddd df}t        d dgd|dd	i
      }|j                  dkD  sJ |j                  sJ t        d dgd|ddi
      }|j                  dkD  sJ |j                  rJ y )NrM   c                     d| z
  S )N   r(   r$   s    r   <lambda>z?TestCobyla.test_minimize_constraint_violation.<locals>.<lambda>V   
    !a% r   rN   c                     | dz
  S )NrW   r(   rg   s    r   rh   z?TestCobyla.test_minimize_constraint_violation.<locals>.<lambda>W   ri   r   c                     | S r+   r(   rg   s    r   rh   z?TestCobyla.test_minimize_constraint_violation.<locals>.<lambda>X        r   r   rP   catolg333333?rQ   rR   rT   g?c                     | S r+   r(   rg   s    r   rh   z?TestCobyla.test_minimize_constraint_violation.<locals>.<lambda>\   rl   r   g?)r   r]   r[   )r   r`   ra   s      r   "test_minimize_constraint_violationz-TestCobyla.test_minimize_constraint_violationS   s      88:{QCd '~/yy3{{{{QCd '~/yy3;;;r   c                     d}t        d dgdd|i      }|j                  dk(  sJ |j                  sJ |j                  |k  sJ y )N   c                     | dz  S Nr    r(   rg   s    r   rh   z*TestCobyla.test_f_target.<locals>.<lambda>c   s
    A r   i  rP   f_target)rQ   rT   r   )r   statusr[   r%   )r   ru   ra   s      r   test_f_targetzTestCobyla.test_f_targeta   sO    ~uX *H57zzQ{{{ww("""r   c                    t        ddgdd      }t        | j                  | j                  d|| j                        }dt        j                  d      z
  dz  t        j                  d      dz
  dz  g}t        |j                  |d	       |j                  sJ |j                         |j                  d
k  sJ |       |j                  dk  sJ |       |j                  | j                  |      dz   k  sJ |       y )Ng      ?rP   rn   rf      r!   r   r1   r2   g:0yE>r   rV   )r	   r   r%   r   r   r   r   r   r$   r[   r\   r]   r^   )r   rR   ra   r   s       r    test_minimize_linear_constraintsz+TestCobyla.test_minimize_linear_constraintsi   s    &Sz3<HHGG#II
 ^q(2771:>Q*>?xd3{{'CKK'{yy4$$xx3##ww(+d227C72r   N)rB   rC   rD   r   r%   r)   r,   r4   rc   rp   rw   rz   r(   r   r   r   r      s1    %&&5-V^#8r   r   c                  $  
 d 

fd} d }d }t        j                  ddg      }
||g}ddg}d	}t        
||d
      }t        ||d       t        
|| d
      }t         
|      dd       |D cg c]  }d|d	 }	}t	        
||	d
      }t        |j
                  |d       |j                  sJ |j                         t        |j                  |d       d| d}	t	        
||	d
      }t        |j                  dd       y c c}w )Nc                 0    | d   dz
  dz  | d   dz
  dz  z   S )Nr   r   r    g      @r(   rg   s    r   r%   z$test_vector_constraints.<locals>.fun}   s%    !q1}!s
Q..r   c                      |       dz
  S r?   r(   )r$   r%   s    r   fminz%test_vector_constraints.<locals>.fmin   s    1vzr   c           	          t        j                  g dg dg dg      }t        j                  t        t        |            D cg c]%  }||df   | d   z  ||df   | d   z  z   ||df   z   ' c}      S c c}w )N)r   r    )r      )r   r    r    r   r   r    )r   arrayrangelen)r$   ais      r   cons1z&test_vector_constraints.<locals>.cons1   s    HHj+z:;xx*/A-9%& 1a41Q4!AqD'AaD.81a4! 9 : 	: 9s   *A5c                     | S r+   r(   rg   s    r   cons2z&test_vector_constraints.<locals>.cons2   s    r   r    r   gffffff?g333333?g?r.   )r/   r1   r2   r   rM   rN   )rR   r   )	r   r   r   r   r   r$   r[   r\   r%   )r~   r   r   r   	cons_listxsolfsolra   r`   rR   r%   s             @r   test_vector_constraintsr   z   s   /:
 
1a&	BeU#I:DD c2y
6CCD)
c2tD
1CCHad+ >GGTF40GKG
3
>CCEE4d+;;##;CGGT-!$/K
3
>CCGGQT* Hs   6Dc                       e Zd Zd Zd Zy)
TestBoundsc                     d }g d}g d}t        ||      D cg c]	  \  }}||f }}}t        |g dd|      }g d}|j                  sJ t        |j                  |d	       y c c}}w )
Nc                 2    t        j                  | dz        S rt   r   sumrg   s    r   fz TestBounds.test_basic.<locals>.f       66!Q$<r   )r   Nr   N      )r   r   NNr   )r   r    r!   rf   rW   rP   r   rQ   bounds)r   r   r   r   r   rV   r2   )zipr   r[   r   r$   )	r   r   lbubr   br   resrefs	            r   
test_basiczTestBounds.test_basic   sl    	  '+%(R[1TQ1a&11 q_XfM&{{{s. 2s   A(c                    d }t        t        j                   t        j                   gt        j                  t        j                  g      }t        |ddgd|      }|j                  sJ t        |j                  dd       t        dt        j                   gt        j                  t        j                  g      }t        |ddgd|      }|j                  sJ t        |j                  ddgd       y )	Nc                 2    t        j                  | dz        S rt   r   rg   s    r   r   z$TestBounds.test_unbounded.<locals>.f   r   r   r   r    rP   r   r   rV   r2   )r   r   rZ   r   r[   r   r$   )r   r   r   r   s       r   test_unboundedzTestBounds.test_unbounded   s    	  "&&266'*RVVRVV,<=qaVHVD{{{qt,RVVGrvvrvv&67qaVHVD{{{1vD1r   N)rB   rC   rD   r   r   r(   r   r   r   r      s    
/2r   r   )r   numpyr   numpy.testingr   r   scipy.optimizer   r   r   r   r	   r
   r   r   r   r(   r   r   <module>r      s5      D k8 k8\'+T2 2r   