
    e!h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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    w/var/www/html/diagnosisapp-backend/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#   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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(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                       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 ]H  }t               5 }	|	j                  t               t        ||||      }
|
j                  ||<   d d d        J t        |d   |d   d       t        |d   |d   d       |d	k(  s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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                 $    | 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@   sb   	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#q(X^0D%)+	+. .s   :4D==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$%       |dk(  s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$%       |dk(  st        |d'   |d#   d$%        y # 1 sw Y   2x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#   r4   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   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?   rq   r!   r<   conerr   rs   rt   ru   r1   rA   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! .&( .CJJ{+%c2f#NF#)::DL. ..
 DM4+?dKDND,@tL#q(X^0D%)+	+  
	+CD07Nf6X;M6N .&( .CJJ{+%c2f#NF#)::DL. ..
 DM4+?dK#q(X^0D%)+
	+. . O. .s$   4Q
Q)Q)-4Q.Q&.Q7N)rX   rY   rZ   pytestmark	fail_slowrw   r   r   r#   r    r\   r\   ?   sH    [[1+ +< [[2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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   rv   s       r    test_list_of_problemsz'TestNewToOldSLSQP.test_list_of_problems   s    )) 		GD"$ ;

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

AF		G; ;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-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   ss    	L"#J$'9sCj:0  	LCJJ{$78(C $DdL	L 	L 	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
    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   sz   	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(C $Dd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AD A BDJEa&EK	&("&((*G [[
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	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   truthrv   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      sk    M M = =A A A
,3 ,3^r+ r+jOL OLd> >r#   