
     hjq                     :   d dl Z d dl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 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,d-'          Z G d. d/e          Z ed0d0gd1gd2d3g4          Z G d5 d6e          Zd7Z e  e!d8gd7z  d9gd7z                      Z" ee"d:gg d;4          Z# G d< d=e          Z$ e$d*d*gd>gd?d?g4          Z% G d@ dAe          Z& e&d"dBgdd4          Z'	 	 	 dPdGZ( G dH dI          Z) G dJ dK          Z* G dL dM          Z+ G dN dO          Z,dS )Q    N)assert_allclose)raiseswarns)shgoBoundsminimize)SHGOc                       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         [/var/www/html/Sam_Eipo/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 }| ^t          |           t          urt          |           t          ur| f} n	 | D ]} |                    d| d           t          |          }nd }|S )Nineq)typefun)r   tuplelistappend)gconss     r   wrap_constraintsr%      s    D}GG5  tAwwd':':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      @numpysumr-   s    r   r#   zStructTest1.g(   s    11%%%+,,r   Nr   r   r   r.   r#   r%   r$   r   r   r   r'   r'   $   s>        % % %- - - ADDDr   r'   )   )r   r   )r   r+   )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 minimizer retrievals
    c                 6    |dz
  t          j        |          z  S )N   )r4   sinr,   s     r   r.   zStructTest2.f;   s    B%)A,,&&r   c                 4    dt          j        | d          z
  S )N:   r   r1   r3   r6   s    r   r#   zStructTest2.g>   s    EIaa(((((r   Nr   r   r   __doc__r.   r#   r%   r$   r   r   r   r;   r;   6   sH         ' ' ') ) ) ADDDr   r;   )r   <   g⡽4$?0_r<g GK@g
]<@gI{_H@gi<&,@g>E@gqŤCQ4@g8$B@go.n:@g^5	>@)
rD   gs8g^V&+6g+?-2g+!/gN|1(gc=C#g^\gNg自ݿr   )r   g      @c                   B    e Zd ZdZd Zd Zd ZeefZ ee          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   r*   r+   r   r,   s     r   r.   zStructTest3.fs   s"    qtk!QqTaK//r   c                 *    | d         | d         z  dz
  S )Nr   r+         9@r   r6   s    r   g1zStructTest3.g1v   s    tad{T!!r   c                 6    | d         dz  | d         dz  z   dz
  S )Nr   r*   r+   rI   r   r6   s    r   g2zStructTest3.g2y   s"    tqy1Q419$t++r   N)
r   r   r   rB   r.   rJ   rL   r#   r%   r$   r   r   r   rF   rF   b   s`          0 0 0" " ", , , 
RAADDDr   rF   )r*   2   )r   rM   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   
   r*      r+               r9         r   r,   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 )Nr*   r   rV   r+   rU   rS      r   r6   s    r   rJ   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 )	NrX   r   rV   r+   rR   r*   rU   g     q@r   r6   s    r   rL   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   r+   r*   r9   rS   rY      r   r6   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 )	NrU   r   r*   r+   rV   rS   rW   r9   r   r6   s    r   g4zStructTest4.g4   sn    QqTQY1*Q1X!_<q1Q419}Lqt8 1Q4i( ) 	)r   Nr   r   r   rB   r.   rJ   rL   r`   rb   r#   r%   r$   r   r   r   rP   rP      s           # # #M M MI I I) ) ) 
RRAADDDr   rP   )irR   rX   )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 )Nr+   g     G@r          @)r4   r>   sqrtabsr,   s     r   r.   zStructTest5.f   s    A$+)EJs1Q4#:1+E'F'FGGHHIA$5:c!A$!A$+2F.G.G#H#HIIIJ 	r   Nr7   r   r   r   re   re      s4           	AADDDr   re   )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 )StructTestLJzV
    LennardJones objective function. Used to test symmetry constraints settings.
    c                    |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 )Nr   rV           r+   r*         ?rg   )Nintrange)r   r-   argsksijabxdydzdeduds                 r   r.   zStructTestLJ.f   s   a
OOq1u 
	/ 
	/A1q5!__ 	/ 	/EEqTAaD[q1uX!a%(q1uX!a%("WrBw&b0"Wr\88#(S.B..A	/ r   NrA   r   r   r   rk   rk      s>           & 	AADDDr   rk   r9   g      g      @      )/Ur]r   g) r   r   g=S 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         @r+   rM   d   r   r,   s     r   r.   zStructTestTable.f   s%    Q43;;1Q43;;23r   Nr7   r   r   r   r   r      s4           	AADDDr   r   rM   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 r)   r   )r   r-   rr   s      r   r.   zStructTestInfeasible.f   r/   r   c                 *    | d         | d         z   dz
  S Nr   r+   r   r6   s    r   rJ   zStructTestInfeasible.g1  s    tad{Qr   c                 ,    | d         | d         z   dz
   S r   r   r6   s    r   rL   zStructTestInfeasible.g2  s    1!q!!r   c                 ,    | d          | d         z   dz
  S r   r   r6   s    r   r`   zStructTestInfeasible.g3  s    !uqt|ar   c                 .    | d          | d         z   dz
   S r   r   r6   s    r   rb   zStructTestInfeasible.g4  s    A$1!""r   Nrc   r   r   r   r   r      s         % % %  " " "     # # # 
