Ë
    0Ò^j.@  ã                   ó´   — d dl Z d dlZd dlmZ d dlmZmZ d dlm	Z
 d dlmZmZ d„ Z G d„ d«      Z G d	„ d
e«      Z G d„ de«      Z G d„ d«      Zd„ Zdd„Zy)é    N)Údefault_rng)Úquadratic_assignmentÚOptimizeWarning)Ú_calc_score)Úassert_equalÚassert_c                  óR  — g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g} g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t        j                  | «      t        j                  |«      }} | j                  d   }t        j                  g d¢«      dg|z  z
  }| ||fS )N)r   éZ   é
   r   r   r   r   r   r   r   r   r   )r
   r   r   é   r   r   r   r   r   r   r   r   )r   r   r   r   é+   r   r   r   r   r   r   r   )r   r   r   r   r   éX   r   r   r   r   r   r   )r   r   r   r   r   r   é   r   r   r   r   r   )r   r   r   r   r   r   r   é   r   r   r   r   )r   r   r   r   r   r   r   r   é   r   r   r   )r   r   r   r   r   r   r   r   r   é`   r   r   )r   r   r   r   r   r   r   r   r   r   é   r   )r   r   r   r   r   r   r   r   r   r   r   é%   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   é$   é6   r   é;   éH   é	   é"   éO   é   é.   é_   )r   r   éI   é#   r
   é:   é   éN   r    é,   r   r   )r   r   r   é   r   éa   r!   éB   éE   é=   r   é?   )r   r    r%   r   é]   é   r   é(   r   é0   éD   éU   )r   r
   r   r+   r   é@   é   r   éL   r   r2   r3   )r   r!   r&   r,   r1   r   r   é7   é&   r   r   r   )r   r"   r!   r   r2   r   r   éS   r    é   é8   r   )r   r#   r'   r-   r   r4   r6   r   r$   r,   é   éP   )r   r    r(   r   r3   r5   r    r$   r   r1   é'   é!   )r   r$   r)   r.   r   r   r7   r,   r1   r   éF   éV   )r   r   r   r/   r2   r   r8   r9   r;   r=   r   é   )r   r   r*   r0   r3   r   r   r:   r<   r>   r?   r   r   )é   r2   r   é   r   é   é   é   r   r7   é   r,   r   )ÚnpÚarrayÚshape)ÚAÚBÚnÚopt_perms       úy/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_quadratic_assignment.pyÚchr12crN      s¨   € â.Ú.Ú.Ú.Ú.Ú.Ú-Ú.Ú-Ú.Ú-Ú-ð	€Aò 	7Ú7Ú7Ú7Ú5Ú6Ú5Ú7Ú7Ú7Ú5Ú7ð	€Aô �8‰8�A‹;œŸ™ ›€q€AØ	�‰�‰
€Aä�x‰xÒ?Ó@ÀAÀ3ÈÁ7ÑJ€Hàˆa�ˆ>Ðó    c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚQAPCommonTestsz6
    Base class for `quadratic_assignment` tests.
    c                 óÈ  — t         j                  j                  d«      }g d¢g d¢g d¢g d¢g}g d¢g d¢g d¢g d¢g}t        ||| j                  |d	d
œ¬«      }t        |j                  d«       t        |j                  t        j                  g d¢«      «       t        ||| j                  |dd
œ¬«      }| j                  dk(  rBt        |j                  d«       t        |j                  t        j                  g d¢«      «       nAt        |j                  d«       t        |j                  t        j                  g d¢«      «       t        ||| j                  |dd
œ¬«       y )Nì   m«X)Eëc )r   rA   rB   rE   )r   r   r   rE   )r   r   r   r   )r   r   r   r   )r   rB   rE   rB   )r   rE   r   rE   )r   r   rE   r   F©ÚrngÚmaximize©ÚmethodÚoptionsr   ©r   rE   rA   r   TÚfaqr   )r   rE   rA   r   r-   )r   rA   r   rE   )	rF   Úrandomr   r   rX   r   ÚfunÚcol_indrG   ©ÚselfrU   rI   rJ   Úress        rM   Útest_accuracy_1zQAPCommonTests.test_accuracy_1:   s  € ä�i‰i×#Ñ#Ð$7Ó8ˆâÚÚÚðˆò
 ÚÚÚðˆô
 # 1 a°·±Ø36ÀEÑ+JôLˆô 	�S—W‘W˜bÔ!Ü�S—[‘[¤"§(¡(ª<Ó"8Ô9ä" 1 a°·±Ø36ÀDÑ+IôKˆð �;‰;˜%Òä˜Ÿ™ "Ô%Ü˜Ÿ™¤b§h¡hª|Ó&<Õ=ä˜Ÿ™ "Ô%Ü˜Ÿ™¤b§h¡hª|Ó&<Ô=ä˜Q ¨$¯+©+Ø-0¸dÑ%Cö	ErO   c                 óÜ  — t         j                  j                  d«      }t        j                  g d¢g d¢g d¢g d¢g«      }t        j                  g d¢g d¢g d¢g d	¢g«      }t	        ||| j
                  |d
dœ¬«      }| j
                  dk(  rBt        |j                  d«       t        |j                  t        j                  g d¢«      «       nAt        |j                  d«       t        |j                  t        j                  g d¢«      «       t	        ||| j
                  |ddœ¬«      }t        |j                  d«       t        |j                  t        j                  g d¢«      «       y )NrS   )r   r2   rC   rD   )r2   r   r2   r   )rC   r2   r   rE   )rD   r   rE   r   )r   r   rC   rB   )r   r   r2   rE   )rC   r2   r   r2   )rB   rE   r2   r   FrT   rW   r[   é²   )r   r   rA   rE   é°   rZ   Ti  )rE   rA   r   r   )	rF   r\   r   rG   r   rX   r   r]   r^   r_   s        rM   Útest_accuracy_2zQAPCommonTests.test_accuracy_2`   s  € Ü�i‰i×#Ñ#Ð$7Ó8ˆä�H‰H’lÚ"Ú"Ú"ð$ó %ˆô
 �H‰H’lÚ"Ú"Ú"ð$ó %ˆô
 # 1 a°·±Ø36ÀEÑ+JôLˆð �;‰;˜%Òä˜Ÿ™ #Ô&Ü˜Ÿ™¤b§h¡hª|Ó&<Õ=ä˜Ÿ™ #Ô&Ü˜Ÿ™¤b§h¡hª|Ó&<Ô=ä" 1 a°·±Ø36ÀDÑ+IôKˆô 	�S—W‘W˜cÔ"Ü�S—[‘[¤"§(¡(ª<Ó"8Õ9rO   c                 ó@  — t         j                  j                  d«      }t        «       \  }}}t	        ||| j
                  d|i¬«      }t        d|j                  cxk  xr dk  nc «       t        |j                  t        |||j                  «      «       t	        ||| j
                  |ddœ¬«      }t        d|j                  cxk  xr d	k  nc «       t        |j                  t        |||j                  «      «       t        j                  g d
