
    tKg\                        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 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jD                  dgdgdgdgdgdgdgdgdgdgg
       ejD                  g d             Z# e!d!gdgdg ejD                  dgg       ejD                  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.d/)      Z( G d0 d1e      Z) e)d2d2gd3gd4d5g6      Z* G d7 d8e      Z+d9Z, e- e.d:gd9z  d;gd9z              Z/ e+e/d<gd6      Z0 G d= d>e      Z1 e1d?gd@z  dA ejd                  d@      dBz
  6      Z3 G dC dDe      Z4 e4d,d,gdEgdFdFg6      Z5 G dG dHe      Z6 e6d$dIgdd6      Z7e
jp                  js                  dJ      	 	 	 d[dK       Z: G dL dM      Z; G dN dO      Z< G dP dQ      Z= G dR dS      Z> G dT dU      Z?dV Z@e
jp                  j                  dW      dX        ZBdY ZCdZ ZDy)\    N)Pool)assert_allcloseIS_PYPY)raiseswarns)shgoBoundsminimize_scalarminimizerosen	rosen_der
rosen_hessNonlinearConstraint)new_constraint_to_old)SHGOc                       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         c/home/alanp/www/video.onchill/myenv/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 }| Ct        | t        t        f      s| f} n	 | D ]  } |j                  d| d        t        |      }|S d }|S )Nineqtypefun)
isinstancetuplelistappend)gconss     r   wrap_constraintsr/      sb    D}!eT]+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r7   s    r   r-   zStructTest1.g.   s    "S())r   Nr    r!   r"   r8   r-   r/   r.   r#   r   r   r1   r1   *   s    %* ADr   r1   )   )r   r   r   r5   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>   sinr6   s     r   r8   zStructTest2.fA   s    B"&&)##r   c                 6    dt        j                  | d      z
  S )N:   r   r;   r=   r@   s    r   r-   zStructTest2.gD   s    BFF11%%%r   Nr    r!   r"   __doc__r8   r-   r/   r.   r#   r   r   rG   rG   <   s    $& ADr   rG   )r   <   g⡽4$?0_r<g GK@g
]<@gI{_H@gi<&,@g>E@gqŤCQ4@g8$B@go.n:@g^5	>@)
rP   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   r4   r5   r#   r6   s     r   r8   zStructTest3.f{   s"    qtk!QqTaK//r   c                     | d   | d   z  dz
  S )Nr   r5         9@r#   r@   s    r   g1zStructTest3.g1~   s    tad{T!!r   c                 *    | d   dz  | d   dz  z   dz
  S )Nr   r4   r5   rU   r#   r@   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   r5   rU   r4   r#   r@   s    r   r-   zStructTest3.g   s8    tad{T!1Q419qtqy#84#???r   r   N)r    r!   r"   rN   r8   rV   rX   r-   r   r>   inf_StructTest3__nlcr.   r#   r   r   rR   rR   i   s7    "0",@  1bff-E8Dr   rR   )r4   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   
   r4      r5               rC         r#   r6   s     r   r8   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 )Nr4   r   re   r5   rd   rb      r#   r@   s    r   rV   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 )	Nrg   r   re   r5   ra   r4   rd   g     q@r#   r@   s    r   rX   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   r5   r4   rC   rb   rh      r#   r@   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 )	Nrd   r   r4   r5   re   rb   rf   rC   r#   r@   s    r   g4zStructTest4.g4   sn    QqTQY1*Q1X!_<q1Q419}Lqt8 1Q4i( ) 	)r   Nr    r!   r"   rN   r8   rV   rX   ro   rq   r-   r/   r.   r#   r   r   r_   r_      s<    #MI) 
RRAADr   r_   )ira   rg   )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 Nr5   g     G@r          @r>   rJ   sqrtabsr6   s     r   r8   zStructTest5.f   s~    dTkN266"''#ad3h!A$+.F*G"HIId266"''#adadTk&:";<==>	
r   NrA   r#   r   r   rt   rt      s    
 	AADr   rt   )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   re           r5   r4         ?rw   )printNintrange)r   r7   argsksijabxdydzdeduds                 r   r8   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   NrM   r#   r   r   r|   r|      s    