RRAADDDr   r   )r8   r+   r   h㈵>   sobolc	                    t          | j        | j        || j        ||||||
  
        }	t	          j        |	           | j        -t          j        	                    |	j
        | j        ||           | j        ,t          j        	                    |	j        | j        |           | j        ,t          j        	                    |	j        | j        |           | j        ,t          j        	                    |	j        | j        |           d S )N)rr   constraintsniterscallbackminimizer_kwargsoptionssampling_methodrtolatolr   )r   r.   r   r$   logginginfor   r4   testingr   r-   r   r   r   xlr   funl)
testrr   	test_atolr   r   r   r   r   r   ress
             r   run_testr     s(    tvt{49%( 0'.0 0 0C
 L"%%ceT_+4+4 	& 	6 	6 	6
 $%%cg&*&7+4 	& 	6 	6 	6 #%%cf&*&6+4 	& 	6 	6 	6 %%%ch&*&8+4 	& 	6 	6 	6 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 optimization 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_sobol@       	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_sobolE  r   r   c                 .    t          t                     dS )z_Multivariate test function 1:
        x[0]**2 + x[1]**2 with bounds=[(None, None),(None, None)]Nr   test1_3r   s    r   test_f1_3_sobolz*TestShgoSobolTestFunctions.test_f1_3_sobolJ  r   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_sobolO  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_sobolT  r   r   c                 .    t          t                     dS )%NLP: Hock and Schittkowski problem 18Nr   test3_1r   s    r   test_f3_sobolz(TestShgoSobolTestFunctions.test_f3_sobolY  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_1r   r   s     r   test_f4_sobolz(TestShgoSobolTestFunctions.test_f4_sobol]  s)    
 '.D'222222r   c                 2    t          t          d           dS )NLP: Eggholder, multimodal@   )r   Nr   test5_1r   s    r   test_f5_1_sobolz*TestShgoSobolTestFunctions.test_f5_1_sobole  s    Br   c                 4    t          t          dd           dS )r   r   rS   )r   r   Nr   r   s    r   test_f5_2_sobolz*TestShgoSobolTestFunctions.test_f5_2_soboli  s     	Cq))))))r   N)r   r   r   rB   r   r   r   r   r   r   pytestmarkslowr   r   r   r   r   r   r   r   :  s         
  
  
  
  
  
   [3 3 3     * * * * *r   r   c                   f    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
S )TestShgoSimplicialTestFunctionsz=
    Global optimization tests with Simplicial sampling:
    c                 4    t          t          dd           dS )r   r+   
