§
    µ³ÙgzJ  ã                   ó4  — d Z ddgZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ dZ  e ee!¦  «        j"        ¦  «        Z#d„ Z$dddddddddddddde#dfd„Z%dddddddde#ddfd„Z&d„ Z'd„ Z(dS )a  
This module implements the Sequential Least Squares Programming optimization
algorithm (SLSQP), originally developed by Dieter Kraft.
See http://www.netlib.org/toms/733

Functions
---------
.. autosummary::
   :toctree: generated/

    approx_jacobian
    fmin_slsqp

Úapprox_jacobianÚ
fmin_slsqpé    N)Úslsqp)
ÚzerosÚarrayÚlinalgÚappendÚconcatenateÚfinfoÚsqrtÚvstackÚisfiniteÚ
atleast_1dé   )ÚOptimizeResultÚ_check_unknown_optionsÚ_prepare_scalar_functionÚ_clip_x_for_funcÚ_check_clip_x)Úapprox_derivative)Úold_bound_to_newÚ_arr_to_scalar)Úarray_namespace)Úarray_api_extrazrestructuredtext enc                 óR   — t          || d||¬¦  «        }t          j        |¦  «        S )a“  
    Approximate the Jacobian matrix of a callable function.

    Parameters
    ----------
    x : array_like
        The state vector at which to compute the Jacobian matrix.
    func : callable f(x,*args)
        The vector-valued function.
    epsilon : float
        The perturbation used to determine the partial derivatives.
    args : sequence
        Additional arguments passed to func.

    Returns
    -------
    An array of dimensions ``(lenf, lenx)`` where ``lenf`` is the length
    of the outputs of `func`, and ``lenx`` is the number of elements in
    `x`.

    Notes
    -----
    The approximation is done using forward differences.

    ú2-point)ÚmethodÚabs_stepÚargs)r   ÚnpÚ