¢«      }t        j                  |||   g«      j                  }t	        ||| j
                  ||dœ¬«      }t        d|j                  cxk  xr dk  nc «       t        |j                  |   ||   «       t        j                  t        j                  t        |«      «      |g«      j                  }t	        ||| j
                  ||dœ¬«      }t        |j                  |d d …df   j                  «       t        |j                  d«       t        |j                   d«       t        j"                  d«      }t	        ||| j
                  d|i¬«      }t        |j                   d«       t        |j                  d«       y )NrS   rU   rW   é”+  éR  TrT   i! iL )rB   rC   r   )Úpartial_matchrU   r   r   )r   r   )rF   r\   r   rN   r   rX   r   r]   r   Ú_scorer^   rG   ÚasarrayÚTÚarangeÚlenÚnitÚempty)	r`   rU   rI   rJ   rL   ra   Ú	seed_costÚseedrq   s	            rM   Útest_accuracy_3zQAPCommonTests.test_accuracy_3~   sý  € Ü�i‰i×#Ñ#Ð$7Ó8ˆÜ›‰ˆˆ1ˆhô # 1 a°·±Ø,1°3¨<ô9ˆä�˜Ÿ™Ö( 5Ô(Ô)Ü�S—W‘Wœf Q¨¨3¯;©;Ó7Ô8ô # 1 a°·±Ø36ÀDÑ+IôKˆä�˜Ÿ™Ö( 5Ô(Ô)Ü�S—W‘Wœf Q¨¨3¯;©;Ó7Ô8ô —H‘HšZÓ(ˆ	Ü�z‰z˜9 h¨yÑ&9Ð:Ó;×=Ñ=ˆÜ" 1 a°·±Ø=AÈ#Ñ+NôPˆä�˜Ÿ™Ö( 5Ô(Ô)Ü�S—[‘[ Ñ+¨X°iÑ-@ÔAô �z‰zœ2Ÿ9™9¤S¨£VÓ,¨hÐ7Ó8×:Ñ:ˆÜ" 1 a°·±Ø=AÈ#Ñ+NôPˆä�S—[‘[ $¢q¨! t¡*§,¡,Ô/Ü�S—W‘W˜eÔ$Ü�S—W‘W˜aÔ ô —‘˜Ó ˆÜ" 5¨%¸¿¹Ø,1°3¨<ô9ˆä�S—W‘W˜aÔ Ü�S—W‘W˜aÕ rO   c                 ó²   — t        «       \  }}}t        j                  t        «      5  t	        ||| j
                  ddi¬«       d d d «       y # 1 sw Y   y xY w)Nz	ekki-ekkiTrW   )rN   ÚpytestÚwarnsr   r   rX   )r`   rI   rJ   rL   s       rM   Útest_unknown_optionsz#QAPCommonTests.test_unknown_options¥   sJ   € Ü›‰ˆˆ1ˆhä�\‰\œ/Ó*ñ 	>Ü   A¨d¯k©kØ*5°tÐ)<õ>÷	>÷ 	>ñ 	>ús   ¨AÁAN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rb   rf   rt   rx   © rO   rM   rQ   rQ   2   s   „ ñò EòL:ò<%!óN>rO   rQ   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestFAQr[   c                 óZ  — t         j                  j                  d«      }t        «       \  }}}t	        |«      }t        ||ddi¬«      }t        |j                  d«       t        ||ddi¬«      }t        d|j                  cxk  xr dk  nc «       t        |||d	d