simplicialr   r   Nr   r   s    r   test_f1_1_simplicialz4TestShgoSimplicialTestFunctions.test_f1_1_simplicialx       	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)]r+   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)]r+   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S )r   minimize_every_iterFrX   r   )r   r   r   Nr   r   s     r   test_f2_1_simplicialz4TestShgoSimplicialTestFunctions.test_f2_1_simplicial  s8     )%07!-	/ 	/ 	/ 	/ 	/ 	/r   c                 4    t          t          dd           dS )r   r+   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   r+   r   r   Nr   r   s    r   test_f3_simplicialz2TestShgoSimplicialTestFunctions.test_f3_simplicial  s    A|<<<<<<r   c                 4    t          t          dd           dS )r   r+   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)symmetrydisp)r9   NrU   r   )rr   r   r   r   r   )r   testLJ)r   r   rr   s      r   test_lj_symmetryz0TestShgoSimplicialTestFunctions.test_lj_symmetry  sH    #! !dd !-	/ 	/ 	/ 	/ 	/ 	/r   N)r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s  s         = = =
= = =
= = =
/ / /= = =
= = = [= = =/ / / / /r   r   c                   "   e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j        j        d             Ze
j        j        d	             Z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d Zd Zd Z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)Nr*   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   FNrX   r   r   r   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)Nr+   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)Nr+   r   )r   r   r   r   r   r   r   )r   r   r.   r   r$   r4   r   r   r-   r   r   r   r   r   s     r   test_2_2_sobol_iterz%TestShgoArguments.test_2_2_sobol_iter  s    79gn',G= = = 	%%ceW-?d+/ 	& 	1 	1 	1%%cgw/C$%OOOOOr   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 )	zCIterative sampling on TestFunction 1 and 2  (multi- and univariate)c                 $    t          d           d S Nz Local minimization callback testprintr6   s    r   callback_funczATestShgoArguments.test_3_1_disp_simplicial.<locals>.callback_func      455555r   r+   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 )
zBIterative sampling on TestFunction 1 and 2 (multi- and univariate)c                 $    t          d           d S r   r  r6   s    r   r  z<TestShgoArguments.test_3_2_disp_sobol.<locals>.callback_func  r  r   r+   r   r   Tr  r   r  Nr  r  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 )Nc                     | |z  |z   S r   r   )r-   yzs      r   <lambda>z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>  s    !a r   )r   rV   )r+   r*   )funcr   rr   c                     d| z  dz   S )Nr*   r+   r   r6   s    r   r  z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>  s    !A#' r   )r  r   )r   r   r   r-   )r   r   refs      r   test_args_gh14589z#TestShgoArguments.test_args_gh14589  sb    //vNNN))6(;;;)))su%%%%%r   c                 X    t           j        ddd}t          t           dd|d           dS )z,Test known function minima stopping criteriaư>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_min  sJ     $0 *.0 0 	DD'!-	/ 	/ 	/ 	/ 	/ 	/r   c                 Z    t           j        dddd}t          t           dd|d           dS )	*Test Global mode limiting local evalutionsr  Tr+   )r  r  r   
local_iterNr   r   r  r  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           dd|d	           d
S )r  r  Tr+   Fr  r  r   r  r   i   r   r   r  Nr  r   s     r   test_4_3_known_f_minz&TestShgoArguments.test_4_3_known_f_min  sP     )#'!&( ( 	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 )z<Test Global mode limiting local evalutions for 1-D functionsr  Tr+   Fr"  Nr   r   r   r   r   r   r   r   )r   r   r   r.   r   r$   r4   r   r   r-   r   r   r   r   s      r   test_4_4_known_f_minz&TestShgoArguments.test_4_4_known_f_min  s     )#'!&( ( 79gn',w#*, , , 	%%ceW-?d+/ 	& 	1 	1 	1 	1 	1r   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   r$   r4   r   r   r-   r   r   s     r   test_5_1_simplicial_arglessz-TestShgoArguments.test_5_1_simplicial_argless  sS    79gn',GGG%%ceW-?d+/ 	& 	1 	1 	1 	1 	1r   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   Nr*  r   s     r   test_5_2_sobol_arglessz(TestShgoArguments.test_5_2_sobol_argless  s\    79gn',#*, , ,%%ceW-?d+/ 	& 	1 	1 	1 	1 	1r   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_iterr*   r   r   r   r   r   r   r   Nr   r   r.   r   r$   r4   r   r   r-   r   r   r   r&  s      r   test_6_1_simplicial_max_iterz.TestShgoArguments.test_6_1_simplicial_max_iter#      q/79gn',"LB B B%%ceW-?d+/ 	& 	1 	1 	1%%cgw/C$%OOOOOr   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 )	r/  min_iterr*   r   r1  r   r   r   Nr2  r&  s      r   test_6_2_simplicial_min_iterz.TestShgoArguments.test_6_2_simplicial_min_iter,  r4  r   c                     dD ][}|t           j        d}t          d                    |                     t          d           t	          t           dd|d           \d	S )
z@Test the minimizer_kwargs arguments for solvers with constraints)COBYLASLSQP)methodr   Solver = {}d====================================================================================================r   MbP?r   r   r   r   r   N)r   r$   r  formatr   )r   solverr   s      r   test_7_1_minkwargsz$TestShgoArguments.test_7_1_minkwargs5  s     * 	Q 	QF +1/6| =  =-&&v..///)Wt&6Q Q Q Q Q	Q 	Q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   r$   )r   r   r   s      r   test_7_2_minkwargsz$TestShgoArguments.test_7_2_minkwargsB  sQ    "D>4.WYGLO.	A 	A 	A 	A 	A 	Ar   c                     dD ]b}d }d }|||d}t          j        d                    |                     t          j        d           t          t          dd|d	
           cdS )z?Test minimizer_kwargs arguments for solvers without constraints)zNelder-MeadPowellCGBFGSz	Newton-CGzL-BFGS-BTNCdoglegz	trust-ncgztrust-exactztrust-krylovc                 \    t          j        d| d         z  d| d         z  g          j        S )Nr*   r   r+   )r4   arrayTr6   s    r   jacz1TestShgoArguments.test_7_3_minkwargs.<locals>.jacN  s*    {A!Ha!A$h#788::r   c                 6    t          j        ddgddgg          S )Nr*   r   )r4   rN  r6   s    r   hessz2TestShgoArguments.test_7_3_minkwargs.<locals>.hessQ  s    {QFQF#3444r   )r;  rP  rR  r<  r=  r   r>  r   r?  N)r   r   r@  r   r   )r   rA  rP  rR  r   s        r   test_7_3_minkwargsz$TestShgoArguments.test_7_3_minkwargsI  s    ' 	Q 	QF; ; ;5 5 5 +1'*(, .  . L--f55666L###Wt&6Q Q Q Q Q	Q 	Qr   c                 B    ddd}t          t          d d |d           d S )Nr+   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   r)  NrE  r   s    r   test_9_cons_gzTestShgoArguments.test_9_cons_gc  s'    WYGLODDDDDDr   c                 `    ddi}t          t          j        t          j        dd|d           dS )rX  maxtimeV瞯<r+   Nr   r   )r   r   r.   r   r   s     r   test_10_finite_timez%TestShgoArguments.test_10_finite_timeg  s>    e$WY!4g	7 	7 	7 	7 	7 	7r   c                 b    ddd}t          t          j        t          j        dd|d           dS z*Test to cover the case where f_lowest == 0r\  rm   )r[  r  r+   Nr   r   r   r   r.   r   r   s     r   test_11_f_min_timez$TestShgoArguments.test_11_f_min_timem  F    #! !WY!4g	7 	7 	7 	7 	7 	7r   c                 b    ddd}t          t          j        t          j        dd|d           dS r_  r`  r   s     r   test_12_sobol_inf_consz(TestShgoArguments.test_12_sobol_inf_const  rb  r   c                 <    ddi}t          t          d|           dS )z6Test limited local iterations for a pseudo-global moder  rU   r   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   Tr+   rX   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   Tr;  znelder-meadr   )r   r   r   Nr   )r   r   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 )z=Test the functionality to add custom sampling methods to shgoc                 F    t           j                            | |f          S )N)size)r4   randomuniform)r   ds     r   samplez9TestShgoArguments.test_17_custom_sampling.<locals>.sample  s    <''aU'333r   r=   r   Nr   )r   rq  s     r   test_17_custom_samplingz)TestShgoArguments.test_17_custom_sampling  s.    	4 	4 	4 	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   )r4   squarer5   r6   s    r   r.   z1TestShgoArguments.test_18_bounds_class.<locals>.f  s    <??&&(((r   )g      rn   g      )r~   r   rN   )r~   rn   rm   )r!   zipr   r   nfevmessagesuccessr4   rN  r   r   r-   )	r   r.   lbub
bounds_old
bounds_newres_old_boundsres_new_boundsx_opts	            r   test_18_bounds_classz&TestShgoArguments.test_18_bounds_class  s   	) 	) 	) ^^]]#b"++&&
B^^
a,,a,,"n&99999%)?????%)?????MMM**%%n&6>>>%%n&6&4&6	8 	8 	8 	8 	8r   N)"r   r   r   r   r   r   r   r	  r  r  r   r   r   r  r   r#  r'  r+  r-  r3  r7  rB  rF  rS  rV  rY  r]  ra  rd  rf  rh  rj  rr  r  r   r   r   r   r     s       I I I/ / /D D DP P PA A AA A A& & & [/ / / [
/ 
/ 
/ [* * *1 1 1 1 1 11 1 1P P PP P PQ Q QA A AQ Q Q&/ / /E E E7 7 77 7 77 7 71 1 1
* * *E E E8 8 88 8 8 8 8r   r   c                       e 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                            dg d          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maxiterr*   rU   Nr   r   F)	r   r   r.   r   r4   r   assert_equalry  rw  r&  s      r   test_1_maxiterzTestShgoFailures.test_1_maxiter  sl    a.79gn"G= = = 	""5#+666""1ch/////r   c                 j    t          t          t          t          j        t          j        d           dS )z$Rejection of unknown sampling method	not_Sobol)r   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 evaluationsrR   T)maxfevr   rU   r   r   r   r   F   N)	r   
test_tabler.   r   r4   r   r  ry  rw  r&  s      r   test_3_1_no_min_pool_sobolz+TestShgoFailures.test_3_1_no_min_pool_sobol  st      ! !:<!2a#*, , ,""5#+666""2sx00000r   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 evaluationsrR   Tmaxevr   rV   r   r  FN)r   r  r.   r   r4   r   r  ry  r&  s      r   test_3_2_no_min_pool_simplicialz0TestShgoFailures.test_3_2_no_min_pool_simplicial  sZ     ! !:<!2a#/1 1 1""5#+66666r   c                 Z    ddg}t          t          t          t          j        |           dS )zSpecified bounds ub > lb)r9   rV   rV   rS   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))rV   rS   rS   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   r$   r4   r   r  ry  r&  s      r   test_5_1_1_infeasible_sobolz,TestShgoFailures.test_5_1_1_infeasible_sobol  se     ! ! ?$o&<.3r7#*, , , 	""5#+66666r   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  r&  s      r   test_5_1_2_infeasible_sobolz,TestShgoFailures.test_5_1_2_infeasible_sobol  sh     (-/ / ?$o&<.3r7#*, , , 	""5#+66666r   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  r&  s      r   test_5_2_infeasible_simplicialz/TestShgoFailures.test_5_2_infeasible_simplicial  se     ! " " ?$o&<.3sG#/1 1 1 	""5#+66666r   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 evalutions with f* too highrg   r  Tr+   Fr"  Nr   r%  )r   r   r.   r   r$   r   UserWarningr   )r   r   rr   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   
derivativerP  rR  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-12829. check that this is resolved
        c                 H    d| d         z  | d         z  d| d         z  z   dz   S )NrV   r   r*   rS   r   r6   s    r   	objectivez@TestShgoFailures.test_21_2_derivative_options.<locals>.objective  s*    qt8ad?Q1X-11r   c                     d| d         z  dz   S )Nr9   r   r*   r   r6   s    r   gradientz?TestShgoFailures.test_21_2_derivative_options.<locals>.gradient  s    qt8a<r   c                     dS Nr9   r   r6   s    r   rR  z;TestShgoFailures.test_21_2_derivative_options.<locals>.hess  s    1r   c                     d|z  S r  r   )r-   ps     r   r  z<TestShgoFailures.test_21_2_derivative_options.<locals>.hessp  s    q5Lr   r  r;  ztrust-constr)ir   )r   r   r   )x0r   N)r   r   ry  r4   r   r   r   r-   )r   r  r  r  rR  r  derivative_funcsr   r   r   r   r  s               r   test_21_2_derivative_optionsz-TestShgoFailures.test_21_2_derivative_options  s   
	2 	2 	2	  	  	 	 	 		 	 	 $,TEJJ/
