
    -iin                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ  G d	 d
          Zd Z  G d de          Z! e!ddgd d g          Z" e!ddgd d g          Z# e!ddgd d g          Z$ G d de          Z% e%dgdgd ej&        dgdgdgdgdgdgdgdgdgdgg
           ej&        g d           !          Z' e%d"gdgdg ej&        dgg           ej&        dg          !          Z( G d# d$e          Z) e)d%d&gd'd(gd)*          Z* G d+ d,e          Z+ e+d-gd.z  g d/d0*          Z, G d1 d2e          Z- e-d3d3gd4gd5d6g7          Z. G d8 d9e          Z/d:Z0 e1 e2d;gd:z  d<gd:z                      Z3 e/e3d=gd7          Z4 G d> d?e          Z5 e5d@gdAz  dB ej6        dA          dCz
  7          Z7 G dD dEe          Z8 e8d-d-gdFgdGdGg7          Z9 G dH dIe          Z: e:d%dJgdd7          Z;ej<        =                    dK          	 	 	 dadQ            Z> G dR dS          Z? G dT dU          Z@ G dV dW          ZA G dX dY          ZB G dZ d[          ZCd\ ZDej<        E                    d]          d^             ZFd_ ZGd` ZHdS )b    N)Pool)assert_allcloseIS_PYPY)raiseswarns)	shgoBoundsminimize_scalarminimizerosen	rosen_der
rosen_hessNonlinearConstraintOptimizeWarning)new_constraint_to_old)SHGO)MaratosTestArgsc                       e Zd Z	 	 ddZdS )StructTestFunctionNc                 L    || _         || _        || _        || _        || _        d S Nbounds
expected_xexpected_funexpected_xlexpected_funl)selfr   r   r   r   r   s         e/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/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 }| Ot          | t          t          z            s| f} n	 | D ]} |                    d| d           t          |          }nd }|S )Nineqtypefun)
isinstancetuplelistappend)gconss     r   wrap_constraintsr1      s~    D}!UT\** 	AA 	$ 	$AKK !# # $ $ $ $T{{Kr!   c                   0    e Zd Zd Zd Z ee          ZdS )StructTest1c                 0    |d         dz  |d         dz  z   S Nr         r%   r   xs     r   fzStructTest1.f-       tqy1Q419$$r!   c                 6    t          j        | d          dz
   S )Nr   axisg      @npsumr9   s    r   r/   zStructTest1.g0   s    """S())r!   Nr"   r#   r$   r:   r/   r1   r0   r%   r!   r   r3   r3   ,   s>        % % %* * * ADDDr!   r3   )   )r   r   r   r7   NNc                   4    e Zd ZdZd Zd Z ee          ZdS )StructTest2zN
    Scalar function with several minima to test all minimiser retrievals
    c                 6    |dz
  t          j        |          z  S )N   )r@   sinr8   s     r   r:   zStructTest2.fC   s    B"&))##r!   c                 4    dt          j        | d          z
  S )N:   r   r=   r?   rB   s    r   r/   zStructTest2.gF   s    BF11%%%%%r!   Nr"   r#   r$   __doc__r:   r/   r1   r0   r%   r!   r   rI   rI   >   sH         $ $ $& & & ADDDr!   rI   )r   <   g⡽4$?0_r<g GK@g
]<@gI{_H@gi<&,@g>E@gqŤCQ4@g8$B@go.n:@g^5	>@)
rR   gs8g^V&+6g+?-2g+!/gN|1(gc=C#g^\gNg自ݿr   )r   g      @c                   T    e Zd ZdZd Zd Zd Zd Z eede	j
                  ZefZdS )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                 6    d|d         dz  z  |d         dz  z   S )Ng{Gz?r   r6   r7   r%   r8   s     r   r:   zStructTest3.f}   s"    qtk!QqTaK//r!   c                 *    | d         | d         z  dz
  S )Nr   r7         9@r%   rB   s    r   g1zStructTest3.g1   s    tad{T!!r!   c                 6    | d         dz  | d         dz  z   dz
  S )Nr   r6   r7   rW   r%   rB   s    r   g2zStructTest3.g2   s"    tqy1Q419$t++r!   c                 ^    | d         | d         z  dz
  | d         dz  | d         dz  z   dz
  fS )Nr   r7   rW   r6   r%   rB   s    r   r/   zStructTest3.g   s8    tad{T!1Q419qtqy#84#???r!   r   N)r"   r#   r$   rP   r:   rX   rZ   r/   r   r@   inf_StructTest3__nlcr0   r%   r!   r   rT   rT   k   sv         "0 0 0" " ", , ,@ @ @  1bf--E8DDDr!   rT   )r6   2   )r   r^   g'In/@gS[:XL?      @)r   r   r   c                   R    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dS )StructTest4z
    Hock and Schittkowski 11 problem (HS11). Hoch and Schittkowski (1981)

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

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

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

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

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

""37G,@t"LLLLLr!   c           
          d }t           t          fD ]D}t          |j        |j        dd|ddi           t          |j        |j        dd|ddi           EdS )	zKIterative sampling on TestFunction 1 and 2  (multi and univariate)
        c                 $    t          d           d S Nz Local minimization callback testr   rB   s    r   callback_funczATestShgoArguments.test_3_1_disp_simplicial.<locals>.callback_func      455555r!   r7   r   r   Tr   r   r   r   r   r   r   r   Nr   r   r   r:   r   r   r<  r   s      r   test_3_1_disp_simplicialz*TestShgoArguments.test_3_1_disp_simplicial  s    	6 	6 	6 g& 	A 	ADA!-'&$A A A A <'&$A A A A A		A 	Ar!   c           
          d }t           t          fD ]D}t          |j        |j        dd|ddi           t          |j        |j        dd|ddi           Ed	S )
zAIterative sampling on TestFunction 1 and 2 (multi and univariate)c                 $    t          d           d S r:  r;  rB   s    r   r<  z<TestShgoArguments.test_3_2_disp_sobol.<locals>.callback_func+  r=  r!   r7   r   r   Tr>  r   r?  Nr@  rA  s      r   test_3_2_disp_sobolz%TestShgoArguments.test_3_2_disp_sobol(  s    	6 	6 	6 g& 	A 	ADAw'&$A A A A <'&$A A A A A		A 	Ar!   c                     t          d dgd          }t          d dg          }t          |j        |j                   t          |j        |j                   dS )zMUsing `args` used to cause `shgo` to fail; see #14589, #15986,
        #16506c                     | |z  |z   S r   r%   )r9   yzs      r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>8  s    A	 r!   )r   rg   )r7   r6   )funcr   r   c                     d| z  dz   S )Nr6   r7   r%   rB   s    r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>:  s    !a%!) r!   )rJ  r   N)r   r   r*   r9   )r   r   r'  s      r   test_args_gh14589z#TestShgoArguments.test_args_gh145895  sj     116(   ++VH===)))su%%%%%r!   c                 2   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           dS # 1 swxY w Y   dS )zG
        Checks that using `args` for func, jac and hess works
        r      rd   r   trust-constr)r   rN  )r   r   methodr   jacr&  r   g      $g      $@ignore)rQ  r   r   rR  r   r   )rJ  r   r   r   r   r   )rQ  r   r   rR  hessN)r   r	   r   r   r*   constrgradr   r9   x_optwarningscatch_warningssimplefilterr   RuntimeWarningr   rT  )r   objres2r   s       r   test_args_gh23517z#TestShgoArguments.test_args_gh23517>  s    c3''RHq!f--
G#J
:!
 
 
 		5555c3''T4L3*55
$&& %	9 %	9 ! .1   Wz,#&:!j8&" "  J '  C CE3948888Wz,#&:!j8H" "  J '  C CE3948888K%	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9 %	9s   .CFFFc                 X    t           j        ddd}t          t           dd|d           dS )z,Test known function minima stopping criteriar&  T)f_minf_tolr   Nr   r   r   r   r   r   r   r   r   r   s     r   test_4_1_known_f_minz&TestShgoArguments.test_4_1_known_f_minx  sJ     $0 *.0 0 	DD'!-	/ 	/ 	/ 	/ 	/ 	/r!   c                 Z    t           j        dddd}t          t           dd|d           dS )	z+Test Global mode limiting local evaluationsr&  Tr7   )r`  ra  r   
local_iterNr   r   rb  rc  r   s     r   test_4_2_known_f_minz&TestShgoArguments.test_4_2_known_f_min  sM     )#'  	DD'!-	/ 	/ 	/ 	/ 	/ 	/r!   c           	          t           j        ddddd}t          t           j        t           j        t           j        dd|d          }t          j                            |j	        t           j
        d	d	
           dS )z8Test Global mode limiting local evaluations for 1D funcsr&  Tr7   Fr`  ra  r   rf  r   Nr   r   r   r   r   r   r   r   )r   r   r   r:   r   r0   r@   r   r   r9   r   r   r   r   s      r   test_4_4_known_f_minz&TestShgoArguments.test_4_4_known_f_min  sz     )#'!&( ( 79gn',w#*, , , 	
""35'*<4d"SSSSSr!   c                     t          t          j        t          j        t          j                  }t
          j                            |j        t          j	        dd           dS )z;Test Default simplicial sampling settings on TestFunction 1r   r   r   N
r   r   r:   r   r0   r@   r   r   r9   r   r6  s     r   test_5_1_simplicial_arglessz-TestShgoArguments.test_5_1_simplicial_argless  sF    79gn',GGG

""35'*<4d"SSSSSr!   c                     t          t          j        t          j        t          j        d          }t
          j                            |j        t          j	        dd           dS )z6Test Default sobol sampling settings on TestFunction 1r   r   r   r   r   Nro  r6  s     r   test_5_2_sobol_arglessz(TestShgoArguments.test_5_2_sobol_argless  sO    79gn',#*, , ,

""35'*<4d"SSSSSr!   c                 8   ddi}t          t          j        t          j        t          j        |d          }t
          j                            |j        t          j	        dd           t
          j                            |j
        t          j        d           dS )	:Test that maximum iteration option works on TestFunction 3max_iterr6   r   r   r   r   r   r   r   Nr   r   r:   r   r0   r@   r   r   r9   r   r*   r   rk  s      r   test_6_1_simplicial_max_iterz.TestShgoArguments.test_6_1_simplicial_max_iter      q/79gn',"LB B B

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

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

358,,,

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

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

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

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

""37CG444

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

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

s{333

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

s{33333r!   c                 Z    ddg}t          t          t          t          j        |           dS )zSpecified bounds ub > lb)rE   rg   rg   rd   Nr  r  r   r   r:   r   r   s     r   test_4_1_bound_errz#TestShgoFailures.test_4_1_bound_err  s(    &!j$	6:::::r!   c                 Z    ddg}t          t          t          t          j        |           dS )z)Specified bounds are of the form (lb, ub))rg   rd   rd   r  Nr  r   s     r   test_4_2_bound_errz#TestShgoFailures.test_4_2_bound_err  s(    V$j$	6:::::r!   c                     ddd}t          t          j        t          j        t          j        d|d          }t
          j                            d|j                   dS )zxEnsures the algorithm terminates on infeasible problems
           after maxev is exceeded. Use infty constraints optionr   Tr  r   r   r   r   r   FN	r   test_infeasibler:   r   r0   r@   r   r  r"  rk  s      r   test_5_1_1_infeasible_sobolz,TestShgoFailures.test_5_1_1_infeasible_sobol  se      ! ! ?$o&<.3sG#*, , , 	
s{33333r!   c                     dddd}t          t          j        t          j        t          j        d|d          }t
          j                            d|j                   dS )zEnsures the algorithm terminates on infeasible problems
           after maxev is exceeded. Do not use infty constraints optionr   TF)r  r   r   r   r%  Nr&  rk  s      r   test_5_1_2_infeasible_sobolz,TestShgoFailures.test_5_1_2_infeasible_sobol"  sh      (-/ / ?$o&<.3sG#*, , , 	
s{33333r!   c                     ddd}t          t          j        t          j        t          j        d|d          }t
          j                            d|j                   dS )z[Ensures the algorithm terminates on infeasible problems
           after maxev is exceeded.i  Fr  r   r   r%  Nr&  rk  s      r   test_5_2_infeasible_simplicialz/TestShgoFailures.test_5_2_infeasible_simplicial/  se     ! " " ?$o&<.3sG#/1 1 1 	
s{3333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|R i | dS )
z<Test Global mode limiting local evaluations with f* too highry   r&  Tr7   Fri  Nr   rj  )r   r   r:   r   r0   r   UserWarningr   )r   r   r   kwargss       r   test_6_1_lower_known_f_minz+TestShgoFailures.test_6_1_lower_known_f_min;  s|     )C/#'!&( ( 	7>*!($%,	  	k41$111&11111r!   c                     ddl mm} g d}fdd_         ||          }t	          |j        |j        j                   d S )Nr   )r   r   r   r6   r3  r3  r3  r3  c                 :    xj         dz  c_          |           S Nr7   )r  )r9   r*   r   s    r   r*   z"TestShgoFailures.test.<locals>.funQ  s    HHMHH588Or!   )scipy.optimizer   r   r  r   r9   r*   )r   r   r   resultr*   r   s       @@r   r   zTestShgoFailures.testM  s}    ........999	 	 	 	 	 	 c6""fh
CH-----r!   N)r"   r#   r$   r  r  r  r  r!  r#  r(  r*  r,  r0  r   r%   r!   r   r
  r
    s        - - -3 3 3

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

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

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

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



                   2 2 2 2 2 2 2 2  1 1 1 1 1 1 1 1Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y = = = = = = % % % % % % J J J J J J+ + + + + + + +       $    +gw/"#Q) ) )
+ff-"#Q) ) )
+lL9"#Q) ) )    $    +gY",#/ #+"(ZL-8M-7L-8M-8M-7L-8M-8M-8M-8M	,; 	#< 	#< %-BH .H .H .H %I %I!  . +hZ",$0>"*"(ZL>":":$,BHl^$<$<	  # # # # #$ # # #J +gw/",j!9#&      $   D +i]Q."L "L "L#.      $    +k;7$7#8"&!57 7 7
    %   < 4TFQJ	**++	X$(6!%	
 	
 	
    $    
XL1,"% '

S 0
 
 
    (    _Y	$:+-$),c
4 4 4

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