Ë
    âQ(hÞ[  ã                   ó„   — 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y)
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y)Ú
MyCallBackzJpass a custom callback function

    This makes sure it's being used.
    c                 ó    — d| _         d| _        y )NFr   ©Úbeen_calledÚncalls©Úselfs    ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_slsqp.pyÚ__init__zMyCallBack.__init__   s   € Ø ˆÔØˆ�ó    c                 ó<   — d| _         | xj                  dz  c_        y )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/j`                  jc                   e2jf                  d-¬.«      d/   d0   d1   d2k(  d3¬4«      d5„ «       Z4d6„ Z5d7„ Z6d8„ Z7d9„ Z8e/j`                  jr                  d:„ «       Z:y;)=Ú	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| _         y )NÚdispF)Úoptsr   s    r   Úsetup_methodzTestSLSQP.setup_method#   s   € Ø˜U�Oˆ�	r   c                 óV   — |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   € ð ˆa‰DˆØˆa‰DˆØ�Q�q‘S˜‘U˜Q˜q™S‘[ 1 a¡4Ñ'¨!¨A¨q©D©&Ñ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[   € ð ˆa‰DˆØˆa‰DˆØ�R˜‘T˜A˜a™C‘Z !‘^Ñ$ˆØ�Q�q‘S˜1˜Q™3‘YÑˆÜ�x‰x˜˜t˜¤eÓ,Ð,r   c                 óJ   — | j                  ||«      | j                  ||«      fS ©N)r,   r5   )r   r)   r*   s      r   Úfun_and_jaczTestSLSQP.fun_and_jacB   s#   € Ø�x‰x˜˜4Ó  $§(¡(¨1¨dÓ"3Ð3Ð3r   c                 ó@   — t        j                  |d   |d   z
  g«      S )ú Equality constraint r   r   ©r0   r1   ©r   r   r*   s      r   Úf_eqconzTestSLSQP.f_eqconE   s   € ä�x‰x˜˜1™  !¡™˜Ó&Ð&r   c                 ó2   — t        j                  ddgg«      S )z! Equality constraint, derivative r   éÿÿÿÿr;   r<   s      r   Úfprime_eqconzTestSLSQP.fprime_eqconI   ó   € ä�x‰x˜!˜R˜˜	Ó"Ð"r   c                 ó,   — | j                  ||«      d   S )z Scalar equality constraint r   )r=   r<   s      r   Úf_eqcon_scalarzTestSLSQP.f_eqcon_scalarM   s   € à�|‰|˜A˜tÓ$ QÑ'Ð'r   c                 óH   — | j                  ||«      d   j                  «       S )z( Scalar equality constraint, derivative r   )r@   Útolistr<   s      r   Úfprime_eqcon_scalarzTestSLSQP.fprime_eqcon_scalarQ   s#   € à× Ñ   DÓ)¨!Ñ,×3Ñ3Ó5Ð5r   c                 óF   — t        j                  |d   |d   z
  dz
  g«      S )z Inequality constraint r   r   ç      ð?r;   r<   s      r   Úf_ieqconzTestSLSQP.f_ieqconU   s%   € ä�x‰x˜˜1™  !¡™ sÑ*Ð+Ó,Ð,r   c                 ó2   — t        j                  ddgg«      S )z# Inequality constraint, derivative r   r?   r;   r<   s      r   Úfprime_ieqconzTestSLSQP.fprime_ieqconY   rA   r   c                 ó,   — t        j                  |«      S )z Vector inequality constraint )r0   Úasarrayr   s     r   Ú	f_ieqcon2zTestSLSQP.f_ieqcon2]   s   € ä�z‰z˜!‹}Ðr   c                 óF   — t        j                  |j                  d   «      S )z* Vector inequality constraint, derivative r   )r0   ÚidentityÚshaper   s     r   Úfprime_ieqcon2zTestSLSQP.fprime_ieqcon2a   s   € ä�{‰{˜1Ÿ7™7 1™:Ó&Ð&r   c           	      ó¼   — g d¢}|D ]S  }t        | j                  ddgd|d| j                  ¬«      }t        |d   |d   «       t	        |j
                  d	d
