
    bin                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ  G d	 d
      Zd Z  G d de      Z! e!ddgd d g      Z" e!ddgd d g      Z# e!ddgd d g      Z$ G d de      Z% e%dgdgd ejL                  dgdgdgdgdgdgdgdgdgdgg
       ejL                  g d       !      Z' e%d"gdgdg ejL                  dgg       ejL                  dg      !      Z( G d# d$e      Z) e)d%d&gd'd(gd)*      Z* G d+ d,e      Z+ e+d-gd.z  g d/d0*      Z, G d1 d2e      Z- e-d3d3gd4gd5d6g7      Z. G d8 d9e      Z/d:Z0 e1 e2d;gd:z  d<gd:z              Z3 e/e3d=gd7      Z4 G d> d?e      Z5 e5d@gdAz  dB ejl                  dA      dCz
  7      Z7 G dD dEe      Z8 e8d-d-gdFgdGdGg7      Z9 G dH dIe      Z: e:d%dJgdd7      Z;ejx                  j{                  dK      	 	 	 d\dL       Z> G dM dN      Z? G dO dP      Z@ G dQ dR      ZA G dS dT      ZB G dU dV      ZCdW ZDejx                  j                  dX      dY        ZFdZ ZGd[ ZHy)]    N)Pool)assert_allcloseIS_PYPY)raiseswarns)	shgoBoundsminimize_scalarminimizerosen	rosen_der
rosen_hessNonlinearConstraintOptimizeWarning)new_constraint_to_old)SHGO)MaratosTestArgsc                       e Zd Z	 	 ddZy)StructTestFunctionNc                 J    || _         || _        || _        || _        || _        y Nbounds
expected_xexpected_funexpected_xlexpected_funl)selfr   r   r   r   r   s         Z/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/optimize/tests/test__shgo.py__init__zStructTestFunction.__init__   s(    $(&*    )NNN)__name__
__module____qualname__r     r!   r   r   r      s    8<15+r!   r   c                     g }| Dt        | t        t        z        s| f} n	 | D ]  } |j                  d| d        t        |      }|S d }|S )Nineqtypefun)
isinstancetuplelistappend)gconss     r   wrap_constraintsr1      sg    D}!UT\*A 	$AKK !# $	$ T{ K Kr!   c                   (    e Zd Zd Zd Z ee      Zy)StructTest1c                 $    |d   dz  |d   dz  z   S Nr         r%   r   xs     r   fzStructTest1.f-       tqy1Q419$$r!   c                 8    t        j                  | d      dz
   S )Nr   axisg      @npsumr9   s    r   r/   zStructTest1.g0   s    "S())r!   Nr"   r#   r$   r:   r/   r1   r0   r%   r!   r   r3   r3   ,   s    %* ADr!   r3   )   )r   r   r   r7   NNc                   ,    e Zd ZdZd Zd Z ee      Zy)StructTest2zN
    Scalar function with several minima to test all minimiser retrievals
    c                 8    |dz
  t        j                  |      z  S )N   )r@   sinr8   s     r   r:   zStructTest2.fC   s    B"&&)##r!   c                 6    dt        j                  | d      z
  S )N:   r   r=   r?   rB   s    r   r/   zStructTest2.gF   s    BFF11%%%r!   Nr"   r#   r$   __doc__r:   r/   r1   r0   r%   r!   r   rI   rI   >   s    $& ADr!   rI   )r   <   g⡽4$?0_r<g GK@g
]<@gI{_H@gi<&,@g>E@gqŤCQ4@g8$B@go.n:@g^5	>@)
rR   gs8g^V&+6g+?-2g+!/gN|1(gc=C#g^\gNg自ݿr   )r   g      @c                   V    e Zd ZdZd Zd Zd Zd Z eede	j                        ZefZy)StructTest3a  
    Hock and Schittkowski 18 problem (HS18). Hoch and Schittkowski (1981)
    http://www.ai7.uni-bayreuth.de/test_problem_coll.pdf
    Minimize: f = 0.01 * (x_1)**2 + (x_2)**2

    Subject to: x_1 * x_2 - 25.0 >= 0,
                (x_1)**2 + (x_2)**2 - 25.0 >= 0,
                2 <= x_1 <= 50,
                0 <= x_2 <= 50.

    Approx. Answer:
        f([(250)**0.5 , (2.5)**0.5]) = 5.0


    c                 *    d|d   dz  z  |d   dz  z   S )Ng{Gz?r   r6   r7   r%   r8   s     r   r:   zStructTest3.f}   s"    qtk!QqTaK//r!   c                     | d   | d   z  dz
  S )Nr   r7         9@r%   rB   s    r   g1zStructTest3.g1   s    tad{T!!r!   c                 *    | d   dz  | d   dz  z   dz
  S )Nr   r6   r7   rW   r%   rB   s    r   g2zStructTest3.g2   s"    tqy1Q419$t++r!   c                 F    | d   | d   z  dz
  | d   dz  | d   dz  z   dz
  fS )Nr   r7   rW   r6   r%   rB   s    r   r/   zStructTest3.g   s8    tad{T!1Q419qtqy#84#???r!   r   N)r"   r#   r$   rP   r:   rX   rZ   r/   r   r@   inf_StructTest3__nlcr0   r%   r!   r   rT   rT   k   s7    "0",@  1bff-E8Dr!   rT   )r6   2   )r   r^   g'In/@gS[:XL?      @)r   r   r   c                   J    e Zd ZdZd Zd Zd Zd Zd ZeeeefZ	 e
e	      Zy)StructTest4z
    Hock and Schittkowski 11 problem (HS11). Hoch and Schittkowski (1981)

    NOTE: Did not find in original reference to HS collection, refer to
          Henderson (2015) problem 7 instead. 02.03.2016
    c                     |d   dz
  dz  d|d   dz
  dz  z  z   |d   dz  z   d|d   d	z
  dz  z  z   d|d   d
