
    ^Mh                     d    d dl Z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  G d d          ZdS )    N)assert_allcloseassert_equal)BoundsLinearConstraintNonlinearConstraintOptimizeResultminimizec                   r    e Zd Zd Zedd            Zed             Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )
TestCOBYQAc                 *    ddg| _         ddi| _        d S )N@Q?maxfevd   )x0optionsselfs    `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_cobyqa.pysetup_methodzTestCOBYQA.setup_method   s    , #          ?c                 P    | d         dz  |t          | d                   dz  z  z   S )Nr            )abs)xcs     r   funzTestCOBYQA.fun   s(    tQwS1YY\)))r   c                 6    | d         dz  | d         dz  z   dz
  S )Nr   r   r   g      9@ )r   s    r   conzTestCOBYQA.con   s"    tQw1q 4''r   c                     G d d          } G d d          }ddg} |            } |            }t          | j        dd          }t          | j        |d||| j        	          }t          | j        |d||| j        	          }t          j        d
          dg}	t          |j        |	d           |j	        sJ |j
                    |j        dk     s
J |            |j        dk    s
J |            |j        |                     |	          dz   k     s
J |            |j        |j        k    s
J d            t          |j        |j                   |j	        sJ |j
                    |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    s
J d            d S )Nc                       e Zd Zd Zd ZdS )1TestCOBYQA.test_minimize_simple.<locals>.Callbackc                 D    t          j                    | _        d| _        d S Nr   	threadingLocklockn_callsr   s    r   __init__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__init__       %N,,	 r   c                     t          |t          j                  sJ | j        5  | xj        dz  c_        d d d            d S # 1 swxY w Y   d S Nr   )
isinstancenpndarrayr,   r-   )r   r   s     r   __call__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__call__#   s    !!RZ00000Y & &LLA%LL& & & & & & & & & & & & & & & & & &s   AA	AN__name__
__module____qualname__r.   r5   r"   r   r   Callbackr&      2        ! ! !& & & & &r   r:   c                       e Zd Zd Zd ZdS ):TestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntaxc                 D    t          j                    | _        d| _        d S r(   r)   r   s    r   r.   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__init__)   r/   r   c                     t          |t                    sJ | j        5  | xj        dz  c_        d d d            d S # 1 swxY w Y   d S r1   )r2   r   r,   r-   )r   intermediate_results     r   r5   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__call__-   s    !"5~FFFFFY & &LLA%LL& & & & & & & & & & & & & & & & & &s   =AANr6   r"   r   r   CallbackNewSyntaxr=   (   r;   r   rA   r   r           cobyqa)methodconstraintscallbackr   888@UUUUUU?-C6?atol:0yE>r   MbP?z<Callback is not called exactly once for every function eval.)r   r#   r	   r    r   r3   sqrtr   r   successmessagemaxcvnfevr-   r   nit)
r   r:   rA   r   rF   callback_new_syntaxrE   solsol_newsolutions
             r   test_minimize_simplezTestCOBYQA.test_minimize_simple   sM   	& 	& 	& 	& 	& 	& 	& 	&	& 	& 	& 	& 	& 	& 	& 	& D\8:://11 *$(C==H#L
 
 
 H#(L
 
 
 G,--y9xd3333{''CK'''y4x3w(++d2222C222x8++++J ,++SUGI&&&/////w'+%%%%yGM))))x7<''''w'+%%%%|2::::J ;::::r   c                      fd}t          ddgddg          t           j        dd          }t          | j        d| j                  }t          j        d	          d
g}t          |j	        |d           |j
        sJ |j                    |j        dk     s
J |            t          j        j        |j	        k              r"t          j        |j	        j        k              s
J |            |j        dk    s
J |            |j                             |          dz   k     s
J |            t          ddgddg          t          | j        d| j                  }|j
        rJ |j                    |j        dk    s
J |            t          j        j        |j	        k              r"t          j        |j	        j        k              s
J |            |j        dk    s
J |            d S )Nc                     t          j        j        | k              rt          j        | j        k              sJ                     |           S N)r3   alllbubr    )r   boundsr   s    r   fun_check_boundsz9TestCOBYQA.test_minimize_bounds.<locals>.fun_check_boundsZ   sD    6&)q.))DbfQ&)^.D.DDDD88A;;r         @333333?      @ffffff?rB   rC   rD   r_   rE   r   rG   rH   rI   rJ   rL   r   rM   g      @g?gffffff?)r   r   r#   r	   r   r   r3   rN   r   r   rO   rP   rQ   r\   r]   r^   rR   r    )r   r`   rE   rU   rW   r_   s   `    @r   test_minimize_boundszTestCOBYQA.test_minimize_boundsY   s)   	 	 	 	 	 	
 c
S#J//)$(C==G#L
 
 
 G,--y9xd3333{''CK'''y4vfi35())MbfSUfi5G.H.HMM#MMMx3w(++d2222C222 c
S$K00G#L
 
 
 ;+++++y4vfi35())MbfSUfi5G.H.HMM#MMMx3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        |                     |          dz   k     s
J |            d S )Nr   rC   rD   rE   r         r   r   rI   rJ   rL   r   rM   )r   r	   r    r   r   r3   rN   r   r   rO   rP   rQ   rR   r   rE   rU   rW   s       r    test_minimize_linear_constraintsz+TestCOBYQA.test_minimize_linear_constraints   s    &Sz3<<HG#L
 
 
 ^q(271::>Q*>?xd3333{''CK'''y4x3w(++d2222C22222r   c                    t          | j        dd          }t          | j        | j        dd|| j                  }t          j        d          dg}t          |j	        |d           |j
        sJ |j                    |j        d	k     s
J |            |j        d
k    s
J |            |j        |                     |d          dz   k     s
J |            d S )NrB   )       @rC   )argsrD   rE   r   g988@gUUUUUU?rI   rJ   rL   r   rn   rM   )r   r#   r	   r    r   r   r3   rN   r   r   rO   rP   rQ   rR   rk   s       r   test_minimize_argszTestCOBYQA.test_minimize_args   s    )$(C==HG#L
 
 
 G-..	:xd3333{''CK'''y4x3w(C004777777777r   c           
           fd}t          ddgddg          }t           j        dd          }t           j         j        d|| j                  }d	D ]}t          | j        |fd|| j        
          }t          |j        |j                   |j	        sJ |j
                    |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ t          j        t                     5  t           fd j        d|| j                   d d d            d S # 1 swxY w Y   d S )Nc                     t          j                            |                     }t          j        |d|z            S )N)r   )r3   arrayr    reshape)r   dimfr   s      r   	fun_arrayz1TestCOBYQA.test_minimize_array.<locals>.fun_array   s2    !%%A:a,,,r   ra   rb   rc   rd   rB   rC   re   )r   r   r   )ro   rD   r_   rE   r   c                 |    t          j                            |                               |           g          S r[   )r3   rs   r    )r   r   s    r   <lambda>z0TestCOBYQA.test_minimize_array.<locals>.<lambda>   s*    "(DHHQKK!#=>> r   )r   r   r#   r	   r    r   r   r   r   rO   rP   rQ   rR   rS   pytestraises	TypeError)r   rw   r_   rE   rU   ru   	sol_arrays   `      r   test_minimize_arrayzTestCOBYQA.test_minimize_array   s   	- 	- 	- 	- 	-
 c