g«       ŒU y )N©NFz2-pointz3-pointç      ð¿rH   ©rU   ÚSLSQP©Úargsr5   ÚmethodÚoptionsÚsuccessÚmessager(   r   )r	   r,   r%   r   r   r   ©r   Újacsr5   Úress       r   Ú$test_minimize_unbounded_approximatedz.TestSLSQP.test_minimize_unbounded_approximatedf   s`   € â2ˆØò 	+ˆCÜ˜4Ÿ8™8 d¨C [°xØ"¨7Ø#'§9¡9ô.ˆCô �C˜	‘N C¨	¡NÔ3Ü˜CŸE™E A q 6Õ*ñ	+r   c                 óº   — t        | j                  ddgd| j                  d| j                  ¬«      }t	        |d   |d   «       t        |j                  dd	g«       y )
NrU   rH   rV   rW   rX   r\   r]   r(   r   )r	   r,   r5   r%   r   r   r   ©r   r`   s     r   Útest_minimize_unbounded_givenz'TestSLSQP.test_minimize_unbounded_givenp   sN   € ä�t—x‘x $¨ °8ØŸ8™8¨G¸T¿Y¹YôHˆä��I‘  I¡Ô/Ü˜Ÿ™  1˜vÕ&r   c                 ó€  — g d¢}|D ]©  }t        j                  d¬«      5  t        | j                  ddgd|dd| j                  ¬	«      }d d d «       t        d
   |d   «       t        |j                  ddg«       t        d|j                  d   k  «       t        |j                  d   dk  «       Œ« y # 1 sw Y   ŒlxY w)NrT   Úignore)ÚinvalidrU   rH   rV   ))ç      @N)Nç      à?rW   )rY   r5   ÚboundsrZ   r[   r\   r]   rh   ri   r   r   )r0   Úerrstater	   r,   r%   r   r   r   r^   s       r   Ú"test_minimize_bounded_approximatedz,TestSLSQP.test_minimize_bounded_approximatedw   s±   € â2ˆØò 		%ˆCÜ—‘ XÔ.ñ BÜ˜tŸx™x¨$°¨¸8Ø#&Ø&@Ø&-°t·y±yôB�÷Bô
 �C˜	‘N C¨	¡NÔ3Ü˜CŸE™E C¨ :Ô.Ü�C˜3Ÿ5™5 ™8‘OÔ$Ü�C—E‘E˜!‘H ‘OÕ$ñ		%÷Bð Bús    )B4Â4B=	c                 ó¦   — t        | j                  ddgddd| j                  ¬«      }t        |d   |d   «       t	        |j
                  d	d
g«       y )NrU   rH   rV   TrW   rX   r\   r]   r(   r   )r	   r8   r%   r   r   r   rc   s     r   Ú test_minimize_unbounded_combinedz*TestSLSQP.test_minimize_unbounded_combined…   sL   € ä�t×'Ñ'¨$°¨¸8Ø¨¸¿¹ôDˆä��I‘  I¡Ô/Ü˜Ÿ™  1˜vÕ&r   c                 óÚ   — g d¢}|D ]b  }t        | j                  ddgd|d| j                  ddœd| j                  ¬«      }t	        |d	   |d
   «       t        |j                  ddg«       Œd y )NrT   rU   rH   rV   Úeq©Útyper,   rY   rW   )rY   r5   ÚconstraintsrZ   r[   r\   r]   r   )r	   r,   r=   r%   r   r   r   r^   s       r   Ú#test_minimize_equality_approximatedz-TestSLSQP.test_minimize_equality_approximatedŒ   st   € â2ˆØò 	+ˆCÜ˜4Ÿ8™8 d¨C [°xØ"Ø04Ø/3¯|©|Ø08ñ(:ð #*°4·9±9ô>ˆCô �C˜	‘N C¨	¡NÔ3Ü˜CŸE™E A q 6Õ*ñ	+r   c                 óØ   — t        | j                  ddg| j                  ddd| j                  ddœ| j                  ¬«      }t        |d   |d	   «       t        |j                  d
