
    ^Mh[                         d Z ddlmZmZmZmZ ddlmZ ddlZddl	Z
ddlZddlmZmZmZmZ  G d d          Z G d d	          ZdS )
z#
Unit test for SLSQP optimization.
    )assert_assert_array_almost_equalassert_allcloseassert_equal)raisesN)
fmin_slsqpminimizeBoundsNonlinearConstraintc                       e Zd ZdZd Zd ZdS )
MyCallBackzJpass a custom callback function

    This makes sure it's being used.
    c                 "    d| _         d| _        d S )NFr   been_calledncallsselfs    _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_slsqp.py__init__zMyCallBack.__init__   s         c                 4    d| _         | xj        dz  c_        d S )NT   r   r   xs     r   __call__zMyCallBack.__call__   s    qr   N)__name__
__module____qualname____doc__r   r    r   r   r   r      s<               r   r   c                      e Zd ZdZd Zd=dZd=dZd=dZd=dZd=dZ	d=d	Z
d=d
Zd=dZd=dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.e/j0        1                     e2j3        d./          d0         d1         d2         d3k    d45          d6             Z4d7 Z5d8 Z6d9 Z7d: Z8e/j0        j9        d;             Z:d<S )>	TestSLSQPz
    Test SLSQP algorithm using Example 14.4 from Numerical Methods for
    Engineers by Steven Chapra and Raymond Canale.
    This example maximizes the function f(x) = 2*x*y + 2*x - x**2 - 2*y**2,
    which has a maximum at x=2, y=1.
    c                     ddi| _         d S )NdispF)optsr   s    r   setup_methodzTestSLSQP.setup_method#   s    UO			r         ?c                 b    |d         }|d         }|d|z  |z  d|z  z   |dz  z
  d|dz  z  z
  z  S )a  
        Arguments:
        d     - A list of two elements, where d[0] represents x and d[1] represents y
                 in the following equation.
        sign - A multiplier for f. Since we want to optimize it, and the SciPy
               optimizers can only minimize functions, we need to multiply it by
               -1 to achieve the desired solution
        Returns:
        2*x*y + 2*x - x**2 - 2*y**2

        r   r      r    )r   dsignr   ys        r   funzTestSLSQP.fun&   sG     aDaDQqSUQqS[1a4'!AqD&011r   c                     |d         }|d         }|d|z  d|z  z   dz   z  }|d|z  d|z  z
  z  }t          j        ||gt                    S )zo
        This is the derivative of fun, returning a NumPy array
        representing df/dx and df/dy.

        r   r   r)      )nparrayfloat)r   r*   r+   r   r,   dfdxdfdys          r   jaczTestSLSQP.jac6   s\     aDaDRTAaCZ!^$QqS1Q3Yxte,,,r   c                 Z    |                      ||          |                     ||          fS N)r-   r6   )r   r*   r+   s      r   fun_and_jaczTestSLSQP.fun_and_jacB   s)    xx4  $((1d"3"333r   c                 J    t          j        |d         |d         z
  g          S ) Equality constraint r   r   r1   r2   r   r   r+   s      r   f_eqconzTestSLSQP.f_eqconE   s     x1!&&&r   c                 0    t          j        ddgg          S )z! Equality constraint, derivative r   r<   r=   s      r   fprime_eqconzTestSLSQP.fprime_eqconI       x!R	"""r   c                 :    |                      ||          d         S )z Scalar equality constraint r   )r>   r=   s      r   f_eqcon_scalarzTestSLSQP.f_eqcon_scalarM   s    ||At$$Q''r   c                 ^    |                      ||          d                                         S )z( Scalar equality constraint, derivative r   )rA   tolistr=   s      r   fprime_eqcon_scalarzTestSLSQP.fprime_eqcon_scalarQ   s)      D))!,33555r   c                 P    t          j        |d         |d         z
  dz
  g          S )z Inequality constraint r   r   r'   r<   r=   s      r   f_ieqconzTestSLSQP.f_ieqconU   s&    x1!s*+,,,r   c                 0    t          j        ddgg          S )z# Inequality constraint, derivative r   r@   r<   r=   s      r   fprime_ieqconzTestSLSQP.fprime_ieqconY   rB   r   c                 *    t          j        |          S )z Vector inequality constraint )r1   asarrayr   s     r   	f_ieqcon2zTestSLSQP.f_ieqcon2]   s    z!}}r   c                 @    t          j        |j        d                   S )z* Vector inequality constraint, derivative r   )r1   identityshaper   s     r   fprime_ieqcon2zTestSLSQP.fprime_ieqcon2a   s    {171:&&&r   c           	          g d}|D ]V}t          | j        ddgd|d| j                  }t          |d         |d                    t	          |j        d	d
g           Wd S )NNFz2-pointz3-point      r'   rU   SLSQPargsr6   methodoptionssuccessmessager)   r   )r	   r-   r%   r   r   r   r   jacsr6   ress       r   $test_minimize_unbounded_approximatedz.TestSLSQP.test_minimize_unbounded_approximatedf   s    222 	+ 	+C48dC[x"7#'9. . .C C	NC	N333CEAq6****	+ 	+r   c                     t          | j        ddgd| j        d| j                  }t	          |d         |d                    t          |j        dd	g           d S )
NrU   r'   rV   rW   rX   r\   r]   r)   r   )r	   r-   r6   r%   r   r   r   r   r`   s     r   test_minimize_unbounded_givenz'TestSLSQP.test_minimize_unbounded_givenp   sd    tx$88GTYH H HII///1v&&&&&r   c                    g d}|D ]}t          j        d          5  t          | j        ddgd|dd| j        	          }d d d            n# 1 swxY w Y   t          |d
         |d                    t          |j        ddg           t          d|j        d         k               t          |j        d         dk               d S )NrT   ignore)invalidrU   r'   rV   ))      @N)N      ?rW   )rY   r6   boundsrZ   r[   r\   r]   rh   ri   r   r   )r1   errstater	   r-   r%   r   r   r   r^   s       r   "test_minimize_bounded_approximatedz,TestSLSQP.test_minimize_bounded_approximatedw   s2   222 		% 		%CX... B Btx$8#&&@&-tyB B BB B B B B B B B B B B B B B B
 C	NC	N333CEC:...C358O$$$CE!HO$$$$		% 		%s   #AA	A	c                     t          | j        ddgddd| j                  }t          |d         |d                    t	          |j        d	d
g           d S )NrU   r'   rV   TrW   rX   r\   r]   r)   r   )r	   r9   r%   r   r   r   rc   s     r    test_minimize_unbounded_combinedz*TestSLSQP.test_minimize_unbounded_combined   sc    t'$8D D DII///1v&&&&&r   c                     g d}|D ]`}t          | j        ddgd|d| j        ddd| j                  }t	          |d	         |d
                    t          |j        ddg           ad S )NrT   rU   r'   rV   eqtyper-   rY   rW   )rY   r6   constraintsrZ   r[   r\   r]   r   )r	   r-   r>   r%   r   r   r   r^   s       r   #test_minimize_equality_approximatedz-TestSLSQP.test_minimize_equality_approximated   s    222 	+ 	+C48dC[x"04/3|08(: (: #*49> > >C C	NC	N333CEAq6****	+ 	+r   c                     t          | j        ddg| j        ddd| j        dd| j                  }t          |d         |d	                    t          |j        d
d
g           d S )NrU   r'   rW   rV   rp   rq   r6   rZ   rY   rs   r[   r\   r]   r   )r	   r-   r6   r>   r%   r   r   r   rc   s     r   test_minimize_equality_givenz&TestSLSQP.test_minimize_equality_given   sx    tx$$(%G,0,4$6 $6#y	* * *
 	II///1v&&&&&r   c                     t          | j        ddgd| j        dd| j        d| j        d| j                  }t          |d         |d	                    t          |j        d
d
g           d S NrU   r'   rW   rV   rp   rr   r-   rY   r6   rZ   r6   rY   rs   r[   r\   r]   r   	r	   r-   r6   r>   rA   r%   r   r   r   rc   s     r   test_minimize_equality_given2z'TestSLSQP.test_minimize_equality_given2   s     tx$W8',0+/<,4+/+<$> $>  $y* * * 	II///1v&&&&&r   c                     t          | j        ddgd| j        dd| j        d| j        d| j                  }t          |d         |d	                    t          |j        d
d
g           d S ry   )	r	   r-   r6   rD   rG   r%   r   r   r   rc   s     r   (test_minimize_equality_given_cons_scalarz2TestSLSQP.test_minimize_equality_given_cons_scalar   s     tx$W8',0+/+>,4+/+C$E $E  $y* * * 	II///1v&&&&&r   c                     t          | j        ddgd| j        dd| j        dd| j                  }t          |d         |d	                    t          |j        d
dgd           d S )NrU   r'   rW   rV   ineqrq   r{   r\   r]   r)   r   MbP?atol)r	   r-   r6   rI   r%   r   r   r   rc   s     r   test_minimize_inequality_givenz(TestSLSQP.test_minimize_inequality_given   s    tx$W8(,2+/=,4$6 $6  $y* * * 	II///1vD111111r   c                     t          | j        ddg| j        ddd| j        | j        d| j                  }t          |d         |d	                    t          |j        d
dg           d S )NrU   r'   rW   rV   r   )rr   r-   r6   rv   r\   r]   r)   r   )	r	   r-   r6   rN   rR   r%   r   r   r   rc   s     r   1test_minimize_inequality_given_vector_constraintsz;TestSLSQP.test_minimize_inequality_given_vector_constraints   s     tx$$(%G,2+/>+/+>$@ $@  $y* * * 	II///1v&&&&&r   c                     d }d }t          |dd          g}t          j        ddg          }t          ddgddg          }t	          ||d	||
           d S )Nc                     d| d         cxk    rdk    rn nd| d         cxk    rdk    sn J |             | d         dz  | d         z   S )Nr   r   ri   r    r   s    r   cz5TestSLSQP.test_minimize_bounded_constraint.<locals>.c   sZ    !>>>>>>>>>a1Q4nnnn1nnnnnannnQ43;1%%r   c                     d| d         cxk    rdk    rn nd| d         cxk    rdk    sn J |             | d         dz   | d         dz  z   S Nr   r   r)   r    r   s    r   fz5TestSLSQP.test_minimize_bounded_constraint.<locals>.f   s`    !>>>>>>>>>a1Q4nnnn1nnnnnannnaDAI:!	))r   r   g      ?g?ri   g        r'   rW   rZ   rj   rs   )r   r1   rM   r
   r	   )r   r   r   cnsx0bnds         r    test_minimize_bounded_constraintz*TestSLSQP.test_minimize_bounded_constraint   s    
	& 	& 	&	* 	* 	* #1a--.Zc
##b"XSz**BwsDDDDDDr   c                    t          | j        ddgd| j        dddgd| j        d| j        d| j        	          }t          |d
         |d                    t          |j        ddgd           t          d|j        d         cxk    odk    nc            t          d|j        d         cxk    odk    nc            d S )NrU   r'   rW   rV   皙r'   r@   皙?rp   rz   )rZ   r6   rY   rj   rs   r[   r\   r]   r   r   r   r   r   r   r@   r|   rc   s     r   #test_minimize_bound_equality_given2z-TestSLSQP.test_minimize_bound_equality_given2   s     tx$W8()95,0+/<,4+/+<$> $>  $y* * * 	II///Sz5555a%%%%A%%%%&&&ceAh%%%%#%%%%&&&&&r   c                     t          | j        ddgddd          }|\  }}}}}t          |dk    |           t          |ddg           d S )NrU   r'   rV   r   r   )rY   iprintfull_outputr)   )r   r-   r   r   r   r`   r   fxitsimodesmodes          r   test_unbounded_approximatedz%TestSLSQP.test_unbounded_approximated   se    D#;X"#16 6 6#& 2sE5
E"""!!aV,,,,,r   c                     t          | j        ddgd| j        dd          }|\  }}}}}t          |dk    |           t	          |ddg           d S )NrU   r'   rV   r   r   )rY   fprimer   r   r)   )r   r-   r6   r   r   r   s          r   test_unbounded_givenzTestSLSQP.test_unbounded_given   sl    D#;X"&(Q'(* * * $' 2sE5
E"""!!aV,,,,,r   c                     t          | j        ddgd| j        gdd          }|\  }}}}}t          |dk    |           t	          |ddg           d S )NrU   r'   rV   r   r   )rY   eqconsr   r   )r   r-   r>   r   r   r   s          r   test_equality_approximatedz$TestSLSQP.test_equality_approximated  sn    4*7#'<."#16 6 6 $' 2sE5
E"""!!aV,,,,,r   c           	          t          | j        ddg| j        d| j        gdd          }|\  }}}}}t	          |dk    |           t          |ddg           d S )NrU   r'   rV   r   r   )r   rY   r   r   r   )r   r-   r6   r>   r   r   r   s          r   test_equality_givenzTestSLSQP.test_equality_given  ss    D#; $w#'<.1'(* * * $' 2sE5
E"""!!aV,,,,,r   c           
          t          | j        ddg| j        d| j        | j        dd          }|\  }}}}}t          |dk    |           t          |ddg           d S )NrU   r'   rV   r   r   )r   rY   f_eqconsfprime_eqconsr   r   r   r-   r6   r>   rA   r   r   r   s          r   test_equality_given2zTestSLSQP.test_equality_given2  sx    D#; $w$(L)-):"#'(* * * $' 2sE5
E"""!!aV,,,,,r   c           	          t          | j        ddg| j        d| j        gdd          }|\  }}}}}t	          |dk    |           t          |ddgd	           d S )
NrU   r'   rV   r   r   )r   rY   ieqconsr   r   r)      decimal)r   r-   r6   rI   r   r   r   s          r   test_inequality_givenzTestSLSQP.test_inequality_given'  sx    D#; $x$(M?"#16 6 6 $' 2sE5
E"""!!aVQ777777r   c                 R   t          | j        ddg| j        dddg| j        | j        dd	  	        }|\  }}}}}t          |dk    |           t          |d	d	gd
           t          d|d         cxk    odk    nc            t          d|d         cxk    od	k    nc            d S )NrU   r'   rV   r   r   r   r   )r   rY   rj   r   r   r   r   r   r   r   r   r@   r   r   s          r   test_bound_equality_given2z$TestSLSQP.test_bound_equality_given21  s    D#; $x#-y"9$(L)-):"#16 6 6 $' 2sE5
E"""!!c3Z;;;;!!!!!!!!!"""ad!!!!c!!!!"""""r   c                     t          d dgd gd          }t          |dg           t          d dgd d	          }t          |dg           d S )
Nc                     | dz  S Nr)   r    zs    r   <lambda>z3TestSLSQP.test_scalar_constraints.<locals>.<lambda>A  
    A r   g      @c                     | d         dz
  S Nr   r   r    r   s    r   r   z3TestSLSQP.test_scalar_constraints.<locals>.<lambda>B  s    !A$( r   r   )r   r   r'   c                     | dz  S r   r    r   s    r   r   z3TestSLSQP.test_scalar_constraints.<locals>.<lambda>F  r   r   c                     | d         dz
  gS r   r    r   s    r   r   z3TestSLSQP.test_scalar_constraints.<locals>.<lambda>G  s    AaD1H: r   )	f_ieqconsr   )r   r   r   s     r   test_scalar_constraintsz!TestSLSQP.test_scalar_constraints?  s}    ~~t 2 23! ! ! 	"!bT***~~t!5!5! ! ! 	"!bT*****r   c                 6    t          d dgddggd           d S )Nc                     | dz  dz
  S Nr)   r   r    r   s    r   r   z/TestSLSQP.test_integer_bounds.<locals>.<lambda>M  s    QTAX r   r   r   rj   r   r   r   s    r   test_integer_boundszTestSLSQP.test_integer_boundsK  s+    %%sQF8AFFFFFFr   c                     t           j         t           j        ft          j        dg          t          j        dg          fg}t          d ddg|d          }t	          |ddg           d S )Nr)   r   c                 6    t          j        | dz  dz
            S r   )r1   sumr   s    r   r   z-TestSLSQP.test_array_bounds.<locals>.<lambda>T  s    1q!1!1 r   rh   r   r   )r1   infr2   r   r   )r   rj   r   s      r   test_array_boundszTestSLSQP.test_array_boundsO  sq     F7BF#bhsmmRXqc]]%CD11C:f! ! !!!aV,,,,,r   c                     t          t                    5  t          d g d           d d d            d S # 1 swxY w Y   d S )Nc                 
    ddgS r   r    r   s    r   r   z7TestSLSQP.test_obj_must_return_scalar.<locals>.<lambda>\  s
    !Q r   r   r)   r   )assert_raises
