§
    $�’jx8  ã                   ó(  — d dl Z d dlmZmZ d dlZd dlmZ  G d„ de¦  «        Z G d„ de¦  «        Z	 G d„ d	e¦  «        Z
 G d
„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )é    N)ÚABCÚabstractmethod)Ú
MapWrapperc                   óX   — e Zd ZdZd	d„Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
dS )
Ú
VertexBasez"
    Base class for a vertex.
    Nc                 ó¨   — || _         t          | j         ¦  «        | _        |�t          |¦  «        | _        nt          ¦   «         | _        || _        dS )a  
        Initiation of a vertex object.

        Parameters
        ----------
        x : tuple or vector
            The geometric location (domain).
        nn : list, optional
            Nearest neighbour list.
        index : int, optional
            Index of vertex.
        N)ÚxÚhashÚsetÚnnÚindex)Úselfr	   r   r   s       úNC:\Projects\DSCons\.venv\Lib\site-packages\scipy\optimize\_shgo_lib\_vertex.pyÚ__init__zVertexBase.__init__   sD   € ð ˆŒÝ˜œ‘L”LˆŒ	àˆ>Ý˜"‘g”gˆDŒGˆGå‘e”eˆDŒGàˆŒ
ˆ
ˆ
ó    c                 ó   — | j         S ©N)r
   ©r   s    r   Ú__hash__zVertexBase.__hash__$   s
   € ØŒyÐr   c                 ó¨   — |dvr"t          t          | ¦  «        › d|› d�¦  «        ‚|dk    r%t          j        | j        ¦  «        | _        | j        S d S )N)Úx_az object has no attribute 'ú'r   )ÚAttributeErrorÚtypeÚnpÚarrayr	   r   )r   Úitems     r   Ú__getattr__zVertexBase.__getattr__'   sm   € Ø�wÐÐÝ ¥D¨¡J¤Jð "-ð "-Ø%)ð"-ð "-ð "-ñ .ô .ð .à�5Š=ˆ=Ý”x ¤Ñ'Ô'ˆDŒHØ”8ˆOð ˆ=r   c                 ó    — t          d¦  «        ‚©NzKThis method is only implemented with an associated child of the base class.©ÚNotImplementedError©r   Úvs     r   ÚconnectzVertexBase.connect/   ó   € å!ð #Hñ Iô Ið 	Ir   c                 ó    — t          d¦  «        ‚r    r!   r#   s     r   Ú
disconnectzVertexBase.disconnect4   r&   r   c                 ó\   — | j         | _        | j                             | ¦  «         | j        S )a  Returns the star domain ``st(v)`` of the vertex.

        Parameters
        ----------
        v :
            The vertex ``v`` in ``st(v)``

        Returns
        -------
        st : set
            A set containing all the vertices in ``st(v)``
        )r   ÚstÚaddr   s    r   ÚstarzVertexBase.star9   s(   € ð ”'ˆŒØŒ�Š�DÑÔÐØŒwˆr   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r%   r(   r,   © r   r   r   r   	   s›   € € € € € ðð ðð ð ð ð.ð ð ðð ð ð ðIð Iñ „^ðIð ðIð Iñ „^ðIðð ð ð ð r   r   c                   ó@   ‡ — e Zd ZdZ	 	 d	ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zˆ xZ	S )
ÚVertexScalarFieldz�
    Add homology properties of a scalar field f: R^n --> R associated with
    the geometry built from the VertexBase class
    Nr2   c                 ól   •— t          ¦   «                              |||¬¦  «         d| _        d| _        dS )aY  
        Parameters
        ----------
        x : tuple,
            vector of vertex coordinates
        field : callable, optional
            a scalar field f: R^n --> R associated with the geometry
        nn : list, optional
            list of nearest neighbours
        index : int, optional
            index of the vertex
        field_args : tuple, optional
            additional arguments to be passed to field
        g_cons : callable, optional
            constraints on the vertex
        g_cons_args : tuple, optional
            additional arguments to be passed to g_cons

        ©r   r   TN)Úsuperr   Ú	check_minÚ	check_max)	r   r	   Úfieldr   r   Ú