d
g«       y )NrU   rH   rW   rV   rp   rq   ©r5   rZ   rY   rs   r[   r\   r]   r   )r	   r,   r5   r=   r%   r   r   r   rc   s     r   Útest_minimize_equality_givenz&TestSLSQP.test_minimize_equality_given™   sa   € ä�t—x‘x $¨ °$·(±(Ø%¨GØ,0¸¿¹Ø,4ñ$6à#Ÿy™yô	*ˆô
 	��I‘  I¡Ô/Ü˜Ÿ™  1˜vÕ&r   c                 óî   — t        | j                  ddgd| j                  dd| j                  d| j                  dœ| j
                  ¬«      }t        |d   |d	   «       t        |j                  d
d
g«       y ©NrU   rH   rW   rV   rp   ©rr   r,   rY   r5   ©rZ   r5   rY   rs   r[   r\   r]   r   ©	r	   r,   r5   r=   r@   r%   r   r   r   rc   s     r   Útest_minimize_equality_given2z'TestSLSQP.test_minimize_equality_given2£   so   € ô �t—x‘x $¨ °WØŸ8™8¨'Ø,0Ø+/¯<©<Ø,4Ø+/×+<Ñ+<ñ$>ð  $Ÿy™yô*ˆô 	��I‘  I¡Ô/Ü˜Ÿ™  1˜vÕ&r   c                 óî   — t        | j                  ddgd| j                  dd| j                  d| j                  dœ| j
                  ¬«      }t        |d   |d	   «       t        |j                  d
d
g«       y ry   )	r	   r,   r5   rC   rF   r%   r   r   r   rc   s     r   Ú(test_minimize_equality_given_cons_scalarz2TestSLSQP.test_minimize_equality_given_cons_scalar°   sr   € ô �t—x‘x $¨ °WØŸ8™8¨'Ø,0Ø+/×+>Ñ+>Ø,4Ø+/×+CÑ+Cñ$Eð  $Ÿy™yô*ˆô 	��I‘  I¡Ô/Ü˜Ÿ™  1˜vÕ&r   c                 óÜ   — t        | j                  ddgd| j                  dd| j                  ddœ| j                  ¬«      }t        |d   |d	   «       t        |j                  d
dgd¬«       y )NrU   rH   rW   rV   Úineqrq   r{   r\   r]   r(   r   çü©ñÒMbP?©Úatol)r	   r,   r5   rI   r%   r   r   r   rc   s     r   Útest_minimize_inequality_givenz(TestSLSQP.test_minimize_inequality_given½   sf   € ä�t—x‘x $¨ °WØŸ8™8¨(Ø,2Ø+/¯=©=Ø,4ñ$6ð  $Ÿy™yô*ˆô 	��I‘  I¡Ô/Ü˜Ÿ™  1˜v¨DÖ1r   c                 óì   — t        | j                  ddg| j                  ddd| j                  | j                  dœ| j
                  ¬«      }t        |d   |d	   «       t        |j                  d
dg«       y )NrU   rH   rW   rV   r�   )rr   r,   r5   rv   r\   r]   r(   r   )	r	   r,   r5   rN   rR   r%   r   r   r   rc   s     r   Ú1test_minimize_inequality_given_vector_constraintsz;TestSLSQP.test_minimize_inequality_given_vector_constraintsÈ   sm   € ô �t—x‘x $¨ °$·(±(Ø%¨GØ,2Ø+/¯>©>Ø+/×+>Ñ+>ñ$@ð  $Ÿy™yô*ˆô 	��I‘  I¡Ô/Ü˜Ÿ™  1˜vÕ&r   c                 óš   — d„ }d„ }t        |dd«      g}t        j                  ddg«      }t        ddgddg«      }t	        ||d	||¬
«       y )Nc                 ó†   — d| d   cxk  rdk  rn J | «       ‚d| d   cxk  rdk  sJ | «       ‚ J | «       ‚| d   dz  | d   z   S )Nr   r   ri   r    ©r   s    r   Úcz5TestSLSQP.test_minimize_bounded_constraint.<locals>.cÙ   sY   € Ø˜˜!™”> ”>Ð7°aÓ7Ð4 a¨1¨Q©4¤n°1¢nÐ7°aÓ7Ð4 nÐ7°aÓ7Ð4Ø�Q‘4˜3‘;  1¡Ñ%Ð%r   c                 óŽ   — d| d   cxk  rdk  rn J | «       ‚d| d   cxk  rdk  sJ | «       ‚ J | «       ‚| d   dz   | d   dz  z   S ©Nr   r   r(   r    rŠ   s    r   Úfz5TestSLSQP.test_minimize_bounded_constraint.<locals>.fÝ   s_   € Ø˜˜!™”> ”>Ð7°aÓ7Ð4 a¨1¨Q©4¤n°1¢nÐ7°aÓ7Ð4 nÐ7°aÓ7Ð4Ø�a‘D˜A‘I�:  !¡¨¡	Ñ)Ð)r   r   g      ø?gÍÌÌÌÌÌì?ri   g        rH   rW   ©rZ   rj   rs   )r   r0   rM   r
   r	   )r   r‹   rŽ   ÚcnsÚx0Úbnds         r   Ú test_minimize_bounded_constraintz*TestSLSQP.test_minimize_bounded_constraintÔ   sU   € ò
	&ò	*ô # 1 a¨Ó-Ð.ˆÜ�Z‰Z˜˜c˜