ValueErrorr   r   s    r   test_obj_must_return_scalarz%TestSLSQP.test_obj_must_return_scalarX  s     :&& 	4 	4''333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   6::c                 0    t          d g dd           d S )Nc                     dgS Nr   r    r   s    r   r   z;TestSLSQP.test_obj_returns_scalar_in_list.<locals>.<lambda>b  s    aS r   r   r   )r   r   r   s    r   test_obj_returns_scalar_in_listz)TestSLSQP.test_obj_returns_scalar_in_list^  s%     	==)))A666666r   c                     t                      }t          | j        ddgdd|| j                  }t	          |d         |d                    t	          |j                   t          |j        |d                    d S )	NrU   r'   rV   rW   )rY   rZ   callbackr[   r\   r]   nit)r   r	   r-   r%   r   r   r   r   )r   r   r`   s      r   test_callbackzTestSLSQP.test_callbackd  s|    <<tx$8%$)M M MII///$%%%X_c%j11111r   c                     ddg}d }d }t          d |d|dd|dfd	d
          }|j        }t           ||          dd           t           ||          dk               t          |j        |           d S )Nr   r   c                 *    | d         | d         z   dz
  S r   r    r   s    r   f1z5TestSLSQP.test_inconsistent_linearization.<locals>.f1x      Q4!A$;?"r   c                     | d         dz  dz
  S Nr   r)   r   r    r   s    r   f2z5TestSLSQP.test_inconsistent_linearization.<locals>.f2z  s    Q419q= r   c                 0    | d         dz  | d         dz  z   S r   r    r   s    r   r   z;TestSLSQP.test_inconsistent_linearization.<locals>.<lambda>}      adAg!a' r   rp   rr   r-   r   r   Nr   rW   rs   rj   rZ   g:0yE>r   g:0yE)r	   r   r   r   r\   )r   r   r   r   sols        r   test_inconsistent_linearizationz)TestSLSQP.test_inconsistent_linearizationm  s     F	# 	# 	#	! 	! 	!''!%R00!'r224'   E1qt,,,,1S!!!!!r   c                 x    ddg}t          d |dd ddd dfd	d
          }t          |j         |           d S )Nr   r)   c                 0    | d         dz  | d         dz  z   S r   r    r   s    r   r   z0TestSLSQP.test_regression_5743.<locals>.<lambda>  r   r   rp   c                 *    | d         | d         z   dz
  S r   r    r   s    r   r   z0TestSLSQP.test_regression_5743.<locals>.<lambda>  s    qtAaDy{ r   r   r   c                     | d         dz
  S )Nr   r)   r    r   s    r   r   z0TestSLSQP.test_regression_5743.<locals>.<lambda>  s    1a r   r   rW   r   )r	   r   r\   )r   r   r   s      r   test_regression_5743zTestSLSQP.test_regression_5743  sp     F''!%-B-BCC!'/?/?@@B'   	CK%%%%%r   c                 n    d }t          |g dd          }t          |j        j        dk               d S )Nc                 f    | d         dz
  dz  d| d         dz
  dz  z  z   d| d         dz
  dz  z  z   S )Nr   r   r)   ri   r    r   s    r   funcz$TestSLSQP.test_gh_6676.<locals>.func  s?    aD1Hq=1adQh]?2S!A$(Q5FFFr   r   r   r   rW   rZ   )r   )r	   r   r6   rQ   )r   r   r   s      r   test_gh_6676zTestSLSQP.test_gh_6676  sK    	G 	G 	G tYYYw777%&&&&&r   c                     dddt           j        dft           j        dffdt           j         fdfg}|D ]H}t          t                    5  t	          | j        ddg|d	
           d d d            n# 1 swxY w Y   Id S )N)r   r)   r)   r   )r   r   )r   r   r   r   )r   r   rU   r'   rW   )rj   rZ   )r1   r   r   r   r	   r-   )r   bounds_listrj   s      r   test_invalid_boundszTestSLSQP.test_invalid_bounds  s     fa[261+&"&\6"
 " 	O 	OFz** O OD#;vgNNNNO O O O O O O O O O O O O O O	O 	Os   	A00A4	7A4	c                    d }t          |dgddg          }t          |j                   t          |j        dd           t          |d	gdd