( 	AADr   r|   rC   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         ?r4   r5   re   r#   r6   s     r   r8   zStructTestS.f   sS    1!QqTCZA$55Q4#:!#$'(tcza&78 	9r   NrA   r#   r   r   r   r      s    9 	AADr   r   )r   rw   rd   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         @r5   r\   d   r#   r6   s     r   r8   zStructTestTable.f
  s    Q43;1Q43;r   NrA   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 r3   r#   )r   r7   r   s      r   r8   zStructTestInfeasible.f  r9   r   c                     | d   | d   z   dz
  S Nr   r5   r#   r@   s    r   rV   zStructTestInfeasible.g1!  s    tad{Qr   c                      | d   | d   z   dz
   S r   r#   r@   s    r   rX   zStructTestInfeasible.g2$  s    1!q!!r   c                      | d    | d   z   dz
  S r   r#   r@   s    r   ro   zStructTestInfeasible.g3'  s    !uqt|ar   c                 "    | d    | d   z   dz
   S r   r#   r@   s    r   rq   zStructTestInfeasible.g4*  s    A$1!""r   Nrr   r#   r   r   r   r     s:    %" # 
RRAADr   r   )rB   r5   
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   r8   r   r.   r   logginginfor   r>   testingr   r7   r   r(   r   xlr   funl)testr   	test_atolr   r   r   r   r   r   r   ress              r   run_testr   7  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_sobol`       	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_sobole  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_sobolj  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_sobolp  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_sobolu  r   r   c                 "    t        t               y)%NLP: Hock and Schittkowski problem 18Nr   test3_1r   s    r   test_f3_sobolz(TestShgoSobolTestFunctions.test_f3_sobolz  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, multimodalrO   )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   rO   rb   )r   r   Nr   r   s    r   test_f5_2_sobolz*TestShgoSobolTestFunctions.test_f5_2_sobol  s     	Ba(r   N)r    r!   r"   rN   r   r   r   r   r   r   pytestmarkslowr   r   r   r#   r   r   r   r   Z  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   r5   
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)]r5   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)]rb   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   rg   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   r5   r   r   Nr   r   s    r   test_f2_2_simplicialz4TestShgoSimplicialTestFunctions.test_f2_2_simplicial  r   r   c                 (    t        t        dd       y)r   r5   r   r   Nr   r   s    r   test_f3_simplicialz2TestShgoSimplicialTestFunctions.test_f3_simplicial  s    A|<r   c                 (    t        t        dd       y)r   r5   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   rC   ,  r5   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   rC   Tr  r  r  r5   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   r5   r   r   r   r   r   Nr   r   s     r   test_f5_2_cons_symmetryz7TestShgoSimplicialTestFunctions.test_f5_2_cons_symmetry  s)     !1v! 	C !-	/r   rb   c                 :    g ddd}t        t        d|dd       y)	z)Assymmetrically constrained test function)r   r   r   re   Tr  i'  r5   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)r7   avgs    r   <lambda>zFTestShgoSimplicialTestFunctions.test_f0_min_variance.<locals>.<lambda>  s    rwwqzC/?r   r&   rC   rD   r   r   r   V瞯<r   N)r   r>   varsuccessr   r(   r7   )r   r.   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#   r@   s    r   r(   zDTestShgoSimplicialTestFunctions.test_f0_min_variance_1D.<locals>.fun  s    C=AG,,r   rD   )r   r   ư>)r   N)r   r
   r  r   r(   r7   )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"   rN   r   r   r   r   r   r   r   r   r   r  r  r  r  	fail_slowr  skipr  r$  r#   r   r   r   r     s    =
=
=
/=
= [[= =/// [[1/ / [[l#
$ $
$ [[l#1 $1r   r   c                   Z   e 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                  j3                  exr ej8                  dk(  d      d        Zd Ze
j                  j?                  d      d        Z d Z!d Z"d Z#d Z$d Z%d  Z&e
j                  jO                  d!      d"        Z(d# Z)d$ Z*e
j                  jW                  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)Nr4   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)Nr5   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)Nr5   r0  )r   r   r   r   h㈵>r   r   )r   r   r8   r   r.   r>   r   r   r7   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   r@   s    r   callback_funczATestShgoArguments.test_3_1_disp_simplicial.<locals>.callback_func      45r   r5   r   r   Tr   r   r   r   r   r   r   r   Nr   r   r   r8   r   r   r:  r   s      r   test_3_1_disp_simplicialz*TestShgoArguments.test_3_1_disp_simplicial  s_    	6 g&D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 r8  r9  r@   s    r   r:  z<TestShgoArguments.test_3_2_disp_sobol.<locals>.callback_func)  r;  r   r5   r0  r   Tr<  r   r=  Nr>  r?  s      r   test_3_2_disp_sobolz%TestShgoArguments.test_3_2_disp_sobol&  s^    	6 g&DAw'&$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#   )r7   yzs      r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>6  s    A	r   )r   re   )r5   r4   )funcr   r   c                     d| z  dz   S )Nr4   r5   r#   r@   s    r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>8  s    !a%!)r   )rH  r   N)r   r   r(   r7   )r   r   r#  s      r   test_args_gh14589z#TestShgoArguments.test_args_gh145893  sJ     16( +VH=)suu%r   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   Nr3  r   r   r   r   r   r   r   r   r   s     r   test_4_1_known_f_minz&TestShgoArguments.test_4_1_known_f_min<  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"  Tr5   )rL  rM  r   
local_iterNr3  r   rN  rO  r   s     r   test_4_2_known_f_minz&TestShgoArguments.test_4_2_known_f_minG  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"  Tr5   FrL  rM  r   rR  r   Nr0  r   r   r   r   r   r3  r   )r   r   r   r8   r   r.   r>   r   r   r7   r   r   r   r   s      r   test_4_4_known_f_minz&TestShgoArguments.test_4_4_known_f_minT  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   r3  r   N
r   r   r8   r   r.   r>   r   r   r7   r   r4  s     r   test_5_1_simplicial_arglessz-TestShgoArguments.test_5_1_simplicial_arglessc  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 1r0  r   r   r3  r   Nr[  r4  s     r   test_5_2_sobol_arglessz(TestShgoArguments.test_5_2_sobol_arglessh  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_iterr4   r   r   r   r   r3  r   r   Nr   r   r8   r   r.   r>   r   r   r7   r   r(   r   rW  s      r   test_6_1_simplicial_max_iterz.TestShgoArguments.test_6_1_simplicial_max_itern  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)	ra  min_iterr4   r   rc  r3  r   r   Nrd  rW  s      r   test_6_2_simplicial_min_iterz.TestShgoArguments.test_6_2_simplicial_min_iterv  rf  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)methodr   r   MbP?r0  r   r   r   r   N)r   r.   r   )r   solverr   s      r   test_7_1_minkwargsz$TestShgoArguments.test_7_1_minkwargs~  s6     4F +1/6|| =Wt&6%,. 4r   c                     ddi}ddi}t        t        j                  t        j                  t        j                  d   ||       y)z'Test the minimizer_kwargs default initsftolr3  r   Tr   )r   r   r   Nr   r   r8   r   r.   )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 )Nr4   r   r5   )r>   arrayTr@   s    r   jacz1TestShgoArguments.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 Nr4   r   )r>   r  r@   s    r   hessz2TestShgoArguments.test_7_3_minkwargs.<locals>.hess  s    xx!Q!Q 011r   )rn  r  r  z	Solver = zd====================================================================================================r   ro  r0  rp  N)r   r   r   r   )r   rq  r  r  r   s        r   test_7_3_minkwargsz$TestShgoArguments.test_7_3_minkwargs  s`    'F82 +1'*(, . LL9VH-.LL#Wt&6%,.'r   c                 6    ddd}t        t        d d |d       y )Nr5   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   rZ  Nru  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sleepr@   s    r   r8   z0TestShgoArguments.test_10_finite_time.<locals>.f  s    JJur   rb   )r   r   r5   N)r   r   r   nit)r   r   r8   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)rL  r   ra   Nr0  r   r   r5   )r   r   r8   r   r>   r   assert_equalr7   rW  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  rL  r5   Nr0  r   )r   r   r8   r   r>   r   r  r(   rW  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#   r@   s    r   r8   z/TestShgoArguments.test_13_high_sobol.<locals>.f      r   rE   )   r0  r   r4   r\   N)r   sampling_function)r   r8   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 moderR  rd   rO   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   Tr5   rg   r0  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   Trn  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>.sample  s    99$$1a&$11r   rI   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>   squarer?   r@   s    r   r8   z1TestShgoArguments.test_18_bounds_class.<locals>.f  s    99Q<##%%r   )g      r   g      )r   r   r]   )r   r   r~   )r+   zipr	   r   nfevmessager  r>   r  r   r   r7   )	r   r8   lbub
bounds_old
bounds_newres_old_boundsres_new_boundsx_opts	            r   test_18_bounds_classz&TestShgoArguments.test_18_bounds_class  s    	& #b"+&
B^
a,a,""n&9&9999%%)?)????%%)?)????'


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