Ó#ˆÜ�b˜"�X  S˜zÓ*ˆÜ��B˜w¨sÀÖ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  xr dk  nc «       t        d|j                  d   cxk  xr
 dk  «       y c «       y )NrU   rH   rW   rV   ©çš™™™™™é¿rH   ©r?   çš™™™™™é?rp   rz   )rZ   r5   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³   € ô �t—x‘x $¨ °WØŸ8™8¨(Ø)¨9Ð5Ø,0Ø+/¯<©<Ø,4Ø+/×+<Ñ+<ñ$>ð  $Ÿy™yô*ˆô 	��I‘  I¡Ô/Ü˜Ÿ™  S˜z°Õ5Ü�˜Ÿ™˜a™Ö% AÔ%Ô&Ü��c—e‘e˜A‘hÖ% #Ñ%Õ&Ñ%Õ&r   c                 ó†   — t        | j                  ddgddd¬«      }|\  }}}}}t        |dk(  |«       t        |ddg«       y )NrU   rH   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÷   sK   € ä˜Ÿ™ D¨# ;°XØ"#°1ô6ˆà#&Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! a¨ VÕ,r   c                 óœ   — t        | j                  ddgd| j                  dd¬«      }|\  }}}}}t        |dk(  |«       t	        |ddg«       y )NrU   rH   rV   r   r   )rY   Úfprimer›   rœ   r(   )r   r,   r5   r   r   r�   s          r   Útest_unbounded_givenzTestSLSQP.test_unbounded_givenÿ   sT   € ä˜Ÿ™ D¨# ;°XØ"&§(¡(°QØ'(ô*ˆð $'Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! a¨ VÕ,r   c                 óž   — t        | j                  ddgd| j                  gdd¬«      }|\  }}}}}t        |dk(  |«       t	        |ddg«       y )NrU   rH   rV   r   r   )rY   Úeqconsr›   rœ   )r   r,   r=   r   r   r�   s          r   Útest_equality_approximatedz$TestSLSQP.test_equality_approximated  sV   € ä˜Ÿ™ 4¨ *°7Ø#'§<¡< .Ø"#°1ô6ˆð $'Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! a¨ VÕ,r   c           	      ó´   — t        | j                  ddg| j                  d| j                  gdd¬«      }|\  }}}}}t	        |dk(  |«       t        |ddg«       y )NrU   rH   rV   r   r   )r¤   rY   r§   r›   rœ   )r   r,   r5   r=   r   r   r�   s          r   Útest_equality_givenzTestSLSQP.test_equality_given  s]   € ä˜Ÿ™ D¨# ;Ø $§¡¨wØ#'§<¡< .¸1Ø'(ô*ˆð $'Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! a¨ VÕ,r   c           
      óÈ   — t        | j                  ddg| j                  d| j                  | j                  dd¬«      }|\  }}}}}t        |dk(  |«       t        |ddg«       y )NrU   rH   rV   r   r   )r¤   rY   Úf_eqconsÚfprime_eqconsr›   rœ   ©r   r,   r5   r=   r@   r   r   r�   s          r   Útest_equality_given2zTestSLSQP.test_equality_given2  se   € ä˜Ÿ™ D¨# ;Ø $§¡¨wØ$(§L¡LØ)-×):Ñ):Ø"#Ø'(ô*ˆð $'Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! a¨ VÕ,r   c           	      ó¸   — t        | j                  ddg| j                  d| j                  gdd¬«      }|\  }}}}}t	        |dk(  |«       t        |ddgd¬	«       y )
