o
    g-                     @   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  }|td t|| j| j| j|d	}W d    n1 s8w   Y  t|jd
dgdd t|j	ddd d S )Nc                 S       | d d d | d d d  S Nr   r   r         @ xr   r   m/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_constraint_conversion.py<lambda>        z;TestOldToNew.test_constraint_dictionary_1.<locals>.<lambda>ineqc                 S      | d d| d   d S Nr   r   r   r   r   r   r   r   r          typefunc                 S   s   | d  d| d   d S )Nr   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?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  }|td t|| j| j| j|d	}W d    n1 s/w   Y  t|jd
dg t|j	d d S )Nc                 S   r   r   r   r   r   r   r   r   #   r   z;TestOldToNew.test_constraint_dictionary_2.<locals>.<lambda>eqc                 S   s   || d  || d   S Nr   r   r   r   p1p2r   r   r   r   %   r#   )r   皙?c                 S   s   t || ggS )N)nparrayr@   r   r   r   r   '   s    )r%   r&   argsjacr)   r*   g>[p?gr7?g,,?r3   r8   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 }|td t|| j| j| j|d	}W d    n1 s3w   Y  t|j	d
d
gdd t|j
ddd d S )Nc                 S   r   r   r   r   r   r   r   r   0   r   z;TestOldToNew.test_constraint_dictionary_3.<locals>.<lambda>r    c                 S   r!   r"   r   r   r   r   r   r   1   r#   r$   c                 S      | d | d  S r?   r   r   r   r   r   r   2       r   r)   r*   g      ?r/   r0   g      ?)r   r   r4   r5   r	   r6   r+   r7   r   r   r&   r8   r   r   r   test_constraint_dictionary_3/   s   z)TestOldToNew.test_constraint_dictionary_3N)	__name__
__module____qualname__r6   r7   r+   r=   rH   rK   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 ]D}i }|D ]'}t }|t t||||d}	|	j	||< W d    n1 srw   Y  qPt
|d |d dd t
|d |d dd qJd S )Nc                 S   0   | d d d | d d d  | d d d  S Nr   r   r   r   g      ?r   r   r   r   r   r   ?      0 z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>r   r   r   slsqpcobylar   r    c                 S   r!   r"   r   r   r   r   r   r   E   r#   r$   c                 S   rI   r?   r   r   r   r   r   r   F   rJ   r   )r   r   rX   c                 S   rI   r?   r   r   r   r   r   r   I   rJ   c                 S   r!   r"   r   r   r   r   r   r   K   r#   r   c                 S   rI   r?   r   r   r   r   r   r   L   rJ   r+   r-   rU   r   r/   r0   rV   )appendr   r   rD   infr   r4   r5   r	   r&   r   )
r9   r&   r6   conimethodsconfunsr+   r;   resultr   r   r    test_multiple_constraint_objects>   s2   
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 ]G}i }|D ])}t }	|	t t	||||d"}
|
j
||< W d    n	1 sKw   Y  q(t|d# |d$ d%d& t|d' |d$ d%d& q"|D ]A}i }|d d d( D ])}t }	|	t t	||||d"}
|
j
||< W d    n	1 sw   Y  qwt|d# |d$ d%d& qld S ))Nc                 S   rP   rQ   r   r   r   r   r   r   Y   rR   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>rS   rT   c                 S   rI   r?   r   r   r   r   r   r   a   rJ   r   c                 S   rI   r?   r   r   r   r   r   r   b   rJ   g\(\?c                 S   rI   r?   r   r   r   r   r   r   c   rJ   c                 S       | d | d  | d | d  gS Nr   r   r   r   r   r   r   r   r   h   r   c                 S   rb   rc   r   r   r   r   r   r   k   r   r.   c                 S   rb   rc   r   r   r   r   r   r   n   r   c                 S   rb   rc   r   r   r   r   r   r   q   r   c                 S   rI   r?   r   r   r   r   r   r   u   rJ   c                 S   rI   r?   r   r   r   r   r   r   v   rJ   c                 S   rI   r?   r   r   r   r   r   r   w   rJ   c                 S   rI   r?   r   r   r   r   r   r   y   rJ   c                 S   rI   r?   r   r   r   r   r   r   z   rJ   c                 S   rb   rc   r   r   r   r   r   r      r   c                 S   rb   rc   r   r   r   r   r   r      r   c                 S   rb   rc   r   r   r   r   r   r      r   rC   r2   g333333?c                 S   rb   rc   r   r   r   r   r   r      r   g333333gffffffgg)r   rW   r   )r   r   rW   rY   rU   r   MbP?r0   rV   r   )rZ   r   rD   rE   r[   r   r   r4   r5   r	   r&   r   )r9   r&   r6   coner\   r]   r^   r_   r+   r;   r`   r   r   r   "test_individual_constraint_objectsX   s   

z/TestNewToOld.test_individual_constraint_objectsN)rL   rM   rN   ra   rg   r   r   r   r   rO   <   s    rO   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 )TestNewToOldSLSQPrU   r   n_electrons)gEGg}_uG?go?ghSg	 )?g8M)տr   c              	   C   sn   | j D ]1}t }|t t|j|j| j|j|j	d}W d    n1 s&w   Y  t
|j|jdd qd S )Nr*      )decimal)list_of_problemsr   r4   r5   r	   r&   r6   r+   r,   constrr   r   x_opt)r9   probr;   r`   r   r   r   test_list_of_problems   s   


z'TestNewToOldSLSQP.test_list_of_problemsc              
   C   st   dd }t dd ddgddg}d}t }|td ttt|d	| j||d
 W d    d S 1 s3w   Y  d S )Nc                 S   rP   rQ   r   r   r   r   r   r      rR   z?TestNewToOldSLSQP.test_warn_mixed_constraints.<locals>.<lambda>c                 S   s$   | d d | d  | d | d  gS r"   r   r   r   r   r   r      s   $ rC   r2   r.   r   r   r   r)   rS   r*   )r   r   r4   r5   r   r   r	   r+   )r9   r&   r:   r7   r;   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 qd S )Nc                 S   rP   rQ   r   r   r   r   r   r      rR   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>rS   rU   rr   c                 S   s   | d S )Nr   r   r   r   r   r   r      s    r   r*   r   )r   r   r   c                 S      | d d S Nr   r   r   r   r   r   r   r          T)keep_feasiblec                 S   rt   ru   r   r   r   r   r   r      rv   )hessc                 S   rt   ru   r   r   r   r   r   r      rv   *   )finite_diff_jac_sparsityc                 S   rt   ru   r   r   r   r   r   r      rv   )finite_diff_rel_step)r+   r   rD   r[   r	   r   r&   r   rZ   r
   r   r   )r9   r&   r6   r7   r:   r<   r^   r   r   r   test_warn_ignored_options   sH   



z+TestNewToOldSLSQP.test_warn_ignored_optionsN)rL   rM   rN   r+   r   elecrD   rE   ro   r   brockr   r   r   r   r   rm   rq   rs   r|   r   r   r   r   rh      s"    

	rh   c                   @   s4   e Zd ZdZeddeddgZejjdd Z	dS )TestNewToOldCobylarV   r   ri      c              	   C   s   | j D ]>}t (}|t t|j|jd|j|jd}t|j|j| j	|j|jd}W d    n1 s3w   Y  t
|j|jdd qd S )Nr   r*   re   r0   )rm   r   r4   r5   r	   r&   r6   r,   rn   r+   r   )r9   rp   r;   truthr`   r   r   r   rq      s    



z(TestNewToOldCobyla.test_list_of_problemsN)
rL   rM   rN   r+   r   rm   pytestmarkslowrq   r   r   r   r   r      s    r   )__doc__numpyrD   numpy.testingr   r   r   r   r   scipy.optimizer   r   r   r	   r
   test_minimize_constrainedr   r   r   r   r   r   r   r   rO   rh   r   r   r   r   r   <module>   s    $,iN