
    bi0                         d Z ddlZddlZddl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y)z%
Unit test for constraint conversion
    N)assert_array_almost_equalassert_allclose)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y)TestOldToNew)   r   )r   Nr   trust-constrc                 t   d }dd ddd ddd df}t        j                         5  t        j                  ddt               t	        || j
                  | j                  | j                  |	      }d d d        t        j                  d
dgd       t        |j                  dd       y # 1 sw Y   <xY w)Nc                 0    | d   dz
  dz  | d   dz
  dz  z   S Nr   r
   r         @ xs    j/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/optimize/tests/test_constraint_conversion.pyfunz6TestOldToNew.test_constraint_dictionary_1.<locals>.fun   &    aD1H?adSjQ%666    ineqc                 $    | 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                 &    | 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                 &    | d    d| d   z  z   dz   S r$   r   r   s    r   r%   z;TestOldToNew.test_constraint_dictionary_1.<locals>.<lambda>   r+   r!   ignoredelta_grad == 0.0methodboundsconstraintsffffff?g333333?-C6?rtol皙?warningscatch_warningsfilterwarningsUserWarningr   x0r0   bndsr   r   r   selfr   consress       r   test_constraint_dictionary_1z)TestOldToNew.test_constraint_dictionary_1   s    	7(EF(FG(FGI $$& 	?##H.A;O3"&))?C	? 	Sz540	? 	?s   A
B..B7c                 \   d }dd dd d}t        j                         5  t        j                  ddt               t	        || j
                  | j                  | j                  |	      }d d d        t        j                  d
dg       t        |j                  d       y # 1 sw Y   8xY w)Nc                 0    | 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                 $    || 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                 4    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-   r.   r/   g>[p?gr7?g,,?r8   r?   s       r   test_constraint_dictionary_2z)TestOldToNew.test_constraint_dictionary_2$   s    	7: >@ $$& 	?##H.A;O3"&))?C	? 		:67!34	? 	?s   A
B""B+c                 z   d }dd dt        d dd      g}t        j                         5  t        j                  ddt               t        || j                  | j                  | j                  |	      }d d d        t        j                  d
d
gd       t        |j                  dd       y # 1 sw Y   <xY w)Nc                 0    | d   dz
  dz  | d   dz
  dz  z   S r   r   r   s    r   r   z6TestOldToNew.test_constraint_dictionary_3.<locals>.fun3   r    r!   r"   c                 $    | d   d| d   z  z
  dz   S r$   r   r   s    r   r%   z;TestOldToNew.test_constraint_dictionary_3.<locals>.<lambda>5   r&   r!   r'   c                     | d   | d   z
  S rH   r   r   s    r   r%   z;TestOldToNew.test_constraint_dictionary_3.<locals>.<lambda>6   s    adQqTk r!   r   r-   r.   r/   g      ?r4   r5   g      ?)r   r9   r:   r;   r<   r   r=   r0   r>   r   r   r   r?   s       r   test_constraint_dictionary_3z)TestOldToNew.test_constraint_dictionary_32   s    	7(EF#$91a@B $$& 	?##H.A;O3"&))?C	? 	d|$7T2	? 	?s   A
B11B:N)	__name__
__module____qualname__r=   r>   r0   rC   rR   rW   r   r!   r   r   r      s     	B!DF153r!   r   c                       e Zd Zej                  j                  d      d        Zej                  j                  d      d        Zy)TestNewToOldr   c           	         d }g d}g }g d}|j                  dd dt        d dd	      g       |j                  t        g d
dt        j                        t        d dd	      g       |j                  t        d dt        j                        t        d dd	      g       |D ]  }i }|D ]W  }t        j                         5  t        j                  dt               t        ||||      }|j                  ||<   d d d        Y t        |d   |d   d       t        |d   |d   d       t        |d   |d   d        y # 1 sw Y   xY w)Nc                 H    | 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>.funC   8    aD1H?adSjQ%66!A$+!9KKKr!   r   r   r
   slsqpcobylacobyqar   r"   c                 $    | d   d| d   z  z
  dz   S r$   r   r   s    r   r%   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>J   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>K       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>N   rh   r!   c                 $    | d   d| d   z  z
  dz   S r$   r   r   s    r   r%   z?TestNewToOld.test_multiple_constraint_objects.<locals>.<lambda>P   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>Q   rh   r!   r-   r0   r2   rc   r   r4   r5   rd   re   )appendr   r   rN   infr9   r:   simplefilterr<   r   r   r   )	r@   r   r=   conimethodsconfunsr0   results	            r    test_multiple_constraint_objectsz-TestNewToOld.test_multiple_constraint_objectsA   sb   	L? 	f-JK()>AFH 	I 	%j"bff=()>AFH 	I 	()F266R()>AFH 	I  
	'CD! .,,. .))(K@%c2f#NF#)::DL. ..
 DM4+?dKDND,@tLDND,@!%'
	'. .s   9EE   c           	      	   d }g d}g }g }g d}|j                  t        d dd             |j                  t        d dgdg             |j                  t        d dt        j                  dg                   |j                  t        d	 dd             |j                  t        d
 ddgddg             |j                  t        d ddgd             |j                  t        d dt        j                   gdt        j                  g             |j                  t        d dt        j                               |j                  t        d dgt        j                               |j                  t        d dt        j                  t        j                  g                   |j                  t        d t        j                   d             |j                  t        d t        j                  t        j                         d             |j                  t        d dt        j                               |j                  t        d dt        j                   gddg             |j                  t        d ddgddg             |j                  t        d ddgddg             |j                  t        g ddd             |j                  t        g dg d gdd             |j                  t        g dg d gdt        j                   gddg             |D ]  }i }|D ]W  }t        j                         5  t        j                  d!t               t        ||||"      }	|	j                  ||<   d d d        Y t        |d#   |d$   d%&       t        |d'   |d$   d%&       t        |d(   |d$   d%&        |D ]  }i }|D cg c]
  }|d'k7  s	| c}D ]W  }t        j                         5  t        j                  d!t               t        ||||"      }	|	j                  ||<   d d d        Y t        |d#   |d$   d%&       t        |d(   |d$   d%&        y # 1 sw Y   DxY wc c}w # 1 sw Y   xY w))Nc                 H    | 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                 .    | 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                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r   r%   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>t   r   r!   r3   c                 .    | 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                 .    | 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                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r   r%   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r!   c                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r   r%   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r!   c                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r   r%   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>   r   r!   rL   r7   g333333?c                 .    | 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   r-   rn   rc   r   MbP?r5   rd   re   )ro   r   rN   rO   rp   r   r9   r:   rq   r<   r   r   r   )