NrU   rH   rV   r   r   )r¤   rY   Úieqconsr›   rœ   r(   é   ©Údecimal)r   r,   r5   rI   r   r   r�   s          r   Útest_inequality_givenzTestSLSQP.test_inequality_given'  s_   € ä˜Ÿ™ D¨# ;Ø $§¡¨xØ$(§M¡M ?Ø"#°1ô6ˆð $'Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! a¨ V°QÖ7r   c                 óL  — 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  xr dk  nc «       t        d|d   cxk  xr
 d	k  «       y c «       y )NrU   rH   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¡LØ)-×):Ñ):Ø"#°1ô6ˆð $'Ñ ˆˆ2ˆs�E˜5Ü�˜‘
˜EÔ"Ü! ! c¨3 Z¸Õ;Ü�˜˜!™Ö! Ô!Ô"Ü��a˜‘dÖ!˜cÑ!Õ"Ñ!Õ"r   c                 ó‚   — t        d„ dgd„ gd¬«      }t        |dg«       t        d„ dgd„ d¬	«      }t        |dg«       y )
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›   rH   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   € ¨A¨a©D°1©H¨:€ r   )Ú	f_ieqconsr›   )r   r   r   s     r   Útest_scalar_constraintsz!TestSLSQP.test_scalar_constraints?  sM   € ä‘~¨ tÙ 2Ð3Øô!ˆô 	" ! b TÔ*ä‘~¨ tÙ!5Øô!ˆô 	" ! b TÕ*r   c                 ó,   — t        d„ dgddggd¬«       y )Nc                 ó   — | dz  dz
  S ©Nr(   r   r    r»   s    r   r½   z/TestSLSQP.test_integer_bounds.<locals>.<lambda>M  s   € ˜Q ™T A™X€ r   r   r   ©rj   r›   ©r   r   s    r   Útest_integer_boundszTestSLSQP.test_integer_boundsK  s   € äÑ%¨ s°Q¸°F°8ÀAÖ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«       y )Nr(   r²   c                 ó8   — t        j                  | dz  dz
  «      S rÇ   )r0   Úsumr»   s    r   r½   z-TestSLSQP.test_array_bounds.<locals>.<lambda>T  s   € ¤§¡¨¨1©¨q©Ó!1€ r   rh   r   rÈ   )r0   Úinfr1   r   r   )r   rj   r   s      r   Útest_array_boundszTestSLSQP.test_array_boundsO  s\   € ô —F‘F�7œBŸF™FÐ#¤b§h¡h°¨s£m´R·X±X¸q¸c³]Ð%CÐDˆÜÑ1°C¸°:ÀfØô!ˆä! ! a¨ VÕ,r   c                 ój   — t        t        «      5  t        d„ g d¢«       d d d «       y # 1 sw Y   y xY w)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ÜÑ'ªÔ3÷	4÷ 	4ñ 	4ús   �)©2c                 ó&   — t        d„ g d¢d¬«       y )Nc                 ó   — dgS ©Nr   r    rŠ   s    r   r½   z;TestSLSQP.test_obj_returns_scalar_in_list.<locals>.<lambda>b  s   € ˜a˜S€ r   rÒ   r   )r›   rÉ   r   s    r   Útest_obj_returns_scalar_in_listz)TestSLSQP.test_obj_returns_scalar_in_list^  s   € ô 	‘=¢)°AÖ6r   c                 óæ   — t        «       }t        | j                  ddgdd|| j                  ¬«      }t	        |d   |d   «       t	        |j
                  «       t        |j                  |d   «       y )	NrU   rH   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_   € ä“<ˆÜ�t—x‘x $¨ °8Ø%°À$Ç)Á)ôMˆä��I‘  I¡Ô/Ü�×$Ñ$Ô%Ü�X—_‘_ c¨%¡jÕ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                  |«       y )Nr   r   c                 ó   — | d   | d   z   dz
  S r�   r    rŠ   s    r   Úf1z5TestSLSQP.test_inconsistent_linearization.<locals>.f1x  ó   € Ø�Q‘4˜!˜A™$‘; ‘?Ð"r   c                 ó   — | d   dz  dz
  S ©Nr   r(   r   r    rŠ   s    r   Úf2z5TestSLSQP.test_inconsistent_linearization.<locals>.f2z  s   € Ø�Q‘4˜1‘9˜q‘=Ð r   c                 ó$   — | d   dz  | d   dz  z   S rã   r    rŠ   s    r   r½   z;TestSLSQP.test_inconsistent_linearization.<locals>.<lambda>}  ó   € �a˜‘d˜A‘g  !¡ a¡Ñ'€ r   rp   ©rr   r,   r�   ©©r   Nré   rW   ©rs   rj   rZ   g:Œ0âŽyE>rƒ   g:Œ0âŽyE¾)r	   r   r   r   r\   )r   r   rà   rä   Úsols        r   Útest_inconsistent_linearizationz)TestSLSQP.test_inconsistent_linearizationm  s{   € ð �ˆFˆò	#ò	!äÙ'ØØ!%¨RÑ0Ø!'¨rÑ2ð4à'Øôˆð �E‰Eˆä™˜1›˜q tÕ,Ü‘�1“˜‘ÔÜ�—‘˜SÕ!r   c                 óp   — ddg}t        d„ |dd„ dœdd„ dœfd	d