"">#3#3^5E5EFr   rb   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  r4   rI   )r   r   N)r   r   r   mapr  )r   ps     r   test_19_parallelizationz)TestShgoArguments.test_19_parallelization  sh     !WWAEE2 B,!WVr1551 2s+ W Ws   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 rv   rx   r@   s    r   	eggholderz=TestShgoArguments.test_20_constrained_args.<locals>.eggholder  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     :@r5   '   r4   g     @D@re   r#   r@   s    r   r8   z5TestShgoArguments.test_20_constrained_args.<locals>.f!  s7    1Q4<%!A$,.ad:UQqT\IIr   r   r   rd   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@r5   g333333&@r4   g?re   rb   r#   )r7   r   s     r   g1_modifiedz?TestShgoArguments.test_20_constrained_args.<locals>.g1_modified&  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 )Nrc   r   g'@r5   gfffffD@r4   gJ@re      gRQ?gQ?gRQ?g     4@gףp=
?)r>   ry   r@   s    r   rX   z6TestShgoArguments.test_20_constrained_args.<locals>.g2*  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   r5   r4   re   r#   r@   s    r   h1z6TestShgoArguments.test_20_constrained_args.<locals>.h12  s+    Q4!A$;1%!,q00r   r%   )r   )r'   r(   r   r&   r  r  r5   )r   r   r   r0  )r   r   r   r   N)r   )r   r  r8   r   r  rX   r  r.   s           r   test_20_constrained_argsz*TestShgoArguments.test_20_constrained_args  st    		J !			1  TB+b)+ 	Q#QD9Q#QD$	&r   c           
      L   d }t        |ddgddggddddd	d
       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       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 Nr4   )r>   r?   powerr@   s    r   rH  z2TestShgoArguments.test_21_1_jac_true.<locals>.funcB  s$    66"((1a.)1q500r   rB   r5   r4   r   rb   r0  rm  T)rn  r  )r   r   r   r   r   c                 <    t        j                  | dz        d| z  fS r  r=   r@   s    r   rH  z2TestShgoArguments.test_21_1_jac_true.<locals>.funcN  s    66!q&>1q5((r   r   re   )r   r   r   )r5   r5   r5   r5   r5   )x0r   r  r  r   N)r   r   r  r   r(   r7   )r   rH  r   r   r#  s        r   test_21_1_jac_truez$TestShgoArguments.test_21_1_jac_true>  s    	1 	GaV$#(/=	
	) q'Aq6B7QFQF;4/6t$DFt!{{{)suu51r   
