
    >qjդ                        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 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jH                  dgdgdgdgdgdgdgdgdgdgg
       ejH                  g d       !      Z% e#d"gdgdg ejH                  dgg       ejH                  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:Z. e/ e0d;gd:z  d<gd:z              Z1 e-e1d=gd7      Z2 G d> d?e      Z3 e3d@gdAz  dB ejh                  dA      dCz
  7      Z5 G dD dEe      Z6 e6d-d-gdFgdGdGg7      Z7 G dH dIe      Z8 e8d%dJgdd7      Z9e	jt                  jw                  dK      	 	 	 d\dL       Z< G dM dN      Z= G dO dP      Z> G dQ dR      Z? G dS dT      Z@ G dU dV      ZAdW ZBe	jt                  j                  dX      dY        ZDdZ ZEd[ ZFy)]    N)Pool)assert_allclose)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         ^/opt/rentech/trading_bot/.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_constraintsr0      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r8   s    r   r.   zStructTest1.g/   s    "S())r    Nr!   r"   r#   r9   r.   r0   r/   r$   r    r   r2   r2   +   s    %* ADr    r2   )   )r   r   r   r6   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?   sinr7   s     r   r9   zStructTest2.fB   s    B"&&)##r    c                 6    dt        j                  | d      z
  S )N:   r   r<   r>   rA   s    r   r.   zStructTest2.gE   s    BFF11%%%r    Nr!   r"   r#   __doc__r9   r.   r0   r/   r$   r    r   rH   rH   =   s    $& ADr    rH   )r   <   g⡽4$?0_r<g GK@g
]<@gI{_H@gi<&,@g>E@gqŤCQ4@g8$B@go.n:@g^5	>@)
rQ   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   r5   r6   r$   r7   s     r   r9   zStructTest3.f|   s"    qtk!QqTaK//r    c                     | d   | d   z  dz
  S )Nr   r6         9@r$   rA   s    r   g1zStructTest3.g1   s    tad{T!!r    c                 *    | d   dz  | d   dz  z   dz
  S )Nr   r5   r6   rV   r$   rA   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   r6   rV   r5   r$   rA   s    r   r.   zStructTest3.g   s8    tad{T!1Q419qtqy#84#???r    r   N)r!   r"   r#   rO   r9   rW   rY   r.   r   r?   inf_StructTest3__nlcr/   r$   r    r   rS   rS   j   s7    "0",@  1bff-E8Dr    rS   )r5   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   
   r5      r6               rD         r$   r7   s     r   r9   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 )Nr5   r   rf   r6   re   rc      r$   rA   s    r   rW   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 )	Nrh   r   rf   r6   rb   r5   re   g     q@r$   rA   s    r   rY   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   r6   r5   rD   rc   ri      r$   rA   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 )	Nre   r   r5   r6   rf   rc   rg   rD   r$   rA   s    r   g4zStructTest4.g4   sn    QqTQY1*Q1X!_<q1Q419}Lqt8 1Q4i( ) 	)r    Nr!   r"   r#   rO   r9   rW   rY   rp   rr   r.   r0   r/   r$   r    r   r`   r`      s<    #MI) 