atleast_2d)ÚxÚfuncÚepsilonr   Újacs        úN/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/_slsqp_py.pyr   r   $   s5   € õ6 ˜D !¨IÀØ!%ð'ñ 'ô '€Cõ Œ=˜ÑÔÐó    © éd   g�íµ ÷Æ°>c                 óZ  ‡
— |�|}||||dk    ||dœ}d}|t          ˆ
fd„|D ¦   «         ¦  «        z  }|t          ˆ
fd„|D ¦   «         ¦  «        z  }|r|d||‰
dœfz  }|r|d	||	‰
dœfz  }t          | |‰
f|||d
œ|¤Ž}|r%|d         |d         |d         |d         |d         fS |d         S )aC  
    Minimize a function using Sequential Least Squares Programming

    Python interface function for the SLSQP Optimization subroutine
    originally implemented by Dieter Kraft.

    Parameters
    ----------
    func : callable f(x,*args)
        Objective function.  Must return a scalar.
    x0 : 1-D ndarray of float
        Initial guess for the independent variable(s).
    eqcons : list, optional
        A list of functions of length n such that
        eqcons[j](x,*args) == 0.0 in a successfully optimized
        problem.
    f_eqcons : callable f(x,*args), optional
        Returns a 1-D array in which each element must equal 0.0 in a
        successfully optimized problem. If f_eqcons is specified,
        eqcons is ignored.
    ieqcons : list, optional
        A list of functions of length n such that
        ieqcons[j](x,*args) >= 0.0 in a successfully optimized
        problem.
    f_ieqcons : callable f(x,*args), optional
        Returns a 1-D ndarray in which each element must be greater or
        equal to 0.0 in a successfully optimized problem. If
        f_ieqcons is specified, ieqcons is ignored.
    bounds : list, optional
        A list of tuples specifying the lower and upper bound
        for each independent variable [(xl0, xu0),(xl1, xu1),...]
        Infinite values will be interpreted as large floating values.
    fprime : callable ``f(x,*args)``, optional
        A function that evaluates the partial derivatives of func.
    fprime_eqcons : callable ``f(x,*args)``, optional
        A function of the form ``f(x, *args)`` that returns the m by n
        array of equality constraint normals. If not provided,
        the normals will be approximated. The array returned by
        fprime_eqcons should be sized as ( len(eqcons), len(x0) ).
    fprime_ieqcons : callable ``f(x,*args)``, optional
        A function of the form ``f(x, *args)`` that returns the m by n
        array of inequality constraint normals. If not provided,
        the normals will be approximated. The array returned by
        fprime_ieqcons should be sized as ( len(ieqcons), len(x0) ).
    args : sequence, optional
        Additional arguments passed to func and fprime.
    iter : int, optional
        The maximum number of iterations.
    acc : float, optional
        Requested accuracy.
    iprint : int, optional
        The verbosity of fmin_slsqp :

        * iprint <= 0 : Silent operation
        * iprint == 1 : Print summary upon completion (default)
        * iprint >= 2 : Print status of each iterate and summary
    disp : int, optional
        Overrides the iprint interface (preferred).
    full_output : bool, optional
        If False, return only the minimizer of func (default).
        Otherwise, output final objective function and summary
        information.
    epsilon : float, optional
        The step size for finite-difference derivative estimates.
    callback : callable, optional
        Called after each iteration, as ``callback(x)``, where ``x`` is the
        current parameter vector.

    Returns
    -------
    out : ndarray of float
        The final minimizer of func.
    fx : ndarray of float, if full_output is true
        The final value of the objective function.
    its : int, if full_output is true
        The number of iterations.
    imode : int, if full_output is true
        The exit mode from the optimizer (see below).
    smode : string, if full_output is true
        Message describing the exit mode from the optimizer.

    See also
    --------
    minimize: Interface to minimization algorithms for multivariate
        functions. See the 'SLSQP' `method` in particular.

    Notes
    -----
    Exit modes are defined as follows:

    - ``-1`` : Gradient evaluation required (g & a)
    - ``0`` : Optimization terminated successfully
    - ``1`` : Function evaluation required (f & c)
    - ``2`` : More equality constraints than independent variables
    - ``3`` : More than 3*n iterations in LSQ subproblem
    - ``4`` : Inequality constraints incompatible
    - ``5`` : Singular matrix E in LSQ subproblem
    - ``6`` : Singular matrix C in LSQ subproblem
    - ``7`` : Rank-deficient equality constraint subproblem HFTI
    - ``8`` : Positive directional derivative for linesearch
    - ``9`` : Iteration limit reached

    Examples
    --------
    Examples are given :ref:`in the tutorial <tutorial-sqlsp>`.

    Nr   )ÚmaxiterÚftolÚiprintÚdispÚepsÚcallbackr(   c              3   ó$   •K  — | ]
}d |‰dœV — ŒdS )Úeq©ÚtypeÚfunr   Nr(   ©Ú.0Úcr   s     €r&   ú	<genexpr>zfmin_slsqp.<locals>.<genexpr>Ä   s-   øè è € ÐIÐI¸Q˜4¨°4Ð8Ð8ÐIÐIÐIÐIÐIÐIr'   c              3   ó$   •K  — | ]
}d |‰dœV — ŒdS )Úineqr3   Nr(   r6   s     €r&   r9   zfmin_slsqp.<locals>.<genexpr>Å   s-   øè è € ÐLÐL¸q˜6¨!°TÐ:Ð:ÐLÐLÐLÐLÐLÐLr'   r2   )r4   r5   r%   r   r;   )r%   ÚboundsÚconstraintsr"   r5   ÚnitÚstatusÚmessage)ÚtupleÚ_minimize_slsqp)r#   Úx0ÚeqconsÚf_eqconsÚieqconsÚ	f_ieqconsr<   ÚfprimeÚfprime_eqconsÚfprime_ieqconsr   ÚiterÚaccr-   r.   Úfull_outputr$   r0   ÚoptsÚconsÚress             `          r&   r   r   F   sF  ø€ ð` ÐØˆàØØØ˜a’KØØ ð"ð "€Dð €Dð 	�EÐIÐIÐIÐIÀ&ÐIÑIÔIÑIÔIÑI€DØ�EÐLÐLÐLÐLÀGÐLÑLÔLÑLÔLÑL€Dð ð #Ø˜$ x¸Øð ð  ð #ñ 	#ˆàð #Ø˜&¨¸>Øð ð  ð #ñ 	#ˆõ ˜$  Dð 4¨f¸VØ&*ð4ð 4Ø.2ð4ð 4€Càð Ø�3Œx˜˜Uœ S¨¤Z°°X´ÀÀIÄÐNÐNà�3Œxˆr'   Fc                 ó   ‡‡‡E‡F‡G— t          |¦  «         |dz
  }|}|