r@   r   r=   conerr   rs   rt   ru   r0   rv   s
             r   "test_individual_constraint_objectsz/TestNewToOld.test_individual_constraint_objects_   s6   	L? 	'(=q!DE'(=vvNO'(=(,bhhv.>@ 	A 	'8$  	! 	'83K$. 	/ 	'84L$( 	) 	'8BFF7OdBFF^5 	6
 	'(=tRVVLM'(=vrvvNO'(=(,bhhx.@B 	C'(=wKL'(=(*"&&(92? 	@ 	'8"&&" 	# 	'8BFF7OdC[2 	3 	'8"ISz+ 	, 	'84L4+/ 	0
 	$Zt<=$j*%=tTJK$j*%=&*RVVG_tSkC 	D  
	'CD! .,,. .))(K@%c2f#NF#)::DL. ..
 DM4+?dKDND,@tLDND,@!%'
	'  		'CD07Nf6X;M6N .,,. .))(K@%c2f#NF#)::DL. ..
 DM4+?dKDND,@!%'		'. . O. .s$   9Q.
Q;"Q; 9R .Q8 R	N)rX   rY   rZ   pytestmark	fail_slowrw   r   r   r!   r   r\   r\   @   sH    [[1' ': [[2O' O'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d Zd Zy	)
TestNewToOldSLSQPrc   r   n_electrons)gEGg}_uG?go?ghSg	 )?g8M)տr   c           	      t   | j                   D ]  }t        j                         5  t        j                  dt               t        |j                  |j                  | j                  |j                  |j                        }d d d        t        j                  |j                  d        y # 1 sw Y   .xY w)Nr-   r/      )decimal)list_of_problemsr9   r:   rq   r<   r   r   r=   r0   r1   constrr   r   x_opt)r@   probrv   s      r   test_list_of_problemsz'TestNewToOldSLSQP.test_list_of_problems   s    )) 		GD((* ;%%h<!$((DGG)-)-.2kk;; &fhh

AF		G; ;s   AB..B7	c           	      J   d }t        d ddgddg      }d}t        j                         5  t        j                  ddt               t        j                  t              5  t        |d	| j                  ||
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 H    | 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                 4    | 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   r7   r3   r   r   r   r-   r.   ra   r/   )
r   r9   r:   r;   r<   r   warnsr   r   r0   )r@   r   rA   r>   s       r   test_warn_mixed_constraintsz-TestNewToOldSLSQP.test_warn_mixed_constraints   s    	L"#J$'9sCj:0$$& 	M##H.A;Oo. M#y!%TtMM	M 	MM M	M 	Ms#   5B!B<BB	BB"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 }|j                  t        d
 dt        j                  d             |j                  t        d dt        j                  t                            |j                  t        d dt        j                  d             |j                  t        d dt        j                  d             |j                  t        g d	dt        j                  d             |D ]>  }t        j                  t              5  t	        ||| j                   ||       d d d        @ y # 1 sw Y   KxY w)Nc                 H    | 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   r/   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)r0   r   rN   rp   r   r   r   r   ro   r	   r   r   r   )r@   r   r=   r>   rA   rB   rt   s          r   test_warn_ignored_optionsz+TestNewToOldSLSQP.test_warn_ignored_options   s   	L;;'!4DD">1bff=sBt{{"6 	#	1bff5sBt{{"6 	#'(91bff6:< 	='(91bff-1V5 	6'(91bffACE 	F'(91bff=?A 	B$Y266379 	: 	LCo. Lb $DdLL L	LL Ls   =G##G,	N)rX   rY   rZ   r0   r   elecrN   rO   r   r   brockr   r   r   r   r   r   r   r   r   r   r!   r   r   r      sy    FAD A BDJEa&EK	&("&((*GM%Lr!   r   c                   l    e Zd ZdZ ed       ed      gZej                  j                  d        Z	y)TestNewToOldCobylard   r   r      c           	         | j                   D ]  }t        j                         5  t        j                  dt               t        |j                  |j                  d|j                  |j                        }t        |j                  |j                  | j                  |j                  |j                        }d d d        t        j                  j                  d        y # 1 sw Y   .xY w)Nr-   r   r/   r   r5   )r   r9   r:   rq   r<   r   r   r=   r1   r   r0   r   )r@   r   truthrv   s       r   r   z(TestNewToOldCobyla.test_list_of_problems  s     )) 	>D((* 	;%%h< 477(6(,-1[[: "$((DGG)-)-.2kk;	; FJJ		=	>	; 	;s   BC&&C/	N)
rX   rY   rZ   r0   r   r   r   r   slowr   r   r!   r   r   r     s?    F ++
 [[> >r!   r   )__doc__r9   numpyrN   numpy.testingr   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      sg     , = =A A A
,3 ,3^o' o'dOL OLd> >r!   