
    ge                      x    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
  G d d          Zd Z G d d          ZdS )	    N)assert_allcloseassert_assert_array_equal)fmin_cobylaminimizeBoundsc                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
TestCobylac                 f    ddg| _         t          j        d          dg| _        ddddd	| _        d S )
Ng@gQ?g888@gUUUUUU?F   h㈵>d   )disprhobegtolmaxiter)x0mathsqrtsolutionoptsselfs    @lib/python3.11/site-packages/scipy/optimize/tests/test_cobyla.pysetup_methodzTestCobyla.setup_method
   s?    ,?33U;"a #% %			    c                 J    |d         dz  t          |d                   dz  z   S )Nr      r      )absr   xs     r   funzTestCobyla.fun   s#    tQwQqTA%%r   c                 6    |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                 .    |                      |           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           d S )Nr   r   r   T)r   rhoendmaxfunr   -C6?atol)r   r#   r   r'   r*   r   r   r!   s     r   test_simplezTestCobyla.test_simple   sO    $'DIty+A!#Cd< < <4=t444444r   c                 N    G d d          } |            }d| j         dd| j        df}t          | j        | j        d||| j                  }t          |j        | j        d           t          |j
        |j                   t          |j        d	k     |           t          |j        d
k     |           t          |j        |                     | j                  dz   k     |           t          |j        |j        k    d           t          |j        |j        d           d S )Nc                       e Zd Zd Zd ZdS )1TestCobyla.test_minimize_simple.<locals>.Callbackc                 "    d| _         d | _        d S )Nr   n_callslast_xr   s    r   __init__z:TestCobyla.test_minimize_simple.<locals>.Callback.__init__!   s     "r   c                 4    | xj         dz  c_         || _        d S Nr   r6   r!   s     r   __call__z:TestCobyla.test_minimize_simple.<locals>.Callback.__call__%   s    !r   N)__name__
__module____qualname__r9   r<   r&   r   r   Callbackr4       s2        # # #         r   r@   ineqtyper#   cobyla)methodconstraintscallbackoptionsr.   r/   r   F   MbP?z<Callback is not called exactly once for every function eval.zGLast design vector sent to the callback is not equal to returned value.)r'   r*   r   r#   r   r   r   r"   r   r   successmessagemaxcvnfevr7   r   r8   )r   r@   rG   conssols        r   test_minimize_simplezTestCobyla.test_minimize_simple   sU   	  	  	  	  	  	  	  	  8::  	22	224txt ($)= = =t}48888S[)))	D #&&&2s###$((4=11D88#>>>H,,N	P 	P 	P35(/d	f 	f 	f 	f 	fr   c                   	
 t           j                            d           t           j                            dd          	t           j                            d          
	fd