field_argsÚg_consÚg_cons_argsÚ	__class__s	           €r   r   zVertexScalarField.__init__Q   s8   ø€ õ* 	‰Œ×Ò˜˜r¨ÐÑ/Ô/Ð/ð ˆŒØˆŒˆˆr   c                 óÈ   — || ur[|| j         vrT| j                              |¦  «         |j                              | ¦  «         d| _        d| _        d|_        d|_        dS dS dS )zŒConnects self to another vertex object v.

        Parameters
        ----------
        v : VertexBase or VertexScalarField object
        TN)r   r+   r8   r9   r#   s     r   r%   zVertexScalarField.connectt   sj   € ð �Dˆ=ˆ=˜Q d¤gÐ-Ð-ØŒG�KŠK˜‰NŒNˆNØŒD�HŠH�T‰NŒNˆNð "ˆDŒNØ!ˆDŒNØˆAŒKØˆAŒKˆKˆKð ˆ=Ð-Ð-r   c                 ó¼   — || j         v rR| j                              |¦  «         |j                              | ¦  «         d| _        d| _        d|_        d|_        d S d S )NT)r   Úremover8   r9   r#   s     r   r(   zVertexScalarField.disconnect…   s^   € Ø�”ˆ<ˆ<ØŒG�NŠN˜1ÑÔÐØŒD�KŠK˜ÑÔÐð "ˆDŒNØ!ˆDŒNØˆAŒKØˆAŒKˆKˆKð ˆ<r   c                 óx   ‡ — ‰ j         r,t          ˆ fd„‰ j        D ¦   «         ¦  «        ‰ _        d‰ _         ‰ j        S )zMCheck whether this vertex is strictly less than all its
           neighboursc              3   ó8   •K  — | ]}‰j         |j         k     V — Œd S r   ©Úf©Ú.0r$   r   s     €r   ú	<genexpr>z.VertexScalarField.minimiser.<locals>.<genexpr>”   ó+   øè è € Ð:Ð:¨Q˜DœF Q¤SšLÐ:Ð:Ð:Ð:Ð:Ð:r   F)r8   Úallr   Ú_minr   s   `r   Ú	minimiserzVertexScalarField.minimiser�   sD   ø€ ð Œ>ð 	#ÝÐ:Ð:Ð:Ð:°$´'Ð:Ñ:Ô:Ñ:Ô:ˆDŒIØ"ˆDŒNàŒyÐr   c                 óx   ‡ — ‰ j         r,t          ˆ fd„‰ j        D ¦   «         ¦  «        ‰ _        d‰ _         ‰ j        S )z`
        Check whether this vertex is strictly greater than all its
        neighbours.
        c              3   ó8   •K  — | ]}‰j         |j         k    V — Œd S r   rD   rF   s     €r   rH   z.VertexScalarField.maximiser.<locals>.<genexpr>Ÿ   rI   r   F)r9   rJ   r   Ú_maxr   s   `r   Ú	maximiserzVertexScalarField.maximiser™   sD   ø€ ð
 Œ>ð 	#ÝÐ:Ð:Ð:Ð:°$´'Ð:Ñ:Ô:Ñ:Ô:ˆDŒIØ"ˆDŒNàŒyÐr   )NNNr2   Nr2   )
r.   r/   r0   r1   r   r%   r(   rL   rP   Ú__classcell__©r>   s   @r   r4   r4   K   sŽ   ø€ € € € € ðð ð
 GIØ*,ð!ð !ð !ð !ð !ð !ðFð ð ð"	ð 	ð 	ðð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	r   r4   c                   ó*   ‡ — e Zd ZdZ	 	 	 dˆ fd„	Zˆ xZS )ÚVertexVectorFieldz„
    Add homology properties of a scalar field f: R^n --> R^m associated with
    the geometry built from the VertexBase class.
    Nr2   c
                 ój   •— t          ¦   «                              |||	¬¦  «         t          d¦  «        ‚)Nr6   z&This class is still a work in progress)r7   r   r"   )r   r	   ÚsfieldÚvfieldr;   Úvfield_argsr<   r=   r   r   r>   s             €r   r   zVertexVectorField.__init__«   s3   ø€ õ 	‰Œ×Ò˜˜r¨ÐÑ/Ô/Ð/å!Ð"JÑKÔKÐKr   )NNr2   r2   Nr2   NN)r.   r/   r0   r1   r   rQ   rR   s   @r   rT   rT   ¥   s^   ø€ € € € € ðð ð
 @BØ(,Ø04ðLð Lð Lð Lð Lð Lð Lð Lð Lð Lr   rT   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚVertexCacheBasez7Base class for a vertex cache for a simplicial complex.c                 óR   — t          j        ¦   «         | _        d| _        d| _        d S )Nr   éÿÿÿÿ)ÚcollectionsÚOrderedDictÚcacheÚnfevr   r   s    r   r   zVertexCacheBase.__init__µ   s$   € å Ô,Ñ.Ô.ˆŒ
ØˆŒ	ØˆŒ
ˆ
ˆ
r   c              #   ó<   K  — | j         D ]}| j         |         V — Œd S r   )r_   r#   s     r   Ú__iter__zVertexCacheBase.__iter__»   s1   è è € Ø”ð 	 ð 	 ˆAØ”*˜Q”-ÐÐÐÐØˆr   c                 ó   — | j         dz   S )z%Returns the size of the vertex cache.é   ©r   r   s    r   ÚsizezVertexCacheBase.sizeÀ   s   € àŒz˜A‰~Ðr   c                 ó4  — t          dt          | j        ¦  «        › d�¦  «        }t          d|z  ¦  «         t          dt          | j        ¦  «        › d�¦  «         t          d|z  ¦  «         | j        D ]!}| j        |                              ¦   «          Œ"d S )NzVertex cache of size: ú:ú=)Úlenr_   ÚprintÚ	print_out)r   Úheadlenr$   s      r   rl   zVertexCacheBase.print_outÄ   sŸ   € ÝÐA­s°4´:©¬ÐAÐAÐAÑBÔBˆÝˆc�G‰mÑÔÐÝÐ9¥s¨4¬:¡¤Ð9Ð9Ð9Ñ:Ô:Ð:Ýˆc�G‰mÑÔÐØ”ð 	&ð 	&ˆAØŒJ�qŒM×#Ò#Ñ%Ô%Ð%Ð%ð	&ð 	&r   N)r.   r/   r0   r1   r   rb   rf   rl   r2   r   r   rZ   rZ   ³   sV   € € € € € ØAÐAðð ð ðð ð ð
ð ð ð&ð &ð &ð &ð &r   rZ   c                   ó0   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zˆ xZS )Ú
VertexCubez‹Vertex class to be used for a pure simplicial complex with no associated
    differential geometry (single level domain that exists in R^n)Nc                 óP   •— t          ¦   «                              |||¬¦  «         d S )Nr6   )r7   r   )r   r	   r   r   r>   s       €r   r   zVertexCube.__init__Ð   s(   ø€ Ý‰Œ×Ò˜˜r¨ÐÑ/Ô/Ð/Ð/Ð/r   c                 ó�   — || ur?|| j         vr8| j                              |¦  «         |j                              | ¦  «         d S d S d S r   )r   r+   r#   s     r   r%   zVertexCube.connectÓ   sJ   € Ø�Dˆ=ˆ=˜Q d¤gÐ-Ð-ØŒG�KŠK˜‰NŒNˆNØŒD�HŠH�T‰NŒNˆNˆNˆNð ˆ=Ð-Ð-r   c                 ó„   — || j         v r6| j                              |¦  «         |j                              | ¦  «         d S d S r   )r   rA   r#   s     r   r(   zVertexCube.disconnectØ   sB   € Ø�”ˆ<ˆ<ØŒG�NŠN˜1ÑÔÐØŒD�KŠK˜ÑÔÐÐÐð ˆ<r   r-   )r.   r/   r0   r1   r   r%   r(   rQ   rR   s   @r   ro   ro   Í   sg   ø€ € € € € ðFð Fð0ð 0ð 0ð 0ð 0ð 0ðð ð ð
ð ð ð ð ð ð r   ro   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚVertexCacheIndexc                 ó`   •— t          ¦   «                              ¦   «          t          | _        dS )zÊ
        Class for a vertex cache for a simplicial complex without an associated
        field. Useful only for building and visualising a domain complex.

        Parameters
        ----------
        N)r7   r   ro   ÚVertex)r   r>   s    €r   r   zVertexCacheIndex.__init__ß   s&   ø€ õ 	‰Œ×ÒÑÔÐÝ ˆŒˆˆr   Nc                 óÄ   — 	 | j         |         S # t          $ rF | xj        dz  c_        |                      || j        ¬¦  «        }|| j         |<   | j         |         cY S w xY w)Nrd   re   )r_   ÚKeyErrorr   rv   ©r   r	   r   Úxvals       r   Ú__getitem__zVertexCacheIndex.__getitem__ê   ss   € ð		!Ø”:˜a”=Ð øÝð 	!ð 	!ð 	!ØˆJŒJ˜!‰OˆJŒJØ—;’;˜q¨¬
