o
    gjq                     @   s  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 dZdd	 ZG d
d deZeddgd d gdZeddgd d gdZeddgd d gdZG dd deZedgdgdedgdgdgdgdgdgdgdgdgdgg
eg ddZed gdgdgedggedgdZG d!d" d"eZed#d$gd%d&gd'd(ZG d)d* d*eZed+gd, g d-d.d(ZG d/d0 d0eZed1d1gd2gd3d4gd5ZG d6d7 d7eZd8Ze e!d9gd8 d:gd8 Z"ee"d;gg d<d5Z#G d=d> d>eZ$e$d+d+gd?gd@d@gd5Z%G dAdB dBeZ&e&d#dCgddd5Z'			GdRdHdIZ(G dJdK dKZ)G dLdM dMZ*G dNdO dOZ+G dPdQ dQZ,dS )S    N)assert_allclose)raiseswarns)shgoBoundsminimize)SHGOc                   @   s   e Zd Z		dddZdS )StructTestFunctionNc                 C   s"   || _ || _|| _|| _|| _d S Nbounds
expected_xexpected_funexpected_xlexpected_funl)selfr   r   r   r   r    r   ]/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/optimize/tests/test__shgo.py__init__   s
   
zStructTestFunction.__init__)NNN)__name__
__module____qualname__r   r   r   r   r   r	   
   s    r	   c                 C   s\   g }| d ur*t | turt | tur| f} n	 | D ]
} |d| d qt|}|S d }|S )Nineq)typefun)r   tuplelistappend)gconsr   r   r   wrap_constraints   s   
r    c                   @   s$   e Zd Zdd Zdd ZeeZdS )StructTest1c                 C      |d d |d d  S Nr         r   r   xr   r   r   f%      zStructTest1.fc                 C   s   t j| ddd  S )Nr   axisg      @numpysumr'   r   r   r   r   (      zStructTest1.gNr   r   r   r(   r   r    r   r   r   r   r   r!   $   s    r!   )   )r   r   )r   r%   )NNc                   @   s(   e Zd ZdZdd Zdd ZeeZdS )StructTest2zN
    Scalar function with several minima to test all minimizer retrievals
    c                 C   s   |d t | S )N   )r-   sinr&   r   r   r   r(   ;      zStructTest2.fc                 C   s   dt j| dd S )N:   r   r*   r,   r/   r   r   r   r   >   r7   zStructTest2.gNr   r   r   __doc__r(   r   r    r   r   r   r   r   r4   6   s
    r4   )r   <   g⡽4$?0_r<g GK@g
]<@gI{_H@gi<&,@g>E@gqŤCQ4@g8$B@go.n:@g^5	>@)
r<   gs8g^V&+6g+?-2g+!/gN|1(gc=C#g^\gNg自ݿr   )r   g      @c                   @   s8   e Zd ZdZdd Zdd Zd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                 C   s   d|d d  |d d  S )Ng{Gz?r   r$   r%   r   r&   r   r   r   r(   s      zStructTest3.fc                 C   s   | d | d  d S )Nr   r%         9@r   r/   r   r   r   g1v   r0   zStructTest3.g1c                 C   s   | d d | d d  d S )Nr   r$   r%   r?   r   r/   r   r   r   g2y   r>   zStructTest3.g2N)
r   r   r   r:   r(   r@   rA   r   r    r   r   r   r   r   r=   b   s    r=   )r$   2   )r   rB   g'In/@gS[:XL?      @)r   r   r   c                   @   L   e Zd ZdZdd Zdd Zdd Zdd	 Zd
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                 C   s   |d d d d|d d d   |d d  d|d d	 d   d|d d
   d|d d   |d
 d  d|d  |d
   d|d   d|d
   S )Nr   
   r$      r%               r3         r   r&   r   r   r   r(      s&   .

zStructTest4.fc                 C   sJ   d| d d  d| d d   | d  d| d d   d| d   d  S )Nr$   r   rJ   r%   rI   rG      r   r/   r   r   r   r@      s
   6
