
    ^Mh                         d dl Z d dlZd dlmZmZmZ d dl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                   |    e Zd Zd Zd Zd Zd Zej        	                    dd          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    `/var/www/html/test/jupyter/venv/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   Tz&not slow, but noisy so only run rarely)reasonc           	          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   capfdr"   s      r   test_simplezTestCobyla.test_simple   sQ     $'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   r8   r!   s     r   __call__z:TestCobyla.test_minimize_simple.<locals>.Callback.__call__'   s    !r   N)__name__
__module____qualname__r;   r>   r&   r   r   Callbackr6   "   s2        # # #         r   rB   ineqtyper#   cobyla)methodconstraintscallbackoptionsr/   r0   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nfevr9   r   r:   )r   rB   rI   conssols        r   test_minimize_simplezTestCobyla.test_minimize_simple!   sR   	  	  	  	  	  	  	  	  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EOU	
 	
 	
 	
 	
r   c                   	
 t           j                            d          }|                    dd          
|                    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>.pD   s    66!99r   c                 4    | z                                    S r)   )sum)rX   spreads    r   fz8TestCobyla.test_minimize_constraint_violation.<locals>.fG   s    Z$$&&&&r   c                 ^    dt           |                                                     z
  S )Ni  r    r\   rX   rZ   s    r   c1z9TestCobyla.test_minimize_constraint_violation.<locals>.c1J   s$    QQqTT((r   c                 ^    dt           |                                                     z
  S N   r`   ra   s    r   c2z9TestCobyla.test_minimize_constraint_violation.<locals>.c2M   s$    s11Q4488::&&r   c                 ^    dt           |                                                     z
  S rd   )r    maxra   s    r   c3z9TestCobyla.test_minimize_constraint_violation.<locals>.c3P   s$    s11Q44yy}}&&r   rC   rD   )rU   rF   catolgư>)rG   rH   rJ   )	nprandomRandomStaterandzerosr   r   rO   rM   )r   rngr^   rb   rf   ri   rQ   w0rR   rZ   rY   r]   s            @@@r   "test_minimize_constraint_violationz-TestCobyla.test_minimize_constraint_violation?   sB   i##D))XXb""	 	 	 	 		' 	' 	' 	' 	'	) 	) 	) 	) 	)	' 	' 	' 	' 	'	' 	' 	' 	' 	'  ++++++- Xe__q"X4 '0 0 0	D !!!CK     r   N)r?   r@   rA   r   r#   r'   r*   pytestmarkxslowr3   rS   rr   r&   r   r   r
   r
   
   s        % % %& & && & &   [t$LMM5 5 NM5
 
 
<! ! ! ! !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>.fminc   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   )r|      )r}   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>h   s^     9 9 9%& 1a41Q4!AqD'AaD.81a4! 9 9 9r   )rk   arrayrangelen)r"   r   s   `@r   cons1z&test_vector_constraints.<locals>.cons1f   sq    Hjjj+++zzz:;;x 9 9 9 9 9*/A--9 9 9 : : 	:r   c                     | S r)   r&   rx   s    r   cons2z&test_vector_constraints.<locals>.cons2k   s    r   r   r   gffffff?g333333?g?r   )r-   r/   r0   r   c                     g | ]}d |dS )rC   rD   r&   )r   rQ   s     r   r   z+test_vector_constraints.<locals>.<listcomp>|   s     GGGTF400GGGr   )rH   r   rC   rD   )
rk   r   r   r   r   r"   r   rM   rN   r#   )
rz   r   r   r   	cons_listxsolfsolrR   rH   r#   s
            @r   test_vector_constraintsr   ]   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   rk   r\   rx   s    r   r^   z TestBounds.test_basic.<locals>.f       6!Q$<<r   )r}   Nr   N      )r   r   NNr   c                     g | ]	\  }}||f
S r&   r&   )r   r   bs      r   r   z)TestBounds.test_basic.<locals>.<listcomp>   s     111TQ1a&111r   )r   r   r      re   rF   r   rG   bounds)r   r   r   r   r   rL   r0   )zipr   rM   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   rx   s    r   r^   z$TestBounds.test_unbounded.<locals>.f   r   r   r   r   rF   r   r   rL   r0   )r   rk   infr   rM   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@   rA   r   r   r&   r   r   r   r      s2        
/ / /2 2 2 2 2r   r   )r   numpyrk   numpy.testingr   r   r   rs   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P! P! P! P! P! P! P! P!f'+ '+ '+T2 2 2 2 2 2 2 2 2 2r   