œ¬«      }t        d|j                  cxk  xr dk  nc «       t        j                  ||f«      t        |«      z  }t        |«      }t        ||d|i¬«      }t        d|j                  cxk  xr
 dk  «       y c «       y )NrS   Úmaxiterr2   ©rY   Úshuffle_inputTrh   ri   Ú
randomized)rU   ÚP0r…   )rF   r\   r   rN   ro   r   r   rp   r   r]   ÚonesÚfloatÚ_doubly_stochastic)r`   rU   rI   rJ   rL   rK   ra   ÚKs           rM   Útest_optionszTestFAQ.test_options°   sù   € ä�i‰i×#Ñ#Ð$7Ó8ˆä›‰ˆˆ1ˆhÜ�‹Fˆô # 1 a°)¸Q°Ô@ˆÜ�S—W‘W˜aÔ ô # 1 a°/À4Ð1HÔIˆÜ�˜Ÿ™Ö( 5Ô(Ô)ô # 1 a¸ÀLÑ1QÔRˆÜ�˜Ÿ™Ö( 5Ô(Ô)ô �G‰G�Q˜�F‹Oœe A›hÑ&ˆÜ˜qÓ!ˆÜ" 1 a°$¸°Ô;ˆÜ�˜Ÿ™Ö( 5Ñ(Õ)Ñ(Õ)rO   c           	      ó
  — t        j                  d«      }|}t        j                  t        d¬«      5  t        ||ddi¬«       d d d «       t        j                  t        d¬«      5  t        ||dd	i¬«       d d d «       t        j                  t        d
¬«      5  t        ||dd	i¬«       d d d «       t        j                  t        «      5  t        ||ddi¬«       d d d «       t        j                  t        d¬«      5  t        t        j                  d«      t        j                  d«      dt        j                  d«      i¬«       d d d «       g d¢g d¢g d¢g}t        j                  t        d¬«      5  t        t        j                  d«      t        j                  d«      d|i¬«       d d d «       y # 1 sw Y   �ŒwxY w# 1 sw Y   �ŒPxY w# 1 sw Y   �Œ)xY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ£xY w# 1 sw Y   y xY w)NrE   zInvalid 'P0' parameter©Úmatchr…   r\   r‚   z$'maxiter' must be a positive integerr�   éÿÿÿÿz'tol' must be a positive floatÚtolg      ø?z1`P0` matrix must have shape m' x m', where m'=n-mrB   ©rA   rA   )gš™™™™™Ù?çš™™™™™É?ç333333Ó?)r’   g333333ã?r‘   )r‘   r‘   gffffffæ?z%`P0` matrix must be doubly stochasticrA   )rF   Úidentityrv   ÚraisesÚ
ValueErrorr   Ú	TypeErrorr†   )r`   rI   rJ   r‰   s       rM   Útest_specific_input_validationz&TestFAQ.test_specific_input_validationÉ   s¶  € ä�K‰K˜‹NˆØˆô �]‰]œ:Ð-EÔFñ 	AÜ   A°°hÐ/?Õ@÷	Aä�]‰]ÜÐ"HôJñ 	@ä   A°	¸2¨Õ?÷	@ô �]‰]œ:Ð-MÔNñ 	<Ü   A°°r¨{Õ;÷	<ô
 �]‰]œ9Ó%ñ 	AÜ   A°	¸3Ð/?Õ@÷	Aô �]‰]ÜØIôKñ 	ô !Ü—‘˜A“¤§¡¨A£ØœrŸw™w v›Ð/õ÷	ò ÚÚðˆô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£¸¸q¸	õ÷	ð 	÷5	Añ 	Aú÷	@ñ 	@ú÷	<ñ 	<ú÷
	Añ 	Aú÷	ð 	ú÷	ð 	úsH   ³F9Á'GÂGÃG ÄA