zStructTest4.g1c                 C   s>   d| d  d| d   d| d d   | d  | d  d  S )	NrL   r   rJ   r%   rF   r$   rI   g     q@r   r/   r   r   r   rA      s   >zStructTest4.g2c                 C   s:   d| d  | d d  d| d d   d| d   d  S )	N   r   r%   r$   r3   rG   rM      r   r/   r   r   r   g3   s   :zStructTest4.g3c                 C   sZ   d| d d  | d d  d| d  | d   d| d d   d| d   d| d    S )	NrI   r   r$   r%   rJ   rG   rK   r3   r   r/   r   r   r   g4   s
   >

zStructTest4.g4Nr   r   r   r:   r(   r@   rA   rQ   rR   r   r    r   r   r   r   r   rE      s    rE   )irF   rL   )gܤ@g$H8?g	޿g0ev@gn8)gk_@/?g0g+?gP{[
E@c                   @       e Zd Zdd ZdZeeZdS )StructTest5c              
   C   sb   |d d  t t t|d d |d d   |d t t t|d |d d    S )Nr%   g     G@r          @)r-   r6   sqrtabsr&   r   r   r   r(      s
   &*zStructTest5.fNr1   r   r   r   r   rU          rU   )i i   g g      @gyCy@)r   r   r   c                   @   s$   e Zd ZdZdd ZdZeeZdS )StructTestLJzV
    LennardJones objective function. Used to test symmetry constraints settings.
    c                 G   s   |d | _ t| j d }d}t|d D ]T}t|d |D ]J}d| }d| }|| ||  }	||d  ||d   }
||d  ||d   }|	|	 |
|
  ||  }|| | }|dkrg|d| d | 7 }qq|S )Nr   rJ           r%   r$         ?rV   )Nintrange)r   r'   argsksijabxdydzdedudr   r   r   r(      s"   
zStructTestLJ.fNr9   r   r   r   r   rZ      s
    rZ   r3   g      g      @      )/Ur]rm   g) rm   rm   g=S c                   @   rT   )StructTestTablec                 C   s    |d dkr|d dkrdS dS )Nr         @r%   rB   d   r   r&   r   r   r   r(      s   zStructTestTable.fNr1   r   r   r   r   rn      rY   rn   rB   ro   c                   @   rD   )StructTestInfeasiblez0
    Test function with no feasible domain.
    c                 G   r"   r#   r   )r   r'   r`   r   r   r   r(      r)   zStructTestInfeasible.fc                 C   s   | d | d  d S Nr   r%   r   r/   r   r   r   r@     r0   zStructTestInfeasible.g1c                 C   s   | d | d  d  S rr   r   r/   r   r   r   rA        zStructTestInfeasible.g2c                 C   s   | d  | d  d S rr   r   r/   r   r   r   rQ     rs   zStructTestInfeasible.g3c                 C   s   | d  | d  d  S rr   r   r/   r   r   r   rR     r)   zStructTestInfeasible.g4NrS   r   r   r   r   rq      s    rq   )r2   r%   r   h㈵>   sobolc	           
      C   s   t | j| j|| j||||||d
}	t|	 | jd ur'tjj	|	j
| j||d | jd ur7tjj	|	j| j|d | jd urGtjj	|	j| j|d | jd urWtjj	|	j| j|d d S )N)r`   constraintsniterscallbackminimizer_kwargsoptionssampling_methodrtolatolr   )r   r(   r   r   logginginfor   r-   testingr   r'   r   r   r   xlr   funl)
testr`   	test_atolrx   ry   rz   r{   r|   r}   resr   r   r   run_test  s6   







