§
    fŠtj�  ã                   ó   — d dl mZ d dlmZ d dlZd dlZd dl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mZ dd	lmZ  G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )é    )Úsuppress)Ú	signatureN)ÚBoundsÚLinearConstraintÚNonlinearConstraintÚOptimizeResult)ÚPreparedConstrainté   )ÚPRINT_OPTIONSÚBARRIER)ÚCallbackSuccessÚget_arrays_tol)Úexact_1d_arrayc                   óJ   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚObjectiveFunctionz)
    Real-valued objective function.
    c                 óÄ   — |rA|�t          |¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|| _        || _        || _        d| _        dS )a  
        Initialize the objective function.

        Parameters
        ----------
        fun : {callable, None}
            Function to evaluate, or None.

                ``fun(x, *args) -> float``

            where ``x`` is an array with shape (n,) and `args` is a tuple.
        verbose : bool
            Whether to print the function evaluations.
        debug : bool
            Whether to make debugging tests during the execution.
        *args : tuple
            Additional arguments to be passed to the function.
        Nr   )ÚcallableÚ
isinstanceÚboolÚ_funÚ_verboseÚ_argsÚ_n_eval)ÚselfÚfunÚverboseÚdebugÚargss        úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/_lib/cobyqa/problem.pyÚ__init__zObjectiveFunction.__init__   sl   € ð& ð 	+Ø�;¥(¨3¡-¤-�;�;Ð/Ý˜g¥tÑ,Ô,Ð,Ð,Ð,Ý˜e¥TÑ*Ô*Ð*Ð*Ð*àˆŒ	ØˆŒØˆŒ
ØˆŒˆˆó    c                 óv  — t          j        |t          ¬¦  «        }| j        €d}n“t          t          j         | j        |g| j        ¢R Ž ¦  «        ¦  «        }| xj        dz  c_        | j        rJt          j        di t          ¤Ž5  t          | j        › d|› d|› �¦  «         ddd¦  «         n# 1 swxY w Y   |S )a  
        Evaluate the objective function.

        Parameters
        ----------
        x : array_like, shape (n,)
            Point at which the objective function is evaluated.

        Returns
        -------
        float
            Function value at `x`.
        ©ÚdtypeNç        r
   ú(ú) = © )ÚnpÚarrayÚfloatr   Úsqueezer   r   r   Úprintoptionsr   ÚprintÚname)r   ÚxÚfs      r   Ú__call__zObjectiveFunction.__call__6   s  € õ ŒH�Q�eÐ$Ñ$Ô$ˆØŒ9ÐØˆAˆAå•b”j  ¤¨1Ð!:¨t¬zÐ!:Ð!:Ð!:Ñ;Ô;Ñ<Ô<ˆAØˆLŒL˜AÑˆLŒLØŒ}ð 5Ý”_Ð5Ð5¥}Ð5Ð5ð 5ð 5Ý˜TœYÐ3Ð3¨Ð3Ð3°Ð3Ð3Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5àˆs   ÂB.Â.B2Â5B2c                 ó   — | j         S ©úŠ
        Number of function evaluations.

        Returns
        -------
        int
            Number of function evaluations.
        )r   ©r   s    r   Ún_evalzObjectiveFunction.n_evalO   ó   € ð Œ|Ðr!   c                 óX   — d}| j         � 	 | j         j        }n# t          $ r d}Y nw xY w|S )úŠ
        Name of the objective function.

        Returns
        -------
        str
            Name of the objective function.
        Ú Nr   )r   Ú__name__ÚAttributeError)r   r/   s     r   r/   zObjectiveFunction.name[   sK   € ð ˆØŒ9Ð ðØ”yÔ)��øÝ!ð ð ð Ø���ðøøøàˆs   ‹ ˜'¦'N)	r<   Ú
__module__Ú__qualname__Ú__doc__r    r2   Úpropertyr7   r/   r(   r!   r   r   r      sr   € € € € € ðð ðð ð ð:ð ð ð2 ð	ð 	ñ „Xð	ð ðð ñ „Xðð ð r!   r   c                   óV   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
dS )	ÚBoundConstraintsz.
    Bound constraints ``xl <= x <= xu``.
    c                 ó<  — t          j        |j        t          ¦  «        | _        t          j        |j        t          ¦  «        | _        t           j         | j        t          j	        | j        ¦  «        <   t           j        | j
        t          j	        | j
        ¦  «        <   t          j        | j        | j
        k    ¦  «        oNt          j        | j        t           j        k     ¦  «        o't          j        | j
        t           j         k    ¦  «        | _        t          j        | j        t           j         k    ¦  «        t          j        | j
        t           j        k     ¦  «        z   | _        t          |t          j        |j        j        ¦  «        ¦  «        | _        dS )z 
        Initialize the bound constraints.

        Parameters
        ----------
        bounds : scipy.optimize.Bounds
            Bound constraints.
        N)r)   r*   Úlbr+   Ú_xlÚubÚ_xuÚinfÚxlÚisnanÚxuÚallÚis_feasibleÚcount_nonzeroÚmr	   ÚonesÚsizeÚpcs)r   Úboundss     r   r    zBoundConstraints.__init__s   s"  € õ ”8˜FœI¥uÑ-Ô-ˆŒÝ”8˜FœI¥uÑ-Ô-ˆŒõ ')¤f WˆŒ•”˜œÑ!Ô!Ñ"Ý%'¤VˆŒ•”˜œÑ!Ô!Ñ"õ ŒF�4”7˜dœgÒ%Ñ&Ô&ð *Ý”�t”w¥¤Ò'Ñ(Ô(ð*å”�t”w¥"¤& Ò(Ñ)Ô)ð 	Ôõ
 Ô! $¤'­R¬V¨GÒ"3Ñ4Ô4µrÔ7GØŒG•b”fÒñ8
ô 8
ñ 
ˆŒõ & f­b¬g°f´i´nÑ.EÔ.EÑFÔFˆŒˆˆr!   c                 ó   — | j         S )z|
        Lower bound.

        Returns
        -------
        `numpy.ndarray`, shape (n,)
            Lower bound.
        )rF   r6   s    r   rJ   zBoundConstraints.xl�   ó   € ð Œxˆr!   c                 ó   — | j         S )z|
        Upper bound.

        Returns
        -------
        `numpy.ndarray`, shape (n,)
            Upper bound.
        )rH   r6   s    r   rL   zBoundConstraints.xu™   rV   r!   c                 ób   — t          j        |t          ¬¦  «        }|                      |¦  «        S )á0  
        Evaluate the maximum constraint violation.

        Parameters
        ----------
        x : array_like, shape (n,)
            Point at which the maximum constraint violation is evaluated.

        Returns
        -------
        float
            Maximum constraint violation at `x`.
        r#   )r)   Úasarrayr+   Ú	violation©r   r0   s     r   ÚmaxcvzBoundConstraints.maxcv¥   s*   € õ ŒJ�q¥Ð&Ñ&Ô&ˆØ�~Š~˜aÑ Ô Ð r!   c                 ón   — | j         rt          j        dg¦  «        S | j                             |¦  «        S )Nr   )rN   r)   r*   rS   r[   r\   s     r   r[   zBoundConstraints.violation¶   s3   € àÔð 	)Ý”8˜Q˜C‘=”=Ð à”8×%Ò% aÑ(Ô(Ð(r!   c                 óT   — | j         r t          j        || j        | j        ¦  «        n|S )a  
        Project a point onto the feasible set.

        Parameters
        ----------
        x : array_like, shape (n,)
            Point to be projected.

        Returns
        -------
        `numpy.ndarray`, shape (n,)
            Projection of `x` onto the feasible set.
        )rN   r)   ÚcliprJ   rL   r\   s     r   ÚprojectzBoundConstraints.project½   s)   € ð 04Ô/?ÐF�rŒw�q˜$œ' 4¤7Ñ+Ô+Ð+ÀQÐFr!   N)r<   r>   r?   r@   r    rA   rJ   rL   r]   r[   ra   r(   r!   r   rC   rC   n   s˜   € € € € € ðð ðGð Gð Gð4 ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð!ð !ð !ð")ð )ð )ðGð Gð Gð Gð Gr!   rC   c                   ó¨   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zd	„ Zd
