§
    µ³Ùg˜  ã                   ó€   — d dl Z d dlZd dlmZmZmZ d dlZd dlm	Z	m
Z
mZ  G d„ d¦  «        Zd„ Z G d„ d¦  «        ZdS )	é    N)Úassert_allcloseÚassert_Úassert_array_equal)Úfmin_cobylaÚminimizeÚBoundsc                   ó|   — e Zd Zd„ Zd„ Zd„ Zd„ Zej         	                    dd¬¦  «        d„ ¦   «         Z
d	„ Zd
„ ZdS )Ú
TestCobylac                 óf   — ddg| _         t          j        d¦  «        dg| _        ddddd	œ| _        d S )
NgÍÌÌÌÌÌ@g…ëQ¸å?gä8Žã8Ž8@gUUUUUUå?Fé   çñhãˆµøä>éd   )ÚdispÚrhobegÚtolÚmaxiter)Úx0ÚmathÚsqrtÚsolutionÚopts©Úselfs    úV/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/tests/test_cobyla.pyÚsetup_methodzTestCobyla.setup_method   s?   € Ø˜�,ˆŒÝœ ?Ñ3Ô3°UÐ;ˆŒØ"¨a¸Ø #ð%ð %ˆŒ	ˆ	ˆ	ó    c                 óJ   — |d         dz  t          |d         ¦  «        dz  z   S )Nr   é   r   é   )Úabs©r   Úxs     r   ÚfunzTestCobyla.fun   s#   € Ø�Œt�Q‰w�˜Q˜qœT™œ A™Ñ%Ð%r   c                 ó6   — |d         dz  |d         dz  z   dz
  S )Nr   r   r   é   © r!   s     r   Úcon1zTestCobyla.con1   s"   € Ø�Œt�Q‰w˜˜1œ˜q™Ñ  2Ñ%Ð%r   c                 ó.   — |                       |¦  «         S ©N)r'   r!   s     r   Úcon2zTestCobyla.con2   s   € Ø—	’	˜!‘”ˆ}Ðr   Tz&not slow, but noisy so only run rarely)Úreasonc           	      óŒ   — t          | j        | j        | j        | j        gdddd¬¦  «        }t          || j        d¬¦  «         d S )Nr   r   r   T)r   ÚrhoendÚmaxfunr   ç-Cëâ6?©Úatol)r   r#   r   r'   r*   r   r   )r   Úcapfdr"   s      r   Útest_simplezTestCobyla.test_simple   sQ   € õ ˜œ $¤'¨D¬I°t´yÐ+AÈ!Ø#¨C°dð<ñ <ô <ˆå˜˜4œ=¨tÐ4Ñ4Ô4Ð4Ð4Ð4r   c                 óN  —  G d„ d¦  «        } |¦   «         }d| j         dœd| j        dœf}t          | j        | j        d||| j        ¬¦  «        }t          |j        | j        d¬¦  «         t          |j
        |j        ¦  «         t          |j        d	k     |¦  «         t          |j        d