G-Å97G9Æ9GÇGÇGÇ G*Ç-G6Ç9HN)ry   rz   r{   rX   rŠ   r—   r}   rO   rM   r   r   ­   s   „ Ø€Fò*ó2'rO   r   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚTest2optÚ2optc                 ó€  — d}t        d«      }|j                  ||f¬«      }|j                  ||f¬«      }t        ||| j                  d|i¬«      }t        d«      }|j                  ||f¬«      }|j                  ||f¬«      }t        ||| j                  d|i¬«      }t	        |j
                  |j
                  «       y )Né   i<2©ÚsizerU   rW   )r   r\   r   rX   r   rp   )r`   rK   rU   rI   rJ   Úres1Úres2s          rM   Útest_deterministiczTest2opt.test_deterministicö   s­   € ØˆÜ˜(Ó#ˆØ�J‰J˜Q ˜FˆJÓ#ˆØ�J‰J˜Q ˜FˆJÓ#ˆÜ# A q°·±ÀuÈcÀlÔSˆä˜(Ó#ˆØ�J‰J˜Q ˜FˆJÓ#ˆØ�J‰J˜Q ˜FˆJÓ#ˆÜ# A q°·±ÀuÈcÀlÔSˆä�T—X‘X˜tŸx™xÕ(rO   c           	      ó  — d}t         j                  j                  d«      }|j                  ||f¬«      }|j                  ||f¬«      }t        ||| j                  d|i¬«      }t        j
                  t        j                  d«      |j                  g«      j                  }t        ||| j                  ||dœ¬«      }ddg}t        j
                  t        j                  d«      |   |j                  |   g«      j                  }	t        ||| j                  |||	d	œ¬«      }
t        |j                  ||d
z   z  dz  k7  «       t        |j                  ||d
z   z  dz  «       t        |
j                  |dz
  |d
z
  z  dz  «       y )Nr2   rS   r�   rU   rW   )rU   Úpartial_guessrE   rB   )rU   r£   rj   r   )rF   r\   r   r   rX   rG   rn   r^   rm   r   rp   r   )r`   rK   rU   rI   rJ   rŸ   Úguessr    Úfixr�   Úres3s              rM   Útest_partial_guesszTest2opt.test_partial_guess  sS  € ØˆÜ�i‰i×#Ñ#Ð$7Ó8ˆà�J‰J˜Q ˜FˆJÓ#ˆØ�J‰J˜Q ˜FˆJÓ#ˆä# A q°·±Ø-2°C¨Lô:ˆä—‘œ"Ÿ)™) A›,¨¯©Ð5Ó6×8Ñ8ˆÜ# A q°·±Ø47È%Ñ,PôRˆà�!ˆfˆÜ—‘œ"Ÿ)™) A›, sÑ+¨T¯\©\¸#Ñ->Ð?Ó@×BÑBˆÜ# A q°·±Ø47È%Ø>Cñ-EôFˆô 	�—‘˜A˜q ™s™G A™IÑ%Ô&Ü�T—X‘X˜q ! A¡#™w q™yÔ)Ü�T—X‘X  !¡ a¨¡c™{¨1™}Õ-rO   c                 ó  — t         }t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      | j                  d |dd«      i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      | j                  dt        dd«      i¬«       d d d «       t        j                  t        d	¬«      5  t	        t        j                  d«      t        j                  d«      | j                  dt
        j                  j                  ddd«      i¬«       d d d «       t        j                  t        d