z  z  z   d|d   dz  z  z   |d
   dz  z   d|d   z  |d
   z  z
  d|d   z  z
  d|d
   z  z
  S )Nr   
   r6      r7               rE         r%   r8   s     r   r:   zStructTest4.f   s    1q 1!r	a'7#77!A$!)CqtbyQ&&')+adai8:;adai-HJKKK ad(QqT/" %'1I. 12AaD9 	r!   c                 n    d| d   dz  z  d| d   dz  z  z   | d   z   d| d   dz  z  z   d| d   z  z   dz
   S )Nr6   r   rg   r7   rf   rd      r%   rB   s    r   rX   zStructTest4.g1   s^    QqTQYQqTQY.15AaDAIEqt8!" # 	#r!   c                 \    d| d   z  d| d   z  z   d| d   dz  z  z   | d   z   | d   z
  dz
   S )	Nri   r   rg   r7   rc   r6   rf   g     q@r%   rB   s    r   rZ   zStructTest4.g2   sH    QqTA!H$rAaDAI~5!<qtCeKLLr!   c                 V    d| d   z  | d   dz  z   d| d   dz  z  z   d| d   z  z
  dz
   S )	N   r   r7   r6   rE   rd   rj      r%   rB   s    r   g3zStructTest4.g3   sC    adQqTQY&QqTQY6QqTACGHHr!   c                     d| d   dz  z  | d   dz  z   d| d   z  | d   z  z
  d| d   dz  z  z   d| d   z  z   d| d   z  z
   S )	Nrf   r   r6   r7   rg   rd   rh   rE   r%   rB   s    r   g4zStructTest4.g4   sn    QqTQY1*Q1X!_<q1Q419}Lqt8 1Q4i( ) 	)r!   Nr"   r#   r$   rP   r:   rX   rZ   rq   rs   r/   r1   r0   r%   r!   r   ra   ra      s<    #MI) 
RRAADr!   ra   )irc   ri   )gܤ@g$H8?g	޿g0ev@gn8)gk_@/?g0g+?gP{[
E@c                   &    e Zd Zd ZdZ ee      Zy)StructTest5c                    |d   dz    t        j                  t        j                  t        |d   dz  |d   dz   z                     z  |d   t        j                  t        j                  t        |d   |d   dz   z
                    z  z
  S Nr7   g     G@r          @r@   rL   sqrtabsr8   s     r   r:   zStructTest5.f   s~    dTkN266"''#ad3h!A$+.F*G"HIId266"''#adadTk&:";<==>	
r!   NrC   r%   r!   r   rv   rv      s    
 	AADr!   rv   )i i   g g      @gyCy@)r   r   r   c                   *    e Zd ZdZd ZdZ ee      Zy)StructTestLJzZ
    LennardJones objective function. Used to test symmetry constraints
    settings.
    c                    t        d|        |d   | _        t        | j                  dz        }d}t        |dz
        D ]z  }t        |dz   |      D ]f  }d|z  }d|z  }||   ||   z
  }	||dz      ||dz      z
  }
||dz      ||dz      z
  }|	|	z  |
|
z  z   ||z  z   }||z  |z  }|dkD  sY|d|z  dz
  |z  z  }h | |S )	Nzx = r   rg           r7   r6         ?ry   )printNintrange)r   r9   argsksijabxdydzdeduds                 r   r:   zStructTestLJ.f   s   QCja