ŠE|	sd}t          |¦  «        }t          j        |                     |¦  «        d|¬¦  «        }|j        }|                     |j        d¦  «        r|j        }|                     | 	                    ||¦  «        d¦  «        ŠG|�t          |¦  «        dk    rt          j         t          j        fŠFnt          |¦  «        ŠFt          j        ‰G‰Fd         ‰Fd         ¦  «        ŠGt          |t           ¦  «        r|f}dddœ}t#          |¦  «        D �]\  }}	 |d	                              ¦   «         }|dvrt'          d
|d	         › d�¦  «        ‚n_# t(          $ r}t)          d|z  ¦  «        |‚d}~wt*          $ r}t+          d¦  «        |‚d}~wt,          $ r}t+          d¦  «        |‚d}~ww xY wd|vrt'          d|z  ¦  «        ‚|                     d¦  «        }|€ˆEˆˆˆFfd„} ||d         ¦  «        }||xx         |d         ||                     dd¦  «        dœfz  cc<   �Œdddddddddddd œ}t1          t3          t          ˆGfd!„|d"         D ¦   «         ¦  «        ¦  «        }t1          t3          t          ˆGfd#„|d$         D ¦   «         ¦  «        ¦  «        }||z   }t5          d|g¦  «                             ¦   «         }t          ‰G¦  «        }|dz   }||z
  |z   |z   } d%|z  |z   |dz   z  ||z
  dz   | d&z   z  z   d&| z  z   || z   ||z
  z  z   d&|z  z   |z   |dz   |z  d&z  z   d&|z  z   d%|z  z   d%|z  z   dz   }!| }"t9          |!¦  «        }#t9          |"¦  «        }$|�t          |¦  «        dk    rvt          j        |t<          ¬'¦  «        }%t          j        |t<          ¬'¦  «        }&|%                     t          j         ¦  «         |&                     t          j         ¦  «         �n$t5          d(„ |D ¦   «         t<          ¦  «        }'|'j!        d         |k    rtE          d)¦  «        ‚t          j#        d*¬+¦  «        5  |'dd…df         |'dd…df         k    }(ddd¦  «         n# 1 swxY w Y   |( $                    ¦   «         r0t'          d,d- %                    d.„ |(D ¦   «         ¦  «        › d/�¦  «        ‚|'dd…df         |'dd…df         }&}%tM          |'¦  «         })t          j         |%|)dd…df         <   t          j         |&|)dd…df         <   tO          | ‰G‰||