¬«      5  t	        t        j                  d«      t        j                  d«      | j                  ddt        dd«      z  i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      | j                  ddt        dd«      z  i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      | j                  dt        j                  d«      i¬«       d d d «       y # 1 sw Y   �ŒZxY w# 1 sw Y   �ŒøxY w# 1 sw Y   �Œ�xY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ¶xY w# 1 sw Y   y xY w)Nz0`partial_guess` can have only as many entries asrŒ   rA   r£   r2   rE   rW   z%`partial_guess` must have two columnsz%`partial_guess` must have exactly twoz%`partial_guess` must contain only posrŽ   z0`partial_guess` entries must be less than numberrB   z-`partial_guess` column entries must be unique©rE   rE   )Ú_range_matrixrv   r”   r•   r   rF   r“   rX   r\   Úrandr†   )r`   Ú_rms     rM   r—   z'Test2opt.test_specific_input_validation  sR  € äˆÜ�]‰]ÜØHôJñ 	Gô !¤§¡¨Q£´·±¸Q³Ø(,¯©Ø*9¹3¸qÀ!»9Ð)EõG÷	Gô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£°t·{±{Ø(¬-¸¸1Ó*=Ð>õ÷	ô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£°t·{±{Ø(¬"¯)©)¯.©.¸¸A¸qÓ*AÐBõ÷	ô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£°t·{±{Ø(¨"¬}¸QÀÓ/BÑ*BÐCõ÷	ô �]‰]ÜØHôJñ 	ô !Ü—‘˜A“¤§¡¨A£°t·{±{Ø(¨!¬m¸A¸qÓ.AÑ*AÐBõ÷	ô �]‰]ÜØEôGñ 	ô !Ü—‘˜A“¤§¡¨A£°t·{±{Ø(¬"¯'©'°&«/Ð:õ÷	ð 	÷I	Gñ 	Gú÷	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷	ð 	ú÷	ð 	úsM   ¢A	KÂAKÃ=A!KÆAK*Ç3AK7É%ALËKËKËK'Ë*K4Ë7L ÌLN)ry   rz   r{   rX   r¡   r§   r—   r}   rO   rM   r™   r™   ó   s   „ Ø€Fò)ò.ó*-rO   r™   c                   ó   — e Zd Zd„ Zy)ÚTestQAPOncec                 óˆ  — t        d«      }t        j                  t        d¬«      5  t	        |j                  d«      |j                  d«      «       d d d «       t        j                  t        d¬«      5  t	        |j                  d«      |j                  d«      «       d d d «       t        j                  t        d¬«      5  t	        |j                  d«      |j                  d«      «       d d d «       t        j                  t        d	¬«      5  t	        |j                  d«      |j                  d
«      «       d d d «       t        }t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      d |dd«      i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      dt        dd«      i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      dt        j
                  j                  ddd«      i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      ddt        dd«      z  i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      ddt        dd«      z  i¬«       d d d «       t        j                  t        d¬«      5  t	        t        j                  d«      t        j                  d«      dt        j                  d«      i¬«       d d d «       y # 1 sw Y   �ŒtxY w# 1 sw Y   �Œ3xY w# 1 sw Y   �ŒòxY w# 1 sw Y   �Œ±xY w# 1 sw Y   �ŒWxY w# 1 sw Y   �Œ xY w# 1 sw Y   �Œ”xY w# 1 sw Y   �Œ:xY w# 1 sw Y   ŒßxY w# 1 sw Y   y xY w)Ninn¼ z`A` must be squarerŒ   )rA   rB   r�   z`B` must be squarez!`A` and `B` must have exactly two)rA   rA   rA   z*`A` and `B` matrices must be of equal size)rB   rB   z.`partial_match` can have only as many seeds asrA   rj   r2   rE   r‚   z%`partial_match` must have two columnsz%`partial_match` must have exactly twoz%`partial_match` must contain only posrŽ   z0`partial_match` entries must be less than numberrB   z-`partial_match` column entries must be uniquer©   )r   rv   r”   r•   r   r\   rª   rF   r“   r«   r†   )r`   rU   r¬   s      rM   Útest_common_input_validationz(TestQAPOnce.test_common_input_validationL  sY  € Ü˜(Ó#ˆä�]‰]œ:Ð-AÔBñ 	Ü Ø—