derivativer  r  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 )Nre   r   r4   rb   r#   r@   s    r   	objectivezATestShgoArguments.test_21_2_derivative_options.<locals>.objectivea  s*    qt8ad?Q1X-11r   c                     d| d   z  dz   S )NrC   r   r4   r#   r@   s    r   gradientz@TestShgoArguments.test_21_2_derivative_options.<locals>.gradientd  s    qt8a<r   c                      yNrC   r#   r@   s    r   r  z<TestShgoArguments.test_21_2_derivative_options.<locals>.hessg  r  r   c                     d|z  S r  r#   )r7   r  s     r   r  z=TestShgoArguments.test_21_2_derivative_options.<locals>.hesspj  s    q5Lr   r  rn  trust-constr)ir   r   r   r   )r  r   N)r   r   r  r>   r   r   r(   r7   )r   r  r  r  r  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  )r  r  rn  r{  r  rb   r  r   N)r   r   r   r   r   r>   zerosr  r   r(   r7   )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#   )r7   r   s     r   r(   z6TestShgoArguments.test_21_arg_tuple_sobol.<locals>.fun  s    Q419r   r%   c                     | d   dz
  S r   r#   r@   s    r   r  z;TestShgoArguments.test_21_arg_tuple_sobol.<locals>.<lambda>  s    1r   r&   r   ra   )r5   r0  )r   r   r   r5   )r   r   r   N)r   r   r>   r  r  r   r(   r7   )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)/r    r!   r"   r+  r.  r1  r5  r@  rC  rJ  r   r   r   rP  rS  rX  r\  r_  re  ri  rr  rv  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& [[/ / [[
