
    Yh                         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dS )	    N)assert_allcloseassert_array_almost_equal)fmin_cobylaminimizeBoundsNonlinearConstraintLinearConstraintOptimizeResultc                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )
TestCobylac                     t          j        d          dg| _        t          j        d          dg| _        ddddd| _        d S )	Ng888@g7l'V?gUUUUUU?r      gư>d   )disprhobegtolmaxiter)npsqrtx0mathsolutionoptsselfs    r/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_cobyla.pysetup_methodzTestCobyla.setup_method   sL     7?++\:?33U;!D #% %			    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   h㈵>r   )r   rhoendmaxfunr   -C6?atol)r   r%   r   r)   r,   r   r   r#   s     r   test_simplezTestCobyla.test_simple   sO    $'DIty+A!#Ca9 9 94=t444444r   c                 d    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                  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            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   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   %   s2        # # #         r   rE   c                       e Zd Zd Zd ZdS ):TestCobyla.test_minimize_simple.<locals>.CallbackNewSyntaxc                     d| _         d S r9   )r;   r   s    r   r=   zCTestCobyla.test_minimize_simple.<locals>.CallbackNewSyntax.__init__/   s     r   c                 T    t          |t                    sJ | xj        dz  c_        d S r?   )
isinstancer
   r;   )r   intermediate_results     r   r@   zCTestCobyla.test_minimize_simple.<locals>.CallbackNewSyntax.__call__2   s-    !"5~FFFFF!r   NrA   r(   r   r   CallbackNewSyntaxrG   .   s2        ! ! !" " " " "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"   	  	  	  	  	  	  	  	 	" 	" 	" 	" 	" 	" 	" 	" 8:://11 $DIq"&99	224txt ($)= = =48TWX4 3TYH H Ht}48888{''CK'''y4x"}}}c}}}w$-0047777777!EO$		
 	
 	
 	
 /////w'+%%%%yGM))))x7<''''#6#>>>>U ?>>>>r   c                     dd ddd df}t          d dgd|dd	i
          }|j        dk    sJ |j        sJ t          d dgd|ddi
          }|j        dk    sJ |j        rJ d S )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88:{{QCd '~/ / /y3{{{QCd '~/ / /y3;r   c                 ~    d}t          d dgdd|i          }|j        dk    sJ |j        sJ |j        |k    sJ d S )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   sc    ~~uX *H57 7 7zQ{w(""""""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 )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<<HG#I
 
 
 ^q(271::>Q*>?xd3333{''CK'''y4x3w(++d2222C22222r   N)rB   rC   rD   r   r%   r)   r,   r4   rc   rp   rw   rz   r(   r   r   r   r      s        % % %& & && & &  5 5 5-V -V -V^  # # #8 8 8 8 8r   r   c                  0  	 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           |j        s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(   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    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>   s^     9 9 9%& 1a41Q4!AqD'AaD.81a4! 9 9 9r   )r   arrayrangelen)r$   r   s   `@r   cons1z&test_vector_constraints.<locals>.cons1   sq    Hjjj+++zzz:;;x 9 9 9 9 9*/A--9 9 9 : : 	:r   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   c                     g | ]}d |dS )rM   rN   r(   )r   r`   s     r   r   z+test_vector_constraints.<locals>.<listcomp>   s     GGGTF400GGGr   )rR   r   rM   rN   )	r   r   r   r   r   r$   r[   r\   r%   )
r~   r   r   r   	cons_listxsolfsolra   rR   r%   s
            @r   test_vector_constraintsr   z   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++++;#####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 rt   r   sumrg   s    r   fz 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!   rf   rW   rP   r   rQ   bounds)r   r   r   r   r   rV   r2   )zipr   r[   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 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    	  	  	  "&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)rB   rC   rD   r   r   r(   r   r   r   r      s2        
/ / /2 2 2 2 2r   r   )r   numpyr   numpy.testingr   r   scipy.optimizer   r   r   r   r	   r
   r   r   r   r(   r   r   <module>r      s         D D D D D D D D               k8 k8 k8 k8 k8 k8 k8 k8\'+ '+ '+T2 2 2 2 2 2 2 2 2 2r   