Oq1u 
	/A1q5!_ 	/EEqTAaD[q1uX!a%(q1uX!a%("WrBw&b0"Wr\8#(S.B..A	/
	/ r!   NrO   r%   r!   r   r~   r~      s    
( 	AADr!   r~   rE   g            @      c                   &    e Zd Zd ZdZ ee      Zy)StructTestSc                 `    |d   dz
  dz  |d   dz
  dz  z   |d   dz
  dz  z   |d   dz
  dz  z   S )Nr         ?r6   r7   rg   r%   r8   s     r   r:   zStructTestS.f   sS    1!QqTCZA$55Q4#:!#$'(tcza&78 	9r!   NrC   r%   r!   r   r   r      s    9 	AADr!   r   )r   ry   rf   r   r   c                   &    e Zd Zd ZdZ ee      Zy)StructTestTablec                 &    |d   dk(  r	|d   dk(  ryy)Nr         @r7   r^   d   r%   r8   s     r   r:   zStructTestTable.f  s    Q43;1Q43;r!   NrC   r%   r!   r   r   r     s     	AADr!   r   r^   r   c                   J    e Zd ZdZd Zd Zd Zd Zd ZeeeefZ	 e
e	      Zy)StructTestInfeasiblez0
    Test function with no feasible domain.
    c                 $    |d   dz  |d   dz  z   S r5   r%   )r   r9   r   s      r   r:   zStructTestInfeasible.f   r;   r!   c                     | d   | d   z   dz
  S Nr   r7   r%   rB   s    r   rX   zStructTestInfeasible.g1#  s    tad{Qr!   c                      | d   | d   z   dz
   S r   r%   rB   s    r   rZ   zStructTestInfeasible.g2&  s    1!q!!r!   c                      | d    | d   z   dz
  S r   r%   rB   s    r   rq   zStructTestInfeasible.g3)  s    !uqt|ar!   c                 "    | d    | d   z   dz
   S r   r%   rB   s    r   rs   zStructTestInfeasible.g4,  s    A$1!""r!   Nrt   r%   r!   r   r   r     s:    %" # 
RRAADr!   r   )rD   r7   
Not a testc
                    t        | j                  | j                  || j                  |||||||	      }
t	        d|
        t        j                  d|
        | j                  7t        j                  j                  |
j                  | j                  ||       | j                  6t        j                  j                  |
j                  | j                  |       | j                  6t        j                  j                  |
j                  | j                  |       | j                   6t        j                  j                  |
j"                  | j                   |       y )N)	r   constraintsniterscallbackminimizer_kwargsoptionssampling_methodworkerszres = rtolatolr   )r   r:   r   r0   r   logginginfor   r@   testingr   r9   r   r*   r   xlr   funl)testr   	test_atolr   r   r   r   r   r   r   ress              r   run_testr   9  s3    tvvt{{499%( 0'.AC
 
F3%.LL6# "


""355$//(1(1 	# 	3
 $


""377#'#4#4(1 	# 	3 #


""366#'#3#3(1 	# 	3 %


""388#'#5#5(1 	# 	3 r!   c                   x    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Zd	 Zd
 Zy)TestShgoSobolTestFunctionsz8
    Global optimisation tests with Sobol sampling:
    c                 "    t        t               y)VMultivariate test function 1:
        x[0]**2 + x[1]**2 with bounds=[(-1, 6), (-1, 6)]Nr   test1_1r   s    r   test_f1_1_sobolz*TestShgoSobolTestFunctions.test_f1_1_sobolb       	r!   c                 "    t        t               y)zUMultivariate test function 1:
         x[0]**2 + x[1]**2 with bounds=[(0, 1), (0, 1)]Nr   test1_2r   s    r   test_f1_2_sobolz*TestShgoSobolTestFunctions.test_f1_2_sobolg  r   r!   c                 .    ddi}t        t        |       y)z_Multivariate test function 1:
        x[0]**2 + x[1]**2 with bounds=[(None, None),(None, None)]dispT)r   Nr   test1_3r   r   s     r   test_f1_3_sobolz*TestShgoSobolTestFunctions.test_f1_3_soboll  s     4.'*r!   c                 "    t        t               y)RUnivariate test function on
        f(x) = (x - 30) * sin(x) with bounds=[(0, 60)]Nr   test2_1r   s    r   test_f2_1_sobolz*TestShgoSobolTestFunctions.test_f2_1_sobolr  r   r!   c                 "    t        t               y)NUnivariate test function on
        f(x) = (x - 30) * sin(x) bounds=[(0, 4.5)]Nr   test2_2r   s    r   test_f2_2_sobolz*TestShgoSobolTestFunctions.test_f2_2_sobolw  r   r!   c                 "    t        t               y)%NLP: Hock and Schittkowski problem 18Nr   test3_1r   s    r   test_f3_sobolz(TestShgoSobolTestFunctions.test_f3_sobol|  s
    r!   c                 0    ddi}t        t        d|       y)?NLP: (High dimensional) Hock and Schittkowski 11 problem (HS11)infty_constraintsFi  r   r   Nr   test4_1r   s     r   test_f4_sobolz(TestShgoSobolTestFunctions.test_f4_sobol  s     '.GW5r!   c                 &    t        t        d       y)NLP: Eggholder, multimodalrQ   )r   Nr   test5_1r   s    r   test_f5_1_sobolz*TestShgoSobolTestFunctions.test_f5_1_sobol  s     	Br!   c                 (    t        t        dd       y)r   rQ   rd   )r   r   Nr   r   s    r   test_f5_2_sobolz*TestShgoSobolTestFunctions.test_f5_2_sobol  s     	Ba(r!   N)r"   r#   r$   rP   r   r   r   r   r   r   pytestmarkslowr   r   r   r%   r!   r   r   r   \  sM    


+

 [[6 6 
)r!   r   c                   D   e Zd ZdZd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Zd	 Zd
 Zd Ze
j                  j#                  d      d        Ze
j                  j'                  d      d        Ze
j                  j'                  d      d        Zy)TestShgoSimplicialTestFunctionsz=
    Global optimisation tests with Simplicial sampling:
    c                 (    t        t        dd       y)r   r7   
simplicialr   r   Nr   r   s    r   test_f1_1_simplicialz4TestShgoSimplicialTestFunctions.test_f1_1_simplicial       	A|<r!   c                 (    t        t        dd       y)zTMultivariate test function 1:
        x[0]**2 + x[1]**2 with bounds=[(0, 1), (0, 1)]r7   r   r   Nr   r   s    r   test_f1_2_simplicialz4TestShgoSimplicialTestFunctions.test_f1_2_simplicial  r   r!   c                 (    t        t        dd       y)z_Multivariate test function 1: x[0]**2 + x[1]**2
        with bounds=[(None, None),(None, None)]rd   r   r   Nr   r   s    r   test_f1_3_simplicialz4TestShgoSimplicialTestFunctions.test_f1_3_simplicial  r   r!   c                 4    ddi}t        t        dd|d       y)r   minimize_every_iterF   ri   r   r   r   r   r   Nr   r   s     r   test_f2_1_simplicialz4TestShgoSimplicialTestFunctions.test_f2_1_simplicial  s!     )%0Cq'!-	/r!   c                 (    t        t        dd       y)r   r7   r   r   Nr   r   s    r   test_f2_2_simplicialz4TestShgoSimplicialTestFunctions.test_f2_2_simplicial  r   r!   c                 (    t        t        dd       y)r   r7   r   r   Nr   r   s    r   test_f3_simplicialz2TestShgoSimplicialTestFunctions.test_f3_simplicial  s    A|<r!   c                 (    t        t        dd       y)r   r7   r   r   Nr   r   s    r   test_f4_simplicialz2TestShgoSimplicialTestFunctions.test_f4_simplicial  r   r!   c                 <    ddd}d}t        t        |d|dd       y)	z&LJ: Symmetry-constrained test functionTsymmetryr   rE   ,  r7   r   r   r   r   r   r   Nr   testLJr   r   r   s      r   test_lj_symmetry_oldz4TestShgoSimplicialTestFunctions.test_lj_symmetry_old  s*    #!dc !-	/r!   c                 D    dgdz  dd}d}t        t        |d|dd	       y
)z&LJ: Symmetry constrained test functionr   rE   Tr  r  r	  r7   r   r
  Nr  r  s      r   test_f5_1_lj_symmetryz5TestShgoSimplicialTestFunctions.test_f5_1_lj_symmetry  s0     !uqy!dc !-	/r!   c                 :    ddgdd}t        t        d|dd       y)	z"Symmetry constrained test functionr   Tr  r   r7   r   r   r   r   r   Nr   r   s     r   test_f5_2_cons_symmetryz7TestShgoSimplicialTestFunctions.test_f5_2_cons_symmetry  s)     !1v! 	C !-	/r!   rc   c                 :    g ddd}t        t        d|dd       y)	z(Asymmetrically constrained test function)r   r   r   rg   Tr  i'  r7   r   r  N)r   test_sr   s     r   test_f5_3_cons_symmetryz7TestShgoSimplicialTestFunctions.test_f5_3_cons_symmetry  s(      ,! 	5 !-	/r!   r   c                     ddfdd}t        t        j                  ddgz  |      }|j                  sJ t	        |j
                  dd	
       t	        |j                  d       y)zOReturn a minimum on a perfectly symmetric problem, based on
            gh10429r   eqc                 4    t        j                  |       z
  S r   )r@   mean)r9   avgs    r   <lambda>zFTestShgoSimplicialTestFunctions.test_f0_min_variance.<locals>.<lambda>  s    rwwqzC/? r!   r(   rE   rF   r   r   r   V瞯<r   N)r   r@   varsuccessr   r*   r9   )r   r0   r   r  s      @r   test_f0_min_variancez4TestShgoSimplicialTestFunctions.test_f0_min_variance  sY     %?@ 266!vh,DA{{{/s#r!   c                     d }dg}t        ||      }t        ||d         }|j                  sJ t        |j                  |j                         t        |j
                  |j
                  d       y)zRReturn a minimum on a perfectly symmetric 1D problem, based on
            gh10538c                     | | dz
  z  | dz
  z  S )Nr   r   r%   rB   s    r   r*   zDTestShgoSimplicialTestFunctions.test_f0_min_variance_1D.<locals>.fun  s    C=AG,,r!   rF   )r   r   ư>)r   N)r   r
   r   r   r*   r9   )r   r*   r   r   refs        r   test_f0_min_variance_1Dz7TestShgoSimplicialTestFunctions.test_f0_min_variance_1D  s^    
	- 3v&c&)4{{{)suu40r!   N)r"   r#   r$   rP   r   r   r   r   r   r  r   r   r   r  r  r  r  	fail_slowr  skipr!  r&  r%   r!   r   r   r     s    =
=
=
/=
= [[= =/// [[2/ / [[l#
$ $
$ [[l#1 $1r!   r   c                   `   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	        Zej                  j                  d
        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j5                  exr ej:                  dk(  d      d        Zd Zej                  jA                  d      d        Z!d Z"d Z#d Z$d Z%d  Z&d! Z'ej                  jQ                  d"      d#        Z)d$ Z*d% Z+ej                  jY                  d&g d'      d(        Z-d) Z.d* Z/y+),TestShgoArgumentsc                 *    t        t        ddd       y)z>Iterative simplicial sampling on TestFunction 1 (multivariate)Nr6   r   r   r   r   r   r   s    r   test_1_1_simpl_iterz%TestShgoArguments.test_1_1_simpl_iter  s    D<Hr!   c                 4    ddi}t        t        dd|d       y)z3Iterative simplicial on TestFunction 2 (univariate)r   FN	   r   r   r   r   s     r   test_1_2_simpl_iterz%TestShgoArguments.test_1_2_simpl_iter  s    (%0D7!-	/r!   c                 *    t        t        ddd       y)z9Iterative Sobol sampling on TestFunction 1 (multivariate)Nr7   sobolr,  r   r   s    r   test_2_1_sobol_iterz%TestShgoArguments.test_2_1_sobol_iter  s    D7Cr!   c                 d   t        t        j                  t        j                  t        j                  ddd      }t
        j                  j                  |j                  t        j                  dd       t
        j                  j                  |j                  t        j                  d       y)z7Iterative Sobol sampling on TestFunction 2 (univariate)Nr7   r2  )r   r   r   r   h㈵>r   r   )r   r   r:   r   r0   r@   r   r   r9   r   r*   r   r   r   s     r   test_2_2_sobol_iterz%TestShgoArguments.test_2_2_sobol_iter  so    799gnn',,G= 	

""355'*<*<4d"S


""377G,@,@t"Lr!   c           
          d }t         t        fD ]P  }t        |j                  |j                  dd|ddi       t        |j                  |j                  dd|ddi       R y)	zKIterative sampling on TestFunction 1 and 2  (multi and univariate)
        c                     t        d       y Nz Local minimization callback testr   rB   s    r   callback_funczATestShgoArguments.test_3_1_disp_simplicial.<locals>.callback_func      45r!   r7   r   r   Tr   r   r   r   r   r   r   r   Nr   r   r   r:   r   r   r<  r   s      r   test_3_1_disp_simplicialz*TestShgoArguments.test_3_1_disp_simplicial  sf    	6 g& 	ADA!-'&$A <'&$A		Ar!   c           
          d }t         t        fD ]P  }t        |j                  |j                  dd|ddi       t        |j                  |j                  dd|ddi       R y	)