RRAADr    r`   )irb   rh   )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 Nr6   g     G@r          @r?   rK   sqrtabsr7   s     r   r9   zStructTest5.f   s~    dTkN266"''#ad3h!A$+.F*G"HIId266"''#adadTk&:";<==>	
r    NrB   r$   r    r   ru   ru      s    
 	AADr    ru   )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   rf           r6   r5         ?rx   )printNintrange)r   r8   argsksijabxdydzdeduds                 r   r9   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    NrN   r$   r    r   r}   r}      s    
( 	AADr    r}   rD   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         ?r5   r6   rf   r$   r7   s     r   r9   zStructTestS.f   sS    1!QqTCZA$55Q4#:!#$'(tcza&78 	9r    NrB   r$   r    r   r   r      s    9 	AADr    r   )r   rx   re   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         @r6   r]   d   r$   r7   s     r   r9   zStructTestTable.f  s    Q43;1Q43;r    NrB   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 r4   r$   )r   r8   r   s      r   r9   zStructTestInfeasible.f  r:   r    c                     | d   | d   z   dz
  S Nr   r6   r$   rA   s    r   rW   zStructTestInfeasible.g1"  s    tad{Qr    c                      | d   | d   z   dz
   S r   r$   rA   s    r   rY   zStructTestInfeasible.g2%  s    1!q!!r    c                      | d    | d   z   dz
  S r   r$   rA   s    r   rp   zStructTestInfeasible.g3(  s    !uqt|ar    c                 "    | d    | d   z   dz
   S r   r$   rA   s    r   rr   zStructTestInfeasible.g4+  s    A$1!""r    Nrs   r$   r    r   r   r     s:    %" # 
RRAADr    r   )rC   r6   
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   r9   r   r/   r   logginginfor   r?   testingr   r8   r   r)   r   xlr   funl)testr   	test_atolr   r   r   r   r   r   r   ress              r   run_testr   8  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_sobola       	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_sobolf  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_sobolk  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_sobolq  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_sobolv  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, multimodalrP   )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   rP   rc   )r   r   Nr   r   s    r   test_f5_2_sobolz*TestShgoSobolTestFunctions.test_f5_2_sobol  s     	Ba(r    N)r!   r"   r#   rO   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   r6   
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)]r6   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)]rc   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   rh   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   r6   r   r   Nr   r   s    r   test_f2_2_simplicialz4TestShgoSimplicialTestFunctions.test_f2_2_simplicial  r   r    c                 (    t        t        dd       y)r   r6   r   r   Nr   r   s    r   test_f3_simplicialz2TestShgoSimplicialTestFunctions.test_f3_simplicial  s    A|<r    c                 (    t        t        dd       y)r   r6   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   rD   ,  r6   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   rD   Tr  r  r  r6   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   r6   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(Asymmetrically constrained test function)r   r   r   rf   Tr  i'  r6   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)r8   avgs    r   <lambda>zFTestShgoSimplicialTestFunctions.test_f0_min_variance.<locals>.<lambda>  s    rwwqzC/? r    r'   rD   rE   r   r   r   V瞯<r   N)r   r?   varsuccessr   r)   r8   )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$   rA   s    r   r)   zDTestShgoSimplicialTestFunctions.test_f0_min_variance_1D.<locals>.fun  s    C=AG,,r    rE   )r   r   ư>)r   N)r   r	   r  r   r)   r8   )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#   rO   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d Zd Zej                  j9                  d      d        Zd Zd Zd Z d Z!d Z"d Z#ej                  jI                  d       d!        Z%d" Z&d# Z'ej                  jQ                  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)Nr5   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)Nr6   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)Nr6   r1  )r   r   r   r   h㈵>r   r   )r   r   r9   r   r/   r?   r   r   r8   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   rA   s    r   callback_funczATestShgoArguments.test_3_1_disp_simplicial.<locals>.callback_func      45r    r6   r   r   Tr   r   r   r   r   r   r   r   Nr   r   r   r9   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 r9  r:  rA   s    r   r;  z<TestShgoArguments.test_3_2_disp_sobol.<locals>.callback_func*  r<  r    r6   r1  r   Tr=  r   r>  Nr?  r@  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$   )r8   yzs      r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>7  s    A	 r    )r   rf   )r6   r5   )funcr   r   c                     d| z  dz   S )Nr5   r6   r$   rA   s    r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>9  s    !a%!) r    )rI  r   N)r   r   r)   r8   )r   r   r$  s      r   test_args_gh14589z#TestShgoArguments.test_args_gh145894  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      rc   r   trust-constr)r   rM  )r   r   methodr   jacr#  r   g      $g      $@ignore)rP  r   r   rQ  r   r1  )rI  r   r   r   r   r   )rP  r   r   rQ  hessN)r   r   r   r
   r)   constrgradr   r8   x_optwarningscatch_warningssimplefilterr   RuntimeWarningr   rS  )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   Nr4  r   r   r   r   r   r   r   r   r   s     r   test_4_1_known_f_minz&TestShgoArguments.test_4_1_known_f_minw  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#  Tr6   )r_  r`  r   