„ ZdS )ÚLinearConstraintszK
    Linear constraints ``a_ub @ x <= b_ub`` and ``a_eq @ x == b_eq``.
    c                 óè  ‡— |rJt          |t          ¦  «        sJ ‚|D ]}t          |t          ¦  «        sJ ‚Œt          |t          ¦  «        sJ ‚t	          j        d‰f¦  «        | _        t	          j        d¦  «        | _        t	          j        d‰f¦  «        | _        t	          j        d¦  «        | _	        |D �]C}t	          j
        |j        |j        z
  ¦  «        t          |j        |j        ¦  «        k    }t	          j        |¦  «        rgt	          j        | j        |j        |         f¦  «        | _        t	          j        | j        d|j        |         |j        |         z   z  f¦  «        | _	        t	          j        |¦  «        stt	          j        | j        |j        |          |j        |           f¦  «        | _        t	          j        | j        |j        |          |j        |           f¦  «        | _        �ŒEd| j        t	          j        | j        ¦  «        <   d| j        t	          j        | j        ¦  «        <   t	          j        | j        ¦  «        t	          j        | j        ¦  «        z  }t	          j        | j        ¦  «        }| j        | dd…f         | _        | j        |          | _        | j        | dd…f         | _        | j        |          | _	        ˆfd„|D ¦   «         | _        dS )a2  
        Initialize the linear constraints.

        Parameters
        ----------
        constraints : list of LinearConstraint
            Linear constraints.
        n : int
            Number of variables.
        debug : bool
            Whether to make debugging tests during the execution.
        r   ç      à?r%   Nc                 ól   •— g | ]0}|j         j        ¯t          |t          j        ‰¦  «        ¦  «        ‘Œ1S r(   )ÚArR   r	   r)   rQ   )Ú.0ÚcÚns     €r   ú
<listcomp>z.LinearConstraints.__init__.<locals>.<listcomp>  sD   ø€ ð 
ð 
ð 
Ø23ÀaÄcÄhð
Ý˜q¥"¤'¨!¡*¤*Ñ-Ô-ð
ð 
ð 
r!   )r   Úlistr   r   r)   ÚemptyÚ_a_ubÚ_b_ubÚ_a_eqÚ_b_eqÚabsrG   rE   r   ÚanyÚvstackÚa_eqrg   ÚconcatenateÚb_eqrM   Úa_ubÚb_ubrK   ÚisinfrS   )r   Úconstraintsrj   r   Ú
constraintÚis_equalityÚundef_ubÚundef_eqs     `     r   r    zLinearConstraints.__init__Ó   sÉ  ø€ ð ð 	+Ý˜k­4Ñ0Ô0Ð0Ð0Ð0Ø)ð @ð @�
Ý! *Õ.>Ñ?Ô?Ð?Ð?Ð?Ð?Ý˜e¥TÑ*Ô*Ð*Ð*Ð*å”X˜q !˜fÑ%Ô%ˆŒ
Ý”X˜a‘[”[ˆŒ
Ý”X˜q !˜fÑ%Ô%ˆŒ
Ý”X˜a‘[”[ˆŒ
Ø%ð 	ñ 	ˆJÝœ&Ø” 
¤Ñ-ñô å 
¤¨z¬}Ñ=Ô=ò>ˆKõ Œv�kÑ"Ô"ð ÝœY¨¬	°:´<ÀÔ3LÐ'MÑNÔN�”
Ýœ^àœ	Øà&œM¨+Ô6Ø(œm¨KÔ8ñ9ñðñ	ô 	�”
õ ”6˜+Ñ&Ô&ð ÝœYàœ	Ø"œ k \Ô2Ø#œ { lÔ3Ð3ðñô �”
õ  œ^àœ	Ø"œ { lÔ3Ø#œ¨ |Ô4Ð4ðñô �”
ùð *-ˆŒ	•"”(˜4œ9Ñ%Ô%Ñ&Ø),ˆŒ	•"”(˜4œ9Ñ%Ô%Ñ&Ý”8˜DœIÑ&Ô&­¬°$´)Ñ)<Ô)<Ñ<ˆÝ”8˜DœIÑ&Ô&ˆØ”Y ˜y¨!¨!¨!˜|Ô,ˆŒ
Ø”Y ˜yÔ)ˆŒ
Ø”Y ˜y¨!¨!¨!˜|Ô,ˆŒ
Ø”Y ˜yÔ)ˆŒ
ð
ð 
ð 
ð 
Ø7Bð
ñ 
ô 
ˆŒˆˆr!   c                 ó   — | j         S )zÜ
        Left-hand side matrix of the linear inequality constraints.

        Returns
        -------
        `numpy.ndarray`, shape (m, n)
            Left-hand side matrix of the linear inequality constraints.
        )rn   r6   s    r   rx   zLinearConstraints.a_ub  ó   € ð ŒzÐr!   c                 ó   — | j         S )zÞ
        Right-hand side vector of the linear inequality constraints.

        Returns
        -------
        `numpy.ndarray`, shape (m, n)
            Right-hand side vector of the linear inequality constraints.
        )ro   r6   s    r   ry   zLinearConstraints.b_ub#  r�   r!   c                 ó   — | j         S )zØ
        Left-hand side matrix of the linear equality constraints.

        Returns
        -------
        `numpy.ndarray`, shape (m, n)
            Left-hand side matrix of the linear equality constraints.
        )rp   r6   s    r   ru   zLinearConstraints.a_eq/  r�   r!   c                 ó   — | j         S )zÚ
        Right-hand side vector of the linear equality constraints.

        Returns
        -------
        `numpy.ndarray`, shape (m, n)
            Right-hand side vector of the linear equality constraints.
        )rq   r6   s    r   rw   zLinearConstraints.b_eq;  r�   r!   c                 ó   — | j         j        S ©zœ
        Number of linear inequality constraints.

        Returns
        -------
        int
            Number of linear inequality constraints.
        )ry   rR   r6   s    r   Úm_ubzLinearConstraints.m_ubG  ó   € ð ŒyŒ~Ðr!   c                 ó   — | j         j        S ©z˜
        Number of linear equality constraints.

        Returns
        -------
        int
            Number of linear equality constraints.
        )rw   rR   r6   s    r   Úm_eqzLinearConstraints.m_eqS  rˆ   r!   c                 óT   — t          j        |                      |¦  «        d¬¦  «        S )rY   r%   ©Úinitial©r)   Úmaxr[   r\   s     r   r]   zLinearConstraints.maxcv_  s%   € õ Œv�d—n’n QÑ'Ô'°Ð5Ñ5Ô5Ð5r!   c                 óž   ‡— t          | j        ¦  «        r%t          j        ˆfd„| j        D ¦   «         ¦  «        S t          j        g ¦  «        S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r(   ©r[   ©rh   Úpcr0   s     €r   rk   z/LinearConstraints.violation.<locals>.<listcomp>q  s#   ø€ Ð"FÐ"FÐ"F°r 2§<¢<°¡?¤?Ð"FÐ"FÐ"Fr!   )ÚlenrS   r)   rv   r*   r\   s    `r   r[   zLinearConstraints.violationo  sI   ø€ ÝˆtŒx‰=Œ=ð 	HÝ”>Ð"FÐ"FÐ"FÐ"F¸T¼XÐ"FÑ"FÔ"FÑGÔGÐGÝŒx˜‰|Œ|Ðr!   N)r<   r>   r?   r@   r    rA   rx   ry   ru   rw   r‡   r‹   r]   r[   r(   r!   r   rc   rc   Î   sñ   € € € € € ðð ðB
ð B
ð B
ðH ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð6ð 6ð 6ð ð ð ð ð r!   rc   c                   óp   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	d
d„Z
d
d	„ZdS )ÚNonlinearConstraintszI
    Nonlinear constraints ``c_ub(x) <= 0`` and ``c_eq(x) == b_eq``.
    c                 ó.  — |rat          |t          ¦  «        sJ ‚|D ]}t          |t          ¦  «        sJ ‚Œt          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|| _        g | _        || _        d| _        d| _        dx| _	        | _
        dS )aA  
        Initialize the nonlinear constraints.

        Parameters
        ----------
        constraints : list
            Nonlinear constraints.
        verbose : bool
            Whether to print the function evaluations.
        debug : bool
            Whether to make debugging tests during the execution.
        N)r   rl   r   r   Ú_constraintsrS   r   Ú_map_ubÚ_map_eqÚ_m_ubÚ_m_eq)r   r{   r   r   r|   s        r   r    zNonlinearConstraints.__init__z  s±   € ð ð 	+Ý˜k­4Ñ0Ô0Ð0Ð0Ð0Ø)ð Cð C�
Ý! *Õ.AÑBÔBÐBÐBÐBÐBÝ˜g¥tÑ,Ô,Ð,Ð,Ð,Ý˜e¥TÑ*Ô*Ð*Ð*Ð*à'ˆÔØˆŒØˆŒð ˆŒØˆŒØ"&Ð&ˆŒ
�T”Z�Z�Zr!   c           
      óÞ  — t          | j        ¦  «        s6dx| _        | _        t	          j        g ¦  «        t	          j        g ¦  «        fS t	          j        |t          ¬¦  «        }t          | j        ¦  «        �s�g | _        g | _	        d| _        d| _        | j        D �]k}t          |j        ¦  «        s5t          j        |¦  «        }d„ |_        d„ |_        t          ||¦  «        }nt          ||¦  «        }d|j        _        | j                             |¦  «         t	          j        |j        j        ¦  «        }|j        d         |j        d         }}t+          ||¦  «        }t	          j        ||z
  ¦  «        |k    }	| j	                             ||	         ¦  «         | j                             ||	          ¦  «         | xj        t	          j        |	¦  «        z  c_        | xj        t	          j        |	 ¦  «        z  c_        �Œmg }
g }t1          | j        ¦  «        D �]Î\  }}|j                             |¦  «        }| j        rˆt	          j        di t6          ¤Ž5  t9          t:          ¦  «        5  | j        |         j        j        }t?          |› d|› d|› �¦  «         d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   | j	        |         }| j        |         }||         }t          |¦  «        r“|j        d         |         }|j        d         |         }|t          j          k    }||         ||         z
  }|
                     |¦  «         |t          j         k     }||         ||         z
  }|
                     |¦  «         ||         }t          |¦  «        r/d
|j        d         |         |j        d         |         z   z  }||z  }|                     |¦  «         �ŒÐ| j        rt	          j!        |¦  «        }nt	          j        g ¦  «        }| j        rt	          j!        |
¦  «        }
nt	          j        g ¦  «        }
|
j"        | _        |j"        | _        |
|fS )a¿  
        Calculates the residual (slack) for the constraints.

        Parameters
        ----------
        x : array_like, shape (n,)
            Point at which the constraints are evaluated.

        Returns
        -------
        `numpy.ndarray`, shape (m_nonlinear_ub,)
            Nonlinear inequality constraint slack values.
        `numpy.ndarray`, shape (m_nonlinear_eq,)
            Nonlinear equality constraint slack values.
        r   r#   c                 ó   — | S ©Nr(   )Úx0s    r   ú<lambda>z/NonlinearConstraints.__call__.<locals>.<lambda>¹  s   €  r€ r!   c                 ó   — dS )Nr%   r(   )r¢   Úvs     r   r£   z/NonlinearConstraints.__call__.<locals>.<lambda>º  s   € ¨3€ r!   Tr
   r&   r'   Nre   r(   )#r–   rš   rž   r�   r)   r*   r+   rS   r›   rœ   r   ÚjacÚcopyÚhessr	   r   Ú	f_updatedÚappendÚarangerP   rT   r   rr   rO   Ú	enumerater   r-   r   r   r=   r<   r.   rI   rv   rR   )r   r0   r|   ri   r•   ÚidxrE   rG   Úarr_tolr}   Úc_ubÚc_eqÚiÚvalÚfun_nameÚeq_idxÚub_idxÚub_valrJ   rL   Ú	finite_xlÚ_vÚ	finite_xuÚeq_valÚmidpoints                            r   r2   zNonlinearConstraints.__call__—  sŠ  € õ  �4Ô$Ñ%Ô%ð 	.Ø&'Ð'ˆDŒJ˜œÝ”8˜B‘<”<¥¤¨"¡¤Ð-Ð-åŒH�Q�eÐ$Ñ$Ô$ˆå�4”8‰}Œ}ñ !	=ØˆDŒLØˆDŒLØˆDŒJØˆDŒJà"Ô/ð =ñ =�
Ý 
¤Ñ/Ô/ð 	;õ œ	 *Ñ-Ô-�AØ)˜M�A”EØ.Ð.�A”FÝ+¨A¨qÑ1Ô1�B�Bå+¨J¸Ñ:Ô:�Bð $(�”Ô à”—’ Ñ#Ô#Ð#Ý”i ¤¤Ñ)Ô)�ð œ 1œ r¤y°¤|�B�Ý(¨¨RÑ0Ô0�Ý œf R¨"¡W™oœo°Ò8�Ø”×#Ò# C¨Ô$4Ñ5Ô5Ð5Ø”×#Ò# C¨¨Ô$5Ñ6Ô6Ð6ð �
”
�bÔ.¨{Ñ;Ô;Ñ;�
”
Ø�
”
�bÔ.°¨|Ñ<Ô<Ñ<�
”
‘
àˆØˆÝ˜tœxÑ(Ô(ð  	 ñ  	 ‰EˆAˆrØ”&—*’*˜Q‘-”-ˆCØŒ}ð :Ý”_Ð5Ð5¥}Ð5Ð5ð :ð :Ý!¥.Ñ1Ô1ð :ð :Ø#'Ô#4°QÔ#7Ô#;Ô#D˜Ý Ð8Ð8¨AÐ8Ð8°3Ð8Ð8Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð ”\ !”_ˆFØ”\ !”_ˆFà˜”[ˆFÝ�6‰{Œ{ð  Ø”Y˜q”\ &Ô)�Ø”Y˜q”\ &Ô)�ð ¥"¤& šL�	Ø˜	”] V¨IÔ%6Ñ6�Ø—’˜B‘”�ð ¥¤šK�	Ø˜IÔ&¨¨I¬Ñ6�Ø—’˜B‘”�ð ˜”[ˆFÝ�6‰{Œ{ð #Ø "¤)¨A¤,¨vÔ"6¸¼À1¼ÀfÔ9MÑ"MÑN�Ø˜(Ñ"�Ø�KŠK˜ÑÔÐÑàŒ:ð 	 Ý”> $Ñ'Ô'ˆDˆDå”8˜B‘<”<ˆDàŒ:ð 	 Ý”> $Ñ'Ô'ˆDˆDå”8˜B‘<”<ˆDà”YˆŒ
Ø”YˆŒ
à�TˆzÐs6   É KÉ5/J0Ê$KÊ0J4Ê4KÊ7J4Ê8KËK	ËK	c                 ó<   — | j         €t          d¦  «        ‚| j         S )a  
        Number of nonlinear inequality constraints.

        Returns
        -------
        int
            Number of nonlinear inequality constraints.

        Raises
        ------
        ValueError
            If the number of nonlinear inequality constraints is unknown.
        Nz:The number of nonlinear inequality constraints is unknown.)r�   Ú
ValueErrorr6   s    r   r‡   zNonlinearConstraints.m_ub  s+   € ð Œ:ÐÝØLñô ð ð ”:Ðr!   c                 ó<   — | j         €t          d¦  «        ‚| j         S )a  
        Number of nonlinear equality constraints.

        Returns
        -------
        int
            Number of nonlinear equality constraints.

        Raises
        ------
        ValueError
            If the number of nonlinear equality constraints is unknown.
        Nz8The number of nonlinear equality constraints is unknown.)rž   r½   r6   s    r   r‹   zNonlinearConstraints.m_eq  s+   € ð Œ:ÐÝØJñô ð ð ”:Ðr!   c                 ó\   — t          | j        ¦  «        r| j        d         j        j        S dS )r5   r   )r–   rS   r   Únfevr6   s    r   r7   zNonlinearConstraints.n_eval/  s*   € õ ˆtŒx‰=Œ=ð 	Ø”8˜A”;”?Ô'Ð'à�1r!   Nc                 óZ   — t          j        |                      |||¬¦  «        d¬¦  «        S ©aÔ  
        Evaluate the maximum constraint violation.

        Parameters
        ----------
        x : array_like, shape (n,)
            Point at which the maximum constraint violation is evaluated.
        cub_val : array_like, shape (m_nonlinear_ub,), optional
            Values of the nonlinear inequality constraints. If not provided,
            the nonlinear inequality constraints are evaluated at `x`.
        ceq_val : array_like, shape (m_nonlinear_eq,), optional
            Values of the nonlinear equality constraints. If not provided,
            the nonlinear equality constraints are evaluated at `x`.

        Returns
        -------
        float
            Maximum constraint violation at `x`.
        )Úcub_valÚceq_valr%   r�   r�   ©r   r0   rÃ   rÄ   s       r   r]   zNonlinearConstraints.maxcv>  s4   € õ( ŒvØ�NŠN˜1 g°wˆNÑ?Ô?Èð
ñ 
ô 
ð 	
r!   c                 óN   ‡— t          j        ˆfd„| j        D ¦   «         ¦  «        S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r(   r“   r”   s     €r   rk   z2NonlinearConstraints.violation.<locals>.<listcomp>W  s#   ø€ ÐBÐBÐB°2˜rŸ|š|¨A™œÐBÐBÐBr!   )r)   rv   rS   rÅ   s    `  r   r[   zNonlinearConstraints.violationV  s*   ø€ ÝŒ~ÐBÐBÐBÐB¸¼ÐBÑBÔBÑCÔCÐCr!   ©NN)r<   r>   r?   r@   r    r2   rA   r‡   r‹   r7   r]   r[   r(   r!   r   r˜   r˜   u  s¿   € € € € € ðð ð'ð 'ð 'ð:jð jð jðX ðð ñ „Xðð* ðð ñ „Xðð* ðð ñ „Xðð
ð 
ð 
ð 
ð0Dð Dð Dð Dð Dð Dr!   r˜   c                   óœ  — e Zd ZdZd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zdd„Zdd„Zd„ ZdS )ÚProblemz
    Optimization problem.
    c           
      óþ  — |røt          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |t
          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          |	t          ¦  «        sJ ‚t          |
t          ¦  «        sJ ‚|	r|
dk    sJ ‚t          |t          ¦  «        sJ ‚|dk    sJ ‚t          |t          ¦  «        sJ ‚|| _        || _	        || _
        |�t          |¦  «        st          d¦  «        ‚|| _        t          |d¦  «        }|j        }|j        j        |k    rt#          d|› d�¦  «        ‚|j        j        d         |k    rt#          d|› d	�¦  «        ‚t)          |j        |j        ¦  «        }|j        |j        k    t-          j        |j        |j        z
  ¦  «        |k     z  | _        d
|j        | j                 |j        | j                 z   z  | _        t-          j        | j        |j        | j                 |j        | j                 ¦  «        | _        || _        t          t9          |j        | j                  |j        | j                  ¦  «        ¦  «        | _        | j                             || j                  ¦  «        | _        |j         |j!        dd…| j        f         | j        z  z
  }t          tE          |j        dd…| j         f         t,          j#         |j$        |j        dd…| j        f         | j        z  z
  ¦  «        tE          |j!        dd…| j         f         ||¦  «        g| j%        |¦  «        | _	        |ok| j        j&        o_t-          j'        t-          j(        | j        j        ¦  «        ¦  «        o/t-          j'        t-          j(        | j        j        ¦  «        ¦  «        }|�r~d
| j        j        | j        j        z
  z  | _)        d
| j        j        | j        j        z   z  | _*        t          t9          t-          j+        | j%        ¦  «         t-          j+        | j%        ¦  «        ¦  «        ¦  «        | _        | j	        j         | j	        j!        | j*        z  z
  }t          tE          | j	        j        t-          j,        | j)        ¦  «        z  t,          j#         | j	        j$        | j	        j        | j*        z  z
  ¦  «        tE          | j	        j!        t-          j,        | j)        ¦  «        z  ||¦  «        g| j%        |¦  «        | _	        | j        | j*        z
  | j)        z  | _        n<t-          j+        | j%        ¦  «        | _)        t-          j-        | j%        ¦  «        | _*        || _.        || _/        g | _0        g | _1        g | _2        |	| _3        |