/ 
/TT
TMM
.A.(/E [[w:3<<7#:G  I
I
- [[?@	. A	.	'1
*E8G( [[1, ,$&L2: [[\+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maxiterr4   Nr0  r   Frd   )	r   r   r8   r   r>   r   r  r  tnevrW  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   r8   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 evaluationsra   T)maxfevr   re   r0  r   r   r   Frc   N)	r   
test_tabler8   r   r>   r   r  r  r  rW  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 evaluationsra   Tmaxevr   re   r   r  FN)r   r  r8   r   r>   r   r  r  rW  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)rC   re   re   rb   Nr   r  r   r   r8   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))re   rb   rb   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	  r0  r   r   r   r   FN	r   test_infeasibler8   r   r.   r>   r   r  r  rW  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   r0  r  Nr  rW  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  rW  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 highrw   r"  Tr5   FrU  Nr0  rV  )r   r   r8   r   r.   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   r4   r"  r"  r"  r"  c                 >    xj                   dz  c_          |       S Nr5   )r  )r7   r(   r   s    r   r(   z"TestShgoFailures.test.<locals>.fun  s    HHMH8Or   )scipy.optimizer   r   r  r   r7   r(   )r   r   r   resultr(   r   s       @@r   r   zTestShgoFailures.test  s=    .9	 c6"fhh

CHH-r   N)r    r!   r"   r  r  r  r  r  r  r  r  r  r  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 )Nr!  c                 D    xj                   dz  c_         t        |       S r$  r  r   r7   r(   s    r   r(   z3TestShgoReturns.test_1_nfev_simplicial.<locals>.fun      HHMH8Or   r   r  r   r>   r   r  r   r   r&  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 )Nr!  c                 D    xj                   dz  c_         t        |       S r$  r+  r,  s    r   r(   z.TestShgoReturns.test_1_nfev_sobol.<locals>.fun#  r-  r   r   r0  r  r.  r/  s      @r   test_1_nfev_sobolz!TestShgoReturns.test_1_nfev_sobol   s@    9	 c67;


&++6r   N)r    r!   r"   r0  r3  r#   r   r   r(  r(    s    
7
7r   r(  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>   asarrayr?   r@   s    r   quadz$test_vector_constraint.<locals>.quad/  $    JJqMqAvr   g@re   r   r  r0  r^  r4   r   )
r   r   r>   r  r   r   allr?   r7   r  )r8  nlcoldcr   s       r   test_vector_constraintr=  -  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  r6  r@   s    r   r8  ztest_trust_constr.<locals>.quad>  r9  r   g@re   rn  r  r  r0  )r   r   r   r4   r   )r   r   r   r>   r:  r?   r7   r  )r8  r;  r   r   s       r   test_trust_constrr@  <  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   r4   c                     | d   | d   z   S r   r#   r@   s    r   faultyz)test_equality_constraints.<locals>.faultyW  s    tad{r   333333@r  c                     | d   | d   z   dz
  S )Nr   r5   rD  r#   r@   s    r   rC  z)test_equality_constraints.<locals>.faulty^  s    tad{S  r   r  r&   r  rd   c                 6    | d   | d   z   | d   z   | d   z   dz
  S r  r#   r@   s    r   rC  z)test_equality_constraints.<locals>.faultyg  s+    tad{QqT!AaD(1,,r   c                 .    t        j                  |        S r   )r>   prodr@   s    r   r  z+test_equality_constraints.<locals>.<lambda>m  s    BGGAJ,r   r0  )r   r   r   r   )r   r   r   r   r>   r?   r7   )r   rC  r;  r   r   s        r   test_equality_constraintsrI  S  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=   r@   s    r   r.   ztest_gh16971.<locals>.consu  s    vvad|ar   r%   )r(   r'   rk  rb   r   g?)rhobegtolcatol)rn  r   r  r4   )r   r   rn  cobylar   rN  )r   r   r   lower)r.   cr   r   s       r   test_gh16971rR  t  s      f%At<
 	y{<L	A h'--/8;;;i(1T999r   )	r#   r3  r   NNNNr0  r5   )Er   r  numpyr>   r  multiprocessingr   numpy.testingr   r   r   r   r   r   r%  r   r	   r
   r   r   r   r   r   scipy.optimize._constraintsr   scipy.optimize._shgor   r   r/   r1   r   r   r   rG   r  r   r   rR   r   r_   r   rt   r   r|   r   r+   r  boundsLJr
  r   onesr  r   r  r   r  r   r&  r   r   r   r(  r  r(  r=  filterwarningsr@  rI  rR  r#   r   r   <module>r[     sJ    
     2  1H H H = %+ + $  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Y& Y&zq. q.j7 74 /0 1,(B:r   