
    ^Mh1                         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          Z G d	 d
          Z G d d          Z G 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                   ,    e Zd ZdZdZdZd Zd Zd ZdS )TestOldToNew)   r   )r   Nr   trust-constrc                 V   d }dd ddd ddd df}t                      5 }|                    t          d           t          || j        | j        | j        |          }d d d            n# 1 swxY w Y   t          |j        d	d
gd           t          |j	        dd           d S )Nc                 <    | d         dz
  dz  | d         dz
  dz  z   S Nr   r   r         @ xs    o/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_constraint_conversion.pyfunz6TestOldToNew.test_constraint_dictionary_1.<locals>.fun   &    aD1H?adSjQ%666    ineqc                 0    | d         d| d         z  z
  dz   S Nr   r   r   r   r   s    r    <lambda>z;TestOldToNew.test_constraint_dictionary_1.<locals>.<lambda>       !A$QqT/A2E r#   typer!   c                 2    | d          d| d         z  z
  dz   S )Nr   r   r      r   r   s    r    r'   z;TestOldToNew.test_constraint_dictionary_1.<locals>.<lambda>       1Q4%!ad(2BQ2F r#   c                 2    | d          d| d         z  z   dz   S r&   r   r   s    r    r'   z;TestOldToNew.test_constraint_dictionary_1.<locals>.<lambda>   r-   r#   delta_grad == 0.0methodboundsconstraintsffffff?g333333?-C6?rtol皙?