¬«      }t        |j                   |«       y )Nr   r(   c                 ó$   — | 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¸±t¸A¸a¹D±yÀ±{€ 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‰  sM   € ð �ˆFˆÜÙ'ØØ!%Ñ-BÑCØ!'Ñ/?Ñ@ðBà'Øôˆô 	�C—K‘K� Õ%r   c                 ón   — d„ }t        |g d¢d¬«      }t        |j                  j                  dk(  «       y )Nc                 óT   — | 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?   € Ø�a‘D˜1‘H˜q‘= 1 a¨¡d¨Q¡h°¡]¡?Ñ2°S¸!¸A¹$À¹(ÀQ¹Ñ5FÑFÐFr   ©r   r   r   rW   ©rZ   )r²   )r	   r   r5   rQ   )r   rô   rë   s      r   Útest_gh_6676zTestSLSQP.test_gh_6676–  s-   € ò	Gô �tšY¨wÔ7ˆÜ�—‘—‘ Ñ%Õ&r   c                 ó  — dddt         j                  dft         j                  dffdt         j                   fdfg}|D ]5  }t        t        «      5  t	        | j
                  ddg|d	¬
«       d d d «       Œ7 y # 1 sw Y   ŒBxY w)N)©r   r(   ©r(   r   )rú   rù   )rú   rú   r   r   )r   r   rU   rH   rW   )rj   rZ   )r0   rÎ   rÓ   rÔ   r	   r,   )r   Úbounds_listrj   s      r   Útest_invalid_boundszTestSLSQP.test_invalid_bounds�  sŽ   € ð ØØÜ�f‰f�aˆ[œ2Ÿ6™6 1˜+Ð&Ø”"—&‘&�ˆ\˜6Ð"ð
ˆð "ò 	OˆFÜœzÓ*ñ OÜ˜Ÿ™ D¨# ;°vÀgÕN÷Oð Oñ	O÷Oð Oús   ÁA8Á8B	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¬«       y )Nc                 ó   — | d   dz
  dz  S r�   r    rŠ   s    r   rŽ   z)TestSLSQP.test_bounds_clipping.<locals>.f¯  s   € Ø�a‘D˜1‘H˜q‘=Ð 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)  € ò	!ô �q˜2˜$ w¸	°{ÔCˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜3˜%¨¸¸ÔDˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜3˜%¨¸¸ÔDˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜2˜$ w¸	°{ÔCˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜4˜&¨¸'¸ÔCˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜2˜$ w¸°yÔAˆÜ�—‘ÔÜ˜Ÿ™˜q uÖ-r   c                 ó  — 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¬«       y )Nc                 ó&   — | \  } | | z  d| z  z
  dz   S rÇ   r    rŠ   s    r   rŽ   z,TestSLSQP.test_infeasible_initial.<locals>.fÌ  s   € Ø‰BˆAØ�Q‘3˜˜1™‘9˜q‘=Ð 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Ê  sP  € ò	!ð "©/Ñ:Ð;ˆØ!©/Ñ:Ð;ˆØ"©?Ñ;Ø"©?Ñ;ð=ˆô �q˜2˜$ w¸FÔCˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜3˜%¨¸VÔDˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜3˜%¨¸VÔDˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜2˜$ w¸FÔCˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜4˜&¨¸gÔFˆÜ�—‘ÔÜ˜Ÿ™˜q uÕ-ä�q˜2˜$ w¸GÔDˆÜ�—‘ÔÜ˜Ÿ™˜q uÖ-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                   «       y )
Nc                 ó$   — d| d   z  d| d   z  z   S )Nr?   r   r/   r   r    rŠ   s    r   Úcostz6TestSLSQP.test_inconsistent_inequalities.<locals>.costó  s   € Ø˜˜!™‘9˜q 1 Q¡4™xÑ'Ð'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   € Ø�Q‘4˜!˜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í  sU   € ò	(ò	#ò	ð ˆØ#ˆÜ˜& iÔ0´$¸FÈ	Ô2RÐSˆÜ�t˜R¨¸ÈDÔQˆä�C—K‘K�Õ r   c                 óÞ   — d„ }t        ddgt        j                  t        j                  g«      }t        |ddgd|¬«      }t	        |j
                  «       t        |j                  ddg«       y )Nc                 ó$   — | d   dz  | d   dz  z   S rã   r    rŠ   s    r   rŽ   z)TestSLSQP.test_new_bounds_type.<locals>.f	  s   € Ø�Q‘4˜1‘9˜q ™t q™yÑ(Ð(r   r   r   r   r  )r
   r0   rÎ   r	   r   r\   r   r   )r   rŽ   rj   rë   s       r   Útest_new_bounds_typezTestSLSQP.test_new_bounds_type  sV   € ò	)ä˜˜A˜¤§¡¬¯©Ð 0Ó1ˆÜ�q˜1˜a˜&¨¸Ô@ˆÜ�—‘ÔÜ˜Ÿ™  1˜vÕ&r   c                 óF   —  G d„ d«      } |«       }|j                  «        y )Nc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ú9TestSLSQP.test_nested_minimization.<locals>.NestedProblemc                 ó   — d| _         y rØ   )ÚF_outer_countr   s    r   r   zBTestSLSQP.test_nested_minimization.<locals>.NestedProblem.__init__  s
   € Ø%&�Õ"r   c                 ó  — | xj                   dz  c_         | j                   dkD  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²   r/   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Ü$ T§\¡\°6À'ÔJ�	Ü˜	×)Ñ)Ô*Ü 	§¡¨a°¨VÔ4Ø˜‘t˜Q‘w  1¡ q¡Ñ(¨1¨Q©4°©7Ñ2Ð2r   c                 ó0   — |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¢«       y )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#  s0   € Ü$ T§\¡\°9ÀWÔM�	Ü˜	×)Ñ)Ô*Ü 	§¡ªYÕ7r   N)r   r   r   r   r3  r1  r7  r    r   r   ÚNestedProblemr,    s   „ ò'ò3ò5ó8r   r8  )r7  )r   r8  Úproblems      r   Útest_nested_minimizationz"TestSLSQP.test_nested_minimization  s   € ÷	8ñ 	8ñ,  “/ˆØ�‰�r   c                 ó  — d„ }d„ }d„ }d|dœ}d|dœ}t        |ddgd||gd	d