zAIterative sampling on TestFunction 1 and 2 (multi and univariate)c                     t        d       y r:  r;  rB   s    r   r<  z<TestShgoArguments.test_3_2_disp_sobol.<locals>.callback_func+  r=  r!   r7   r2  r   Tr>  r   r?  Nr@  rA  s      r   test_3_2_disp_sobolz%TestShgoArguments.test_3_2_disp_sobol(  se    	6 g& 	ADAw'&$A <'&$A		Ar!   c                     t        d dgd      }t        d dg      }t        |j                  |j                         t        |j                  |j                         y)zMUsing `args` used to cause `shgo` to fail; see #14589, #15986,
        #16506c                     | |z  |z   S r   r%   )r9   yzs      r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>8  s    A	 r!   )r   rg   )r7   r6   )funcr   r   c                     d| z  dz   S )Nr6   r7   r%   rB   s    r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>:  s    !a%!) r!   )rJ  r   N)r   r   r*   r9   )r   r   r%  s      r   test_args_gh14589z#TestShgoArguments.test_args_gh145895  sJ     16( +VH=)suu%r!   c                    t        dd      }t        ddgddg      |_        t        |j                  ddg|j
                  |j                  dd|j                        }t        |j                  |j                  d	
       t        dd      }t        ddgddg      |_        t        j                         5  t        j                  dt        t        f       t        |j                  |j                  dd|j
                  |j                  |j                  dd|j
                  d      }t        |j                  |j                  d	
       t        |j                  |j                  dd|j
                  |j                  |j                  |j                   d|j
                  d      }t        |j                  |j                  d	
       ddd       y# 1 sw Y   yxY w)zG
        Checks that using `args` for func, jac and hess works
        r      rd   r   trust-constr)r   rN  )r   r   methodr   jacr$  r   g      $g      $@ignore)rQ  r   r   rR  r   r2  )rJ  r   r   r   r   r   )rQ  r   r   rR  hessN)r   r	   r   r   r*   constrgradr   r9   x_optwarningscatch_warningssimplefilterr   RuntimeWarningr   rT  )r   objres2r   s       r   test_args_gh23517z#TestShgoArguments.test_args_gh23517>  s    c3'RHq!f-
GG#J

::!
 			5c3'T4L3*5