r   c                   @   s`   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	e
jjdd Zdd Zdd ZdS )TestShgoSobolTestFunctionsz8
    Global optimization tests with Sobol sampling:
    c                 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   r   r   r   test_f1_1_sobol@     z*TestShgoSobolTestFunctions.test_f1_1_sobolc                 C   r   )zUMultivariate test function 1:
         x[0]**2 + x[1]**2 with bounds=[(0, 1), (0, 1)]Nr   test1_2r   r   r   r   test_f1_2_sobolE  r   z*TestShgoSobolTestFunctions.test_f1_2_sobolc                 C   r   )z_Multivariate test function 1:
        x[0]**2 + x[1]**2 with bounds=[(None, None),(None, None)]Nr   test1_3r   r   r   r   test_f1_3_sobolJ  r   z*TestShgoSobolTestFunctions.test_f1_3_sobolc                 C   r   )RUnivariate test function on
        f(x) = (x - 30) * sin(x) with bounds=[(0, 60)]Nr   test2_1r   r   r   r   test_f2_1_sobolO  r   z*TestShgoSobolTestFunctions.test_f2_1_sobolc                 C   r   )NUnivariate test function on
        f(x) = (x - 30) * sin(x) bounds=[(0, 4.5)]Nr   test2_2r   r   r   r   test_f2_2_sobolT  r   z*TestShgoSobolTestFunctions.test_f2_2_sobolc                 C   r   )%NLP: Hock and Schittkowski problem 18Nr   test3_1r   r   r   r   test_f3_sobolY  s   z(TestShgoSobolTestFunctions.test_f3_sobolc                 C      ddi}t td|d dS )?NLP: (High-dimensional) Hock and Schittkowski 11 problem (HS11)infty_constraintsFi   rx   r|   Nr   test4_1r   r|   r   r   r   test_f4_sobol]  s   z(TestShgoSobolTestFunctions.test_f4_sobolc                 C   s   t tdd dS )NLP: Eggholder, multimodal@   )rx   Nr   test5_1r   r   r   r   test_f5_1_sobole  s   z*TestShgoSobolTestFunctions.test_f5_1_sobolc                 C      t tddd dS )r   ru   rG   )rx   ry   Nr   r   r   r   r   test_f5_2_soboli     z*TestShgoSobolTestFunctions.test_f5_2_sobolN)r   r   r   r:   r   r   r   r   r   r   pytestmarkslowr   r   r   r   r   r   r   r   :  s    
r   c                   @   sX   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	e
jjdd Zdd ZdS )TestShgoSimplicialTestFunctionsz=
    Global optimization tests with Simplicial sampling:
    c                 C   r   )r   r%   
simplicialrx   r}   Nr   r   r   r   r   test_f1_1_simplicialx  r   z4TestShgoSimplicialTestFunctions.test_f1_1_simplicialc                 C   r   )zTMultivariate test function 1:
        x[0]**2 + x[1]**2 with bounds=[(0, 1), (0, 1)]r%   r   r   Nr   r   r   r   r   test_f1_2_simplicial}  r   z4TestShgoSimplicialTestFunctions.test_f1_2_simplicialc                 C   r   )z_Multivariate test function 1: x[0]**2 + x[1]**2
        with bounds=[(None, None),(None, None)]r%   r   r   Nr   r   r   r   r   test_f1_3_simplicial  r   z4TestShgoSimplicialTestFunctions.test_f1_3_simplicialc                 C   s   ddi}t td|dd dS )r   minimize_every_iterFrL   r   )ry   r|   r}   Nr   r   r   r   r   test_f2_1_simplicial  s   
z4TestShgoSimplicialTestFunctions.test_f2_1_simplicialc                 C   r   )r   r%   r   r   Nr   r   r   r   r   test_f2_2_simplicial  r   z4TestShgoSimplicialTestFunctions.test_f2_2_simplicialc                 C   r   )r   r%   r   r   Nr   r   r   r   r   test_f3_simplicial  s   z2TestShgoSimplicialTestFunctions.test_f3_simplicialc                 C   r   )r   r%   r   r   Nr   r   r   r   r   test_f4_simplicial  r   z2TestShgoSimplicialTestFunctions.test_f4_simplicialc                 C   s&   ddd}d}t t|d|ddd dS )z&LJ: Symmetry-constrained test functionT)symmetrydisp)r3   NrI   r   )r`   rx   r|   ry   r}   )r   testLJ)r   r|   r`   r   r   r   test_lj_symmetry  s   
z0TestShgoSimplicialTestFunctions.test_lj_symmetryN)r   r   r   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s  s    
r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jjdd Ze
jjdd Ze
jjdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9S ):TestShgoArgumentsc                 C      t tdddd dS )z>Iterative simplicial sampling on TestFunction 1 (multivariate)Nr$   r   rx   ry   r}   r   r   r   r   r   test_1_1_simpl_iter     z%TestShgoArguments.test_1_1_simpl_iterc                 C   s   ddi}t tdd|dd dS )z3Iterative simplicial on TestFunction 2 (univariate)r   FNrL   r   rx   ry   r|   r}   r   r   r   r   r   test_1_2_simpl_iter     

z%TestShgoArguments.test_1_2_simpl_iterc                 C   r   )z9Iterative Sobol sampling on TestFunction 1 (multivariate)Nr%   rv   r   r   r   r   r   r   test_2_1_sobol_iter  r   z%TestShgoArguments.test_2_1_sobol_iterc                 C   sL   t tjtjtjdddd}tjj|jtj	ddd tjj|j
tjdd dS )z7Iterative Sobol sampling on TestFunction 2 (univariate)Nr%   rv   )rw   rx   ry   r}   rt   r~   r   )r   r   r(   r   r   r-   r   r   r'   r   r   r   r   r   r   r   r   test_2_2_sobol_iter  s   z%TestShgoArguments.test_2_2_sobol_iterc              	   C   sR   dd }t tfD ]}t|j|jdd|ddid t|j|jdd|ddid qd	S )
zCIterative sampling on TestFunction 1 and 2  (multi- and univariate)c                 S      t d d S Nz Local minimization callback testprintr/   r   r   r   callback_func     zATestShgoArguments.test_3_1_disp_simplicial.<locals>.callback_funcr%   r   r   Try   r}   rz   r|   rx   r}   rz   r|   Nr   r   r   r(   r   r   r   r   r   r   r   test_3_1_disp_simplicial  s   z*TestShgoArguments.test_3_1_disp_simplicialc              	   C   sR   dd }t tfD ]}t|j|jdd|ddid t|j|jdd|ddid	 qd
S )zBIterative sampling on TestFunction 1 and 2 (multi- and univariate)c                 S   r   r   r   r/   r   r   r   r     r   z<TestShgoArguments.test_3_2_disp_sobol.<locals>.callback_funcr%   rv   r   Tr   r   r   Nr   r   r   r   r   test_3_2_disp_sobol  s   z%TestShgoArguments.test_3_2_disp_sobolc                 C   sF   t dd dgdd}t dd dgd}t|j|j t|j|j d S )Nc                 S   s   | | | S r
   r   )r'   yzr   r   r   <lambda>      z5TestShgoArguments.test_args_gh14589.<locals>.<lambda>)r   rJ   )r%   r$   )funcr   r`   c                 S   s   d|  d S )Nr$   r%   r   r/   r   r   r   r     r   )r   r   )r   r   r   r'   )r   r   refr   r   r   test_args_gh14589  s   z#TestShgoArguments.test_args_gh14589c                 C   s$   t jddd}tt dd|dd dS )z,Test known function minima stopping criteriaư>T)f_minf_tolr   Nrt   r   rx   r   r|   r}   r   r   r   r   r   r   r   test_4_1_known_f_min  s   

