
    tKg/                         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y)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y)TestOldToNew)   r   )r   Nr   trust-constrc                 V   d }dd ddd ddd df}t               5 }|j                  t        d       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    s/home/alanp/www/video.onchill/myenv/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/A2Er#   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(2BQ2Fr#   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#   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(EF(FG(FGI  CJJ{$783"&))?C ! 	Sz540 ! s   ABB(c                 >   d }dd dd d}t               5 }|j                  t        d       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/   r0   g>[p?gr7?g,,?r9   r>   s        r    test_constraint_dictionary_2z)TestOldToNew.test_constraint_dictionary_2#   s    	7: >@  CJJ{$783"&))?C ! 		:67!34 ! s   ABBc                 \   d }dd dt        d dd      g}t               5 }|j                  t        d       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>.fun2   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>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dQqTkr#   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(EF#$91a@B  CJJ{$783"&))?C ! 	d|$7T2 ! s   AB""B+N)	__name__
__module____qualname__r<   r=   r1   rC   rR   rW   r   r#   r    r   r      s     	B!DF153r#   r   c                   T    e Zd Zd Zej
                  j                  d      d        Zy)TestNewToOldc           	         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 ]H  }t               5 }|j                  t               t        ||||      }	|	j                  ||<   d d d        J 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>.funB   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>I   s    qta!A$h7Jr#   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                 $    | 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(?Q3Fr#   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?   r!   r<   conimethodsconfunsr1   rA   results
             r     test_multiple_constraint_objectsz-TestNewToOld.test_multiple_constraint_objectsA   sD   	L? 	f-JK()>AFH 	I 	%j"bff=()>AFH 	I 	()F266R()>AFH 	I CD!&(CJJ{+%c2f#NF#)::DL )( "
 DM4+?dKDND,@tLDND,@tL  )(s   :4D77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 ]H  }t               5 }	|	j                  t               t        ||||!      }
|
j                  ||<   d d d        J t        |d"   |d#   d$%       t        |d&   |d#   d$%       t        |d'   |d#   d$%        |D ]  }i }|D cg c]
  }|d&k7  s	| c}D ]H  }t               5 }	|	j                  t               t        ||||!      }
|
j                  ||<   d d d        J t        |d"   |d#   d$%       t        |d'   |d#   d$%        y # 1 sw Y   &x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>.fun_   r`   r#   ra   rb   c                     | d   | d   z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>h       !A$1+r#   r   c                     | d   | d   z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>i   r{   r#   g\(\?c                     | d   | d   z
  S rH   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>j   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>o   !    qtad{AaD1Q4K8r#   c                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>r   r   r#   r4   c                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>u   r   r#   c                 .    | d   | d   z
  | d   | d   z
  gS r   r   r   s    r    r'   zATestNewToOld.test_individual_constraint_objects.<locals>.<lambda>x   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   r8   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   rn   rc   r   MbP?r6   rd   re   )ro   r   rN   rO   rp   r   r   r:   r;   r
   r!   r   )r?   r!   r<   conerq   rr   rs   rt   r1   rA   ru   s              r    "test_individual_constraint_objectsz/TestNewToOld.test_individual_constraint_objects]   s   	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!&(CJJ{+%c2f#NF#)::DL )( "
 DM4+?dKDND,@tLDND,@tL  CD07Nf6X;M6N&(CJJ{+%c2f#NF#)::DL )( O
 DM4+?dKDND,@tL  )( O((s$   4Q
QQ'4Q"Q"Q+N)rX   rY   rZ   rv   pytestmark	fail_slowr   r   r#   r    r\   r\   ?   s/    M8 [[2MM MM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           	      V   | j                   D ]  }t               5 }|j                  t               t	        |j
                  |j                  | j                  |j                  |j                        }d d d        t        j                  |j                  d        y # 1 sw Y   .xY w)Nr0      )decimal)list_of_problemsr   r:   r;   r
   r!   r<   r1   r2   constrr   r   x_opt)r?   probrA   ru   s       r    test_list_of_problemsz'TestNewToOldSLSQP.test_list_of_problems   ss    ))D"$

;'!$((DGG)-)-.2kk; % &fhh

AF *$$s   ABB(	c           
          d }t        d ddgddg      }d}t               5 }|j                  t        d       t	        t
        t        |d| j                  ||	       d d d        y # 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-Jr#   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   sf    	L"#J$'9sCj:0 CJJ{$78(C $DdL !  s   ;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 }|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        t        t        ||| j                   ||       ( y )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    QqTr#   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   rs   s          r    test_warn_ignored_optionsz+TestNewToOldSLSQP.test_warn_ignored_options   ss   	L;;'!4DD">1bff=sBt{{"6 	#	1bff5sBt{{"6 	#'(91bff6:< 	='(91bff-1V5 	6'(91bffACE 	F'(91bff=?A 	B$Y266379 	:C(C $DdL r#   N)rX   rY   rZ   r1   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
L$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               5 }|j                  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   r0   r   r6   )r   r   r:   r;   r
   r!   r<   r2   r   r1   r   )r?   r   rA   truthru   s        r    r   z(TestNewToOldCobyla.test_list_of_problems  s     ))D"$

;' 477(6(,-1[[: "$((DGG)-)-.2kk; % FJJ		= *$$s   BCC 	N)
rX   rY   rZ   r1   r   r   r   r   slowr   r   r#   r    r   r      s?    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      sm    M M = =A A A
,3 ,3^lM lM^ML ML`> >r#   