�;Ñ3Ô3ˆDð !ˆDŒJ�q‰MØ”:˜a”=Ð Ð Ð ð	!øøøs   ‚ �AAÁAr   )r.   r/   r0   r   r{   rQ   rR   s   @r   rt   rt   Þ   sL   ø€ € € € € ð	!ð 	!ð 	!ð 	!ð 	!ð
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!ð 
!r   rt   c                   ón   ‡ — e Zd Z	 	 dˆ f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ˆ xZS )ÚVertexCacheFieldNr2   rd   c                 ó:  •— t          ¦   «                              ¦   «          d| _        t          | _        || _        || _        t          ||¦  «        | _        || _	        || _
        t          ||¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        d| _        || _        t%          |¦  «        | _        |dk    r*| j        | _        |€| j        | _        dS | j        | _        dS | j        | _        |€| j        | _        dS | j        | _        dS )a  
        Class for a vertex cache for a simplicial complex with an associated
        field.

        Parameters
        ----------
        field : callable
            Scalar or vector field callable.
        field_args : tuple, optional
            Any additional fixed parameters needed to completely specify the
            field function
        g_cons : dict or sequence of dict, optional
            Constraints definition.
            Function(s) ``R**n`` in the form::
        g_cons_args : tuple, optional
            Any additional fixed parameters needed to completely specify the
            constraint functions
        workers : int  optional
            Uses `multiprocessing.Pool <multiprocessing>`) to compute the field
             functions in parallel.

        r\   Frd   N)r7   r   r   r4   rv   r:   r;   ÚFieldWrapperÚwfieldr<   r=   ÚConstraintWrapperÚwgconsr   ÚgpoolÚfpoolÚsfc_lockÚworkersr   Ú_mapwrapperÚ