z&TestShgoArguments.test_4_1_known_f_minc                 C   s&   t jdddd}tt dd|dd dS )	*Test Global mode limiting local evalutionsr   Tr%   )r   r   r   
local_iterNrt   r   r   r   r   r   r   r   test_4_2_known_f_min  s   

z&TestShgoArguments.test_4_2_known_f_minc                 C   s(   t jddddd}tt dd|dd	 d
S )r   r   Tr%   Fr   r   r   r   r   i   rt   rv   r   Nr   r   r   r   r   test_4_3_known_f_min  s   

z&TestShgoArguments.test_4_3_known_f_minc              	   C   sJ   t jddddd}tt jt jt jdd|dd}tjj|j	t j
d	d	d
 dS )z<Test Global mode limiting local evalutions for 1-D functionsr   Tr%   Fr   Nrv   rw   rx   ry   r|   r}   rt   r~   )r   r   r   r(   r   r   r-   r   r   r'   r   r   r|   r   r   r   r   test_4_4_known_f_min  s   
z&TestShgoArguments.test_4_4_known_f_minc                 C   s0   t tjtjtjd}tjj|jtj	ddd dS )z;Test Default simplicial sampling settings on TestFunction 1rw   rt   r~   N
r   r   r(   r   r   r-   r   r   r'   r   r   r   r   r   test_5_1_simplicial_argless  s   
z-TestShgoArguments.test_5_1_simplicial_arglessc                 C   s2   t tjtjtjdd}tjj|jtj	ddd dS )z6Test Default sobol sampling settings on TestFunction 1rv   )rw   r}   rt   r~   Nr   r   r   r   r   test_5_2_sobol_argless  s   
z(TestShgoArguments.test_5_2_sobol_arglessc                 C   R   ddi}t tjtjtj|dd}tjj|jtj	ddd tjj|j
tjdd dS )	:Test that maximum iteration option works on TestFunction 3max_iterr$   r   rw   r|   r}   rt   r~   r   Nr   r   r(   r   r   r-   r   r   r'   r   r   r   r   r   r   r   test_6_1_simplicial_max_iter#     z.TestShgoArguments.test_6_1_simplicial_max_iterc                 C   r   )	r   min_iterr$   r   r   rt   r~   r   Nr   r   r   r   r   test_6_2_simplicial_min_iter,  r   z.TestShgoArguments.test_6_2_simplicial_min_iterc                 C   sB   dD ]}|t jd}td| td tt dd|dd qd	S )
z@Test the minimizer_kwargs arguments for solvers with constraints)COBYLASLSQP)methodrw   Solver = {}d====================================================================================================ru   MbP?rv   rx   r   r{   r}   N)r   r   r   formatr   )r   solverr{   r   r   r   test_7_1_minkwargs5  s   z$TestShgoArguments.test_7_1_minkwargsc                 C   s0   ddi}ddi}t tjtjtjd ||d dS )z'Test the minimizer_kwargs default initsftolrt   r   Tr   )rw   r{   r|   Nr   r   r(   r   r   )r   r{   r|   r   r   r   test_7_2_minkwargsB  s
   