S#J//)$(C==HG#L
 
 
  	, 	,C V'  I 	,,,$77i&77777im++++9	////8y~----7im+++++ ]9%% 	 	>>>>'   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   #D<<E E c                     t          | j        dd          }ddi}t          | j        | j        d||          }|j        rJ |j                    |j        dk    s
J |            d S )NrB   r   r   rC   rh   )r   r#   r	   r    r   rO   rP   rR   r   rE   r   rU   s       r   test_minimize_maxfevzTestCOBYQA.test_minimize_maxfev   sx    )$(C==Q-HG#
 
 
 ;+++++x1}}}c}}}}}r   c                     t          | j        dd          }ddi}t          | j        | j        d||          }|j        rJ |j                    |j        dk    s
J |            d S )NrB   maxiterr   rC   rh   )r   r#   r	   r    r   rO   rP   rS   r   s       r   test_minimize_maxiterz TestCOBYQA.test_minimize_maxiter   sx    )$(C==a.HG#
 
 
 ;+++++w!|||S|||||r   c                    t          | j        dd          }t          | j        | j        d|| j                  }t          | j                  }|j        |d<   t          | j        | j        d||          }|j        sJ |j                    |j	        dk     s
J |            |j
        |j
        k    s
J |            |j        |j        k    s
J |            d S )NrB   rC   rh   f_targetrL   )r   r#   r	   r    r   r   dictrO   rP   rQ   rR   )r   rE   sol_refr   rU   s        r   test_minimize_f_targetz!TestCOBYQA.test_minimize_f_target   s    )$(C==HG#L
 
 
 t|$$%k
HG#
 
 
 {''CK'''y4x7<''''''w'+%%%s%%%%%r   N)r   )r7   r8   r9   r   staticmethodr    r#   rX   rf   rl   rp   r~   r   r   r   r"   r   r   r   r      s        ' ' ' * * * \* ( ( \(:K :K :Kx%$ %$ %$N8 8 8 = = ="* * *X" " "! ! !+ + + + +r   r   )numpyr3   rz   r*   numpy.testingr   r   scipy.optimizer   r   r   r   r	   r   r"   r   r   <module>r      s             7 7 7 7 7 7 7 7             m+ m+ m+ m+ m+ m+ m+ m+ m+ m+r   