k     |¦  «         t          |j        |                      | j        ¦  «        dz   k     |¦  «         t          |j        |j        k    d¦  «         t          |j        |j        d¦  «         d S )Nc                   ó   — e Zd Zd„ Zd„ ZdS )ú1TestCobyla.test_minimize_simple.<locals>.Callbackc                 ó"   — d| _         d | _        d S )Nr   ©Ún_callsÚlast_xr   s    r   Ú__init__z:TestCobyla.test_minimize_simple.<locals>.Callback.__init__#   s   € Ø �”Ø"�”��r   c                 ó4   — | xj         dz  c_         || _        d S ©Nr   r8   r!   s     r   Ú__call__z:TestCobyla.test_minimize_simple.<locals>.Callback.__call__'   s   € Ø�” Ñ!�”Ø�”��r   N)Ú__name__Ú
__module__Ú__qualname__r;   r>   r&   r   r   ÚCallbackr6   "   s2   € € € € € ð#ð #ð #ð ð  ð  ð  ð  r   rB   Úineq©Útyper#   Úcobyla)ÚmethodÚconstraintsÚcallbackÚoptionsr/   r0   r   éF   çü©ñÒMbP?z<Callback is not called exactly once for every function eval.zGLast design vector sent to the callback is not equal to returned value.)r'   r*   r   r#   r   r   r   r"   r   r   ÚsuccessÚmessageÚmaxcvÚnfevr9   r   r:   )r   rB   rI   ÚconsÚsols        r   Útest_minimize_simplezTestCobyla.test_minimize_simple!   sR  € ð	 ð 	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð �8‘:”:ˆð  ¨¬	Ð2Ð2Ø¨¬	Ð2Ð2ð4ˆå�t”x ¤°ÀtØ (°$´)ð=ñ =ô =ˆå˜œ˜tœ}°4Ð8Ñ8Ô8Ð8Ý�”˜Sœ[Ñ)Ô)Ð)Ý�”	˜DÒ  #Ñ&Ô&Ð&Ý�”˜2’˜sÑ#Ô#Ð#Ý�”˜$Ÿ(š( 4¤=Ñ1Ô1°DÑ8Ò8¸#Ñ>Ô>Ð>Ý�”˜HÔ,Ò,ØNñ	Pô 	Pð 	PåØŒEØŒOØUñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óœ  ‡	‡
‡— t           j                             d¦  «        }|                     dd¦  «        Š
|                     d¦  «        Šˆ
fd„Š	ˆfd„}ˆ	fd„}ˆ	fd„}ˆ	fd„}d|d	œd|d	œd|d	œf}t          j        d
¦  «        }t          ||d|ddi¬¦  «        }t          |j        dk    ¦  «         t          |j         ¦  «         d S )NiÒ  é
   c                 ó.   •— ‰                      | ¦  «        S r)   )Údot)ÚwÚpbs    €r   Úpz8TestCobyla.test_minimize_constraint_violation.<locals>.pD   s   ø€ Ø—6’6˜!‘9”9Ðr   c                 ó4   •— | ‰z                        ¦   «          S r)   )Úsum)rX   Úspreads    €r   Úfz8TestCobyla.test_minimize_constraint_violation.<locals>.fG   s   ø€ Ø˜‘Z×$Ò$Ñ&Ô&Ð&Ð&r   c                 ó^   •— dt           ‰| ¦  «        ¦  «                             ¦   «         z
  S )Niô  ©r    r\   ©rX   rZ   s    €r   Úc1z9TestCobyla.test_minimize_constraint_violation.<locals>.c1J   s$   ø€ Ø�˜Q˜Q˜q™TœT™œŸš™œÑ(Ð(r   c                 ó^   •— dt           ‰| ¦  «                             ¦   «         ¦  «        z
  S ©Né   r`   ra   s    €r   Úc2z9TestCobyla.test_minimize_constraint_violation.<locals>.c2M   s$   ø€ Ø•s˜1˜1˜Q™4œ4Ÿ8š8™:œ:‘”Ñ&Ð&r   c                 ó^   •— dt           ‰| ¦  «        ¦  «                             ¦   «         z
  S rd   )r    Úmaxra   s    €r   Úc3z9TestCobyla.test_minimize_constraint_violation.<locals>.c3P   s$   ø€ Ø•s˜1˜1˜Q™4œ4‘y”y—}’}‘”Ñ&Ð&r   rC   rD   )rU   rF   Úcatolg�íµ ÷Æ°>)rG   rH   rJ   )	ÚnpÚrandomÚRandomStateÚrandÚzerosr   r   rO   rM   )r   Úrngr^   rb   rf   ri   rQ   Úw0rR   rZ   rY   r]   s            @@@r   Ú"test_minimize_constraint_violationz-TestCobyla.test_minimize_constraint_violation?   sB  øøø€ ÝŒi×#Ò# DÑ)Ô)ˆØ�XŠX�b˜"ÑÔˆØ—’˜"‘”ˆð	ð 	ð 	ð 	ð 	ð	'ð 	'ð 	'ð 	'ð 	'ð	)ð 	)ð 	)ð 	)ð 	)ð	'ð 	'ð 	'ð 	'ð 	'ð	'ð 	'ð 	'ð 	'ð 	'ð  ¨Ð+Ð+Ø¨Ð+Ð+Ø¨Ð+Ð+ð-ˆõ ŒX�e‰_Œ_ˆÝ�q˜" X¸4Ø '¨˜ð0ñ 0ô 0ˆå�”	˜DÒ Ñ!Ô!Ð!Ý�C”K�Ñ Ô Ð Ð Ð r   N)r?   r@   rA   r   r#   r'   r*   ÚpytestÚmarkÚxslowr3   rS   rr   r&   r   r   r
   r
   
   s¡   € € € € € ð%ð %ð %ð&ð &ð &ð&ð &ð &ðð ð ð „[×Ò�tÐ$LÐÑMÔMð5ð 5ñ NÔMð5ð
ð 
ð 
ð<!ð !ð !ð !ð !r   r
   c                  ó8  ‡	— d„ Š	ˆ	fd„} d„ }d„ }t          j        ddg¦  «        }‰	||g}ddg}d	}t          ‰	||d
¬¦  «        }t          ||d¬¦  «         t          ‰	|| d
¬¦  «        }t           ‰	|¦  «        dd¬¦  «         d„ |D ¦   «         }t	          ‰	||d
¬¦  «        }t          |j        |d¬¦  «         t          |j        |j        ¦  «         t          |j	        |d¬¦  «         d| dœ}t	          ‰	||d
¬¦  «        }t          |j	        dd¬¦  «         d S )Nc                 ó<   — | d         dz
  dz  | d         dz
  dz  z   S )Nr   r   r   g      @r&   ©r"   s    r   r#   z$test_vector_constraints.<locals>.fun`   s%   € Ø�!”�q‘˜1‰}  !¤ s¡
¨Q™Ñ.Ð.r   c                 ó    •—  ‰| ¦  «        dz
  S r=   r&   )r"   r#   s    €r   Úfminz%test_vector_constraints.<locals>.fminc   s   ø€ Øˆs�1‰vŒv˜‰zÐr   c                 ó¶   ‡ ‡— t          j        g d¢g d¢g d¢g¦  «        Št          j        ˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        S )N)r   éþÿÿÿr   )éÿÿÿÿr|   é   )r}   r   r   c                 ót   •— g | ]4}‰|d f         ‰d          z  ‰|df         ‰d         z  z   ‰|df         z   ‘Œ5S )r   r   r   r&   )Ú.0ÚiÚar"   s     €€r   ú