‰‰F¬0¦  «        }*tQ          |*j)        ‰F¦  «        }+tQ          |*j*        ‰F¦  «        },t5          dtV          ¦  «        }-t5          |t<          ¦  «        }t5          |tV          ¦  «        }.d}/t5          dt<          ¦  «        }0t5          dt<          ¦  «        }1t5          dt<          ¦  «        }2t5          dt<          ¦  «        }3t5          dt<          ¦  «        }4t5          dt<          ¦  «        }5t5          dt<          ¦  «        }6t5          dt<          ¦  «        }7t5          dt<          ¦  «        }8t5          dt<          ¦  «        }9t5          dtV          ¦  «        }:t5          dtV          ¦  «        };t5          dtV          ¦  «        }<t5          dtV          ¦  «        }=t5          dtV          ¦  «        }>t5          dtV          ¦  «        }t5          dtV          ¦  «        }?t5          dtV          ¦  «        }@|d&k    rtY          d1d2z  ¦  «          |+‰G¦  «        }At[           |,‰G¦  «        d3¦  «        }Bt]          ‰G|¦  «        }Ct_          ‰G||||||¦  «        }D	 ta          g |‘|‘‰G‘|%‘|&‘|A‘|C‘|B‘|D‘|‘|.‘|-‘|#‘|$‘|0‘|1‘|2‘|3‘|4‘|5‘|6‘|7‘|8‘|9‘|:‘|;‘|<‘|=‘|>‘|‘|?‘|@‘R Ž  |-dk    r |+‰G¦  «        }At]          ‰G|¦  «        }C|-dk    r.t[           |,‰G¦  «        d3¦  «        }Bt_          ‰G||||||¦  «        }D|.|/k    rR|� |t          j1        ‰G¦  «        ¦  «         |d&k    r-tY          d4|.|*j2        |Atg          j4        |B¦  «        fz  ¦  «         tk          |-¦  «        dk    rntW          |.¦  «        }/�Œ|dk    r‚tY          |tW          |-¦  «                 d5z   tm          |-¦  «        z   d6z   ¦  «         tY          d7|A¦  «         tY          d8|.¦  «         tY          d9|*j2        ¦  «         tY          d:|*j7        ¦  «         tq          ‰G|A|Bdd…         tW          |.¦  «        |*j2        |*j7        tW          |-¦  «        |tW          |-¦  «                 |-dk    ¬;¦	  «	        S )<aª  
    Minimize a scalar function of one or more variables using Sequential
    Least Squares Programming (SLSQP).

    Options
    -------
    ftol : float
        Precision goal for the value of f in the stopping criterion.
    eps : float
        Step size used for numerical approximation of the Jacobian.
    disp : bool
        Set to True to print convergence messages. If False,
        `verbosity` is ignored and set to 0.
    maxiter : int
        Maximum number of iterations.
    finite_diff_rel_step : None or array_like, optional
        If ``jac in ['2-point', '3-point', 'cs']`` the relative step size to
        use for numerical approximation of `jac`. The absolute step
        size is computed as ``h = rel_step * sign(x) * max(1, abs(x))``,
        possibly adjusted to fit into the bounds. For ``method='3-point'``
        the sign of `h` is ignored. If None (default) then step is selected
        automatically.
    r   r   )ÚndimÚxpzreal floatingéÿÿÿÿNr(   )r2   r;   r4   zUnknown constraint type 'z'.z"Constraint %d has no type defined.z/Constraints must be defined using a dictionary.z#Constraint's type must be a string.r5   z&Constraint %d has no function defined.r%   c                 ó   •‡ — ˆˆˆ ˆˆfd„}|S )Nc                 ó€   •— t          | ‰¦  «        } ‰dv rt          ‰| ‰|‰‰¬¦  «        S t          ‰| d‰|‰¬¦  «        S )N)r   z3-pointÚcs)r   r   Úrel_stepr<   r   )r   r   r   r<   )r   r   )r"   r   r$   Úfinite_diff_rel_stepr5   r%   Ú