r   filterUserWarningr
   x0r1   bndsr   r   r!   selfr!   conssupress        r    test_constraint_dictionary_1z)TestOldToNew.test_constraint_dictionary_1   s   	7 	7 	7(E(EFF(F(FGG(F(FGGI    	?CJJ{$78883"&)? ? ?C	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	Sz55554000000s   ?A..A25A2c                 >   d }dd dd d}t                      5 }|                    t          d           t          || j        | j        | j        |          }d d d            n# 1 swxY w Y   t          |j        d	d
g           t          |j	        d           d S )Nc                 <    | d         dz
  dz  | d         dz
  dz  z   S r   r   r   s    r    r!   z6TestOldToNew.test_constraint_dictionary_2.<locals>.fun$   r"   r#   eqc                 0    || d         z  || d         z  z
  S Nr   r   r   r   p1p2s      r    r'   z;TestOldToNew.test_constraint_dictionary_2.<locals>.<lambda>'   s    AaD2ad7): r#   )r   皙?c                 2    t          j        || gg          S )N)nparrayrI   s      r    r'   z;TestOldToNew.test_constraint_dictionary_2.<locals>.<lambda>)   s    B9+)>)> r#   )r*   r!   argsjacr/   r0   g>[p?gr7?g,,?r9   r>   s        r    test_constraint_dictionary_2z)TestOldToNew.test_constraint_dictionary_2#   s    	7 	7 	7:: >>@ @    	?CJJ{$78883"&)? ? ?C	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 		:6777!344444s   ?A&&A*-A*c                 d   d }dd dt          d dd          g}t                      5 }|                    t          d           t	          || j        | j        | j        |          }d d d            n# 1 swxY w Y   t          |j	        d	d	gd
           t          |j
        dd
           d S )Nc                 <    | d         dz
  dz  | d         dz
  dz  z   S r   r   r   s    r    r!   z6TestOldToNew.test_constraint_dictionary_3.<locals>.fun2   r"   r#   r$   c                 0    | d         d| d         z  z
  dz   S r&   r   r   s    r    r'   z;TestOldToNew.test_constraint_dictionary_3.<locals>.<lambda>4   r(   r#   r)   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   z;TestOldToNew.test_constraint_dictionary_3.<locals>.<lambda>5   s    adQqTk r#   r   r/   r0   g      ?r5   r6   g      ?)r   r   r:   r;   r
   r<   r1   r=   r   r   r!   r>   s        r    test_constraint_dictionary_3z)TestOldToNew.test_constraint_dictionary_31   s   	7 	7 	7(E(EFF#$9$91a@@B    	?CJJ{$78883"&)? ? ?C	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	d|$7777T222222s   ?A55A9<A9N)	__name__
__module____qualname__r<   r=   r1   rC   rR   rW   r   r#   r    r   r      sP        	B!DF1 1 15 5 53 3 3 3 3r#   r   c                       e Zd Zej                            d          d             Zej                            d          d             ZdS )TestNewToOldr   c           	         d }g d}g }g d}|                     dd dt          d dd	          g           |                     t          g d
dt          j                  t          d dd	          g           |                     t          d dt          j                  t          d dd	          g           |D ]}i }|D ]_}t                      5 }	|	                    t                     t          ||||          }
|
j	        ||<   d d d            n# 1 swxY w Y   `t          |d         |d         d           t          |d         |d         d           |d	k    rt          |d         |d         d           d S )Nc                 Z    | d         dz
  dz  | d         dz
  dz  z   | d         dz
  dz  z   S Nr   r   r   r   g      ?r   r   s    r    r!   z:TestNewToOld.test_multiple_constraint_objects.<locals>.funB   8    aD1H?adSjQ%66!A$+!9KKKr#   r   r   r   slsqpcobylacobyqar   r$   c                 0    | d         d| d         z  z
  dz   S r&   r   r   s    r    r'   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>I   s    qta!A$h7J r#   r)   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>J       1Q4!A$; r#   r   )r   r   rj   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>M   rh   r#   c                 0    | d         d| d         z  z
  dz   S r&   r   r   s    r    r'   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>O   s    1Q4!ad(?Q3F r#   r   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>P   rh   r#   r1   r3   rc   r   r5   r6   rd   re   )appendr   r   rN   infr   r:   r;   r
   r!   r   )r?   num_parallel_threadsr!   r<   conimethodsconfunsr1   rA   results              r     test_multiple_constraint_objectsz-TestNewToOld.test_multiple_constraint_objects@   s3   	L 	L 	LYY??? 	f-J-JKK()>)>AFFH 	I 	I 	I 	%jjj"bf==()>)>AFFH 	I 	I 	I 	()F)F26RR()>)>AFFH 	I 	I 	I  	+ 	+CD! . .&(( .CJJ{+++%c2f#NNNF#):DL. . . . . . . . . . . . . . . DM4+?dKKKKDND,@tLLLL#q((X^0D%)+ + + +	+ 	+s   8DDD   c           	      0
   d }g d}g }g }g d}|                     t          d dd                     |                     t          d dgdg                     |                     t          d dt          j        dg                               |                     t          d	 dd                     |                     t          d
 ddgddg                     |                     t          d ddgd                     |                     t          d dt          j         gdt          j        g                     |                     t          d dt          j                             |                     t          d dgt          j                             |                     t          d dt          j        t          j        g                               |                     t          d t          j         d                     |                     t          d t          j        t          j                   d                     |                     t          d dt          j                             |                     t          d dt          j         gddg                     |                     t          d ddgddg                     |                     t          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 ]_}	t                      5 }
|
                    t                     t          |||	|!          }|j
        ||	<   d d d            n# 1 swxY w Y   `t          |d"         |d#         d$%           t          |d&         |d#         d$%           |dk    rt          |d'         |d#         d$%           |D ]}i }d( |D             D ]_}	t                      5 }