local_iterNr4  r   ra  rb  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#  Tr6   Fr_  r`  r   re  r   Nr1  r   r   r   r   r   r4  r   )r   r   r   r9   r   r/   r?   r   r   r8   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   r4  r   N
r   r   r9   r   r/   r?   r   r   r8   r   r5  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 1r1  r   r   r4  r   Nrn  r5  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_iterr5   r   r   r   r   r4  r   r   Nr   r   r9   r   r/   r?   r   r   r8   r   r)   r   rj  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)	rt  min_iterr5   r   rv  r4  r   r   Nrw  rj  s      r   test_6_2_simplicial_min_iterz.TestShgoArguments.test_6_2_simplicial_min_iter  ry  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)rP  r   r   MbP?r1  r   r   r   r   N)r   r/   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ftolr4  r   Tr   )r   r   r   Nr   r   r9   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 )Nr5   r   r6   )r?   arrayTrA   s    r   rQ  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 Nr5   r   )r?   r  rA   s    r   rS  z2TestShgoArguments.test_7_3_minkwargs.<locals>.hess  s    xx!Q!Q 011r    )rP  rQ  rS  z	Solver = zd====================================================================================================r   r  r1  r  N)r   r   r   r   )r   r  rQ  rS  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 )Nr6   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   rm  Nr  r   s    r   test_9_cons_gzTestShgoArguments.test_9_cons_g  s    WYYGLLODr    c                 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sleeprA   s    r   r9   z0TestShgoArguments.test_10_finite_time.<locals>.f  s    JJur    rc   )r   r   r6   N)r   r   r   nit)r   r   r9   r   s       r   test_10_finite_timez%TestShgoArguments.test_10_finite_time  s7    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   rb   Nr1  r   r   r6   )r   r   r9   r   r?   r   assert_equalr8   rj  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 this)reasonc                     ddd}t        t        j                  t        j                  dd|d      }t        j
                  j                  d|j                         y)r  r  r   )r  r_  r6   Nr1  r   )r   r   r9   r   r?   r   r  r)   rj  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$   rA   s    r   r9   z/TestShgoArguments.test_13_high_sobol.<locals>.f      r    rF   )   r1  r   r5   r]   N)r   sampling_function)r   r9   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 modere  re   rP   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   Tr6   rh   r1  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   TrP  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    rJ   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@   rA   s    r   r9   z1TestShgoArguments.test_18_bounds_class.<locals>.f4  s    99Q<##%%r    )g      r   g      )r   r   r^   )r   r   r   )r,   zipr   r   nfevmessager  r?   r  r   r   r8   )	r   r9   lbub