g          }t          |j                   t          |j        dd           t          |d	gddg          }t          |j                   t          |j        dd           t          |dgdd
g          }t          |j                   t          |j        dd           t          |dgddg          }t          |j                   t          |j        dd           t          |dgddg          }t          |j                   t          |j        dd           d S )Nc                     | d         dz
  dz  S r   r    r   s    r   r   z)TestSLSQP.test_bounds_clipping.<locals>.f  s    aD1Hq= r   
   slsqpr   rZ   rj   r   绽|=r   )r)   Nr)         )r@   r   r	   r   r\   r   r   )r   r   r   s      r   test_bounds_clippingzTestSLSQP.test_bounds_clipping  s   	! 	! 	! q2$w	{CCCqu----q3%DDDqu----q3%DDDqu----q2$w	{CCCqu----q4&'CCCqu----q2$wyAAAqu------r   c                 4   d }dd dg}dd dg}dd ddd dg}t          |dgd	|
          }t          |j                   t          |j        dd           t          |dgd	|
          }t          |j                   t          |j        dd           t          |dgd	|
          }t          |j                   t          |j        dd           t          |dgd	|
          }t          |j                   t          |j        dd           t          |dgd	|
          }t          |j                   t          |j        dd           t          |dgd	|
          }t          |j                   t          |j        dd           d S )Nc                 &    | \  } | | z  d| z  z
  dz   S r   r    r   s    r   r   z,TestSLSQP.test_infeasible_initial.<locals>.f  s    BAQ319q= r   r   c                     d| z
  S r   r    r   s    r   r   z3TestSLSQP.test_infeasible_initial.<locals>.<lambda>  
    AE r   r   c                     | dz
  S r   r    r   s    r   r   z3TestSLSQP.test_infeasible_initial.<locals>.<lambda>  r
  r   c                     d| z
  S r   r    r   s    r   r   z3TestSLSQP.test_infeasible_initial.<locals>.<lambda>  
    QU r   c                     | dz   S Nr   r    r   s    r   r   z3TestSLSQP.test_infeasible_initial.<locals>.<lambda>  r  r   r   r   )rZ   rs   r   r  r   r  r)   r  r  )r   r   cons_ucons_lcons_ulr   s         r   test_infeasible_initialz!TestSLSQP.test_infeasible_initial  s   	! 	! 	! "//::;!//::;"??;;"??;;= q2$wFCCCqu----q3%VDDDqu----q3%VDDDqu----q2$wFCCCqu----q4&gFFFqu----q2$wGDDDqu------r   dicts)mode	Compilersfortrannamez