g¬«      }t        j                  j                  |j                  d«       t        j                  j                  |j
                  ddg«       |j                  sJ ‚y )Nc                 ó2   — t        j                  | d   «      S r  )r0   ÚsqrtrŠ   s    r   r,   z"TestSLSQP.test_gh1758.<locals>.fun/  s   € Ü—7‘7˜1˜Q™4“=Ð r   c                 ó$   — | 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   € à�Q‘4˜1˜q ™t™8¨™/Ñ)Ð)r   c                 ó&   — | 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    € à�Q‘4˜A˜a™D˜5 1™9¨Ñ*Ñ*Ð*r   rp   rç   é   g      Ð?rW   )r  r   )r   rA  )rZ   rs   rj   g8r]õ(ká?gÚÁQUUÕ?gc@›Á„öÒ?)r	   r0   Útestingr   r,   r   r\   )r   r,   r=   r@  Úc1Úc2r`   s          r   Útest_gh1758zTestSLSQP.test_gh1758+  s�   € ò	!ò	*ò	+ð  7Ñ+ˆØ 8Ñ,ˆä�s˜Q ˜I¨gØ$&¨ 8°YÀÐ4GôIˆô 	�
‰
×"Ñ" 3§7¡7¨OÔ<Ü
�
‰
×"Ñ" 3§5¡5¨:°yÐ*AÔBØ�{Š{Ð‰{r   c           
      ó°   — t         j                  j                  d«       dd„ dœdd„ dœf}d}d„ }g d¢}t        ||d	||d
