a
    ho.                     @   s   d Z ddlZddlmZmZmZmZ ddlZddl	m
Z
mZmZmZmZ ddlmZmZmZmZmZmZmZ G dd dZG d	d
 d
ZG dd dZG dd dZdS )z%
Unit test for constraint conversion
    N)assert_array_almost_equalassert_allcloseassert_warnssuppress_warnings)NonlinearConstraintLinearConstraintOptimizeWarningminimizeBFGS   )MaratosHyperbolicIneq
RosenbrockIneqRosenbrockEqIneqRosenbrockBoundedRosenbrockElecc                   @   s0   e Zd ZdZdZdZdd Zdd Zdd	 Zd
S )TestOldToNew)   r   )r   Nr   trust-constrc                 C   s   dd }ddd dddd dddd df}t  4}|td	 t|| j| j| j|d
}W d    n1 sp0    Y  t|jddgdd t|j	ddd d S )Nc                 S   s    | d d d | d d d  S Nr   r   r         @ xr   r   k/var/www/html/assistant/venv/lib/python3.9/site-packages/scipy/optimize/tests/test_constraint_conversion.pyfun   s    z6TestOldToNew.test_constraint_dictionary_1.<locals>.funineqc                 S   s   | d d| d   d S Nr   r   r   r   r   r   r   r   <lambda>       z;TestOldToNew.test_constraint_dictionary_1.<locals>.<lambda>typer   c                 S   s   | d  d| d   d S )Nr   r   r      r   r   r   r   r   r       r!   c                 S   s   | d  d| d   d S r   r   r   r   r   r   r       r!   delta_grad == 0.0methodboundsconstraintsffffff?g333333?-C6?Zrtol皙?
r   filterUserWarningr	   x0r'   bndsr   r   r   selfr   conssupresr   r   r   test_constraint_dictionary_1   s    $z)TestOldToNew.test_constraint_dictionary_1c                 C   s   dd }ddd ddd d}t  4}|td	 t|| j| j| j|d
}W d    n1 s^0    Y  t|jddg t|j	d d S )Nc                 S   s    | d d d | d d d  S r   r   r   r   r   r   r   $   s    z6TestOldToNew.test_constraint_dictionary_2.<locals>.funeqc                 S   s   || d  || d   S Nr   r   r   r   p1Zp2r   r   r   r    '   r!   z;TestOldToNew.test_constraint_dictionary_2.<locals>.<lambda>)r   皙?c                 S   s   t || ggS )N)nparrayr;   r   r   r   r    )   r!   )r#   r   argsZjacr%   r&   g>[p?gr7?g,,?r.   r3   r   r   r   test_constraint_dictionary_2#   s    $z)TestOldToNew.test_constraint_dictionary_2c                 C   s   dd }ddd dt dd ddg}t 4}|td	 t|| j| j| j|d
}W d    n1 sf0    Y  t|j	ddgdd t|j
ddd d S )Nc                 S   s    | d d d | d d d  S r   r   r   r   r   r   r   2   s    z6TestOldToNew.test_constraint_dictionary_3.<locals>.funr   c                 S   s   | d d| d   d S r   r   r   r   r   r   r    4   r!   z;TestOldToNew.test_constraint_dictionary_3.<locals>.<lambda>r"   c                 S   s   | d | d  S r:   r   r   r   r   r   r    5   r!   r   r%   r&   g      ?r+   r,   g      ?)r   r   r/   r0   r	   r1   r'   r2   r   r   r   r3   r   r   r   test_constraint_dictionary_31   s    $z)TestOldToNew.test_constraint_dictionary_3N)	__name__
__module____qualname__r1   r2   r'   r8   rA   rB   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestNewToOldc           
   
   C   s"  dd }g d}g }g d}| ddd dtd	d d