new_boundss     €€€€€r&   Úcjacz3_minimize_slsqp.<locals>.cjac_factory.<locals>.cjac,  sr   ø€ Ý% a¨Ñ4Ô4�AàÐ:Ð:Ð:Ý0°°aÀÈ$Ø:NØ8Bð Dñ  Dô  Dð Dõ  1°°aÀ	Ø:AÈØ8Bð Dñ  Dô  Dð Dr'   r(   )r5   r[   r$   rY   r%   rZ   s   ` €€€€r&   Úcjac_factoryz%_minimize_slsqp.<locals>.cjac_factory+  sA   øø€ ð
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð �r'   r   )r5   r%   r   z$Gradient evaluation required (g & a)z$Optimization terminated successfullyz$Function evaluation required (f & c)z4More equality constraints than independent variablesz*More than 3*n iterations in LSQ subproblemz#Inequality constraints incompatiblez#Singular matrix E in LSQ subproblemz#Singular matrix C in LSQ subproblemz2Rank-deficient equality constraint subproblem HFTIz.Positive directional derivative for linesearchzIteration limit reached)rT   r   r   é   é   é   é   é   é   é   é	   c           	      óT   •— g | ]$}t           |d          ‰g|d         ¢R Ž ¦  «        ‘Œ%S ©r5   r   ©r   ©r7   r8   r"   s     €r&   ú
<listcomp>z#_minimize_slsqp.<locals>.<listcomp>N  sK   ø€ ð #ð #ð #Øõ # 8 1 U¤8¨AÐ#:°°&´	Ð#:Ð#:Ð#:Ñ;Ô;ð #ð #ð #r'   r2   c           	      óT   •— g | ]$}t           |d          ‰g|d         ¢R Ž ¦  «        ‘Œ%S rf   rg   rh   s     €r&   ri   z#_minimize_slsqp.<locals>.<listcomp>P  sK   ø€ ð &ð &ð &Øõ $ H A e¤H¨QÐ$;°°6´Ð$;Ð$;Ð$;Ñ<Ô<ð &ð &ð &r'   r;   r^   r]   )Údtypec                 óP   — g | ]#\  }}t          |¦  «        t          |¦  «        f‘Œ$S r(   )r   )r7   ÚlÚus      r&   ri   z#_minimize_slsqp.<locals>.<listcomp>i  sA   € ð ,ð ,ð ,Ù ˜1˜aõ & aÑ(Ô(­.¸Ñ*;Ô*;Ð<ð ,ð ,ð ,r'   zDSLSQP Error: the length of bounds is not compatible with that of x0.Úignore)ÚinvalidzSLSQP Error: lb > ub in bounds z, c              3   ó4   K  — | ]}t          |¦  «        V — Œd S )N)Ústr)r7   Úbs     r&   r9   z"_minimize_slsqp.<locals>.<genexpr>t  s(   è è € Ð)AÐ)A°Q­#¨a©&¬&Ð)AÐ)AÐ)AÐ)AÐ)AÐ)Ar'   ú.)r%   r   r$   rY   r<   z%5s %5s %16s %16s)ÚNITÚFCÚOBJFUNÚGNORMg        z%5i %5i % 16.6E % 16.6Ez    (Exit mode ú)z#            Current function value:z            Iterations:z!            Function evaluations:z!            Gradient evaluations:)	r"   r5   r%   r>   ÚnfevÚnjevr?   r@   Úsuccess)9r   r   ÚxpxÚ
atleast_ndÚasarrayÚfloat64Úisdtyperk   ÚreshapeÚastypeÚlenr    Úinfr   ÚclipÚ
isinstanceÚdictÚ	enumerateÚlowerÚ
ValueErrorÚKeyErrorÚ	TypeErrorÚAttributeErrorÚgetÚsumÚmapr   Úmaxr   ÚemptyÚfloatÚfillÚnanÚshapeÚ
IndexErrorÚerrstateÚanyÚjoinr   r   r   r5   ÚgradÚintÚprintr	   Ú_eval_constraintÚ_eval_con_normalsr   Úcopyrz   r   ÚnormÚabsrr   Úngevr   )Hr#   rC   r   r%   r<   r=   r+   r,   r-   r.   r/   r0   rY   Úunknown_optionsrK   rL   rS   rk   rO   ÚicÚconÚctypeÚer[   r\   Ú
exit_modesÚmeqÚmieqÚmÚlaÚnÚn1ÚmineqÚlen_wÚlen_jwÚwÚjwÚxlÚxuÚbndsÚbnderrÚinfbndÚsfÚwrapped_funÚwrapped_gradÚmodeÚmajiterÚmajiter_prevÚalphaÚf0ÚgsÚh1Úh2Úh3Úh4ÚtÚt0ÚtolÚiexactÚinconsÚiresetÚitermxÚlineÚn2Ún3ÚfxÚgr8   Úar$   rZ   r"   sH      `        `                                                        @@@r&   rB   rB   Ø   sQ  øøøøø€ õ8 ˜?Ñ+Ô+Ð+Ø�Q‰;€DØ
€CØ€Gàð Øˆõ 
˜Ñ	Ô	€BÝ	Œ˜Ÿ
š
 2™œ¨Q°2Ð	6Ñ	6Ô	6€BØŒJ€EØ	‡z‚z�"”(˜OÑ,Ô,ð Ø”ˆØ