$$& %	9 !! .1 WWzz,#&::!jj88&"  JJ 'C CEE39948WWzz,#&::!jj88HH"  JJ 'C CEE39948K%	9 %	9 %	9s   5DGGc                 T    t         j                  ddd}t        t         dd|d       y)z,Test known function minima stopping criteriar$  T)f_minf_tolr   Nr5  r   r   r   r   r   r   r   r   r   s     r   test_4_1_known_f_minz&TestShgoArguments.test_4_1_known_f_minx  s/     $00 *.0 	DD'!-	/r!   c                 V    t         j                  dddd}t        t         dd|d       y)	z+Test Global mode limiting local evaluationsr$  Tr7   )r`  ra  r   
local_iterNr5  r   rb  rc  r   s     r   test_4_2_known_f_minz&TestShgoArguments.test_4_2_known_f_min  s2     ))#' 	DD'!-	/r!   c           	         t         j                  ddddd}t        t         j                  t         j                  t         j
                  dd|d      }t        j                  j                  |j                  t         j                  d	d	
       y)z8Test Global mode limiting local evaluations for 1D funcsr$  Tr7   Fr`  ra  r   rf  r   Nr2  r   r   r   r   r   r5  r   )r   r   r   r:   r   r0   r@   r   r   r9   r   r   r   r   s      r   test_4_4_known_f_minz&TestShgoArguments.test_4_4_known_f_min  so     ))#'!&( 799gnn',,w#*, 	

""355'*<*<4d"Sr!   c                     t        t        j                  t        j                  t        j                        }t
        j                  j                  |j                  t        j                  dd       y)z;Test Default simplicial sampling settings on TestFunction 1r   r5  r   N
r   r   r:   r   r0   r@   r   r   r9   r   r6  s     r   test_5_1_simplicial_arglessz-TestShgoArguments.test_5_1_simplicial_argless  sA    799gnn',,G


""355'*<*<4d"Sr!   c                     t        t        j                  t        j                  t        j                  d      }t
        j                  j                  |j                  t        j                  dd       y)z6Test Default sobol sampling settings on TestFunction 1r2  r   r   r5  r   Nro  r6  s     r   test_5_2_sobol_arglessz(TestShgoArguments.test_5_2_sobol_argless  sF    799gnn',,#*,


""355'*<*<4d"Sr!   c                 j   ddi}t        t        j                  t        j                  t        j                  |d      }t
        j                  j                  |j                  t        j                  dd       t
        j                  j                  |j                  t        j                  d       y)	:Test that maximum iteration option works on TestFunction 3max_iterr6   r   r   r   r   r5  r   r   Nr   r   r:   r   r0   r@   r   r   r9   r   r*   r   rk  s      r   test_6_1_simplicial_max_iterz.TestShgoArguments.test_6_1_simplicial_max_iter  u    q/799gnn',,"LB


""355'*<*<4d"S


""377G,@,@t"Lr!   c                 j   ddi}t        t        j                  t        j                  t        j                  |d      }t
        j                  j                  |j                  t        j                  dd       t
        j                  j                  |j                  t        j                  d       y)	ru  min_iterr6   r   rw  r5  r   r   Nrx  rk  s      r   test_6_2_simplicial_min_iterz.TestShgoArguments.test_6_2_simplicial_min_iter  rz  r!   c                 `    dD ])  }|t         j                  d}t        t         dd|d       + y)z@Test the minimizer_kwargs arguments for solvers with constraints)COBYLACOBYQASLSQP)rQ  r   r   MbP?r2  r   r   r   r   N)r   r0   r   )r   solverr   s      r   test_7_1_minkwargsz$TestShgoArguments.test_7_1_minkwargs  s;     4 	.F +1/6|| =Wt&6%,.	.r!   c                     ddi}ddi}t        t        j                  t        j                  t        j                  d   ||       y)z'Test the minimizer_kwargs default initsftolr5  r   Tr   )r   r   r   Nr   r   r:   r   r0   )r   r   r   s      r   test_7_2_minkwargsz$TestShgoArguments.test_7_2_minkwargs  s9    "D>4.WYYGLLO.	Ar!   c                     dD ]O  }d }d }|||d}t        j                  d|        t        j                  d       t        t        dd|d	
       Q y)z?Test minimizer_kwargs arguments for solvers without constraints)zNelder-MeadPowellCGBFGS	Newton-CGzL-BFGS-BTNCdoglegz	trust-ncgztrust-exactztrust-krylovc                 \    t        j                  d| d   z  d| d   z  g      j                  S )Nr6   r   r7   )r@   arrayTrB   s    r   rR  z1TestShgoArguments.test_7_3_minkwargs.<locals>.jac  s,    xxQqT1qt8 45777r!   c                 8    t        j                  ddgddgg      S Nr6   r   )r@   r  rB   s    r   rT  z2TestShgoArguments.test_7_3_minkwargs.<locals>.hess  s    xx!Q!Q 011r!   )rQ  rR  rT  z	Solver = zd====================================================================================================r   r  r2  r  N)r   r   r   r   )r   r  rR  rT  r   s        r   test_7_3_minkwargsz$TestShgoArguments.test_7_3_minkwargs  se    ' 	.F82 +1'*(, . LL9VH-.LL#Wt&6%,.	.r!   c                 6    ddd}t        t        d d |d       y )Nr7   T)minhgrdr   r   r   r   r   s     r   test_8_homology_group_diffz,TestShgoArguments.test_8_homology_group_diff  s$    *.0 	Dg!-	/r!   c                 z    t        t        j                  t        j                  t        j                  d          y)'Test single function constraint passingr   rn  Nr  r   s    r   test_9_cons_gzTestShgoArguments.test_9_cons_g  s    WYYGLLODr!   win32z2Failing and fix in PyPy not planned (see gh-18632))reasonc                 n    ddi}d }t        |t        j                  d|      }|j                  dk(  sJ y)r  maxtimer  c                 .    t        j                  d       y)Ng+=r   )timesleeprB   s    r   r:   z0TestShgoArguments.test_10_finite_time.<locals>.f  s    JJur!   rd   )r   r   r7   N)r   r   r   nit)r   r   r:   r   s       r   test_10_finite_timez%TestShgoArguments.test_10_finite_time  s9     e$	 1gnnAw?ww!||r!   c                    ddd}t        t        j                  t        j                  dd|d      }t        j
                  j                  d|j                  d          t        j
                  j                  d|j                  d	          y)
*Test to cover the case where f_lowest == 0r   T)r`  r   rc   Nr2  r   r   r7   )r   r   r:   r   r@   r   assert_equalr9   rk  s      r   test_11_f_min_0z!TestShgoArguments.test_11_f_min_0  sf    !799gnn$"G=


3558,


3558,r!   z no way of currently testing thisc                     ddd}t        t        j                  t        j                  dd|d      }t        j
                  j                  d|j                         y)r  r  r   )r  r`  r7   Nr2  r   )r   r   r:   r   r@   r   r  r*   rk  s      r   test_12_sobol_inf_consz(TestShgoArguments.test_12_sobol_inf_cons  sH     $!799gnn"G=


SWW-r!   c                 V    d }dgdz  }t        ||d      }|j                  dd       y)	z-Test init of high-dimensional sobol sequencesc                      yNr   r%   rB   s    r   r:   z/TestShgoArguments.test_13_high_sobol.<locals>.f      r!   rG   )   r2  r   r6   r^   N)r   sampling_function)r   r:   r   SHGOcs       r   test_13_high_sobolz$TestShgoArguments.test_13_high_sobol  s4    	 !B&Q82&r!   c                 0    ddi}t        t        d|       y)z6Test limited local iterations for a pseudo-global moderf  rf   rQ   r   Nr   r   s     r   test_14_local_iterz$TestShgoArguments.test_14_local_iter  s    #B0r!   c                 4    ddi}t        t        dd|d       y)z9Test minimize every iter options and cover function cacher   Tr7   ri   r2  r   Nr   r   s     r   test_15_min_every_iterz(TestShgoArguments.test_15_min_every_iter   s    ($/AQ!(	*r!   c                 :    ddi}ddi}t        t        d||       y)z:Test disp=True with minimizers that do not support bounds r   TrQ  znelder-meadr   )r   r   r   Nr   )r   capsysr   r   s       r   test_16_disp_bounds_minimizerz/TestShgoArguments.test_16_disp_bounds_minimizer&  s)    4.$m4, 3C	Er!   c                 .    d }t        t        d|       y)=Test the functionality to add custom sampling methods to shgoc                 F    t         j                  j                  | |f      S )N)size)r@   randomuniform)r   ds     r   samplez9TestShgoArguments.test_17_custom_sampling.<locals>.sample0  s    99$$1a&$11r!   rK   r   Nr   )r   r  s     r   test_17_custom_samplingz)TestShgoArguments.test_17_custom_sampling-  s    	2 	B7r!   c                    d }g d}g d}t        t        ||            }t        ||      }t        ||      }t        ||      }|j                  |j                  k(  sJ |j
                  |j
                  k(  sJ |j                  |j                  k(  sJ t        j                  g d      }t        j                  j                  |j                  |       t        j                  j                  |j                  |j                         y )Nc                 H    t        j                  |       j                         S r   )r@   squarerA   rB   s    r   r:   z1TestShgoArguments.test_18_bounds_class.<locals>.f7  s    99Q<##%%r!   )g      r   g      )r   r   r_   )r   r   r   )r-   zipr	   r   nfevmessager   r@   r  r   r   r9   )	r   r:   lbub