intel-llvmz7Runtime warning due to floating point issues, not logic)reasonc                     d }d }d }d}d}t          d|          t          d|          f}t          ||d||	          }t          |j                    d S )
Nc                 0    d| d         z  d| d         z  z   S )Nr@   r   r0   r   r    r   s    r   costz6TestSLSQP.test_inconsistent_inequalities.<locals>.cost  s    !9q1Q4x''r   c                 *    | d         | d         z
  dz
  S )Nr   r   r    r   s    r   	ineqcons1z;TestSLSQP.test_inconsistent_inequalities.<locals>.ineqcons1  r   r   c                 $    | d         | d         z
  S r   r    r   s    r   	ineqcons2z;TestSLSQP.test_inconsistent_inequalities.<locals>.ineqcons2  s    Q4!A$;r   )r      )r!  r"  r   r   rW   r   )dictr	   r   r\   )r   r  r  r   r   rj   consr`   s           r   test_inconsistent_inequalitiesz(TestSLSQP.test_inconsistent_inequalities  s    	( 	( 	(	# 	# 	#	 	 	 #&i000$F	2R2R2RStRDQQQCK     r   c                     d }t          ddgt          j        t          j        g          }t          |ddgd|          }t	          |j                   t          |j        ddg           d S )Nc                 0    | d         dz  | d         dz  z   S r   r    r   s    r   r   z)TestSLSQP.test_new_bounds_type.<locals>.f	  s    Q419qtqy((r   r   r   r   r  )r
   r1   r   r	   r   r\   r   r   )r   r   rj   r   s       r   test_new_bounds_typezTestSLSQP.test_new_bounds_type  ss    	) 	) 	)A 011q1a&@@@1v&&&&&r   c                 \     G d d          } |            }|                                  d S )Nc                   &    e Zd Zd Zd Zd Zd ZdS )9TestSLSQP.test_nested_minimization.<locals>.NestedProblemc                     d| _         d S r   )F_outer_countr   s    r   r   zBTestSLSQP.test_nested_minimization.<locals>.NestedProblem.__init__  s    %&"""r   c                     | xj         dz  c_         | j         dk    rt          d          t          | j        dd          }t	          |j                   t          |j        ddg           |d         dz  |d         dz  z   |d         dz  z   S )	Nr   i  z(Nested minimization failed to terminate.)r   r0   rW   r   r   r)   )r.  	Exceptionr	   F_innerr   r\   r   r   )r   r   	inner_ress      r   F_outerzATestSLSQP.test_nested_minimization.<locals>.NestedProblem.F_outer  s    ""a'""%,,#$NOOO$T\6'JJJ		)***	aV444tQw1q(1Q4722r   c                 <    |d         dz
  dz  |d         dz
  dz  z   S r   r    r   s     r   r1  zATestSLSQP.test_nested_minimization.<locals>.NestedProblem.F_inner   s%    !q1}!q1}44r   c                     t          | j        dd          }t          |j                   t	          |j        g d           d S )N)r!  r!  r!  rW   r   r   )r	   r3  r   r\   r   r   )r   	outer_ress     r   solvez?TestSLSQP.test_nested_minimization.<locals>.NestedProblem.solve#  sE    $T\9WMMM		)***	YYY77777r   N)r   r   r   r   r3  r1  r7  r    r   r   NestedProblemr,    sP        ' ' '3 3 35 5 58 8 8 8 8r   r8  )r7  )r   r8  problems      r   test_nested_minimizationz"TestSLSQP.test_nested_minimization  sH    	8 	8 	8 	8 	8 	8 	8 	8,  -//r   c                 
   d }d }d }d|d}d|d}t          |ddgd||gd	d
g          }t          j                            |j        d           t          j                            |j        ddg           |j        sJ d S )Nc                 6    t          j        | d                   S r  )r1   sqrtr   s    r   r-   z"TestSLSQP.test_gh1758.<locals>.fun/  s    71Q4== r   c                 0    | d         d| d         z  dz  z
  S )r;   r   r)   r   r   r    r   s    r   r>   z&TestSLSQP.test_gh1758.<locals>.f_eqcon2  s    Q41qt8/))r   c                 2    | d         | d          dz   dz  z
  S )r;   r   r   r   r    r   s    r   f_eqcon2z'TestSLSQP.test_gh1758.<locals>.f_eqcon26  s     Q4AaD519***r   rp   r      g      ?rW   )r  r   )r   rA  )rZ   rs   rj   g8r](k?gQUU?gc@?)r	   r1   testingr   r-   r   r\   )r   r-   r>   r@  c1c2r`   s          r   test_gh1758zTestSLSQP.test_gh1758+  s    	! 	! 	!	* 	* 	*	+ 	+ 	+ 7++8,,sQIg$&8Y4GI I I 	
""37O<<<

""35:y*ABBB{r   c           
          t           j                            d           dd ddd df}d}d }g d}t          ||d	||d
dd          }|j        rJ d S )Nr   r   c                 ,    | d          | d         z
  dz
  S )Nr   r   r   r    r   s    r   r   z'TestSLSQP.test_gh9640.<locals>.<lambda>F  s    1Q4%!A$,2B r   r   c                 *    | d         | d         z   dz
  S )Nr   r)   r    r   s    r   r   z'TestSLSQP.test_gh9640.<locals>.<lambda>G  s    !A$1+/ r   )r/   r)   rI  rI  c                     dS r  r    r   s    r   targetz%TestSLSQP.test_gh9640.<locals>.targetJ  s    1r   )g51gУX{gP(rW   Fi'  )r$   maxiter)rZ   rj   rs   r[   )r1   randomseedr	   r\   )r   r%  bndsrK  r   r`   s         r   test_gh9640zTestSLSQP.test_gh9640D  s    
	r(B(BCC(A(ABBD*	 	 	KKKvr'$D',>>@ @ @ ;r   c                    t           j                            d           t          t          j        dg          t          j        dg                    t          j                  }t          j        j        j        j        z
  t           j                            |          z  z             }fd}t          j	        t          d          5  t          ||d          }|j        sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr   g?r'   c                     | j         k                                    sJ t          j                            |           S r8   )lballr1   linalgnorm)r   rj   s    r   r   z7TestSLSQP.test_parameters_stay_within_bounds.<locals>.f_  s5    N'')))))9>>!$$$r   zx were outside bounds)matchrW   r  )r1   rM  rN  r
   r2   lenrS  ubpytestwarnsRuntimeWarningr	   r\   )r   n_inputsr   r   r`   rj   s        @r   "test_parameters_stay_within_boundsz,TestSLSQP.test_parameters_stay_within_boundsS  sB    		q#3%99vy>>Xfi69vy#8i&&x00#1 1 2 2	% 	% 	% 	% 	% \.0GHHH 	 	1b@@@C;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   C??DDN)r'   );r   r   r   r   r&   r-   r6   r9   r>   rA   rD   rG   rI   rK   rN   rR   ra   rd   rl   rn   rt   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rZ  markxfailscipyshow_configr&  r)  r:  rE  rP  thread_unsafer^  r    r   r   r"   r"      s        $ $ $2 2 2 2 
- 
- 
- 
-4 4 4 4' ' ' '# # # #( ( ( (6 6 6 6- - - -# # # #  ' ' '
+ + +' ' '% % %' ' '+ + +' ' '' ' '' ' '	2 	2 	2
' 
' 
'E E E$' ' '"- - -- - -- - -- - -
- 
- 
-8 8 8# # #
+ 
+ 
+G G G- - -4 4 47 7 72 2 2" " "8& & &' ' 'O O O. . .>!. !. !.F [(u(g666{CINvV&'W  Y Y! !Y Y!0' ' '  6  2   [    r   r"   )r   numpy.testingr   r   r   r   rZ  r   r   numpyr1   ra  scipy.optimizer   r	   r
   r   r   r"   r    r   r   <module>rg     s   : : : : : : : : : : : : * * * * * *       L L L L L L L L L L L L       I	 I	 I	 I	 I	 I	 I	 I	 I	 I	r   