�
Š
�2—9’9˜R Ñ'Ô'¨Ñ,Ô,€Að €~�˜V™œ¨Ò)Ð)Ý”v�g�rœvÐ&ˆ
ˆ
å% fÑ-Ô-ˆ
õ 	Œ��:˜a”= *¨Q¤-Ñ0Ô0€Aõ �+�tÑ$Ô$ð &Ø"�oˆà˜bÐ!Ð!€DÝ˜[Ñ)Ô)ð +9ñ +9‰ˆˆCð	NØ˜”K×%Ò%Ñ'Ô'ˆEð ˜NÐ*Ð*Ý Ð!L¸SÀ¼[Ð!LÐ!LÐ!LÑMÔMÐMð +øõ ð 	Mð 	Mð 	MÝÐ?À"ÑDÑEÔEÈ1ÐLøøøøÝð 	2ð 	2ð 	2Ýð *ñ +ô +Ø01ð2øøøøåð 	Jð 	Jð 	JÝÐAÑBÔBÈÐIøøøøð	Jøøøð ˜ÐÐÝÐEÈÑJÑKÔKÐKð �wŠw�u‰~Œ~ˆØˆ<ðð ð ð ð ð ð ð ð  �<  E¤
Ñ+Ô+ˆDð 	ˆUˆˆŒ  E¤
Ø $Ø!$§¢¨°Ñ!4Ô!4ð6ð 6ð 9ñ 	9ˆˆ‰‰ð =Ø<Ø<ØLØBØ;Ø;Ø;ØJØFØ/ð
1ð 
1€Jõ �c•#ð #ð #ð #ð #Ø˜D”zð#ñ #ô #ñ $ô $ñ %ô %€Cå�s•3ð &ð &ð &ð &Ø˜Vœð&ñ &ô &ñ 'ô 'ñ (ô (€Dð 	ˆd‰
€Aå	��1ˆv‰Œ×	Ò	Ñ	Ô	€BåˆA‰Œ€Að 
ˆQ‰€BØ�‰G�b‰L˜2Ñ€EØˆr‰T�!‰V�b˜‘d‰O˜R ™V A™X¨¨a©Ñ0Ñ0°1°U±7Ñ:¸B¸u¹HÀrÈ#ÁvÑ;NÑNØ�‰eñØñØ˜q™S !™G a™<ñ(Ø*+¨A©#ñ.Ø01°!±ñ4Ø67¸±dñ;Ø=>ñ?€Eà€FÝˆe‰Œ€AÝ	ˆv‰Œ€Bð €~�˜V™œ¨Ò)Ð)ÝŒX�a�uÐ%Ñ%Ô%ˆÝŒX�a�uÐ%Ñ%Ô%ˆØ
�Š•”‰ŒˆØ
�Š•”‰Œˆ‰åð ,ð ,Ø$*ð,ñ ,ô ,Ý-2ñ4ô 4ˆàŒ:�aŒ=˜AÒÐÝð ;ñ <ô <ð <õ Œ[ Ð*Ñ*Ô*ð 	-ð 	-Ø˜!˜!˜!˜Q˜$”Z $ q q q¨! t¤*Ò,ˆFð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð �:Š:‰<Œ<ð 	FÝð EØ $§	¢	Ð)AÐ)A¸&Ð)AÑ)AÔ)AÑ AÔ AðEð Eð Eñ Fô Fð Fà�a�a�a˜�d”˜T ! ! ! Q $œZˆBˆõ ˜4‘.”.�ˆÝœ6ˆˆ6�!�!�!�Q�$Œ<ÑÝœ6ˆˆ6�!�!�!�Q�$Œ<Ñõ 
" $¨¨s¸ÀsØ7KØ)3ð
5ñ 
5ô 
5€Bõ
 # 2¤6¨:Ñ6Ô6€KÝ# B¤G¨ZÑ8Ô8€Lõ �•C‰=Œ=€DÝ