proc_gpoolÚprocess_gpoolÚproc_fpool_nogÚprocess_fpoolÚproc_fpool_gÚpproc_gpoolÚpproc_fpool_nogÚpproc_fpool_g)r   r:   r;   r<   r=   r†   r>   s         €r   r   zVertexCacheField.__init__ø   s
  ø€ õ0 	‰Œ×ÒÑÔÐØˆŒ
Ý'ˆŒØˆŒ
Ø$ˆŒÝ" 5¨*Ñ5Ô5ˆŒàˆŒØ&ˆÔÝ'¨°Ñ<Ô<ˆŒÝ‘U”UˆŒ
õ ‘U”UˆŒ
ØˆŒàˆŒÝ% gÑ.Ô.ˆÔà�aŠ<ˆ<Ø!%¤ˆDÔØˆ~Ø%)Ô%8�Ô"Ð"Ð"à%)Ô%6�Ô"Ð"Ð"à!%Ô!1ˆDÔØˆ~Ø%)Ô%9�Ô"Ð"Ð"à%)Ô%7�Ô"Ð"Ð"r   c           
      ó^  — 	 | j         |         S # t          $ r“ | xj        dz  c_        |                      || j        || j        | j        | j        | j        ¬¦  «        }|| j         |<   | j         	                    |¦  «         | j
         	                    |¦  «         | j         |         cY S w xY w)Nrd   )r:   r   r   r;   r<   r=   )r_   rx   r   rv   r:   r;   r<   r=   rƒ   r+   r„   ry   s       r   r{   zVertexCacheField.__getitem__0  s¸   € ð	!Ø”:˜a”=Ð øÝð 
	!ð 
	!ð 
	!ØˆJŒJ˜!‰OˆJŒJØ—;’;˜q¨¬
°rÀÄØ*.¬/Ø&*¤kØ+/Ô+;ð ñ =ô =ˆDð
 !ˆDŒJ�q‰MØŒJ�NŠN˜4Ñ Ô Ð ØŒJ�NŠN˜4Ñ Ô Ð Ø”:˜a”=Ð Ð Ð ð
	!øøøs   ‚ �BB,Â+B,c                 ó>   — | j                              ¦   «         }|d= |S )NÚpool)Ú__dict__Úcopy)r   Ú	self_dicts     r   Ú__getstate__zVertexCacheField.__getstate__?  s#   € Ø”M×&Ò&Ñ(Ô(ˆ	Ø�fÐØÐr   c                 óŒ   — | j         �|                      ¦   «          |                      ¦   «          |                      ¦   «          d S r   )r<   r‰   r‹   Úproc_minimisersr   s    r   Úprocess_poolszVertexCacheField.process_poolsD  sF   € ØŒ;Ð"Ø×ÒÑ Ô Ð Ø×ÒÑÔÐØ×ÒÑÔÐÐÐr   c                 óÒ   — d|_         t          | j        | j        ¦  «        D ]D\  }}t	          j         ||j        g|¢R Ž dk     ¦  «        rt          j        |_        d|_          d S ŒEd S ©NTg        F)	ÚfeasibleÚzipr<   r=   r   Úanyr   ÚinfrE   )r   r$   ÚgÚargss       r   Úfeasibility_checkz"VertexCacheField.feasibility_checkJ  sx   € ØˆŒ