| _4        g | _5        g | _6        g | _7        dS )aY  
        Initialize the nonlinear problem.

        The problem is preprocessed to remove all the variables that are fixed
        by the bound constraints.

        Parameters
        ----------
        obj : ObjectiveFunction
            Objective function.
        x0 : array_like, shape (n,)
            Initial guess.
        bounds : BoundConstraints
            Bound constraints.
        linear : LinearConstraints
            Linear constraints.
        nonlinear : NonlinearConstraints
            Nonlinear constraints.
        callback : {callable, None}
            Callback function.
        feasibility_tol : float
            Tolerance on the constraint violation.
        scale : bool
            Whether to scale the problem according to the bounds.
        store_history : bool
            Whether to store the function evaluations.
        history_size : int
            Maximum number of function evaluations to store.
        filter_size : int
            Maximum number of points in the filter.
        debug : bool
            Whether to make debugging tests during the execution.
        r   Nz)The callback must be a callable function.z#The initial guess must be a vector.zThe bounds must have z
 elements.r
   z@The left-hand side matrices of the linear constraints must have z	 columns.re   )8r   r   rC   rc   r˜   r+   r   ÚintÚ_objÚ_linearÚ
_nonlinearr   Ú	TypeErrorÚ	_callbackr   rR   rJ   r½   rx   Úshaper   rL   r)   rr   Ú
_fixed_idxÚ
_fixed_valr`   Ú_orig_boundsr   Ú_boundsra   Ú_x0rw   ru   r   rI   ry   rj   rN   rM   ÚisfiniteÚ_scaling_factorÚ_scaling_shiftrQ   ÚdiagÚzerosÚ_feasibility_tolÚ_filter_sizeÚ_fun_filterÚ_maxcv_filterÚ	_x_filterÚ_store_historyÚ_history_sizeÚ_fun_historyÚ_maxcv_historyÚ
_x_history)r   Úobjr¢   rT   ÚlinearÚ	nonlinearÚcallbackÚfeasibility_tolÚscaleÚstore_historyÚhistory_sizeÚfilter_sizer   rj   Útolrw   s                   r   r    zProblem.__init___  sµ  € ð` ð 	+Ý˜cÕ#4Ñ5Ô5Ð5Ð5Ð5Ý˜fÕ&6Ñ7Ô7Ð7Ð7Ð7Ý˜fÕ&7Ñ8Ô8Ð8Ð8Ð8Ý˜iÕ)=Ñ>Ô>Ð>Ð>Ð>Ý˜o­uÑ5Ô5Ð5Ð5Ð5Ý˜e¥TÑ*Ô*Ð*Ð*Ð*Ý˜m­TÑ2Ô2Ð2Ð2Ð2Ý˜l­CÑ0Ô0Ð0Ð0Ð0Øð (Ø# aÒ'Ð'Ð'Ð'Ý˜k­3Ñ/Ô/Ð/Ð/Ð/Ø ’?�?�?�?Ý˜e¥TÑ*Ô*Ð*Ð*Ð*àˆŒ	ØˆŒØ#ˆŒØÐÝ˜HÑ%Ô%ð MÝÐ KÑLÔLÐLØ!ˆŒõ ˜BÐ EÑFÔFˆØŒGˆØŒ9Œ>˜QÒÐÝÐB°QÐBÐBÐBÑCÔCÐCØŒ;Ô˜QÔ 1Ò$Ð$Ýð%Øð%ð %ð %ñô ð õ ˜VœY¨¬	Ñ2Ô2ˆØ!œ9¨¬	Ò1ÝŒF�6”9˜vœyÑ(Ñ)Ô)¨CÒ/ñ
ˆŒð ØŒI�d”oÔ&¨¬°4´?Ô)CÑCñ
ˆŒõ œ'ØŒOØŒI�d”oÔ&ØŒI�d”oÔ&ñ
ô 
ˆŒð #ˆÔÝ'Ý�6”9˜dœoÐ-Ô.°´	¸4¼?Ð:JÔ0KÑLÔLñ
ô 
ˆŒð
 ”<×'Ò'¨¨D¬OÐ+;Ô(<Ñ=Ô=ˆŒð Œ{˜Vœ[¨¨¨¨D¬OÐ);Ô<¸t¼ÑNÑNˆÝ(å Ø”K    D¤OÐ#3Ð 3Ô4Ý”V�GØ”KØ”k ! ! ! T¤_Ð"4Ô5¸¼ÑGñHñô õ ! ¤¨Q¨Q¨Q°´Ð0@Ð-@Ô!AÀ4ÈÑNÔNðð ŒFØñ
ô 
ˆŒð  ð 5Ø”Ô(ð5å”•r”{ 4¤<¤?Ñ3Ô3Ñ4Ô4ð5õ ”•r”{ 4¤<¤?Ñ3Ô3Ñ4Ô4ð	 	ð ñ 	3Ø#&¨$¬,¬/¸D¼L¼OÑ*KÑ#LˆDÔ Ø"%¨¬¬¸4¼<¼?Ñ)JÑ"KˆDÔÝ+Ý�œ ¤™œÐ'­¬°´©¬Ñ9Ô9ñô ˆDŒLð ”<Ô$ t¤|Ô'8¸4Ô;NÑ'NÑNˆDÝ,å$ØœÔ)­B¬G°DÔ4HÑ,IÔ,IÑIÝœ˜ØœÔ)Øœ,Ô+¨dÔ.AÑAñBñô õ %ØœÔ)­B¬G°DÔ4HÑ,IÔ,IÑIØØñô ðð ”Øñô ˆDŒLð" œ 4Ô#6Ñ6¸$Ô:NÑNˆDŒHˆHå#%¤7¨4¬6¡?¤?ˆDÔ Ý"$¤(¨4¬6Ñ"2Ô"2ˆDÔð !0ˆÔØ'ˆÔØˆÔØˆÔØˆŒð ,ˆÔØ)ˆÔØˆÔØ ˆÔØˆŒˆˆr!   r%   c                 óº  ‡‡— t          j        |t          ¬¦  «        }|                      |¦  «        }|                      |¦  «        Š|                      |¦  «        \  }}|                      |||¦  «        Š| j        r¹| j         	                    ‰¦  «         | j
         	                    ‰¦  «         | j         	                    |¦  «         t          | j        ¦  «        | j        k    rN| j                             d¦  «         | j
                             d¦  «         | j                             d¦  «         t          j        ‰¦  «        r-t          j        ‰¦  «        rt          | j        ¦  «        dk    }nÄt          j        ‰¦  «        r4t#          ˆfd„t%          | j        | j        ¦  «        D ¦   «         ¦  «        }n|t          j        ‰¦  «        r4t#          ˆfd„t%          | j        | j        ¦  «        D ¦   «         ¦  «        }n4t#          ˆˆfd„t%          | j        | j        ¦  «        D ¦   «         ¦  «        }|�rü| j         	                    ‰¦  «         | j         	                    ‰¦  «         | j         	                    |¦  «         t+          t          | j        ¦  «        dz
  dd¦  «        D �]}t          j        ‰¦  «        r t          j        | j        |         ¦  «        }n”t          j        ‰¦  «        r t          j        | j        |         ¦  «        }n`t          j        | j        |         ¦  «        p@t          j        | j        |         ¦  «        p!‰| j        |         k    o‰| j        |         k    }|rN| j                             |¦  «         | j                             |¦  «         | j                             |¦  «         �Œt          | j        ¦  «        | j        k    rN| j                             d¦  «         | j                             d¦  «         | j                             d¦  «         | j        �´t1          | j        ¦  «        }		 |                      |¦  «        \  }
}}|                      |
¦  «        }
t5          |	j        ¦  «        d	hk    r(t9          |
|¬
¦  «        }|                      |¬¦  «         n|                      |
¦  «         n# t:          $ r}t<          |‚d}~ww xY wt          j        ‰¦  «        rt>          Št>          |t          j        |¦  «        <   t>          |t          j        |¦  «        <   tA          tC          ‰t>          ¦  «        t>           ¦  «        Št          j"        t          j#        |t>          ¦  «        t>           ¦  «        }t          j"        t          j#        |t>          ¦  «        t>           ¦  «        }‰||fS )a  
        Evaluate the objective and nonlinear constraint functions.

        Parameters
        ----------
        x : array_like, shape (n,)
            Point at which the functions are evaluated.
        penalty : float, optional
            Penalty parameter used to select the point in the filter to forward
            to the callback function.

        Returns
        -------
        float
            Objective function value.
        `numpy.ndarray`, shape (m_nonlinear_ub,)
            Nonlinear inequality constraint function values.
        `numpy.ndarray`, shape (m_nonlinear_eq,)
            Nonlinear equality constraint function values.

        Raises
        ------
        `cobyqa.utils.CallbackSuccess`
            If the callback function raises a ``StopIteration``.
        r#   r   c              3   óz   •K  — | ]5\  }}t          j        |¦  «        r‰|k     pt          j        |¦  «        V — Œ6d S r¡   ©r)   rK   )rh   Ú
fun_filterÚmaxcv_filterÚ	maxcv_vals      €r   ú	<genexpr>z#Problem.__call__.<locals>.<genexpr>7  sf   øè è € ð  ð  ñ -�J õ ”˜Ñ$Ô$ð -Ø Ò,ð*å”8˜LÑ)Ô)ð ð  ð  ð  ð  ð  r!   c              3   óz   •K  — | ]5\  }}t          j        |¦  «        r‰|k     pt          j        |¦  «        V — Œ6d S r¡   ró   )rh   rô   rõ   Úfun_vals      €r   r÷   z#Problem.__call__.<locals>.<genexpr>A  sf   øè è € ð  ð  ñ -�J õ ”˜Ñ&Ô&ð )Ø˜jÒ(ð(å”8˜JÑ'Ô'ð ð  ð  ð  ð  ð  r!   c              3   ó6   •K  — | ]\  }}‰|k     p‰|k     V — Œd S r¡   r(   )rh   rô   rõ   rù   rö   s      €€r   r÷   z#Problem.__call__.<locals>.<genexpr>K  sJ   øè è € ð  ð  á,�J ð ˜*Ò$Ð@¨	°LÒ(@ð ð  ð  ð  ð  ð  r!   é   éÿÿÿÿNÚintermediate_result)r0   r   )rý   )$r)   rZ   r+   Úbuild_xrÍ   rÏ   r]   râ   rä   rª   rå   ræ   r–   rã   ÚpoprK   rß   rM   Úziprà   rá   ÚrangerÞ   rÑ   r   Ú	best_evalÚsetÚ
parametersr   ÚStopIterationr   r   r�   ÚminÚmaximumÚminimum)r   r0   ÚpenaltyÚx_fullrÃ   rÄ   Úinclude_pointÚkÚremove_pointÚsigÚx_bestÚfun_bestÚ_rý   Úexcrù   rö   s                  @@r   r2   zProblem.__call__
  s¸  øø€ õ6 ŒJ�q¥Ð&Ñ&Ô&ˆØ—’˜a‘”ˆØ—)’)˜FÑ#Ô#ˆØŸ?š?¨6Ñ2Ô2Ñˆ�Ø—J’J˜q '¨7Ñ3Ô3ˆ	ØÔð 	'ØÔ×$Ò$ WÑ-Ô-Ð-ØÔ×&Ò& yÑ1Ô1Ð1ØŒO×"Ò" 1Ñ%Ô%Ð%Ý�4Ô$Ñ%Ô%¨Ô(:Ò:Ð:ØÔ!×%Ò% aÑ(Ô(Ð(ØÔ#×'Ò'¨Ñ*Ô*Ð*Ø”×#Ò# AÑ&Ô&Ð&õ Œ8�GÑÔð 	¥¤¨)Ñ!4Ô!4ð 	Ý Ô 0Ñ1Ô1°QÒ6ˆMˆMÝŒX�gÑÔð 	Ýð  ð  ð  ð  õ 14ØÔ$ØÔ&ñ1ô 1ð	 ñ  ô  ñ ô ˆMˆMõ ŒX�iÑ Ô ð 	Ýð  ð  ð  ð  õ 14ØÔ$ØÔ&ñ1ô 1ð	 ñ  ô  ñ ô ˆMˆMõ  ð  ð  ð  ð  ð  å03ØÔ$ØÔ&ñ1ô 1ð ñ  ô  ñ ô ˆMð ñ 	&ØÔ×#Ò# GÑ,Ô,Ð,ØÔ×%Ò% iÑ0Ô0Ð0ØŒN×!Ò! !Ñ$Ô$Ð$õ
 �3˜tÔ/Ñ0Ô0°1Ñ4°b¸"Ñ=Ô=ð *ñ *�Ý”8˜GÑ$Ô$ð 
Ý#%¤8¨DÔ,<¸QÔ,?Ñ#@Ô#@�L�LÝ”X˜iÑ(Ô(ð Ý#%¤8¨DÔ,>¸qÔ,AÑ#BÔ#B�L�Lõ œ Ô!1°!Ô!4Ñ5Ô5ð ?Ýœ8 DÔ$6°qÔ$9Ñ:Ô:ð?à" dÔ&6°qÔ&9Ò9ð ?Ø%¨Ô);¸AÔ)>Ò>ð	 !ð  ð *ØÔ$×(Ò(¨Ñ+Ô+Ð+ØÔ&×*Ò*¨1Ñ-Ô-Ð-Ø”N×&Ò& qÑ)Ô)Ð)ùõ �4Ô#Ñ$Ô$ tÔ'8Ò8Ð8ØÔ ×$Ò$ QÑ'Ô'Ð'ØÔ"×&Ò& qÑ)Ô)Ð)Ø”×"Ò" 1Ñ%Ô%Ð%ð Œ>Ð%Ý˜DœNÑ+Ô+ˆCð/Ø&*§n¢n°WÑ&=Ô&=Ñ#�˜ !ØŸš fÑ-Ô-�Ý�s”~Ñ&Ô&Ð+@Ð*AÒAÐAÝ*8Ø Ø$ð+ñ +ô +Ð'ð
 —N’NÐ7J�NÑKÔKÐKÐKà—N’N 6Ñ*Ô*Ð*øøÝ ð /ð /ð /Ý%¨3Ð.øøøøð/øøøõ Œ8�GÑÔð 	ÝˆGÝ%,ˆ•”˜Ñ!Ô!Ñ"Ý%,ˆ•”˜Ñ!Ô!Ñ"Ý•c˜'¥7Ñ+Ô+­g¨XÑ6Ô6ˆÝ”*�RœZ¨µÑ9Ô9½G¸8ÑDÔDˆÝ”*�RœZ¨µÑ9Ô9½G¸8ÑDÔDˆØ˜ Ð(Ð(s   ÑBS Ó
S3Ó&S.Ó.S3c                 ó   — | j         j        S )zt
        Number of variables.

        Returns
        -------
        int
            Number of variables.
        )r¢   rR   r6   s    r   rj   z	Problem.nŽ  s   € ð ŒwŒ|Ðr!   c                 ó   — | j         j        S )zÒ
        Number of variables in the original problem (with fixed variables).

        Returns
        -------
        int
            Number of variables in the original problem (with fixed variables).
        )rÓ   rR   r6   s    r   Ún_origzProblem.n_origš  s   € ð ŒÔ#Ð#r!   c                 ó   — | j         S )z€
        Initial guess.

        Returns
        -------
        `numpy.ndarray`, shape (n,)
            Initial guess.
        )r×   r6   s    r   r¢   z
Problem.x0¦  rV   r!   c                 ó   — | j         j        S r4   )rÍ   r7   r6   s    r   r7   zProblem.n_eval²  s   € ð ŒyÔÐr!   c                 ó   — | j         j        S )r:   )rÍ   r/   r6   s    r   r³   zProblem.fun_name¾  rˆ   r!   c                 ó   — | j         S )z}
        Bound constraints.

        Returns
        -------
        BoundConstraints
            Bound constraints.
        )rÖ   r6   s    r   rT   zProblem.boundsÊ  r8   r!   c                 ó   — | j         S )z€
        Linear constraints.

        Returns
        -------
        LinearConstraints
            Linear constraints.
        )rÎ   r6   s    r   rè   zProblem.linearÖ  r8   r!   c                 ó   — | j         j        S )z„
        Number of bound constraints.

        Returns
        -------
        int
            Number of bound constraints.
        )rT   rP   r6   s    r   Úm_boundszProblem.m_boundsâ  s   € ð Œ{Œ}Ðr!   c                 ó   — | j         j        S r†   )rè   r‡   r6   s    r   Úm_linear_ubzProblem.m_linear_ubî  ó   € ð Œ{ÔÐr!   c                 ó   — | j         j        S rŠ   )rè   r‹   r6   s    r   Úm_linear_eqzProblem.m_linear_eqú  r  r!   c                 ó   — | j         j        S )a   
        Number of nonlinear inequality constraints.

        Returns
        -------
        int
            Number of nonlinear inequality constraints.

        Raises
        ------
        ValueError
            If the number of nonlinear inequality constraints is not known.
        )rÏ   r‡   r6   s    r   Úm_nonlinear_ubzProblem.m_nonlinear_ub  ó   € ð ŒÔ#Ð#r!   c                 ó   — | j         j        S )a  
        Number of nonlinear equality constraints.

        Returns
        -------
        int
            Number of nonlinear equality constraints.

        Raises
        ------
        ValueError
            If the number of nonlinear equality constraints is not known.
        )rÏ   r‹   r6   s    r   Úm_nonlinear_eqzProblem.m_nonlinear_eq  r$  r!   c                 óB   — t          j        | j        t          ¬¦  «        S )z½
        History of objective function evaluations.

        Returns
        -------
        `numpy.ndarray`, shape (n_eval,)
            History of objective function evaluations.
        r#   )r)   r*   rä   r+   r6   s    r   Úfun_historyzProblem.fun_history(  s   € õ Œx˜Ô)µÐ7Ñ7Ô7Ð7r!   c                 óB   — t          j        | j        t          ¬¦  «        S )z»
        History of maximum constraint violations.

        Returns
        -------
        `numpy.ndarray`, shape (n_eval,)
            History of maximum constraint violations.
        r#   )r)   r*   rå   r+   r6   s    r   Úmaxcv_historyzProblem.maxcv_history4  s   € õ Œx˜Ô+µ5Ð9Ñ9Ô9Ð9r!   c                 ó¤   — 	 | j         dk    s| j        dk    rdS | j        dk    s| j        dk    rdS | j        dk    rdS dS # t
          $ r Y dS w xY w)zû
        Type of the problem.

        The problem can be either 'unconstrained', 'bound-constrained',
        'linearly constrained', or 'nonlinearly constrained'.

        Returns
        -------
        str
            Type of the problem.
        r   znonlinearly constrainedzlinearly constrainedzbound-constrainedÚunconstrained)r#  r&  r  r!  r  r½   r6   s    r   ÚtypezProblem.type@  s‡   € ð	-ØÔ" QÒ&Ð&¨$Ô*=ÀÒ*AÐ*AØ0Ð0ØÔ! AÒ%Ð%¨Ô)9¸AÒ)=Ð)=Ø-Ð-Ø” Ò"Ð"Ø*Ð*à&�øÝð 	-ð 	-ð 	-ð -Ð,Ð,ð	-øøøs   ‚A šA ²A Á
AÁAc                 ó   — | j         dk    S )z§
        Whether the problem is a feasibility problem.

        Returns
        -------
        bool
            Whether the problem is a feasibility problem.
        r;   )r³   r6   s    r   Úis_feasibilityzProblem.is_feasibility^  s   € ð Œ} Ò"Ð"r!   c                 ó¼   — t          j        | j        ¦  «        }| j        || j        <   || j        z  | j        z   || j         <   | j                             |¦  «        S )a0  
        Build the full vector of variables from the reduced vector.

        Parameters
        ----------
        x : array_like, shape (n,)
            Reduced vector of variables.

        Returns
        -------
        `numpy.ndarray`, shape (n_orig,)
            Full vector of variables.
        )	r)   rm   r  rÔ   rÓ   rÙ   rÚ   rÕ   ra   )r   r0   r
  s      r   rþ   zProblem.build_xj  s\   € õ ”˜$œ+Ñ&Ô&ˆØ"&¤/ˆˆtŒÑØ$%¨Ô(<Ñ$<Ø&*Ô&9ñ%:ˆ�”ÐÑ àÔ ×(Ò(¨Ñ0Ô0Ð0r!   Nc                 óŠ   — |                       |||¬¦  «        }t          j        |¦  «        rt          j        |d¬¦  «        S dS rÂ   )r[   r)   rO   r�   )r   r0   rÃ   rÄ   r[   s        r   r]   zProblem.maxcv~  sH   € ð( —N’N 1¨g¸w�NÑGÔGˆ	ÝÔ˜IÑ&Ô&ð 	Ý”6˜)¨SÐ1Ñ1Ô1Ð1à�3r!   c                 óê  — g }| j         j        s/| j                              |¦  «        }|                     |¦  «         t	          | j        j        ¦  «        r/| j                             |¦  «        }|                     |¦  «         t	          | j        j        ¦  «        r1| j                             |||¦  «        }|                     |¦  «         t	          |¦  «        rt          j	        |¦  «        S d S r¡   )
rT   rN   r[   rª   r–   rè   rS   rÏ   r)   rv   )r   r0   rÃ   rÄ   r[   ÚbÚlcÚnlcs           r   r[   zProblem.violation˜  sä   € Øˆ	ØŒ{Ô&ð 	 Ø”×%Ò% aÑ(Ô(ˆAØ×Ò˜QÑÔÐåˆtŒ{ŒÑÔð 	!Ø”×&Ò& qÑ)Ô)ˆBØ×Ò˜RÑ Ô Ð ÝˆtŒÔ"Ñ#Ô#ð 	"Ø”/×+Ò+¨A¨w¸Ñ@Ô@ˆCØ×Ò˜SÑ!Ô!Ð!åˆy‰>Œ>ð 	-Ý”> )Ñ,Ô,Ð,ð	-ð 	-r!   c                 óÂ  — t          | j        ¦  «        dk    r | | j        ¦  «         t          j        | j        ¦  «        }t          j        | j        ¦  «        }t          j        | j        ¦  «        }t          j        |¦  «        }t          j        |¦  «        �r&|| j	        k    }t          j        |¦  «        r¢t          j
        t          j        ||         ¦  «        ¦  «        sv||t          j        ||         ¦  «        k    z  }t          j        |¦  «        dk    r!||t          j        ||         ¦  «        k    z  }t          j        |¦  «        d         }�nÐt          j        |¦  «        rt          j        |¦  «        d         }�n t          j        |t          j        ¦  «        }	||         |||         z  z   |	|<   t          j
        t          j        |	¦  «        ¦  «        r4|t          j        |¦  «        k    }
t          j        |
¦  «        d         }�n|	t          j        |	¦  «        k    }t          j        |¦  «        dk    r!||t          j        ||         ¦  «        k    z  }t          j        |¦  «        dk    r!||t          j        ||         ¦  «        k    z  }t          j        |¦  «        d         }nkt          j
        t          j        |¦  «        ¦  «        s3|t          j        |¦  «        k    }t          j        |¦  «        d         }nt          |¦  «        dz
  }| j                             ||dd…f         ¦  «        ||         ||         fS )aÎ  
        Return the best point in the filter and the corresponding objective and
        nonlinear constraint function evaluations.

        Parameters
        ----------
        penalty : float
            Penalty parameter

        Returns
        -------
        `numpy.ndarray`, shape (n,)
            Best point.
        float
            Corresponding objective function value.
        float
            Corresponding maximum constraint violation.
        r   r
   rü   N)r–   rß   r¢   r)   r*   rà   rá   rØ   rs   rÝ   rM   rK   ÚnanminrO   r  ÚflatnonzeroÚ	full_likeÚnanrT   ra   )r   r	  rô   rõ   Úx_filterÚ
finite_idxÚfeasible_idxÚfun_min_idxr±   Úmerit_filterÚmin_maxcv_idxÚmerit_min_idxs               r   r  zProblem.best_eval¨  s%  € õ, ˆtÔÑ Ô  AÒ%Ð%ØˆD�”‰MŒMˆMõ ”X˜dÔ.Ñ/Ô/ˆ
Ý”x Ô 2Ñ3Ô3ˆÝ”8˜DœNÑ+Ô+ˆÝ”[ Ñ.Ô.ˆ
ÝŒ6�*ÑÔñ E	$à'¨4Ô+@Ò@ˆLÝŒv�lÑ#Ô#ð 7:­B¬FÝ”˜ LÔ1Ñ2Ô2ñ-ô -ð 7:ð +Ø¥"¤)¨J°|Ô,DÑ"EÔ"EÒEñ�õ Ô# KÑ0Ô0°1Ò4Ð4Ø <µ2´6Ø$ [Ô1ñ4ô 4ò $ñ �Kõ ”N ;Ñ/Ô/°Ô3�‘Ý”˜Ñ%Ô%ð ':õ ”N <Ñ0Ô0°Ô4�‘õ  "œ|¨J½¼Ñ?Ô?�à˜zÔ*¨W°|ÀJÔ7OÑ-OÑOð ˜ZÑ(õ ”6�"œ( <Ñ0Ô0Ñ1Ô1ð :ð %1µB´I¸lÑ4KÔ4KÒ$K�MÝœ }Ñ5Ô5°bÔ9�A‘Að %1µB´I¸lÑ4KÔ4KÒ$K�MÝÔ'¨Ñ6Ô6¸Ò:Ð:Ø%¨½¼Ø(¨Ô7ñ:ô :ò *ñ ˜õ Ô'¨Ñ6Ô6¸Ò:Ð:Ø%¨µr´vØ& }Ô5ñ8ô 8ò *ñ ˜õ œ }Ñ5Ô5°bÔ9�A�AÝ”�œ Ñ,Ô,Ñ-Ô-ð 
	$ð
 %­¬	°*Ñ(=Ô(=Ò=ˆKÝ”˜{Ñ+Ô+¨BÔ/ˆAˆAõ �J‘” !Ñ#ˆAàŒK×Ò ¨¨A¨A¨A¨¤Ñ/Ô/Ø�qŒMØ˜ŒOð
ð 	
r!   )r%   rÈ   )r<   r>   r?   r@   r    r2   rA   rj   r  r¢   r7   r³   rT   rè   r  r  r!  r#  r&  r(  r*  r-  r/  rþ   r]   r[   r  r(   r!   r   rÊ   rÊ   Z  sE  € € € € € ðð ðið ið iðVB)ð B)ð B)ð B)ðH ð	ð 	ñ „Xð	ð ð	$ð 	$ñ „Xð	$ð ð	ð 	ñ „Xð	ð ð	 ð 	 ñ „Xð	 ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ð	 ð 	 ñ „Xð	 ð ð	 ð 	 ñ „Xð	 ð ð$ð $ñ „Xð$ð  ð$ð $ñ „Xð$ð  ð	8ð 	8ñ „Xð	8ð ð	:ð 	:ñ „Xð	:ð ð-ð -ñ „Xð-ð: ð	#ð 	#ñ „Xð	#ð1ð 1ð 1ð(ð ð ð ð4-ð -ð -ð -ð h
ð h
ð h
ð h
ð h
r!   rÊ   )Ú
contextlibr   Úinspectr   r§   Únumpyr)   Úscipy.optimizer   r   r   r   Úscipy.optimize._constraintsr	   Úsettingsr   r   Úutilsr   r   r   r   rC   rc   r˜   rÊ   r(   r!   r   ú<module>rI     sâ  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø !Ð !Ð !Ð !Ð !Ð !ðWð Wð Wð Wð Wñ Wô Wð Wðt]Gð ]Gð ]Gð ]Gð ]Gñ ]Gô ]Gð ]Gð@dð dð dð dð dñ dô dð dðNbDð bDð bDð bDð bDñ bDô bDð bDðJv

ð v

ð v

ð v

ð v

ñ v

ô v

ð v

ð v

ð v

r!   