z$TestShgoArguments.test_7_2_minkwargsc                 C   sV   dD ]&}dd }dd }|||d}t d| t d ttd	d
|dd qd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                 S   s    t d| d  d| d  gjS )Nr$   r   r%   )r-   arrayTr/   r   r   r   jacN  s    z1TestShgoArguments.test_7_3_minkwargs.<locals>.jacc                 S   s   t ddgddggS )Nr$   r   )r-   r  r/   r   r   r   hessQ  rs   z2TestShgoArguments.test_7_3_minkwargs.<locals>.hess)r  r  r  r  r  ru   r  rv   r  N)r   r   r  r   r   )r   r  r  r  r{   r   r   r   test_7_3_minkwargsI  s   
z$TestShgoArguments.test_7_3_minkwargsc                 C   s    ddd}t td d |dd d S )Nr%   T)minhgrdr   r   r   r   r   r   r   r   test_8_homology_group_diff\  s   

z,TestShgoArguments.test_8_homology_group_diffc                 C   s   t tjtjtjd d dS )'Test single function constraint passingr   r   Nr  r   r   r   r   test_9_cons_gc  s   zTestShgoArguments.test_9_cons_gc                 C   s$   ddi}t tjtjdd|dd dS )r  maxtimeV瞯<r%   Nrv   r   )r   r   r(   r   r   r   r   r   test_10_finite_timeg  s   
z%TestShgoArguments.test_10_finite_timec                 C   &   ddd}t tjtjdd|dd dS z*Test to cover the case where f_lowest == 0r  r[   )r  r   r%   Nrv   r   r   r   r(   r   r   r   r   r   test_11_f_min_timem     
z$TestShgoArguments.test_11_f_min_timec                 C   r  r  r   r   r   r   r   test_12_sobol_inf_const  r"  z(TestShgoArguments.test_12_sobol_inf_consc                 C   r   )z6Test limited local iterations for a pseudo-global moder   rI   r   r   Nr   r   r   r   r   test_14_local_iter{  s   z$TestShgoArguments.test_14_local_iterc                 C   s   ddi}t tdd|dd dS )z9Test minimize every iter options and cover function cacher   Tr%   rL   rv   r   Nr   r   r   r   r   test_15_min_every_iter  r   z(TestShgoArguments.test_15_min_every_iterc                 C   s$   ddi}ddi}t td||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{   r   r   r   test_16_disp_bounds_minimizer  s
   
z/TestShgoArguments.test_16_disp_bounds_minimizerc                 C   s   dd }t td|d dS )z=Test the functionality to add custom sampling methods to shgoc                 S   s   t jj| |fdS )N)size)r-   randomuniform)rx   dr   r   r   sample  r7   z9TestShgoArguments.test_17_custom_sampling.<locals>.sampler5   r   Nr   )r   r+  r   r   r   test_17_custom_sampling  s   z)TestShgoArguments.test_17_custom_samplingc           	      C   s   dd }g d}g d}t t||}t||}t||}t||}|j|jks*J |j|jks2J |j|jks:J tg d}tj	
|j| tj	
|j|j d S )Nc                 S   s   t |  S r
   )r-   squarer.   r/   r   r   r   r(     s   z1TestShgoArguments.test_18_bounds_class.<locals>.f)g      r\   g      )rl   ro   rC   )rl   r\   r[   )r   zipr   r   nfevmessagesuccessr-   r  r   r   r'   )	r   r(   lbub