bounds_old
bounds_newres_old_boundsres_new_boundsrW  s	            r   test_18_bounds_classz&TestShgoArguments.test_18_bounds_class5  s    	& #b"+&
B^
a,a,""n&9&9999%%)?)????%%)?)????'


"">#3#3U;


"">#3#3^5E5EFr!   rc   c                 L   t        d      5 }t        t        d|j                         ddd       t        t        dt               t        d      5 }t        t        d|j                         ddd       t        t        dt               y# 1 sw Y   fxY w# 1 sw Y   ,xY w)r  r6   rK   )r   r   N)r   r   r   mapr  )r   ps     r   test_19_parallelizationz)TestShgoArguments.test_19_parallelizationI  sx     !W 	3WAEE2	3B,!W 	2Vr1551	22s+	3 	3	2 	2s   BBBB#c                     d }d }dgdz  }d }d }d }d|d	d
d|dd|df}t        ||dd|       t        ||dd|d       y)z0Test that constraints can be passed to argumentsc                    | d   dz    t        j                  t        j                  t        | d   dz  | d   dz   z                     z  | d   t        j                  t        j                  t        | d   | d   dz   z
                    z  z
  S rx   rz   rB   s    r   	eggholderz=TestShgoArguments.test_20_constrained_args.<locals>.eggholderW  s    A$+rvvbggc!A$*!t2L.M&NOOA$rvvbggc!A$!A$+*>&?@AABr!   c                 H    d| d   z  d| d   z  z   d| d   z  z   d| d   z  z   S )	Nǧ8@r   g     :@r7   '   r6   g     @D@rg   r%   rB   s    r   r:   z5TestShgoArguments.test_20_constrained_args.<locals>.f]  s7    1Q4<%!A$,.ad:UQqT\IIr!   r   r   rf   c                 Z    |dz  | d   z  |dz  | d   z  z   d| d   z  z   d| d   z  z   d	z
  S )
Ngffffff@r   gffffff@r7   g333333&@r6   g?rg   rd   r%   )r9   r   s     r   g1_modifiedz?TestShgoArguments.test_20_constrained_args.<locals>.g1_modifiedb  sT    s7QqT>AGadN2TAaD[@3J D  r!   c                     d| d   z  d| d   z  z   d| d   z  z   d| d   z  z   d	z
  d
t        j                  d| d   dz  z  d| d   dz  z  z   d| d   dz  z  z   d| d   dz  z  z         z  z
  S )Nre   r   g'@r7   gfffffD@r6   gJ@rg      gRQ?gQ?gRQ?g     4@gףp=
?)r@   r{   rB   s    r   rZ   z6TestShgoArguments.test_20_constrained_args.<locals>.g2f  s    1Q4$qt)#d1Q4i/$qt);b@1qL4!a</$qtQw,>adAgM r!   c                 6    | d   | d   z   | d   z   | d   z   dz
  S Nr   r7   r6   rg   r%   rB   s    r   h1z6TestShgoArguments.test_20_constrained_args.<locals>.h1n  s+    Q4!A$;1%!,q00r!   r'   )r   )r)   r*   r   r(   r  r	  r7   )r   r   r   r2  )r   r   r   r   N)r   )r   r  r:   r   r  rZ   r  r0   s           r   test_20_constrained_argsz*TestShgoArguments.test_20_constrained_argsT  st    		J !			1  TB+b)+ 	Q#QD9Q#QD$	&r!   c           	      @   d }ddd}ddi}t        |ddgddggd	d
d||       |d   du sJ d|v sJ d }ddgddgddgddgddgg}t        ||dddd      }t        |g d|d      }|j                  sJ t        |j                  |j                         t        |j
                  |j
                  d       t        ||dddiddi      }|j                  sJ t        |j                  |j                         t        |j
                  |j
                  d       y)z|Test that shgo can handle objective functions that return the
        gradient alongside the objective value. Fixes gh-13547c                 ^    t        j                  t        j                  | d            d| z  fS Nr6   )r@   rA   powerrB   s    r   rJ  z2TestShgoArguments.test_21_1_jac_true.<locals>.func~  s$    66"((1a.)1q500r!   r  T)rQ  rR  rR  rD   r7   r6   r   rd   r2  )r   r   r   r   r   r   c                 <    t        j                  | dz        d| z  fS r  r?   rB   s    r   rJ  z2TestShgoArguments.test_21_1_jac_true.<locals>.func  s    66!q&>1q5((r!   r   rg   )r   r   r   )r7   r7   r7   r7   r7   )x0r   rR  r  r   rQ  )r   r   r   r   N)r   r   r   r   r*   r9   )r   rJ  min_kwdsopt_kwdsr   r   r%  s          r   test_21_1_jac_truez$TestShgoArguments.test_21_1_jac_truez  sE   	1 &d34=GaV$#%	
 $&&&   	) q'Aq6B7QFQF;4/6t$DFt!{{{)suu51 4%-w$7!4=* {{{)suu51r!   
derivativerR  rT  hesspc                 r   d }d }d }d }|||d}|||   i}ddi}dg}	t        ||	||	      }
t        |fd
g|	d||}|
j                  sJ t        j                  j                  |
j                  |j                         t        j                  j                  |
j                  |j                         y)zzshgo used to raise an error when passing `options` with 'jac'
        # see gh-12963. check that this is resolved
        c                 6    d| d   z  | d   z  d| d   z  z   dz   S )Nrg   r   r6   rd   r%   rB   s    r   	objectivezATestShgoArguments.test_21_2_derivative_options.<locals>.objective  s*    qt8ad?Q1X-11r!   c                     d| d   z  dz   S )NrE   r   r6   r%   rB   s    r   gradientz@TestShgoArguments.test_21_2_derivative_options.<locals>.gradient  s    qt8a<r!   c                      yNrE   r%   rB   s    r   rT  z<TestShgoArguments.test_21_2_derivative_options.<locals>.hess  r  r!   c                     d|z  S r  r%   )r9   r  s     r   r  z=TestShgoArguments.test_21_2_derivative_options.<locals>.hessp  s    q5Lr!   r  rQ  rP  )ir   r   r   r   )r  r   N)r   r   r   r@   r   r   r*   r9   )r   r  r  r  rT  r  derivative_funcsr   r   r   r   r%  s               r   test_21_2_derivative_optionsz.TestShgoArguments.test_21_2_derivative_options  s    	2	 		 $,TEJ/