�•UÑ
Ô
€CÝ�D�#ÑÔ€GØ€Lõ �!•U‰OŒO€EÝ	ˆq•%‰Œ€BÝ	ˆq•%‰Œ€BÝ	ˆq•%‰Œ€BÝ	ˆq•%‰Œ€BÝ	ˆq•%‰Œ€BÝ	ˆq•%‰Œ€BÝˆa•‰Œ€AÝ	ˆq•%‰Œ€BÝ
�•5‰/Œ/€CÝ�1•c‰]Œ]€FÝ�1•c‰]Œ]€FÝ�1•c‰]Œ]€FÝ�1•c‰]Œ]€FÝ�•C‰=Œ=€DÝ	ˆq•#‰Œ€BÝ	ˆq•#‰Œ€BÝ	ˆq•#‰Œ€Bð �‚{€{ÝÐ!Ð$DÑDÑEÔEÐEð
 
ˆ�Q‰Œ€BÝˆ|ˆ|˜A‰Œ Ñ$Ô$€AÝ˜˜DÑ!Ô!€AÝ˜!˜T 2 q¨!¨S°$Ñ7Ô7€Að$åð 	ˆað 	�ð 	�að 	˜ð 	˜Rð 	 ð 	 Qð 	¨ð 	¨1ð 	¨cð 	°7ð 	¸Dð 	À!ð 	ÀRð 	Øð	Øð	Øð	Øð	Ø!#ð	Ø%'ð	Ø)+ð	Ø-.ð	Ø02ð	Ø47ð	àð	àð	à$ð	à&,ð	à.2ð	ð ð	ð ð	ð ð	ð 	ð 	ð 	ð
 �1Š9ˆ9Ø�˜Q‘”ˆBÝ   DÑ)Ô)ˆAà�2Š:ˆ:Ý�|�| A‘”¨Ñ,Ô,ˆAÝ! ! T¨2¨q°!°S¸$Ñ?Ô?ˆAà�\Ò!Ð!àÐ#Ø��œ ™œÑ$Ô$Ð$ð ˜Š{ˆ{ÝÐ/°7¸B¼GØ35µv´{À1±~´~ð3Gñ Gñ Hô Hð Hõ ˆt‰9Œ9˜Š>ˆ>Øå˜7‘|”|ˆñ;$ð@ �‚{€{Ýˆj�˜T™œÔ#Ð&7Ñ7½#¸d¹)¼)ÑCÀcÑIÑJÔJÐJÝÐ3°RÑ8Ô8Ð8ÝÐ'¨Ñ1Ô1Ð1ÝÐ1°2´7Ñ;Ô;Ð;ÝÐ1°2´7Ñ;Ô;Ð;å˜A 2¨1¨S¨b¨S¬6µs¸7±|´|Ø!œw¨R¬W½SÀ¹Y¼YØ",­S°©Y¬YÔ"7À$È!Â)ðNñ Nô Nð NsB   ÅE9Å9
