
    Ug                     \    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 )Ng@gQ?maxfevd   )x0optionsselfs    _/var/www/surfInsights/venv3-11/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          } |            } |            }t          | j        dd          }t          | j        | j        d||| j                  }t          | j        | 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| _         d S Nr   n_callsr   s    r   __init__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__init__        r   c                 ^    t          |t          j                  sJ | xj        dz  c_        d S Nr   )
isinstancenpndarrayr(   )r   r   s     r   __call__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__call__!   s.    !!RZ00000!r   N__name__
__module____qualname__r)   r0   r    r   r   Callbackr$      2        ! ! !" " " " "r   r5   c                       e Zd Zd Zd ZdS ):TestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntaxc                     d| _         d S r&   r'   r   s    r   r)   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__init__&   r*   r   c                 T    t          |t                    sJ | xj        dz  c_        d S r,   )r-   r   r(   )r   intermediate_results     r   r0   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__call__)   s-    !"5~FFFFF!r   Nr1   r    r   r   CallbackNewSyntaxr8   %   r6   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   r   r.   sqrtr   r   successmessagemaxcvnfevr(   r   nit)	r   r5   r<   rA   callback_new_syntaxr@   solsol_newsolutions	            r   test_minimize_simplezTestCOBYQA.test_minimize_simple   sH   	" 	" 	" 	" 	" 	" 	" 	"	" 	" 	" 	" 	" 	" 	" 	" 8:://11 *$(C==HG#L
 
 
 HG#(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)r.   alllbubr   )r   boundsr   s    r   fun_check_boundsz9TestCOBYQA.test_minimize_bounds.<locals>.fun_check_boundsT   sD    6&)q.))DbfQ&)^.D.DDDD88A;;r         @333333?      @ffffff?r=   r>   r?   rZ   r@   r   rB   rC   rD   rE   rG   r   rH   g      @g?gffffff?)r   r   r!   r	   r   r   r.   rI   r   r   rJ   rK   rL   rW   rX   rY   rM   r   )r   r[   r@   rP   rR   rZ   s   `    @r   test_minimize_boundszTestCOBYQA.test_minimize_boundsS   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   r>   r?   r@   r         r   r   rD   rE   rG   r   rH   )r   r	   r   r   r   r.   rI   r   r   rJ   rK   rL   rM   r   r@   rP   rR   s       r    test_minimize_linear_constraintsz+TestCOBYQA.test_minimize_linear_constraintsz   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 )Nr=   )       @r>   )argsr?   r@   r   g988@gUUUUUU?rD   rE   rG   r   ri   rH   )r   r!   r	   r   r   r   r.   rI   r   r   rJ   rK   rL   rM   rf   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   )r.   arrayr   reshape)r   dimfr   s      r   	fun_arrayz1TestCOBYQA.test_minimize_array.<locals>.fun_array   s2    !%%A:a,,,r   r\   r]   r^   r_   r=   r>   r`   )r   r   r   )rj   r?   rZ   r@   r   c                 |    t          j                            |                               |           g          S rV   )r.   rn   r   )r   r   s    r   <lambda>z0TestCOBYQA.test_minimize_array.<locals>.<lambda>   s*    "(DHHQKK!#=>> r   )r   r   r!   r	   r   r   r   r   r   rJ   rK   rL   rM   rN   pytestraises	TypeError)r   rr   rZ   r@   rP   rp   	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 )Nr=   r   r   r>   rc   )r   r!   r	   r   r   rJ   rK   rM   r   r@   r   rP   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 )Nr=   maxiterr   r>   rc   )r   r!   r	   r   r   rJ   rK   rN   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 )Nr=   r>   rc   f_targetrG   )r   r!   r	   r   r   r   dictrJ   rK   rL   rM   )r   r@   sol_refr   rP   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   )r2   r3   r4   r   staticmethodr   r!   rS   ra   rg   rk   ry   r|   r   r   r    r   r   r   r      s        ' ' ' * * * \* ( ( \(5K 5K 5Kn%$ %$ %$N8 8 8 = = ="* * *X" " "! ! !+ + + + +r   r   )numpyr.   ru   numpy.testingr   r   scipy.optimizer   r   r   r   r	   r   r    r   r   <module>r      s         7 7 7 7 7 7 7 7             h+ h+ h+ h+ h+ h+ h+ h+ h+ h+r   