;<$n59f7G"$y "aS ";K " " {{{


""377CGG4


""355#%%0r!   c                 @   g d}t         t        d}ddi}t        t        |||      }t	        t        t        j                  d      fddi|}|j                  sJ t        |j                  |j                         t        |j                  |j                  d       y	)
zsEnsure the Hessian gets passed correctly to the local minimizer
        routine. Previous report gh-14533.
        )r   g?r  r   gffffff?r  r  )rR  rT  rQ  r  r  rd   r  r   N)r   r   r   r   r   r@   zerosr   r   r*   r9   )r   r   r   r   r   r%  s         r   test_21_3_hess_options_rosenz.TestShgoArguments.test_21_3_hess_options_rosen  s     D#Z8$k25&3C"$ubhhqk "+ " "{{{)suu51r!   c                    d }dd d}dg}t        ||d|d      }t        |t        j                  d	      |d|
      }|j                  sJ t        |j                  |j                         t        |j                  |j                         y)zwshgo used to raise an error when passing `args` with Sobol sampling
        # see gh-12114. check that this is resolvedc                     | d   |z  S r  r%   )r9   r   s     r   r*   z6TestShgoArguments.test_21_arg_tuple_sobol.<locals>.fun  s    Q419r!   r'   c                     | d   dz
  S r   r%   rB   s    r   r  z;TestShgoArguments.test_21_arg_tuple_sobol.<locals>.<lambda>  s    1 r!   r(   r   rc   )r7   r2  )r   r   r   r7   )r   r   r   N)r   r   r@   r  r   r   r*   r9   )r   r*   r   r   r   r%  s         r   test_21_arg_tuple_sobolz)TestShgoArguments.test_21_arg_tuple_sobol  s}    	 !'/AB3T{#*,sBHHQKT#.0{{{)suu%r!   N)0r"   r#   r$   r-  r0  r3  r7  rB  rE  rL  r^  r   r   r   rd  rg  rl  rp  rs  ry  r}  r  r  r  r  r  xfailr   sysplatformr  r  r(  r  r  r  r  r  r  r  r'  r  r  r  parametrizer  r  r  r%   r!   r   r*  r*    s   I/DMAA&89t [[/ / [[
/ 
/TT
TMM
.A.(/E [[w:3<<7#:G  I
I
- [[?@	. A	.	'1
*E8G( [[2, ,$&L(2T [[\+CD1 E1>2&r!   r*  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestShgoFailuresc                    ddi}t        t        j                  t        j                  dd|d      }t        j
                  j                  d|j                         t        j
                  j                  d|j                         y)z'Test failure on insufficient iterationsmaxiterr6   Nr2  r   Frf   )	r   r   r:   r   r@   r   r  r   tnevrk  s      r   test_1_maxiterzTestShgoFailures.test_1_maxiter  s\    a.799gnn"G= 	

s{{3


388,r!   c                 l    t        t        t        t        j                  t        j
                  d       y)z$Rejection of unknown sampling method	not_Sobolr  N)assert_raises
ValueErrorr   r   r:   r   r   s    r   test_2_samplingz TestShgoFailures.test_2_sampling  s    j$		7>>&1	3r!   c                    ddd}t        t        j                  t        j                  d|d      }t        j
                  j                  d|j                         t        j
                  j                  d|j                         y	)
zoCheck that the routine stops when no minimiser is found
           after maximum specified function evaluationsrc   T)maxfevr   rg   r2  r   r   r   Fre   N)	r   
test_tabler:   r   r@   r   r  r   r  rk  s      r   test_3_1_no_min_pool_sobolz+TestShgoFailures.test_3_1_no_min_pool_sobol  sb      ! :<<!2!2a#*,


s{{3


CHH-r!   c                     ddd}t        t        j                  t        j                  d|d      }t        j
                  j                  d|j                         y)	zoCheck that the routine stops when no minimiser is found
           after maximum specified sampling evaluationsrc   Tmaxevr   rg   r   r  FN)r   r  r:   r   r@   r   r  r   rk  s      r   test_3_2_no_min_pool_simplicialz0TestShgoFailures.test_3_2_no_min_pool_simplicial  sH     !:<<!2!2a#/1


s{{3r!   c                 T    ddg}t        t        t        t        j                  |       y)zSpecified bounds ub > lb)rE   rg   rg   rd   Nr  r  r   r   r:   r   r   s     r   test_4_1_bound_errz#TestShgoFailures.test_4_1_bound_err  s    &!j$		6:r!   c                 T    ddg}t        t        t        t        j                  |       y)z)Specified bounds are of the form (lb, ub))rg   rd   rd   r  Nr  r   s     r   test_4_2_bound_errz#TestShgoFailures.test_4_2_bound_err  s    V$j$		6:r!   c                     ddd}t        t        j                  t        j                  t        j                  d|d      }t
        j                  j                  d|j                         y)zxEnsures the algorithm terminates on infeasible problems
           after maxev is exceeded. Use infty constraints optionr   Tr  r2  r   r   r   r   FN	r   test_infeasibler:   r   r0   r@   r   r  r   rk  s      r   test_5_1_1_infeasible_sobolz,TestShgoFailures.test_5_1_1_infeasible_sobol  sW      ! ?$$o&<&<.33sG#*, 	

s{{3r!   c                     dddd}t        t        j                  t        j                  t        j                  d|d      }t
        j                  j                  d|j                         y)zEnsures the algorithm terminates on infeasible problems
           after maxev is exceeded. Do not use infty constraints optionr   TF)r  r   r   r2  r%  Nr&  rk  s      r   test_5_1_2_infeasible_sobolz,TestShgoFailures.test_5_1_2_infeasible_sobol"  sZ      (-/ ?$$o&<&<.33sG#*, 	

s{{3r!   c                     ddd}t        t        j                  t        j                  t        j                  d|d      }t
        j                  j                  d|j                         y)z[Ensures the algorithm terminates on infeasible problems
           after maxev is exceeded.i  Fr  r   r   r%  Nr&  rk  s      r   test_5_2_infeasible_simplicialz/TestShgoFailures.test_5_2_infeasible_simplicial/  sW     ! " ?$$o&<&<.33sG#/1 	

s{{3r!   c                     t         j                  dz   ddddd}t         j                  t         j                  f}t         j                  dd|dd	}t        t        t        g|i | y)
z<Test Global mode limiting local evaluations with f* too highry   r$  Tr7   Fri  Nr2  rj  )r   r   r:   r   r0   r   UserWarningr   )r   r   r   kwargss       r   test_6_1_lower_known_f_minz+TestShgoFailures.test_6_1_lower_known_f_min;  si     ))C/#'!&( 		7>>*!($%,	 	k41$1&1r!   c                     ddl mm} g d}fdd_         ||      }t	        |j
                  |j                  j                         y )Nr   )r   r   r   r6   r3  r3  r3  r3  c                 >    xj                   dz  c_          |       S Nr7   )r  )r9   r*   r   s    r   r*   z"TestShgoFailures.test.<locals>.funQ  s    HHMH8Or!   )scipy.optimizer   r   r  r   r9   r*   )r   r   r   resultr*   r   s       @@r   r   zTestShgoFailures.testM  s=    .9	 c6"fhh