Ý˜4œ;¨Ô(8Ñ9Ô9ð 	ð 	‰GˆAˆtåŒv�a�a˜œ�o �o�o�o¨Ò+Ñ,Ô,ð Ý”f�”Ø"�”
Ø��ðð	ð 	r   c                 óþ   — 	  | j         |j        g| j        ¢R Ž |_        | xj        dz  c_        n!# t
          $ r t          j        |_        Y nw xY wt          j        |j        ¦  «        rt          j        |_        dS dS )zšCompute the scalar field values of a vertex object `v`.

        Parameters
        ----------
        v : VertexBase or VertexScalarField object
        rd   N)	r:   r   r;   rE   r`   r   r   rŸ   Úisnanr#   s     r   Úcompute_sfieldzVertexCacheField.compute_sfieldS  sŠ   € ð	Ø�$”*˜QœUÐ5 T¤_Ð5Ð5Ð5ˆAŒCØˆIŒI˜‰NˆIŒIˆIøÝð 	ð 	ð 	Ý”&ˆAŒCˆCˆCð	øøøõ Œ8�A”C‰=Œ=ð 	Ý”&ˆAŒCˆCˆCð	ð 	s   ‚-0 °AÁAc                 óx   — | j         �| j        D ]}|                      |¦  «         Œt          ¦   «         | _        dS )zProcess all constraints.N)r<   rƒ   r¢   r   r#   s     r   rˆ   zVertexCacheField.proc_gpoolc  sA   € àŒ;Ð"Ø”Zð *ð *�Ø×&Ò& qÑ)Ô)Ð)Ð)å‘U”UˆŒ
ˆ
ˆ
r   c                 óÖ   — g }| j         D ]}|                     |j        ¦  «         Œ|                      | j        j        |¦  «        }t          | j         |¦  «        D ]\  }}||_        ŒdS )z$Process all constraints in parallel.N)rƒ   Úappendr   r‡   r‚   Úgconsr�   rœ   )r   Úgpool_lr$   ÚGr    s        r   r�   zVertexCacheField.pproc_gpoolk  s{   € àˆØ”ð 	"ð 	"ˆAØ�NŠN˜1œ5Ñ!Ô!Ð!Ð!à×Ò˜Tœ[Ô.°Ñ8Ô8ˆÝ˜œ
 AÑ&Ô&ð 	ð 	‰DˆAˆqØˆAŒJˆJð	ð 	r   c                 óx   — | j         D ]}|j        r|                      |¦  «         Œt          ¦   «         | _         dS )z6Process all field functions with constraints supplied.N)r„   rœ   r¥   r   r#   s     r   rŒ   zVertexCacheField.proc_fpool_gu  sA   € à”ð 	'ð 	'ˆAØŒzð 'Ø×#Ò# AÑ&Ô&Ð&øå‘U”UˆŒ
ˆ
ˆ
r   c                 ój   — | j         D ]}|                      |¦  «         Œt          ¦   «         | _         dS )z9Process all field functions with no constraints supplied.N)r„   r¥   r   r#   s     r   rŠ   zVertexCacheField.proc_fpool_nog}  s9   € à”ð 	#ð 	#ˆAØ×Ò Ñ"Ô"Ð"Ð"å‘U”UˆŒ
ˆ
ˆ
r   c                 ó†  — | j         j         g }| j        D ]5}|j        r|                     |j        ¦  «         Œ$t          j        |_        Œ6|  	                    | j         j        |¦  «        }t          ||¦  «        D ]1\  }}t          |¦  «        }|| |         _        | xj        dz  c_        Œ2t          ¦   «         | _        dS )zT
        Process all field functions with constraints supplied in parallel.
        rd   N)r€   Úfuncr„   rœ   r¨   r   r   rŸ   rE   r‡   r�   Útupler`   r   ©r   Úfpool_lr$   ÚFÚvarE   Úvts          r   r�   zVertexCacheField.pproc_fpool_g„  s¼   € ð 	ŒÔÐØˆØ”ð 	ð 	ˆAØŒzð Ø—’˜qœuÑ%Ô%Ð%Ð%å”f�”�Ø×Ò˜Tœ[Ô-¨wÑ7Ô7ˆÝ˜ !‘_”_ð 	ð 	‰EˆB�Ý�r‘”ˆBØˆD�ŒHŒJØˆIŒI˜‰NˆIŒIˆIå‘U”UˆŒ
ˆ
ˆ
r   c                 óT  — | j         j         g }| j        D ]}|                     |j        ¦  «         Œ|                      | j         j        |¦  «        }t          ||¦  «        D ]1\  }}t          |¦  «        }|| |         _        | xj	        dz  c_	        Œ2t          ¦   «         | _        dS )zW
        Process all field functions with no constraints supplied in parallel.
        rd   N)r€   r¯   r„   r¨   r   r‡   r�   r°   rE   r`   r   r±   s          r   rŽ   z VertexCacheField.pproc_fpool_nog—  s§   € ð 	ŒÔÐØˆØ”ð 	"ð 	"ˆAØ�NŠN˜1œ5Ñ!Ô!Ð!Ð!Ø×Ò˜Tœ[Ô-¨wÑ7Ô7ˆÝ˜ !‘_”_ð 	ð 	‰EˆB�Ý�r‘”ˆBØˆD�ŒHŒJØˆIŒI˜‰NˆIŒIˆIå‘U”UˆŒ
ˆ
ˆ
r   c                 ó`   — | D ]*}|                      ¦   «          |                     ¦   «          Œ+dS )zCheck for minimisers.N)rL   rP   r#   s     r   r˜   z VertexCacheField.proc_minimisers§  s7   € àð 	ð 	ˆAØ�KŠK‰MŒMˆMØ�KŠK‰MŒMˆMˆMð	ð 	r   )Nr2   Nr2   rd   r   )r.   r/   r0   r   r{   r–   r™   r¢   r¥   rˆ   r�   rŒ   rŠ   r�   rŽ   r˜   rQ   rR   s   @r   r}   r}   ÷   sý   ø€ € € € € ØKMØð68ð 68ð 68ð 68ð 68ð 68ðp!ð !ð !ð !ðð ð ð
ð ð ðð ð ðð ð ð ð ð ðð ð ðð ð ðð ð ðð ð ð&ð ð ð ð ð ð ð ð ð r   r}   c                   ó   — e Zd ZdZd„ Zd„ ZdS )r�   z=Object to wrap constraints to pass to `multiprocessing.Pool`.c                 ó"   — || _         || _        d S r   )r<   r=   )r   r<   r=   s      r   r   zConstraintWrapper.__init__°  s   € ØˆŒØ&ˆÔÐÐr   c                 ó�   — d}t          | j        | j        ¦  «        D ](\  }}t          j         ||g|¢R Ž dk     ¦  «        rd} nŒ)|S r›   )r�   r<   r=   r   rž   )r   Úv_x_aÚ	vfeasibler    r¡   s        r   r©   zConstraintWrapper.gcons´  se   € Øˆ	Ý˜4œ;¨Ô(8Ñ9Ô9ð 	ð 	‰GˆAˆtåŒv�a�a˜�o �o�o�o¨Ò+Ñ,Ô,ð Ø!�	Ø�ðð Ðr   N)r.   r/   r0   r1   r   r©   r2   r   r   r�   r�   ®  s8   € € € € € ØGÐGð'ð 'ð 'ðð ð ð ð r   r�   c                   ó   — e Zd ZdZd„ Zd„ ZdS )r   z7Object to wrap field to pass to `multiprocessing.Pool`.c                 ó"   — || _         || _        d S r   )r:   r;   )r   r:   r;   s      r   r   zFieldWrapper.__init__À  s   € ØˆŒ
Ø$ˆŒˆˆr   c                 ó¨   — 	  | j         |g| j        ¢R Ž }n# t          $ r t          j        }Y nw xY wt          j        |¦  «        rt          j        }|S r   )r:   r;   Ú	Exceptionr   rŸ   r¤   )r   r»   Úv_fs      r   r¯   zFieldWrapper.funcÄ  sf   € ð	Ø�$”*˜UÐ5 T¤_Ð5Ð5Ð5ˆCˆCøÝð 	ð 	ð 	Ý”&ˆCˆCˆCð	øøøåŒ8�C‰=Œ=ð 	Ý”&ˆCàˆ
s   ‚ –/®/N)r.   r/   r0   r1   r   r¯   r2   r   r   r   r   ¾  s8   € € € € € ØAÐAð%ð %ð %ðð ð ð ð r   r   )r]   Úabcr   r   Únumpyr   Úscipy._lib._utilr   r   r4   rT   rZ   ro   rt   r}   r�   r   r2   r   r   ú<module>rÅ      sà  ðØ Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #à Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð?ð ?ð ?ð ?ð ?�ñ ?ô ?ð ?ðDWð Wð Wð Wð W˜
ñ Wô Wð WðtLð Lð Lð Lð L˜
ñ Lô Lð Lð&ð &ð &ð &ð &ñ &ô &ð &ð4ð ð ð ð �ñ ô ð ð"!ð !ð !ð !ð !�ñ !ô !ð !ð2tð tð tð tð t�ñ tô tð tðnð ð ð ð ñ ô ð ð ð ð ð ð ñ ô ð ð ð r   