ddœ¬«      }|j                  rJ ‚y )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   € °1°Q±4°%¸!¸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                  ó   — yr  r    rŠ   s    r   Útargetz%TestSLSQP.test_gh9640.<locals>.targetJ  s   € Ør   )g ãö51þ¿gäÐ£X«{ä¿g ¢¼ŽP(ê¿rW   Fi'  )r$   Úmaxiter)rZ   rj   rs   r[   )r0   ÚrandomÚseedr	   r\   )r   r%  ÚbndsrK  r‘   r`   s         r   Útest_gh9640zTestSLSQP.test_gh9640D  sh   € Ü
�	‰	�‰�rÔØÑ(BÑCØÑ(AÑBðDˆà*ˆò	âKˆÜ�v˜r¨'¸$ÈDØ',¸Ñ>ô@ˆð —;’;Ðˆ�;r   c                 ó.  ‡— t         j                  j                  d«       t        t        j                  dg«      t        j                  dg«      «      Št        ‰j                  «      }t        j                  ‰j                  ‰j                  ‰j                  z
  t         j                  j                  |«      z  z   «      }ˆfd„}t        j                  t        d¬«      5  t        ||d‰¬«      }|j                  sJ ‚	 d d d «       y # 1 sw Y   y xY w)	Nr   gš™™™™™¹?rH   c                 ó€   •— | ‰j                   k\  j                  «       sJ ‚t        j                  j	                  | «      S r7   )ÚlbÚallr0   ÚlinalgÚnorm)r   rj   s    €r   rŽ   z7TestSLSQP.test_parameters_stay_within_bounds.<locals>.f_  s0   ø€ Ø˜Ÿ™‘N×'Ñ'Ô)Ð)Ð)Ü—9‘9—>‘> !Ó$Ð$r   zx were outside bounds)ÚmatchrW   r  )r0   rM  rN  r
   r1   Ú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  sÈ   ø€ ô 	�	‰	�‰�qÔÜœŸ™ # ›¬¯©°3°%«Ó9ˆÜ�v—y‘y“>ˆÜ�X‰X�f—i‘i 6§9¡9¨v¯y©yÑ#8Ü—i‘i×&Ñ& xÓ0ñ#1ñ 1ó 2ˆô	%ô �\‰\œ.Ð0GÔHñ 	Ü˜1˜b¨¸Ô@ˆCØ—;’;Ð‘;÷	÷ 	ñ 	ús   Ã#DÄDN)rH   );r   r   r   r   r&   r,   r5   r8   r=   r@   rC   rF   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"      sh  „ ñò$ó2ó 
-ó4ó'ó#ó(ó6ó-ó#òò'ò
+ò'ò%ò'ò+ò'ò'ò'ò	2ò
'òEò$'ò"-ò-ò-ò-ò
-ò8ò#ò
+òGò-ò4ò7ò2ò"ò8&ò'òOò.ò>!.ðF ‡[�[×ÑÐ(�u×(Ñ(¨gÔ6°{ÑCÀIÑNÈvÑVØ&ñ'àWð ó Yñ!óYð!ò0'òò6ò2ð ‡[�[×Ññó ñr   r"   )r   Únumpy.testingr   r   r   r   rZ  r   rÓ   Únumpyr0   ra  Úscipy.optimizer   r	   r
   r   r   r"   r    r   r   ú<module>rg     s<   ðñ÷:ó :å *Û Û Û ç LÓ L÷ñ ÷I	ò I	r   