a
    Reo.                     @   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   c/var/www/sunrise/env/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   p1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   rB   rC   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   rN   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)   rK   r   r+   r,   rL   )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 rH   r   r   r   r   r   r   ]   s    z<TestNewToOld.test_individual_constraint_objects.<locals>.funrI   rJ   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 rX   r   r   r   r   r   r    p   r!   r*   c                 S   s    | d | d  | d | d  gS rX   r   r   r   r   r   r    s   r!   c                 S   s    | d | d  | d | d  gS rX   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 rX   r   r   r   r   r   r       r!   c                 S   s    | d | d  | d | d  gS rX   r   r   r   r   r   r       r!   c                 S   s    | d | d  | d | d  gS rX   r   r   r   r   r   r       r!   r>   r-   g333333?c                 S   s    | d | d  | d | d  gS rX   r   r   r   r   r   r       r!   g333333gffffffgg)r   rM   r   )r   r   rM   rO   rK   r   MbP?r,   rL   r   )rP   r   r?   r@   rQ   r   r   r/   r0   r	   r   r   )r4   r   r1   ZconerR   rS   rT   rU   r'   r6   rV   r   r   r   "test_individual_constraint_objects\   s    
.
.z/TestNewToOld.test_individual_constraint_objectsN)rD   rE   rF   rW   r[   r   r   r   r   rG   ?   s   rG   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 )TestNewToOldSLSQPrK   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   rV   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 rH   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%   rI   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 rH   r   r   r   r   r   r      s    z8TestNewToOldSLSQP.test_warn_ignored_options.<locals>.funrI   rK   re   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 rg   r   r   r   r   r   r       r!   )Zhessc                 S   s   | d d S rg   r   r   r   r   r   r       r!   *   )Zfinite_diff_jac_sparsityc                 S   s   | d d S rg   r   r   r   r   r   r       r!   )Zfinite_diff_rel_step)r'   r   r?   rQ   r	   r   r   r   rP   r
   r   r   )r4   r   r1   r2   r5   r7   rT   r   r   r   test_warn_ignored_options   sF    



z+TestNewToOldSLSQP.test_warn_ignored_optionsN)rD   rE   rF   r'   r   Zelecr?   r@   rb   r   Zbrockr   r   r   r   r   r`   rd   rf   ri   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 )TestNewToOldCobylarL   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&   rZ   r,   )r`   r   r/   r0   r	   r   r1   r(   ra   r'   r   )r4   rc   r6   truthrV   r   r   r   rd     s    



$z(TestNewToOldCobyla.test_list_of_problemsN)
rD   rE   rF   r'   r   r`   pytestmarkZslowrd   r   r   r   r   rj      s   rj   )__doc__numpyr?   Znumpy.testingr   r   r   r   rm   Zscipy.optimizer   r   r   r	   r
   Ztest_minimize_constrainedr   r   r   r   r   r   r   r   rG   r\   rj   r   r   r   r   <module>   s   $/kP