U
    »mœdS  ã                   @   sV   d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
 G dd„ dƒZdd„ ZdS )é    N)Úassert_allcloseÚassert_Úassert_array_equal)Úfmin_cobylaÚminimizec                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú
TestCobylac                 C   s.   ddg| _ t 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©Úself© r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/optimize/tests/test_cobyla.pyÚsetup_method   s
    
ÿzTestCobyla.setup_methodc                 C   s   |d d t |d ƒd  S )Nr   é   r   é   )Úabs©r   Úxr   r   r   Úfun   s    zTestCobyla.func                 C   s   |d d |d d  d S )Nr   r   r   é   r   r   r   r   r   Úcon1   s    zTestCobyla.con1c                 C   s   |   |¡ S ©N)r    r   r   r   r   Úcon2   s    zTestCobyla.con2c              	   C   s6   t | j| j| j| jgddddd�}t|| jdd� d S )Nr   r	   r
   T)r   ÚrhoendZmaxfunr   ç-Cëâ6?©Zatol)r   r   r   r    r"   r   r   r   r   r   r   Útest_simple   s      ÿzTestCobyla.test_simplec                 C   sÈ   G dd„ dƒ}|ƒ }d| j dœd| jdœf}t| j| jd||| jd�}t|j| jdd� t	|j
|jƒ t	|jd	k |ƒ t	|jd
k |ƒ t	|j|  | j¡d k |ƒ t	|j|jkdƒ t|j|jdƒ d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z1TestCobyla.test_minimize_simple.<locals>.Callbackc                 S   s   d| _ d | _d S )Nr   ©Ún_callsÚlast_xr   r   r   r   Ú__init__"   s    z:TestCobyla.test_minimize_simple.<locals>.Callback.__init__c                 S   s   |  j d7  _ || _d S ©Nr   r'   r   r   r   r   Ú__call__&   s    z:TestCobyla.test_minimize_simple.<locals>.Callback.__call__N)Ú__name__Ú
__module__Ú__qualname__r*   r,   r   r   r   r   ÚCallback!   s   r0   Úineq©Útyper   Úcobyla)ÚmethodÚconstraintsÚcallbackÚoptionsr$   r%   r	   éF   gü©ñÒ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ÚmaxcvZnfevr(   r   r)   )r   r0   r7   ÚconsÚsolr   r   r   Útest_minimize_simple    s(    	

ÿ ÿÿ
ÿzTestCobyla.test_minimize_simplec           	   	      sÚ   t j d¡ t j dd¡‰t j d¡‰‡fdd„‰ ‡fdd„}‡ fdd„}‡ fd	d
„}‡ fdd„}d|dœd|dœd|dœf}t  d¡}d}tjt|d��6 t||d|ddid�}t	|j
dkƒ t	|j ƒ W 5 Q R X d S )NiÒ  é
   c                    s
   ˆ   | ¡S r!   )Údot©Úw)Úpbr   r   Úp@   s    z8TestCobyla.test_minimize_constraint_violation.<locals>.pc                    s   | ˆ    ¡  S r!   )ÚsumrB   )Úspreadr   r   ÚfC   s    z8TestCobyla.test_minimize_constraint_violation.<locals>.fc                    s   dt ˆ | ƒƒ ¡  S )Niô  ©r   rF   rB   ©rE   r   r   Úc1F   s    z9TestCobyla.test_minimize_constraint_violation.<locals>.c1c                    s   dt ˆ | ƒ ¡ ƒ S ©Né   rI   rB   rJ   r   r   Úc2I   s    z9TestCobyla.test_minimize_constraint_violation.<locals>.c2c                    s   dt ˆ | ƒƒ ¡  S rL   )r   ÚmaxrB   rJ   r   r   Úc3L   s    z9TestCobyla.test_minimize_constraint_violation.<locals>.c3r1   r2   )r@   r   z4Use of `minimize` with `x0.ndim != 1` is deprecated.)Úmatchr4   Zcatolg�íµ ÷Æ°>)r5   r6   r8   )ÚnpÚrandomÚseedZrandZzerosÚpytestZwarnsÚDeprecationWarningr   r   r<   r:   )	r   rH   rK   rN   rP   r=   Zw0r;   r>   r   )rE   rD   rG   r   Ú"test_minimize_constraint_violation;   s(    þ

ÿz-TestCobyla.test_minimize_constraint_violationN)
r-   r.   r/   r   r   r    r"   r&   r?   rW   r   r   r   r   r   
   s   r   c            	         s  dd„ ‰ ‡ fdd„} dd„ }dd„ }t  d	d
g¡}ˆ ||g}ddg}d}tˆ ||dd�}t||dd� tˆ || dd�}tˆ |ƒddd� dd„ |D ƒ}tˆ ||dd�}t|j|dd� t|j|jƒ t|j	|dd� d| dœ}tˆ ||dd�}t|j	ddd� d S )Nc                 S   s    | d d d | d d d  S )Nr   r   r   g      @r   ©r   r   r   r   r   ^   s    z$test_vector_constraints.<locals>.func                    s   ˆ | ƒd S r+   r   rX   ©r   r   r   Úfmina   s    z%test_vector_constraints.<locals>.fminc                    sD   t  dddgdddgdddgg¡‰ t  ‡ ‡fdd„ttˆ ƒƒD ƒ¡S )Nr   éþÿÿÿr   éÿÿÿÿé   c                    s@   g | ]8}ˆ |d f ˆd   ˆ |df ˆd   ˆ |df  ‘qS )r   r   r   r   )Ú.0Úi©Úar   r   r   Ú
<listcomp>f   s   ÿ&
ÿz:test_vector_constraints.<locals>.cons1.<locals>.<listcomp>)rR   ÚarrayÚrangeÚlenrX   r   r`   r   Úcons1d   s    "
ÿz&test_vector_constraints.<locals>.cons1c                 S   s   | S r!   r   rX   r   r   r   Úcons2i   s    z&test_vector_constraints.<locals>.cons2r   r   gffffffö?g333333û?gš™™™™™é?r	   )r#   r$   r%   r   c                 S   s   g | ]}d |dœ‘qS )r1   r2   r   )r^   r=   r   r   r   rb   z   s     z+test_vector_constraints.<locals>.<listcomp>)r6   r   r1   r2   )
rR   rc   r   r   r   r   r   r:   r;   r   )	rZ   rf   rg   r   Z	cons_listZxsolZfsolr>   r6   r   rY   r   Útest_vector_constraints[   s(    

rh   )r   ÚnumpyrR   rU   Znumpy.testingr   r   r   Zscipy.optimizer   r   r   rh   r   r   r   r   Ú<module>   s   Q