|
                    t                     t          |||	|!          }|j
        ||	<   d d d            n# 1 swxY w Y   `t          |d"         |d#         d$%           |dk    rt          |d'         |d#         d$%           d S ))Nc                 Z    | d         dz
  dz  | d         dz
  dz  z   | d         dz
  dz  z   S r_   r   r   s    r    r!   z<TestNewToOld.test_individual_constraint_objects.<locals>.funa   r`   r#   ra   rb   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>j       !A$1+ r#   r   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>k   r|   r#   g\(\?c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>l   r|   r#   c                 F    | d         | d         z
  | d         | d         z
  gS Nr   r   r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>q   #    qtad{AaD1Q4K8 r#   c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>t   r   r#   r4   c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>w   r   r#   c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>z   r   r#   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>~   r|   r#   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r|   r#   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r|   r#   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r|   r#   c                 $    | d         | d         z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r|   r#   c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r#   c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r#   c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r#   rL   r8   g333333?c                 F    | d         | d         z
  | d         | d         z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r#   g333333gffffffgg)r   ri   r   )r   r   ri   rn   rc   r   MbP?r6   rd   re   c                     g | ]
}|d k    |S )rd   r   ).0r1   s     r    
<listcomp>zCTestNewToOld.test_individual_constraint_objects.<locals>.<listcomp>   s"    NNNf6X;M;M6;M;M;Mr#   )ro   r   rN   rO   rp   r   r   r:   r;   r
   r!   r   )r?   rq   r!   r<   conerr   rs   rt   ru   r1   rA   rv   s               r    "test_individual_constraint_objectsz/TestNewToOld.test_individual_constraint_objects_   sM   	L 	L 	LYY??? 	'(=(=q!DDEEE'(=(=vvNNOOO'(=(=(,bhv.>.>@ @ 	A 	A 	A 	'88$    	! 	! 	! 	'883K$. . 	/ 	/ 	/ 	'884L$( ( 	) 	) 	) 	'88BF7OdBF^5 5 	6 	6 	6
 	'(=(=tRVLLMMM'(=(=vrvNNOOO'(=(=(,bhx.@.@B B 	C 	C 	C'(=(=wKKLLL'(=(=(*"&(9(92? ? 	@ 	@ 	@ 	'88"&" " 	# 	# 	# 	'88BF7OdC[2 2 	3 	3 	3 	'88"ISz+ + 	, 	, 	, 	'884L4+/ / 	0 	0 	0
 	$ZZZt<<===$jjj***%=tTJJKKK$jjj***%=&*RVG_tSkC C 	D 	D 	D  	+ 	+CD! . .&(( .CJJ{+++%c2f#NNNF#):DL. . . . . . . . . . . . . . . DM4+?dKKKKDND,@tLLLL#q((X^0D%)+ + + +  
	+ 
	+CDNNNNN . .&(( .CJJ{+++%c2f#NNNF#):DL. . . . . . . . . . . . . . . DM4+?dKKKK#q((X^0D%)+ + + +
	+ 
	+s$   08O44O8;O88SSSN)rX   rY   rZ   pytestmark	fail_slowrw   r   r   r#   r    r\   r\   ?   so        [1+ + +< [2Q+ Q+ Q+ Q+ Q+r#   r\   c                   :   e Zd ZdZ ed          Z ej        g d          e_         e	            Z
ddge
_         e             e             e             e             e            ee
gZd Zej        j        d             Zej        j        d             Zd	S )
TestNewToOldSLSQPrc   r   n_electrons)gEGg}_uG?go?ghSg	 )?g8M)տr   c           	      ,   | j         D ]}t                      5 }|                    t                     t	          |j        |j        | j        |j        |j	                  }d d d            n# 1 swxY w Y   t          |j        |j        d           d S )Nr0      )decimal)list_of_problemsr   r:   r;   r
   r!   r<   r1   r2   constrr   r   x_opt)r?   probrA   rv   s       r    test_list_of_problemsz'TestNewToOldSLSQP.test_list_of_problems   s    ) 		G 		GD"$$ ;

;'''!$(DG)-)-.2k; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; &fh
AFFFFF		G 		Gs   AA,,A0	3A0	c           
      
   d }t          d ddgddg          }d}t                      5 }|                    t          d           t	          t
          t          |d| j        ||	           d d d            d S # 1 swxY w Y   d S )
Nc                 Z    | d         dz
  dz  | d         dz
  dz  z   | d         dz
  dz  z   S r_   r   r   s    r    r!   z:TestNewToOldSLSQP.test_warn_mixed_constraints.<locals>.fun   r`   r#   c                 L    | d         dz  | d         z
  | d         | d         z
  gS r&   r   r   s    r    r'   z?TestNewToOldSLSQP.test_warn_mixed_constraints.<locals>.<lambda>   s'    adAg!nadQqTk-J r#   rL   r8   r4   r   r   r   r/   ra   r0   )r   r   r:   r;   r   r	   r
   r1   )r?   r!   r@   r=   rA   s        r    test_warn_mixed_constraintsz-TestNewToOldSLSQP.test_warn_mixed_constraints   s    	L 	L 	L"#J#J$'9sCj: :0   	LCJJ{$7888(C $DdL L L L	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   AA88A<?A<c           
         d }d}| j         dk    rd}nd }t          d dt          j                  }t	          ||| j         ||          }t          |j        d           t          g d	dt          j                  }t	          ||| j         ||          }t          |j        d           g }|                    t          d
 dt          j        d                     |                    t          d dt          j        t                                           |                    t          d dt          j        d                     |                    t          d dt          j        d                     |                    t          g d	dt          j        d                     |D ]'}t          t          t          ||| j         ||           (d S )Nc                 Z    | d         dz
  dz  | d         dz
  dz  z   | d         dz
  dz  z   S r_   r   r   s    r    r!   z8TestNewToOldSLSQP.test_warn_ignored_options.<locals>.fun   r`   r#   ra   rc   r   c                     | d         S )Nr   r   r   s    r    r'   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>   s
    QqT r#   r   r0   r   )r   r   r   c                     | d         dz  S Nr   r   r   r   s    r    r'   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>       !A$' r#   T)keep_feasiblec                     | d         dz  S r   r   r   s    r    r'   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>   r   r#   )hessc                     | d         dz  S r   r   r   s    r    r'   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>   r   r#   *   )finite_diff_jac_sparsityc                     | d         dz  S r   r   r   s    r    r'   z=TestNewToOldSLSQP.test_warn_ignored_options.<locals>.<lambda>   r   r#   )finite_diff_rel_step)r1   r   rN   rp   r
   r   r!   r   ro   r   r   r	   )r?   r!   r<   r=   r@   rB   rt   s          r    test_warn_ignored_optionsz+TestNewToOldSLSQP.test_warn_ignored_options   s?   	L 	L 	L;'!!4DDD">>1bf==sBt{"6 6 6 	###			1bf55sBt{"6 6 6 	###'(9(91bf6:< < < 	= 	= 	='(9(91bf-1VV5 5 5 	6 	6 	6'(9(91bfACE E E 	F 	F 	F'(9(91bf=?A A A 	B 	B 	B$YYY26379 9 9 	: 	: 	: 	L 	LC(C $DdL L L L L	L 	Lr#   N)rX   rY   rZ   r1   r   elecrN   rO   r   r   brockr   r   r   r   r   r   r   r   r   thread_unsafer   r   r   r#   r    r   r      s       F4AD A A A B BDJEa&EK		&(("
&((((**G G G [
L 
L 
L [$L $L $L $L $Lr#   r   c                   l    e Zd ZdZ ed           ed          gZej        j        d             Z	dS )TestNewToOldCobylard   r   r      c           	      |   | j         D ]}t                      5 }|                    t                     t	          |j        |j        d|j        |j                  }t	          |j        |j        | j	        |j        |j                  }d d d            n# 1 swxY w Y   t          |j        |j        d           d S )Nr   r0   r   r6   )r   r   r:   r;   r
   r!   r<   r2   r   r1   r   )r?   r   rA   truthrv   s        r    r   z(TestNewToOldCobyla.test_list_of_problems  s    ) 	> 	>D"$$ 	;

;''' 47(6(,-1[: : : "$(DG)-)-.2k; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; FJ	=====	> 	>s   A0BB	B	N)
rX   rY   rZ   r1   r   r   r   r   slowr   r   r#   r    r   r     sd        F ++++++
 [> > > > >r#   r   )__doc__numpyrN   numpy.testingr   r   r   r   r   scipy.optimizer   r   r	   r
   r   test_minimize_constrainedr   r   r   r   r   r   r   r   r\   r   r   r   r#   r    <module>r      s       M M M M M M M M M M M M = = = = = = = = = = = = = =A A A A A A A A A A A A A A A A A A
,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3^r+ r+ r+ r+ r+ r+ r+ r+jOL OL OL OL OL OL OL OLd> > > > > > > > > >r#   