<listcomp>z:test_vector_constraints.<locals>.cons1.<locals>.<listcomp>h   s^   ø€ ð 9ð 9ð 9Ø%&ð ˜1˜a˜4œ 1 Q¤4™¨!¨A¨q¨D¬'°A°a´D©.Ñ8Ø˜1˜a˜4œñ!ð 9ð 9ð 9r   )rk   ÚarrayÚrangeÚlen)r"   r‚   s   `@r   Úcons1z&test_vector_constraints.<locals>.cons1f   sq   øø€ ÝŒH�j�j�j + + +¨z¨z¨zÐ:Ñ;Ô;ˆÝŒxð 9ð 9ð 9ð 9ð 9Ý*/µ°A±´©-¬-ð9ñ 9ô 9ñ :ô :ð 	:r   c                 ó   — | S r)   r&   rx   s    r   Úcons2z&test_vector_constraints.<locals>.cons2k   s   € Øˆr   r   r   gffffffö?g333333û?gš™™™™™é?r   )r-   r/   r0   r   c                 ó   — g | ]}d |dœ‘ŒS )rC   rD   r&   )r€   rQ   s     r   rƒ   z+test_vector_constraints.<locals>.<listcomp>|   s    € ÐGÐGÐG°T˜F¨4Ð0Ð0ÐGÐGÐGr   )rH   r   rC   rD   )
rk   r„   r   r   r   r"   r   rM   rN   r#   )
rz   r‡   r‰   r   Ú	cons_listÚxsolÚfsolrR   rH   r#   s
            @r   Útest_vector_constraintsrŽ   ]   s†  ø€ ð/ð /ð /ðð ð ð ð ð:ð :ð :ð