GÆFÆGÆ#F3Æ3GÇ GÇGÑ$RÒRÒRc                 ó  ‡ — |d         r"t          ˆ fd„|d         D ¦   «         ¦  «        }nt          d¦  «        }|d         r"t          ˆ fd„|d         D ¦   «         ¦  «        }nt          d¦  «        }t          ||f¦  «        }|S )Nr2   c           	      óT   •— g | ]$}t           |d          ‰g|d         ¢R Ž ¦  «        ‘Œ%S rf   rg   ©r7   r§   r"   s     €r&   ri   z$_eval_constraint.<locals>.<listcomp>Ú  sK   ø€ ð 3ð 3ð 3Ø #õ ' z s¨5¤z°!Ð'B°c¸&´kÐ'BÐ'BÐ'BÑCÔCð 3ð 3ð 3r'   r   r;   c           	      óT   •— g | ]$}t           |d          ‰g|d         ¢R Ž ¦  «        ‘Œ%S rf   rg   r×   s     €r&   ri   z$_eval_constraint.<locals>.<listcomp>à  sK   ø€ ð 6ð 6ð 6Ø!$õ (¨
¨¨E¬
°1Ð(C°s¸6´{Ð(CÐ(CÐ(CÑDÔDð 6ð 6ð 6r'   )r
   r   )r"   rO   Úc_eqÚc_ieqr8   s   `    r&   rŸ   rŸ   ×  sÃ   ø€ àˆD„zð Ýð 3ð 3ð 3ð 3Ø'+¨D¤zð3ñ 3ô 3ñ 4ô 4ˆˆõ �Q‰xŒxˆàˆF„|ð Ýð 6ð 6ð 6ð 6Ø(,¨V¬ð6ñ 6ô 6ñ 7ô 7ˆˆõ �a‘”ˆõ 	�T˜5�MÑ"Ô"€AØ€Hr'   c                 óˆ  ‡ — |d         r"t          ˆ fd„|d         D ¦   «         ¦  «        }nt          ||f¦  «        }|d         r"t          ˆ fd„|d         D ¦   «         ¦  «        }nt          ||f¦  «        }|dk    rt          ||f¦  «        }	nt          ||f¦  «        }	t          |	t          |dg¦  «        fd¦  «        }	|	S )Nr2   c                 ó:   •— g | ]} |d          ‰g|d         ¢R Ž ‘ŒS ©r%   r   r(   r×   s     €r&   ri   z%_eval_con_normals.<locals>.<listcomp>í  sC   ø€ ð .ð .ð .Øð "�s˜5”z !Ð2 c¨&¤kÐ2Ð2Ð2ð .ð .ð .r'   r;   c                 ó:   •— g | ]} |d          ‰g|d         ¢R Ž ‘ŒS rÝ   r(   r×   s     €r&   ri   z%_eval_con_normals.<locals>.<listcomp>ó  sC   ø€ ð 1ð 1ð 1Øð #˜˜Eœ
 1Ð3 s¨6¤{Ð3Ð3Ð3ð 1ð 1ð 1r'   r   r   )r   r   r
   )
r"   rO   r®   r¯   r­   r«   r¬   Úa_eqÚa_ieqrÔ   s
   `         r&   r    r    ê  s  ø€ àˆD„zð Ýð .ð .ð .ð .Ø"& t¤*ð.ñ .ô .ñ /ô /ˆˆõ �c˜1�X‰ŒˆàˆF„|ð !Ýð 1ð 1ð 1ð 1Ø#'¨¤<ð1ñ 1ô 1ñ 2ô 2ˆˆõ �t˜Q�iÑ Ô ˆð 	ˆA‚v€vÝ�2�q�'‰NŒNˆˆå�D˜%�=Ñ!Ô!ˆÝ�Q�˜r 1˜g™œÐ'¨Ñ+Ô+€Aà€Hr'   ))Ú__doc__Ú__all__Únumpyr    Úscipy.optimize._slsqpr   r   r   r   r	   r
   r   r   r   r   r   Ú	_optimizer   r   r   r   r   Ú_numdiffr   Ú_constraintsr   r   Úscipy._lib._array_apir   Ú
scipy._libr   r}   Ú__docformat__r”   r/   Ú_epsilonr   r   rB   rŸ   r    r(   r'   r&   ú<module>rì      s  ððð ð ˜lÐ
+€à Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø -Ð -Ð -Ð -Ð -Ð -ð &€àˆ4���e‘”Ô Ñ!Ô!€ðð ð ðD !#¨T¸2ÈØ °TØ"¨°#¸6Ø˜d°¸8Øð	Oð Oð Oð Oðd $&¨4¸Ø "Ø f°Q¸UØ ¨4Àdð|Nð |Nð |Nð |Nð~ð ð ð&ð ð ð ð r'   