;<$n59f7G"$ $ $y "aS " ";K " " " {{%%cgsw777%%ceSU33333r   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r   r   parametrizer  r   r   r   r  r    s        0 0 03 3 3
	1 	1 	17 7 7; ; ;
; ; ;

7 
7 
77 7 7
7 
7 
72 2 2$ [\+C+C+CDD4 4 ED4 4 4r   r  )r   r   r   NNNNr   )-r   r4   numpy.testingr   r   r   r  r   scipy.optimizer   r   r   scipy.optimize._shgor	   r   r%   r'   r   r   r   r;   rN  r   r   rF   r   rP   r   re   r   rk   ro   r!   rv  boundsLJr   r   r  r   r  r   r   r   r   r  r   r   r   <module>r     sk     ) ) ) ) ) )  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 % % % % % %+ + + + + + + +       $    +gw/"#Q) ) )
+ff-"#Q) ) )
+lL9"#Q) ) )    $    +gY",#/"-%+
|0;}0:|0;}0;}0:|0;}0;}0;}0;}	/> 	#? 	#? %0EK 1K 1K 1K %L %L  , +hZ",$0>"-%+
|n"="=$/EK$?$?	      $   > +gw/",j!9#&      $   D +i]Q."L "L "L#.      $    +k;7$7#8"&!57 7 7
    %   8 4TFQJ	**++	X$(6"3 "3 "3
 
 
    (    _Y	$:+-$),c
4 4 4

    -   0 '&w.@4826) ) ) :>;?$   D2* 2* 2* 2* 2* 2* 2* 2*r0/ 0/ 0/ 0/ 0/ 0/ 0/ 0/h@8 @8 @8 @8 @8 @8 @8 @8HA4 A4 A4 A4 A4 A4 A4 A4 A4 A4r   