fd}fd}fd}fd}d|d	d|d	d|d	f}t          j        d
          }t          ||d|ddi          }t          |j        dk               t          |j                    d S )Ni  
   c                 .                         |           S r)   )dot)wpbs    r   pz8TestCobyla.test_minimize_constraint_violation.<locals>.p?   s    66!99r   c                 4    | z                                    S r)   )sum)rV   spreads    r   fz8TestCobyla.test_minimize_constraint_violation.<locals>.fB   s    Z$$&&&&r   c                 ^    dt           |                                                     z
  S )Ni  r    rZ   rV   rX   s    r   c1z9TestCobyla.test_minimize_constraint_violation.<locals>.c1E   s$    QQqTT((r   c                 ^    dt           |                                                     z
  S N   r^   r_   s    r   c2z9TestCobyla.test_minimize_constraint_violation.<locals>.c2H   s$    s11Q4488::&&r   c                 ^    dt           |                                                     z
  S rb   )r    maxr_   s    r   c3z9TestCobyla.test_minimize_constraint_violation.<locals>.c3K   s$    s11Q44yy}}&&r   rA   rB   )rS   rD   catolgư>)rE   rF   rH   )	nprandomseedrandzerosr   r   rM   rK   )r   r\   r`   rd   rg   rO   w0rP   rX   rW   r[   s           @@@r   "test_minimize_constraint_violationz-TestCobyla.test_minimize_constraint_violation:   sG   
	tY^^B####	 	 	 	 		' 	' 	' 	' 	'	) 	) 	) 	) 	)	' 	' 	' 	' 	'	' 	' 	' 	' 	'  ++++++- Xe__q"X4 '0 0 0	D !!!CK     r   N)
r=   r>   r?   r   r#   r'   r*   r1   rQ   ro   r&   r   r   r
   r
   	   s        % % %& & && & &  5 5 5f f f6! ! ! ! !r   r
   c                  8  	 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 |D             }t	          	||d
          }t          |j        |d           t          |j        |j                   t          |j	        |d           d| d}t	          	||d
          }t          |j	        dd           d S )Nc                 <    | d         dz
  dz  | d         dz
  dz  z   S )Nr   r   r   g      @r&   r"   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    s1vvzr   c                      t          j        g dg dg dg          t          j         fdt          t                              D                       S )N)r   r   )rv      )rw   r   r   c                 t    g | ]4}|d f         d          z  |df         d         z  z   |df         z   5S )r   r   r   r&   ).0iar"   s     r   
<listcomp>z:test_vector_constraints.<locals>.cons1.<locals>.<listcomp>c   s^     9 9 9%& 1a41Q4!AqD'AaD.81a4! 9 9 9r   )ri   arrayrangelen)r"   r|   s   `@r   cons1z&test_vector_constraints.<locals>.cons1a   sq    Hjjj+++zzz:;;x 9 9 9 9 9*/A--9 9 9 : : 	:r   c                     | S r)   r&   rr   s    r   cons2z&test_vector_constraints.<locals>.cons2f   s    r   r   r   gffffff?g333333?g?r   )r,   r.   r/   r   c                     g | ]}d |dS )rA   rB   r&   )rz   rO   s     r   r}   z+test_vector_constraints.<locals>.<listcomp>w   s     GGGTF400GGGr   )rF   r   rA   rB   )
ri   r~   r   r   r   r"   r   rK   rL   r#   )
rt   r   r   r   	cons_listxsolfsolrP   rF   r#   s
            @r   test_vector_constraintsr   X   s   / / /    : : :
   
1a&		BeU#I:DD c2y
6
6
6CCD))))
c2tD
1
1
1CCCHHad++++ HGYGGGK
3
>
>
>CCE4d++++CK%%%CGT----!$//K
3
>
>
>CCGQT******r   c                       e Zd Zd Zd ZdS )
TestBoundsc                     d }g d}g d}d t          ||          D             }t          |g dd|          }g d}|j        sJ t          |j        |d	
           d S )Nc                 0    t          j        | dz            S Nr   ri   rZ   rr   s    r   r\   z TestBounds.test_basic.<locals>.f       6!Q$<<r   )rw   Nr   N      )r   r   NNr   c                     g | ]	\  }}||f
S r&   r&   )rz   r|   bs      r   r}   z)TestBounds.test_basic.<locals>.<listcomp>   s     111TQ1a&111r   )r   r   r      rc   rD   r   rE   bounds)r   r   r   r   r   rJ   r/   )zipr   rK   r   r"   )r   r\   lbubr   resrefs          r   
test_basiczTestBounds.test_basic   s    	  	  	  '&&+++11SR[[111 q___XfMMM&&&{s......r   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           d S )	Nc                 0    t          j        | dz            S r   r   rr   s    r   r\   z$TestBounds.test_unbounded.<locals>.f   r   r   r   r   rD   r   r   rJ   r/   )r   ri   infr   rK   r   r"   )r   r\   r   r   s       r   test_unboundedzTestBounds.test_unbounded   s    	  	  	  "&26'*RVRV,<==qaVHVDDD{qt,,,,RVGrvrv&677qaVHVDDD{1vD111111r   N)r=   r>   r?   r   r   r&   r   r   r   r      s2        
/ / /2 2 2 2 2r   r   )r   numpyri   numpy.testingr   r   r   scipy.optimizer   r   r   r
   r   r   r&   r   r   <module>r      s         F F F F F F F F F F 8 8 8 8 8 8 8 8 8 8L! L! L! L! L! L! L! L!^'+ '+ '+T2 2 2 2 2 2 2 2 2 2r   