CHH-r!   N)r"   r#   r$   r  r  r  r  r!  r#  r(  r*  r,  r0  r   r%   r!   r   r
  r
    s9    -3

.4;
;

44
42$.r!   r
  c                       e Zd Zd Zd Zy)TestShgoReturnsc                     g d}fdd_         t        |      }t        j                  j	                  j                   |j                          y )Nr2  c                 D    xj                   dz  c_         t        |       S r5  r  r   r9   r*   s    r   r*   z3TestShgoReturns.test_1_nfev_simplicial.<locals>.fun`      HHMH8Or!   r   r  r   r@   r   r  r   r   r7  r*   s      @r   test_1_nfev_simplicialz&TestShgoReturns.test_1_nfev_simplicial]  s>    9	 c6"


&++6r!   c                     g d}fdd_         t        |d      }t        j                  j	                  j                   |j                          y )Nr2  c                 D    xj                   dz  c_         t        |       S r5  r<  r=  s    r   r*   z.TestShgoReturns.test_1_nfev_sobol.<locals>.funl  r>  r!   r   r2  r  r?  r@  s      @r   test_1_nfev_sobolz!TestShgoReturns.test_1_nfev_soboli  s@    9	 c67;


&++6r!   N)r"   r#   r$   rA  rD  r%   r!   r   r9  r9  \  s    
7
7r!   r9  c                     d } t        | dgdg      }t        |t        j                  ddg            }t	        t
        ddg|d      }t        j                  t        j                  |j                  dz        dk\        sJ t        j                  t        j                  |j                  dz        d	k        sJ |j                  sJ y )
Nc                 ^    t        j                  |       } t        j                  | dz        gS r  r@   asarrayrA   rB   s    r   quadz$test_vector_constraint.<locals>.quadx  $    JJqMqAvr!   g@rg   r   r  r2  rr  r6   r   )
r   r   r@   r  r   r   allrA   r9   r   )rI  nlcoldcr   s       r   test_vector_constraintrN  v  s      dSEA3
/C bhhSz&:;D
uw(dG
TC66"&&#%%!$+,,,66"&&#%%A&#-...;;;r!   zignore:delta_gradc                  `   d } t        | dgdg      }ddi}t        t        ddg|d|      }t        j                  t        j
                  |j                  d	z        dk\        sJ t        j                  t        j
                  |j                  d	z        d
k        sJ |j                  sJ y )Nc                 ^    t        j                  |       } t        j                  | dz        gS r  rG  rB   s    r   rI  ztest_trust_constr.<locals>.quad  rJ  r!   g@rg   rQ  rP  r  r2  )r   r   r   r6   r   )r   r   r   r@   rK  rA   r9   r   )rI  rL  r   r   s       r   test_trust_constrrQ    s      dSEA3
/C .1 	')C 66"&&#%%!$+,,,66"&&#%%A&#-...;;;r!   c                     dgdz  } d }t        |dd      }t        t        | |      }t        t	        j
                  |j                        d       d }d|d}t        t        | |      }t        t	        j
                  |j                        d       d	gd
z  } d }d|d}t        d | |d      }t        t	        j
                  |j                        d       y )N)g?r   r6   c                     | d   | d   z   S r   r%   rB   s    r   faultyz)test_equality_constraints.<locals>.faulty  s    tad{r!   333333@r  c                     | d   | d   z   dz
  S )Nr   r7   rU  r%   rB   s    r   rT  z)test_equality_constraints.<locals>.faulty  s    tad{S  r!   r  r(   r  rf   c                 6    | d   | d   z   | d   z   | d   z   dz
  S r  r%   rB   s    r   rT  z)test_equality_constraints.<locals>.faulty  s+    tad{QqT!AaD(1,,r!   c                 .    t        j                  |        S r   )r@   prodrB   s    r   r  z+test_equality_constraints.<locals>.<lambda>  s    BGGAJ, r!   r2  )r   r   r   r   )r   r   r   r   r@   rA   r9   )r   rT  rL  r   r   s        r   test_equality_constraintsrZ    s    \AF fc3
/C
uV
5CBFF355M3'!  /K
uV
=CBFF355M3'Z!^F-  /K
	C BFF355M3'r!   c                      d } | dd}dddddd	}t        t        d
gdz  ||      }|j                  d   j                         dk(  sJ |j                  d   d   dk(  sJ y )Nc                 8    t        j                  | dz        dz
  S r  r?   rB   s    r   r0   ztest_gh16971.<locals>.cons  s    vvad|ar!   r'   )r*   r)   r  rd   r   g?)rhobegtolcatol)rQ  r   r  r6   )r   r   rQ  cobylar   r_  )r   r   r   lower)r0   cr   r   s       r   test_gh16971rc    s      f%At<
 	y{<L	A h'--/8;;;i(1T999r!   )	r%   r5  r   NNNNr2  r7   )Ir   r  rX  numpyr@   r  multiprocessingr   numpy.testingr   r   r   r   r  r   r6  r   r	   r
   r   r   r   r   r   r   scipy.optimize._constraintsr   scipy.optimize._shgor   .scipy.optimize.tests.test_minimize_constrainedr   r   r1   r3   r   r   r   rI   r  r   r   rT   r   ra   r   rv   r   r~   r   r-   r  boundsLJr  r   onesr  r   r  r   r'  r   r(  r   r   r   r*  r
  r9  rN  filterwarningsrQ  rZ  rc  r%   r!   r   <module>rm     sP    
      2  1Y Y Y = % J+ + $  gw/"#Q)
ff-"#Q)
lL9"#Q)$  gY",#/ #+"((ZL-8M-7L-8M-8M-7L-8M-8M-8M-8M	,; 	#< %-BHH .H %I!. hZ",$0>"*"((ZL>":$,BHHl^$<	#$ #J gw/",j!9#&$ D i]Q."L#.$  k;7$7#8"&!57
% < TFQJ	*+	X$(6!%	
$  
XL1,"% '
S 0
(  Y	$:+-$),c
4

- 0 'w.@4826) ,9=;?./  D3) 3)tj1 j1Z`& `&Hq. q.j7 74 /0 1,(B:r!   