‘
˜6Ó"Ø—
‘
˜6Ó"ô÷	ô
 �]‰]œ:Ð-AÔBñ 	Ü Ø—
‘
˜6Ó"Ø—
‘
˜6Ó"ô÷	ô �]‰]ÜÐ"EôGñ 	ä Ø—
‘
˜9Ó%Ø—
‘
˜9Ó%ô÷	ô �]‰]ÜØBôDñ 	ô !Ø—
‘
˜6Ó"Ø—
‘
˜6Ó"ô÷	ô ˆÜ�]‰]ÜØFôHñ 	Gô !¤§¡¨Q£´·±¸Q³Ø*9¹3¸qÀ!»9Ð)EõG÷	Gô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£Ø(¬-¸¸1Ó*=Ð>õ÷	ô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£Ø(¬"¯)©)¯.©.¸¸A¸qÓ*AÐBõ÷	ô �]‰]ÜÐ"IôKñ 	ä Ü—‘˜A“¤§¡¨A£Ø(¨"¬}¸QÀÓ/BÑ*BÐCõ÷	ô �]‰]ÜØHôJñ 	ô !Ü—‘˜A“¤§¡¨A£Ø(¨!¬m¸A¸qÓ.AÑ*AÐBõ÷	ô �]‰]ÜØEôGñ 	ô !Ü—‘˜A“¤§¡¨A£Ø(¬"¯'©'°&«/Ð:õ÷	ð 	÷}	ñ 	ú÷
	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷	Gñ 	Gú÷	ñ 	ú÷	ñ 	ú÷	ñ 	ú÷	ð 	ú÷	ð 	ús|   §+OÁ5+OÃ+OÄ+O+Å%>O8ÇAPÈ*APÊ#APÌ
AP,Í1A
P8ÏOÏOÏO(Ï+O5Ï8PÐPÐPÐP)Ð,P5Ð8QN)ry   rz   r{   r°   r}   rO   rM   r®   r®   I  s   „ óGrO   r®   c                 óŒ   — t        j                  | |f«      }t        |«      D ]  }t        j                  | «      |d d …|f<   Œ  |S )N)rF   ÚzerosÚrangern   )ÚaÚbÚmatÚis       rM   rª   rª   –  sA   € Ü
�(‰(�A�q�6Ó
€CÜ�1‹Xò !ˆÜ—I‘I˜a“LˆŠAˆqˆDŠ	ð!à€JrO   c                 ó�  — d}d| j                  d¬«      z  }d| |z  z  }| }t        |«      D ]–  }t        j                  |j                  d¬«      dz
  «      |k  j	                  «       r<t        j                  |j                  d¬«      dz
  «      |k  j	                  «       r |S d|| z  z  }d| |z  z  }|d d …d f   | z  |z  }Œ˜ |S )Niè  r   r   )Úaxis)Úsumr³   rF   ÚabsÚall)ÚPr�   Úmax_iterÚcÚrÚP_epsÚits          rM   rˆ   rˆ   �  sÙ   € ð €HØ	ˆA�E‰E�qˆE‹MÑ€AØ	ˆQ�‰U‰€AØ€Eä�H‹oò #ˆÜ�V‰V�E—I‘I 1�IÓ%¨Ñ)Ó*¨SÑ0×5Ñ5Ô7Ü—‘˜Ÿ	™	 q˜	Ó)¨AÑ-Ó.°Ñ4×9Ñ9Ô;àð €Lð	 ��Q‘‰KˆØ��Q‘‰KˆØ’!�T�'‘
˜Q‘ Ñ"‰ð#ð €LrO   )gü©ñÒMbP?)rv   ÚnumpyrF   Únumpy.randomr   Úscipy.optimizer   r   Úscipy.optimize._qapr   rk   Únumpy.testingr   r   rN   rQ   r   r™   r®   rª   rˆ   r}   rO   rM   ú<module>rÈ      s_   ðÛ Û Ý $ß @Ý 5ß /ò"÷Jx>ñ x>ôvCˆnô CôLSˆ~ô S÷lJñ JòZôrO   