dg | tg ddtjtdd d
dg | tdd dtjtdd d
dg |D ]}i }|D ]N}t 4}|t t||||d}	|	j	||< W d    q1 s0    Y  qt
|d |d dd t
|d |d dd qd S )Nc                 S   s0   | d d d | d d d  | d d d  S Nr   r   r   r   g      ?r   r   r   r   r   r   B   s    z:TestNewToOld.test_multiple_constraint_objects.<locals>.funr   r   r   slsqpcobylar   r   c                 S   s   | d d| d   d S r   r   r   r   r   r   r    I   r!   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>r"   c                 S   s   | d | d  S r:   r   r   r   r   r   r    J   r!   r   )r   r   rM   c                 S   s   | d | d  S r:   r   r   r   r   r   r    M   r!   c                 S   s   | d d| d   d S r   r   r   r   r   r   r    O   r!   r   c                 S   s   | d | d  S r:   r   r   r   r   r   r    P   r!   r'   r)   rJ   r   r+   r,   rK   )appendr   r   r>   infr   r/   r0   r	   r   r   )
r4   r   r1   conimethodsconfunsr'   r6   resultr   r   r    test_multiple_constraint_objectsA   s,    
*z-TestNewToOld.test_multiple_constraint_objectsc              
   C   s`  dd }g d}g }g }g d}| tdd dd | tdd d	gd	g | td
d d	td	g | tdd d	d	 | tdd d	dgd	dg | tdd d	d	gd	 | tdd d	tj gd	tjg | tdd d	tj | tdd d	gtj | tdd d	ttjg | tdd tj d | tdd ttj d | tdd d	tj | tdd d	tj gd	dg | tdd ddgddg | tdd ddgdd g | tg d!d	d	 | tg d!g d"gd	d	 | tg d!g d"gd	tj gd	dg |D ]}i }|D ]R}t 4}	|	t t	||||d#}
|
j
||< W d    n1 s0    Y  qPt|d$ |d% d&d' t|d( |d% d&d' qD|D ]}i }|d d d) D ]R}t 4}	|	t t	||||d#}
|
j
||< W d    n1 s40    Y  qt|d$ |d% d&d' qd S )*Nc                 S   s0   | d d d | d d d  | d d d  S rG   r   r   r   r   r   r   ]   s    z<TestNewToOld.test_individual_constraint_objects.<locals>.funrH   rI   c                 S   s   | d | d  S r:   r   r   r   r   r   r    f   r!   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>r   c                 S   s   | d | d  S r:   r   r   r   r   r   r    g   r!   g\(\?c                 S   s   | d | d  S r:   r   r   r   r   r   r    h   r!   c                 S   s    | d | d  | d | d  gS Nr   r   r   r   r   r   r   r   r    m   r!   c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r    p   r!   r*   c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r    s   r!   c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r    v   r!   c                 S   s   | d | d  S r:   r   r   r   r   r   r    z   r!   c                 S   s   | d | d  S r:   r   r   r   r   r   r    {   r!   c                 S   s   | d | d  S r:   r   r   r   r   r   r    |   r!   c                 S   s   | d | d  S r:   r   r   r   r   r   r    ~   r!   c                 S   s   | d | d  S r:   r   r   r   r   r   r       r!   c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r       r!   c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r       r!   c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r       r!   r=   r-   g333333?c                 S   s    | d | d  | d | d  gS rW   r   r   r   r   r   r       r!   g333333gffffffgg)r   rL   r   )r   r   rL   rN   rJ   r   MbP?r,   rK   r   )rO   r   r>   r?   rP   r   r   r/   r0   r	   r   r   )r4   r   r1   ZconerQ   rR   rS   rT   r'   r6   rU   r   r   r   "test_individual_constraint_objects\   s    
.
.z/TestNewToOld.test_individual_constraint_objectsN)rC   rD   rE   rV   rZ   r   r   r   r   rF   ?   s   rF   c                   @   sn   e Zd ZdZeddZeg de_e	 Z
ddge
_e e e e e ee
gZdd Zdd	 Zd
d ZdS )TestNewToOldSLSQPrJ   r   Zn_electrons)gEGg}_uG?go?ghSg	 )?g8M)տr   c              	   C   sn   | j D ]b}t 6}|t t|j|j| j|j|j	d}W d    n1 sL0    Y  t
|j|jdd qd S )Nr&      )decimal)list_of_problemsr   r/   r0   r	   r   r1   r'   r(   constrr   r   x_opt)r4   probr6   rU   r   r   r   test_list_of_problems   s    


$z'TestNewToOldSLSQP.test_list_of_problemsc              
   C   sr   dd }t dd ddgddg}d}t 4}|td	 ttt|d
| j||d W d    n1 sd0    Y  d S )Nc                 S   s0   | d d d | d d d  | d d d  S rG   r   r   r   r   r   r      s    z:TestNewToOldSLSQP.test_warn_mixed_constraints.<locals>.func                 S   s$   | d d | d  | d | d  gS r   r   r   r   r   r   r       r!   z?TestNewToOldSLSQP.test_warn_mixed_constraints.<locals>.<lambda>r=   r-   r*   r   r   r   r%   rH   r&   )r   r   r/   r0   r   r   r	   r'   )r4   r   r5   r2   r6   r   r   r   test_warn_mixed_constraints   s    
z-TestNewToOldSLSQP.test_warn_mixed_constraintsc              
   C   s>  dd }d}| j dkrd}nd }tdd dtj}t||| j ||d	}t|jd
 tg ddtj}t||| j ||d	}t|jd
 g }|tdd dtjdd |tdd dtjt	 d |tdd dtjdd |tdd dtjdd |tg ddtjdd |D ]}t
tt||| j ||d	 qd S )Nc                 S   s0   | d d d | d d d  | d d d  S rG   r   r   r   r   r   r      s    z8TestNewToOldSLSQP.test_warn_ignored_options.<locals>.funrH   rJ   rd   c                 S   s   | d S )Nr   r   r   r   r   r   r       r!   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>r   r&   r   )r   r   r   c                 S   s   | d d S Nr   r   r   r   r   r   r   r       r!   T)Zkeep_feasiblec                 S   s   | d d S rf   r   r   r   r   r   r       r!   )Zhessc                 S   s   | d d S rf   r   r   r   r   r   r       r!   *   )Zfinite_diff_jac_sparsityc                 S   s   | d d S rf   r   r   r   r   r   r       r!   )Zfinite_diff_rel_step)r'   r   r>   rP   r	   r   r   r   rO   r
   r   r   )r4   r   r1   r2   r5   r7   rS   r   r   r   test_warn_ignored_options   sF    



z+TestNewToOldSLSQP.test_warn_ignored_optionsN)rC   rD   rE   r'   r   Zelecr>   r?   ra   r   Zbrockr   r   r   r   r   r_   rc   re   rh   r   r   r   r   r[      s    

	r[   c                   @   s4   e Zd ZdZeddeddgZejjdd Z	dS )TestNewToOldCobylarK   r   r\      c              	   C   s   | j D ]|}t P}|t t|j|jd|j|jd}t|j|j| j	|j|jd}W d    n1 sf0    Y  t
|j|jdd qd S )Nr   r&   rY   r,   )r_   r   r/   r0   r	   r   r1   r(   r`   r'   r   )r4   rb   r6   truthrU   r   r   r   rc     s    



$z(TestNewToOldCobyla.test_list_of_problemsN)
rC   rD   rE   r'   r   r_   pytestmarkZslowrc   r   r   r   r   ri      s   ri   )__doc__numpyr>   Znumpy.testingr   r   r   r   rl   Zscipy.optimizer   r   r   r	   r
   Ztest_minimize_constrainedr   r   r   r   r   r   r   r   rF   r[   ri   r   r   r   r   <module>   s   $/kP