bounds_old
bounds_newres_old_boundsres_new_boundsrV  s	            r   test_18_bounds_classz&TestShgoArguments.test_18_bounds_class2  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  r5   rJ   )r   r   N)r   r   r   mapr  )r   ps     r   test_19_parallelizationz)TestShgoArguments.test_19_parallelizationF  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 rw   ry   rA   s    r   	eggholderz=TestShgoArguments.test_20_constrained_args.<locals>.eggholderT  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     :@r6   '   r5   g     @D@rf   r$   rA   s    r   r9   z5TestShgoArguments.test_20_constrained_args.<locals>.fZ  s7    1Q4<%!A$,.ad:UQqT\IIr    r   r   re   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@r6   g333333&@r5   g?rf   rc   r$   )r8   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 )Nrd   r   g'@r6   gfffffD@r5   gJ@rf      gRQ?gQ?gRQ?g     4@gףp=
?)r?   rz   rA   s    r   rY   z6TestShgoArguments.test_20_constrained_args.<locals>.g2c  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   r6   r5   rf   r$   rA   s    r   h1z6TestShgoArguments.test_20_constrained_args.<locals>.h1k  s+    Q4!A$;1%!,q00r    r&   )r   )r(   r)   r   r'   r  r  r6   )r   r   r   r1  )r   r   r   r   N)r   )r   r  r9   r   r  rY   r  r/   s           r   test_20_constrained_argsz*TestShgoArguments.test_20_constrained_argsQ  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 Nr5   )r?   r@   powerrA   s    r   rI  z2TestShgoArguments.test_21_1_jac_true.<locals>.func{  s$    66"((1a.)1q500r    r  T)rP  rQ  rQ  rC   r6   r5   r   rc   r1  )r   r   r   r   r   r   c                 <    t        j                  | dz        d| z  fS r  r>   rA   s    r   rI  z2TestShgoArguments.test_21_1_jac_true.<locals>.func  s    66!q&>1q5((r    r   rf   )r   r   r   )r6   r6   r6   r6   r6   )x0r   rQ  r  r   rP  )r   r   r   r   N)r   r
   r  r   r)   r8   )r   rI  min_kwdsopt_kwdsr   r   r$  s          r   test_21_1_jac_truez$TestShgoArguments.test_21_1_jac_truew  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rQ  rS  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 )Nrf   r   r5   rc   r$   rA   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 )NrD   r   r5   r$   rA   s    r   gradientz@TestShgoArguments.test_21_2_derivative_options.<locals>.gradient  s    qt8a<r    c                      yNrD   r$   rA   s    r   rS  z<TestShgoArguments.test_21_2_derivative_options.<locals>.hess  r  r    c                     d|z  S r  r$   )r8   r  s     r   r  z=TestShgoArguments.test_21_2_derivative_options.<locals>.hessp  s    q5Lr    r  rP  rO  )ir   r   r   r   )r  r   N)r   r
   r  r?   r   r   r)   r8   )r   r  r  r  rS  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  )rQ  rS  rP  r  r  rc   r  r   N)r   r   r   r   r
   r?   zerosr  r   r)   r8   )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$   )r8   r   s     r   r)   z6TestShgoArguments.test_21_arg_tuple_sobol.<locals>.fun  s    Q419r    r&   c                     | d   dz
  S r   r$   rA   s    r   r  z;TestShgoArguments.test_21_arg_tuple_sobol.<locals>.<lambda>  s    1 r    r'   r   rb   )r6   r1  )r   r   r   r6   )r   r   r   N)r   r
   r?   r  r  r   r)   r8   )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/  r2  r6  rA  rD  rK  r]  r   r   r   rc  rf  rk  ro  rr  rx  r|  r  r  r  r  r  r  r  r'  r  r  r  r  r  r  r  r&  r  r  r  parametrizer  r  r  r$   r    r   r)  r)    sW   I/DMAA&89t [[/ / [[