ð ð õ 
Œ�1�a�&Ñ	Ô	€BØ�e˜UÐ#€Ià�ˆ:€DØ€Dõ �c˜2˜y°Ð
6Ñ
6Ô
6€CÝ�C˜ DÐ)Ñ)Ô)Ð)å
�c˜2˜t¨DÐ
1Ñ
1Ô
1€CÝ�C�C˜‘H”H˜a dÐ+Ñ+Ô+Ð+ð HÐG¸YÐGÑGÔG€KÝ
�3˜¨¸Ð
>Ñ
>Ô
>€CÝ�C”E˜4 dÐ+Ñ+Ô+Ð+ÝˆCŒK˜œÑ%Ô%Ð%Ý�C”G˜T¨Ð-Ñ-Ô-Ð-à!¨$Ð/Ð/€KÝ
�3˜¨¸Ð
>Ñ
>Ô
>€CÝ�C”G˜Q TÐ*Ñ*Ô*Ð*Ð*Ð*r   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú
TestBoundsc                 óÂ   — d„ }g d¢}g d¢}d„ t          ||¦  «        D ¦   «         }t          |g d¢d|¬¦  «        }g d¢}|j        sJ ‚t          |j        |d	¬
¦  «         d S )Nc                 ó0   — t          j        | dz  ¦  «        S ©Nr   ©rk   r\   rx   s    r   r^   z TestBounds.test_basic.<locals>.f�   ó   € Ý”6˜!˜Q™$‘<”<Ðr   )r}   Nr   Nç      à¿)r–   r–   NNr–   c                 ó   — g | ]	\  }}||f‘Œ
S r&   r&   )r€   r‚   Úbs      r   rƒ   z)TestBounds.test_basic.<locals>.<listcomp>’   s    € Ð1Ð1Ð1™T˜Q �1�a�&Ð1Ð1Ð1r   )r   r   r   é   re   rF   ©r   rG   Úbounds)r–   r–   r   r   r–   rL   r0   )Úzipr   rM   r   r"   )r   r^   ÚlbÚubr›   ÚresÚrefs          r   Ú
test_basiczTestBounds.test_basicŒ   s–   € ð	 ð 	 ð 	 ð 'Ð&Ð&ˆØ+Ð+Ð+ˆØ1Ð1¥S¨¨R¡[¤[Ð1Ñ1Ô1ˆõ �q˜_˜_˜_°XÀfÐMÑMÔMˆØ&Ð&Ð&ˆØŒ{ÐÐÐÝ˜œ˜s¨Ð.Ñ.Ô.Ð.Ð.Ð.r   c                 óÆ  — d„ }t          t          j         t          j         gt          j        t          j        g¦  «        }t          |ddgd|¬¦  «        }|j        sJ ‚t          |j        dd¬¦  «         t          dt          j         gt          j        t          j        g¦  «        }t          |ddgd|¬¦  «        }|j        sJ ‚t          |j        ddgd¬¦  «         d S )	Nc                 ó0   — t          j        | dz  ¦  «        S r“   r”   rx   s    r   r^   z$TestBounds.test_unbounded.<locals>.f›   r•   r   r   r   rF   rš   r   rL   r0   )r   rk   Úinfr   rM   r   r"   )r   r^   r›   rŸ   s       r   Útest_unboundedzTestBounds.test_unboundedš   sà   € ð	 ð 	 ð 	 õ �"œ&˜¥2¤6 'Ð*­R¬VµR´VÐ,<Ñ=Ô=ˆÝ�q˜a ˜V¨H¸VÐDÑDÔDˆØŒ{ÐÐÐÝ˜œ˜q tÐ,Ñ,Ô,Ð,å˜�RœV˜G˜¥r¤v­r¬vÐ&6Ñ7Ô7ˆÝ�q˜a ˜V¨H¸VÐDÑDÔDˆØŒ{ÐÐÐÝ˜œ  1˜v¨DÐ1Ñ1Ô1Ð1Ð1Ð1r   N)r?   r@   rA   r¡   r¥   r&   r   r   r�   r�   ‡   s2   € € € € € ð
/ð /ð /ð2ð 2ð 2ð 2ð 2r   r�   )r   Únumpyrk   Únumpy.testingr   r   r   rs   Úscipy.optimizer   r   r   r
   rŽ   r�   r&   r   r   ú<module>r©      sÒ   ðØ €€€à Ð Ð Ð Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ €€€à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðP!ð P!ð P!ð P!ð P!ñ P!ô P!ð P!ðf'+ð '+ð '+ðT2ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2r   