bounds_old
bounds_newres_old_boundsres_new_boundsx_optr   r   r   test_18_bounds_class  s   



z&TestShgoArguments.test_18_bounds_classN)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r  r!  r#  r$  r%  r&  r,  r9  r   r   r   r   r     s@    	



		r   c                   @   sv   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zejdg ddd ZdS )TestShgoFailuresc                 C   sD   ddi}t tjtjdd|dd}tjd|j tjd|j dS )z'Test failure on insufficient iterationsmaxiterr$   rI   Nrv   r   F)	r   r   r(   r   r-   r   assert_equalr1  r/  r   r   r   r   test_1_maxiter  s   zTestShgoFailures.test_1_maxiterc                 C   s   t tttjtjdd dS )z$Rejection of unknown sampling method	not_Sobol)r}   N)assert_raises
ValueErrorr   r   r(   r   r   r   r   r   test_2_sampling  s   
z TestShgoFailures.test_2_samplingc                 C   sD   ddd}t tjtjd|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 evaluationsrF   T)maxfevr   rI   rv   rx   r|   r}   F   N)	r   
test_tabler(   r   r-   r   r<  r1  r/  r   r   r   r   test_3_1_no_min_pool_sobol  s   z+TestShgoFailures.test_3_1_no_min_pool_sobolc                 C   s4   ddd}t tjtjd|dd}tjd|j dS )	zoCheck that the routine stops when no minimiser is found
           after maximum specified sampling evaluationsrF   Tmaxevr   rJ   r   rC  FN)r   rE  r(   r   r-   r   r<  r1  r   r   r   r   test_3_2_no_min_pool_simplicial  s   z0TestShgoFailures.test_3_2_no_min_pool_simplicialc                 C      ddg}t tttj| dS )zSpecified bounds ub > lb)r3   rJ   rJ   rG   Nr?  r@  r   r   r(   r   r   r   r   r   test_4_1_bound_err     z#TestShgoFailures.test_4_1_bound_errc                 C   rJ  )z)Specified bounds are of the form (lb, ub))rJ   rG   rG   rK  NrL  rM  r   r   r   test_4_2_bound_err  rO  z#TestShgoFailures.test_4_2_bound_errc                 C   s8   ddd}t tjtjtjd|dd}tjd|j dS )zxEnsures the algorithm terminates on infeasible problems
           after maxev is exceeded. Use infty constraints optionr   TrG  rv   rw   rx   r|   r}   FN	r   test_infeasibler(   r   r   r-   r   r<  r1  r   r   r   r   test_5_1_1_infeasible_sobol     
z,TestShgoFailures.test_5_1_1_infeasible_sobolc                 C   s:   dddd}t tjtjtjd|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)rH  r   r   rv   rQ  NrR  r   r   r   r   test_5_1_2_infeasible_sobol  s   
z,TestShgoFailures.test_5_1_2_infeasible_sobolc                 C   s8   ddd}t tjtjtjd|dd}tjd|j dS )z[Ensures the algorithm terminates on infeasible problems
           after maxev is exceeded.i  FrG  rp   r   rQ  NrR  r   r   r   r   test_5_2_infeasible_simplicial  rU  z/TestShgoFailures.test_5_2_infeasible_simplicialc                 C   sP   t jd 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 highrV   r   Tr%   Fr   Nrv   r   )r   r   r(   r   r   r   UserWarningr   )r   r|   r`   kwargsr   r   r   test_6_1_lower_known_f_min  s   z+TestShgoFailures.test_6_1_lower_known_f_min
derivativer  r  hesspc                 C   s   dd }dd }dd }dd }|||d	}||| i}d
di}dg}	t ||	||d}
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                 S   s$   d| d  | d  d| d   d S )NrJ   r   r$   rG   r   r/   r   r   r   	objective  s   $z@TestShgoFailures.test_21_2_derivative_options.<locals>.objectivec                 S   s   d| d  d S )Nr3   r   r$   r   r/   r   r   r   gradient  s   z?TestShgoFailures.test_21_2_derivative_options.<locals>.gradientc                 S   s   dS Nr3   r   r/   r   r   r   r    s   z;TestShgoFailures.test_21_2_derivative_options.<locals>.hessc                 S   s   d| S r`  r   )r'   pr   r   r   r]    s   z<TestShgoFailures.test_21_2_derivative_options.<locals>.hesspr\  r  ztrust-constr)irp   )r{   r|   r   )x0r   N)r   r   r1  r-   r   r   r   r'   )r   r[  r^  r_  r  r]  derivative_funcsr|   r{   r   r   r   r   r   r   test_21_2_derivative_options  s"   
z-TestShgoFailures.test_21_2_derivative_optionsN)r   r   r   r=  rA  rF  rI  rN  rP  rT  rV  rW  rZ  r   r   parametrizerd  r   r   r   r   r:    s    		r:  )r   rt   ru   NNNNrv   )-r   r-   numpy.testingr   r   r   r?  r   scipy.optimizer   r   r   scipy.optimize._shgor   r	   r    r!   r   r   r   r4   r  r   r   r=   r   rE   r   rU   r   rZ   r]   r   r.  boundsLJr   rn   rE  rq   rS  r   r   r   r   r:  r   r   r   r   <module>   s    



"
"94  