/ 
/TT
TMM
.A.(/E
- [[?@	. 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maxiterr5   Nr1  r   Fre   )	r   r   r9   r   r?   r   r  r  tnevrj  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   r9   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 evaluationsrb   T)maxfevr   rf   r1  r   r   r   Frd   N)	r   
test_tabler9   r   r?   r   r  r  r  rj  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 evaluationsrb   Tmaxevr   rf   r   r  FN)r   r  r9   r   r?   r   r  r  rj  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)rD   rf   rf   rc   Nr  r  r   r   r9   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))rf   rc   rc   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  r1  r   r   r   r   FN	r   test_infeasibler9   r   r/   r?   r   r  r  rj  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   r1  r   Nr!  rj  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!  rj  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 highrx   r#  Tr6   Frh  Nr1  ri  )r   r   r9   r   r/   r   UserWarningr   )r   r   r   kwargss       r   test_6_1_lower_known_f_minz+TestShgoFailures.test_6_1_lower_known_f_min8  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   r5   r.  r.  r.  r.  c                 >    xj                   dz  c_          |       S Nr6   )r  )r8   r)   r   s    r   r)   z"TestShgoFailures.test.<locals>.funN  s    HHMH8Or    )scipy.optimizer   r   r  r   r8   r)   )r   r   r   resultr)   r   s       @@r   r   zTestShgoFailures.testJ  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 r0  r  r   r8   r)   s    r   r)   z3TestShgoReturns.test_1_nfev_simplicial.<locals>.fun]      HHMH8Or    r   r  r   r?   r   r  r   r   r2  r)   s      @r   test_1_nfev_simplicialz&TestShgoReturns.test_1_nfev_simplicialZ  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 r0  r7  r8  s    r   r)   z.TestShgoReturns.test_1_nfev_sobol.<locals>.funi  r9  r    r   r1  r  r:  r;  s      @r   test_1_nfev_sobolz!TestShgoReturns.test_1_nfev_sobolf  s@    9	 c67;


&++6r    N)r!   r"   r#   r<  r?  r$   r    r   r4  r4  Y  s    
7
7r    r4  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@   rA   s    r   quadz$test_vector_constraint.<locals>.quadu  $    JJqMqAvr    g@rf   r   r  r1  rq  r5   r   )
r   r   r?   r  r   r   allr@   r8   r  )rD  nlcoldcr   s       r   test_vector_constraintrI  s  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  rB  rA   s    r   rD  ztest_trust_constr.<locals>.quad  rE  r    g@rf   rP  rO  r  r1  )r   r   r   r5   r   )r   r   r   r?   rF  r@   r8   r  )rD  rG  r   r   s       r   test_trust_constrrL    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   r5   c                     | d   | d   z   S r   r$   rA   s    r   faultyz)test_equality_constraints.<locals>.faulty  s    tad{r    333333@r  c                     | d   | d   z   dz
  S )Nr   r6   rP  r$   rA   s    r   rO  z)test_equality_constraints.<locals>.faulty  s    tad{S  r    r  r'   r  re   c                 6    | d   | d   z   | d   z   | d   z   dz
  S r  r$   rA   s    r   rO  z)test_equality_constraints.<locals>.faulty  s+    tad{QqT!AaD(1,,r    c                 .    t        j                  |        S r   )r?   prodrA   s    r   r  z+test_equality_constraints.<locals>.<lambda>  s    BGGAJ, r    r1  )r   r   r   r   )r   r   r   r   r?   r@   r8   )r   rO  rG  r   r   s        r   test_equality_constraintsrU    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>   rA   s    r   r/   ztest_gh16971.<locals>.cons  s    vvad|ar    r&   )r)   r(   r~  rc   r   g?)rhobegtolcatol)rP  r   r  r5   )r   r   rP  cobylar   rZ  )r   r   r   lower)r/   cr   r   s       r   test_gh16971r^    s      f%At<
 	y{<L	A h'--/8;;;i(1T999r    )	r$   r4  r   NNNNr1  r6   )Gr   rW  numpyr?   r  multiprocessingr   numpy.testingr   r   r   r  r   r1  r   r   r	   r
   r   r   r   r   r   scipy.optimize._constraintsr   scipy.optimize._shgor   .scipy.optimize.tests.test_minimize_constrainedr   r   r0   r2   r   r   r   rH   r  r   r   rS   r   r`   r   ru   r   r}   r   r,   r  boundsLJr  r   onesr  r   r  r   r"  r   r'  r   r   r   r)  r  r4  rI  filterwarningsrL  rU  r^  r$   r    r   <module>rh     sM         )  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^& ^&Dq. q.j7 74 /0 1,(B:r    