
    Pi|                        d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlZddlmZmZmZmZm Z  ddl!m"Z#m$Z$ ddl!Z! G d d          Z%dS )z@
Unit tests for the differential global minimization algorithm.
    )PoolN)assert_deallocated)DifferentialEvolutionSolver_ConstraintWrapper)differential_evolutionOptimizeResult)BoundsNonlinearConstraintLinearConstraint)rosenminimize	rosen_der)	csr_array)stats)assert_equalassert_allcloseassert_almost_equalassert_string_equalassert_)raiseswarnsc                   0   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 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 Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+e,j-        .                    d*          d+             Z/d, Z0d- Z1d. Z2d/ Z3e,j-        .                    d*          d0             Z4d1 Z5d2 Z6d3 Z7d4 Z8e,j-        .                    d5          d6             Z9e,j-        .                    d*          d7             Z:e,j-        .                    d*          d8             Z;e,j-        .                    d*          d9             Z<e,j-        .                    d*          d:             Z=e,j-        .                    d*          d;             Z>d< Z?e,j-        j@        e,j-        A                     eBjC                    d=k    d>?          d@                         ZDe,j-        .                    dA          dB             ZEe,j-        .                    d*          dC             ZFdD ZGe,j-        .                    d*          dE             ZHdF ZIdG ZJdH ZKe,j-        .                    d5          dI             ZLdJ ZMdKS )LTestDifferentialEvolutionSolverc                 n   t          j        d          | _        t          j        ddgddgg          | _        ddg| _        t          | j        dg          | _        t          | j        dgdd	
          | _	        t          j
        t          j        ddd                    j        }|| j	        _        d S )Nraiseinvalid               @r   r   r   d   r               ?)popsizemutation皙?皙?)npseterr
old_seterrarraylimitsboundsr   	quadraticdummy_solverdummy_solver2
atleast_2darangeT
population)selfr7   s     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/scipy/optimize/tests/test__differential_evolution.pysetup_methodz,TestDifferentialEvolutionSolver.setup_method   s    )G444hR!#R * + +*79A
D D 9:@ABBEG G G ]29S#s#;#;<<>
(2%%%    c                 2    t          j        di | j         d S )N )r+   r,   r-   r8   s    r9   teardown_methodz/TestDifferentialEvolutionSolver.teardown_method.   s     
	$$DO$$$$$r;   c                     |d         dz  S )Nr      r=   )r8   xs     r9   r1   z)TestDifferentialEvolutionSolver.quadratic1   s    tQwr;   c                    t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d	           t          t          | j        d
          }t          |j        d
           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d	           t          t          | j        d          }t          |j        d           t          |j        j        d	           t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d           t          t          | j        d          }t          |j        d           t          |j        j        d           d S )Nbest1expstrategy_best1best1binrand1bin_rand1rand1exprand2exp_rand2best2bin_best2rand2binrandtobest1bin_randtobest1randtobest1expcurrenttobest1bin_currenttobest1currenttobest1exp)r   r   r0   r   rF   mutation_func__name__r8   solvers     r9   test__strategy_resolvesz7TestDifferentialEvolutionSolver.test__strategy_resolves4   s    -U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6@B B B 	V_j111V)2H===,U-1[6FH H H 	V_&6777V)2NCCC,U-1[6FH H H 	V_&6777V)2NCCC,U-1[6IK K K 	V_&9:::V)24EFFF,U-1[6IK K K 	V_&9:::V)24EFFFFFr;   c                 R   t          j        dg          }| j                            t          j        g d                    }t	          ||           t          j        dg          }| j                            t          j        g d                    }t	          ||           d S )N皙?rA                     ?)r+   r.   r3   rG   r   rJ   r8   resulttrials      r9   test__mutate1z-TestDifferentialEvolutionSolver.test__mutate1   s    4&!!"))"(???*C*CDDv&&&4&!!"))"(???*C*CDDv&&&&&r;   c                 R   t          j        dg          }| j                            t          j        g d                    }t	          ||           t          j        dg          }| j                            t          j        g d                    }t	          ||           d S )Ngr^   r)   )r+   r.   r3   rO   r   rM   rd   s      r9   test__mutate2z-TestDifferentialEvolutionSolver.test__mutate2   s     4&!!"))"(???*C*CDDv&&&3%"))"(???*C*CDDv&&&&&r;   c                     t          j        dg          }| j                            t          j        g d                    }t	          ||           d S )Ng333333?r^   )r+   r.   r3   rR   r   rd   s      r9   test__randtobest1z1TestDifferentialEvolutionSolver.test__randtobest1   sM    4&!!"//0I0IJJv&&&&&r;   c                     t          j        dg          }| j                            dt          j        g d                    }t	          ||           d S )Nr)   r$   r^   )r+   r.   r3   rU   r   rd   s      r9   test__currenttobest1z4TestDifferentialEvolutionSolver.test__currenttobest1   sU    3%"22H___%%
 
 	v&&&&&r;   c                     d}t          | j        | j        |          }t          |j        t          |                     d S )Nr&   r$   r(   )r   r1   r0   r   ditherlist)r8   r(   rZ   s      r9   test_can_init_with_ditheringz<TestDifferentialEvolutionSolver.test_can_init_with_dithering   sJ    ,T^-1[6>@ @ @ 	V]DNN33333r;   c                    t           }d}t          t          t          || j        |           d}t          t          t          || j        |           dt
          j        f}t          t          t          || j        |           d}t          || j        |          }t          d|j                   t          d |j	                   d S )N)r&   r_   rp   r$   r)   r&   )
r   assert_raises
ValueErrorr   r0   r+   nanr   scalerq   )r8   funcr(   rZ   s       r9   +test_invalid_mutation_values_arent_acceptedzKTestDifferentialEvolutionSolver.test_invalid_mutation_values_arent_accepted   s    j5+#+		- 	- 	- 	- j5+#+		- 	- 	- 	- =j5+#+		- 	- 	- 	- ,T-1[6>@ @ @ 	S&,'''T6=)))))r;   c                     d }t          t          d          5  t          |ddg           d d d            d S # 1 swxY w Y   d S )Nc                 |    t          j        t          j        | dz            t          j        |           g          S NrA   )r+   r.   sumrB   s    r9   r{   zETestDifferentialEvolutionSolver.test_invalid_functional.<locals>.func   s+    8RVAF^^RVAYY7888r;   z,func\(x, \*args\) must return a scalar valuematchrA   )rw   RuntimeErrorr   )r8   r{   s     r9   test_invalid_functionalz7TestDifferentialEvolutionSolver.test_invalid_functional   s    	9 	9 	9 EG G G 	= 	= #4'7);<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   :>>c                    t          j        dg          }t          d| j                            |                     t          j        dgdgg          | j        _        t          d| j                            |                     d S )N333333?   r"   r   )r+   r.   r   r2   _scale_parametersr/   r8   rf   s     r9   test__scale_parametersz6TestDifferentialEvolutionSolver.test__scale_parameters   sx    #R*<<UCCDDD $&8cURDM#:#: R*<<UCCDDDDDr;   c                    t          j        dg          }t          d| j                            |                     t          j        dgdgg          | j        _        t          d| j                            |                     d S )Nr   r   r"   r   )r+   r.   r   r2   _unscale_parametersr/   r   s     r9   test__unscale_parametersz8TestDifferentialEvolutionSolver.test__unscale_parameters   sx    "S$+??FFGGG $&8cURDM#:#: S$+??FFGGGGGr;   c                 :   t          j        d          5  t          | j        ddg          }|                    ddg          }t          |d           d d d            n# 1 swxY w Y   t          | j        ddg          }t          |j        dd	g           d S )
Nr   r   r   r   )      ?      @)r0   r   r&   )r   r   r   )	r+   errstater   r1   r   r   r   r   rB   )r8   rZ   vress       r9   test_equal_boundsz1TestDifferentialEvolutionSolver.test_equal_bounds   s    [))) 	$ 	$0"J/  F **C:66AAs###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ %T^j*5MNNSUS#J'''''s   A A""A&)A&c                 
   t          j        g d          }| j                            |           t	          |d         d           t          t          j        |dk    |dk                                                         d S )N)皙??r   g     r@gh㈵rA   r   r   r$   )r+   r.   r2   _ensure_constraintr   r   logical_andallr   s     r9   test__ensure_constraintz7TestDifferentialEvolutionSolver.test__ensure_constraint   sw    ===>>,,U333U1Xs###uz5A:66::<<=====r;   c                 n   t          | j        dgdd          }|                                }t          |j        |                     |j                             t          | j        dgdd          }|                                }t          |j        |                     |j                             d S )Nr   r$   F)maxiterpolishT)r   r1   solver   funrB   r8   rZ   re   s      r9   test_differential_evolutionz;TestDifferentialEvolutionSolver.test_differential_evolution   s     -NWIq
 
 
 VZ!9!9:::,NWIq
 
 
 VZ!9!9:::::r;   c                     t          | j        dg          }|                                }t          |j        |j        dd           d S )Nr   gV瞯<r   )atolrtol)r   r1   r   r   rB   r   s      r9   test_best_solution_retrievalz<TestDifferentialEvolutionSolver.test_best_solution_retrieval  sC    ,T^gYGG&(Q??????r;   c                   	 d	fdd _         t          j        _        	fdd_        d _        _        ddg}t          |dd          }t          di |d	i}t          di |d
	i}|j	        |j	        cxu rdu sn J j        |j        cxk    r	k    sn J |j
        dk    sJ |j
        dk    sJ |                                D ];\  }}|dv r
t          j        |         |           t          ||         |           <d_        t          j        _        d|d<   t          di |d	i}|j        |j        k     sJ d S )N
   c                 X    t          |           }|j        k     r| _        |_        |S N)r   valrB   )rB   r   r{   s     r9   r{   zFTestDifferentialEvolutionSolver.test_intermediate_result.<locals>.func  s,    ((CTX~~Jr;   c                 0   xj         dz  c_         | _        | j        j        dk    sJ | j        j        d         dk    sJ | j         j         k    sJ t          | j        j        j                   t          | j        j        j	                   t          | j        t          | j                             t          t          | j                            D ]9}| j        |         }t          | j        |                   }t          ||           :t          | j        | j        d                    t          | j        | j        d                    | j        dk    sJ | j        du sJ t!          | t"                    sJ j         k    rt$          d S )Nr$   rA   r   zin progressT)nitintermediate_resultr7   ndimshaper   rB   r{   r   r   r   rangelenpopulation_energiesmessagesuccess
isinstancer   StopIteration)r   ir   refcallbackr   s       r9   r   zJTestDifferentialEvolutionSolver.test_intermediate_result.<locals>.callback  s   LLALL+>H(&16!;;;;&17:a????&*hl:::: ,.@@@,0(-2CDDD ,0%8K8M2N2NOOO32FGGHH ' ')=a@/:1=>>S#&&&&,.,7:< < <,0,@CE E E '.-????&.$66661>BBBBB|w&&## '&r;   r   r   rA   ie F)r{   r0   rngr   r   r   &callback function requested stop early/Maximum number of iterations has been exceeded.>   r   r   Tr   r=   )rB   r+   infr   r   r   r{   dictr   r   r   itemsr   r   )
r8   r0   kwargsr   r   fieldr   r   r{   r   s
          @@@r9   test_intermediate_resultz8TestDifferentialEvolutionSolver.test_intermediate_result  s    	 	 	 	 	 6	$ 	$ 	$ 	$ 	$ 	$8 '+$&!4F5III$AAvAAAAA$??v??w??? {ck2222U222222|sw1111'111111{FFFFF{OOOOO))++ 	* 	*JE3...5e<cBBBUS)))) 6x$AAvAAAAAw      r;   c                 r   ddg}d}d	d}t          t          ||          }t          |j        |           d }t          t          ||          }|j        rJ d	d}t          t          ||          }t          |j        |           |j        rJ d	d}t          t          ||          }|j        sJ d S )
Nr   r   r   c                     dS )NTr=   paramconvergences     r9   callback_python_truezVTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_python_trueX  s    4r;   )r   c                     t           r   )r   )r   s    r9   callback_stopzOTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_stopa  s    r;   c                     dgS )Nr   r=   r   s     r9   callback_evaluates_truezYTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_trueg  s	    4Kr;   c                     g S r   r=   r   s     r9   callback_evaluates_falsezZTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_falseo  s    Ir;   )r   )r   r   r   r   r   )r8   r0   expected_msgr   re   r   r   r   s           r9   test_callback_terminatesz8TestDifferentialEvolutionSolver.test_callback_terminatesT  s   &!?	 	 	 	 (6$8
 
 
 	FNL999	  	  	  (vNNN>!!!	 	 	 	 (v@WXXXFNL999>!!!	 	 	 	 (v1IK K K~~r;   c                 f    dg}d}d }t          |||d          }t          |j        d           d S )Nr   )r   r   r   c                     t          |t                    st          d          |d         |d         | z  z   |d         | dz  z  z   S )Nzargs should be a tupler   r$   rA   r   )r   tuplerx   )rB   argss     r9   r1   zLTestDifferentialEvolutionSolver.test_args_tuple_is_passed.<locals>.quadratic{  sK    dE** ; !9:::7T!Wq[(47QU?::r;   T)r   r   gUUUUUU?)r   r   r   )r8   r0   r   r1   re   s        r9   test_args_tuple_is_passedz9TestDifferentialEvolutionSolver.test_args_tuple_is_passedv  sX    	; 	; 	;
 (	(.-1/35 5 5 	FJ/////r;   c                 V    t           }dg}t          t          t          ||d           d S )Nr_   abcrE   )r   rw   rx   r   )r8   r{   r0   s      r9   test_init_with_invalid_strategyz?TestDifferentialEvolutionSolver.test_init_with_invalid_strategy  s=    j0 #(		* 	* 	* 	* 	* 	*r;   c                 
   t           }dg}t          t          t          ||           ddg}t          t          t          ||           t          t           t	          ddgddg                    }t          |j        d           d S )Nr   r   )r_   r`   ra   r   rA   )r   r   )r   rw   rx   r   r	   r   rB   )r8   r{   r0   re   s       r9   test_bounds_checkingz4TestDifferentialEvolutionSolver.test_bounds_checking  s    j0 	" 	" 	" 9%j0 	" 	" 	" (vq!fq!f/E/EFFFHh/////r;   c                    t          j        dd                              dd          }t          t	          |dd d f         |dd d f                             }t          d |d          }d}|                    |d	          \  }}}}}	t          t          t          j	        t          j
        ||||||	g                              d           d S )
Ng      (@float64)dtyperA   rb   r   r$   r'   ra   )r+   r5   reshaperr   zipr   _select_samplesr   r   uniquer.   )
r8   r/   r0   rZ   	candidater1r2r3r4r5s
             r9   test_select_samplesz3TestDifferentialEvolutionSolver.test_select_samples  s    3i00088A>>c&AAA,q!!!t5566,T61EEE	#33IqAABB	"(Ir2r2r#BCCDDEEq	J 	J 	J 	J 	Jr;   c                     t          t          | j        d          }|                                }t	          |j        d           t	          |j        d           d S )Nr$   )r   Fr   )r   r   r0   r   r   r   r   r   s      r9   test_maxiter_stops_solvez8TestDifferentialEvolutionSolver.test_maxiter_stops_solve  sa     -UDKKKKV^U+++V^I	K 	K 	K 	K 	Kr;   c                    t          t          | j        dd          }|                                }t	          |j        d           t	          |j        d           t	          |j        d           t          t          | j        ddd          }|                                }t	          |j        d	           t	          |j        d           t	          |j        d           t          t          | j        ddd
d          }|                                }t	          |j        d
           t	          |j        d           t	          |j        d           d S )Nr$   F)maxfunr   rA   z9Maximum number of function evaluations has been exceeded.ra   (   )r'   r   r   )   /   deferred)r'   r   r   updatingz8Maximum number of function evaluations has been reached.)r   r   r0   r   r   nfevr   r   r   s      r9   test_maxfun_stops_solvez7TestDifferentialEvolutionSolver.test_maxfun_stops_solve  sg    -UDK49; ; ;V[!$$$V^U+++V^&	' 	' 	' -U-1[564946	8 8 8
 V["%%%V^U+++V^&	' 	' 	' -U-1[5649466@B B B V["%%%V^U+++V^%	& 	& 	& 	& 	&r;   c                     t          | j        dgd          }|                                 t          t	          j        |j                  d           d S )Nr   r"   {Gz?)tolr   )r   r1   r   r   r+   argminr   rY   s     r9   test_quadraticz.TestDifferentialEvolutionSolver.test_quadratic  sT    ,T^.9]157 7 7 	RYv9::A>>>>>r;   c                 8    t          | j        dgdd           d S )Nr  r  r$   )r  seed)r   r1   r>   s    r9   test_quadratic_from_diff_evz;TestDifferentialEvolutionSolver.test_quadratic_from_diff_ev  s2    t~ +}#'$%	' 	' 	' 	' 	' 	'r;   c                     t          | j        dgddd          }t          | j        dgddd          }t          |j        |j                   t          |j        |j                   d S )Nr  Fr$   r&   )r   r   r  )r   r1   r   rB   r   )r8   re   result2s      r9   test_rng_gives_repeatabilityz<TestDifferentialEvolutionSolver.test_rng_gives_repeatability  s    ')4/4,-,/	1 1 1
 ))4/4,-,/	1 1 1
 	VXwy)))V[',/////r;   c           	          t           j                                        }g d}|D ]}t          | j        dgd|d|           d S )N)randomlatinhypercubesobolhaltonr  Fr&   )r   r   r  init)r+   r  default_rngr   r1   )r8   r   initsr  s       r9   test_random_generatorz5TestDifferentialEvolutionSolver.test_random_generator  sl     i##%%??? 	. 	.D"4>$/=*/'*'*(,. . . . .	. 	.r;   c                 h    t          t          | j        dd          }|                                 d S )NrD   r$   )rF   r   r   r   r0   r   rY   s     r9   test_exp_runsz-TestDifferentialEvolutionSolver.test_exp_runs  s6    ,U-1[6@568 8 8
 	r;   c                 >    ddg}t          t          |dd           d S )N)ra   1   r$   )r'   r   )r   r   )r8   r0   s     r9   test_gh_4511_regressionz7TestDifferentialEvolutionSolver.test_gh_4511_regression  s-    
 7# 	ufb!DDDDDDr;   c                    t          t          | j        d          }|                    |j                   |                                 t          t          j        |j	                  d           t          |j
        d           d S )Nr_   r   r   rb   )r   r   r0   _calculate_population_energiesr7   _promote_lowest_energyr   r+   r  r   _nfevrY   s     r9   "test_calculate_population_energieszBTestDifferentialEvolutionSolver.test_calculate_population_energies)  sx    ,UDKKKK--f.?@@@%%'''RYv9::A>>> 	V\1%%%%%r;   c                    t          t          | j        dd          }t          |          \  }}t	          t          j        |d          d           t	          |j        d           t          t          t          |           t          t          | j                  }t          |          \  }}t          |          D ]\  }}|\  }}	||	k    sJ ||	}}|dk    r d S  d S )Nr_      )r'   r   r   rA   2   )r   r   r0   nextr   r+   sizer  rw   r   	enumerate)
r8   rZ   rB   r   _fun_prevr   soln	x_currentfun_currents
             r9   test_iterationz.TestDifferentialEvolutionSolver.test_iteration3  s     -UDK468 8 8f3RWQ]]A&&& 	V\2&&& 	mT6222 -UDK@@6ll8 (( 	 	GAt%)"I{{****#[xABww 	 	r;   c                     t          t          | j        dd          }|                                 t	          |j        dk                d S )N皙?F)r  r   )r   r   r0   r   r   r   rY   s     r9   test_convergencez0TestDifferentialEvolutionSolver.test_convergenceM  sJ    ,UDKS49; ; ;"S()))))r;   c                 h    t          t          | j        d d           }|                                 d S )N)r   r   r  rY   s     r9   test_maxiter_none_GH5731z8TestDifferentialEvolutionSolver.test_maxiter_none_GH5731S  s4    
 -UDK48: : :r;   c           	         t          t          t          gt          | j        fR i ddi t          t          | j                  }|                                 t          |j        d           t          t          j
        t          j        |j                                       |                                 t          |j        d           t          t          j
        t          j        |j                                       |                    d           t          |j        d           t          t          j
        t          j        |j                                       t          t          | j        d          }|                    d           t          |j        d           t          t          j
        t          j        |j                                       t          j        dd	d
                              dd          }t          t          | j        |dddd          }t          |j        d           t          t          j
        t          j        |j                                       t          |j        dk               t          |j        dk               t          j        |                    |          dd          }t+          |j        d d         |           t+          t          j        |j        d d                   d           t+          t          j        |j        d d                   d           t          j        dd	d                              dd	          }t          t          t          gt          | j        fR i d|i t          j                            ddd          }t          t          | j        |          }t7          |j        d         |dz             d S )Nr  rubbishr   r  )
qmc_enginer  )r  rv   r_   r   ra   rA   rN   {Gz?r$   )r  rF   r   r   r'   )ra   rA      r   r   )lowhighr%  x0)rw   rx   r   r   r0   init_population_randomr   r  r   r+   r   isinfr   init_population_lhsinit_population_qmclinspacer   num_population_memberspopulation_shapeclipr   r   r7   minmaxr  uniformr   )r8   rZ   r7   unscaled_populationr:  s        r9   test_population_initiationz:TestDifferentialEvolutionSolver.test_population_initiation\  s   
 	j1	-t{+	- 	- 	-  +	- 	- 	-
 -UDK@@
 	%%'''V\1%%%rx :;;<<===""$$$V\1%%%rx :;;<<===""h"777V\1%%%rx :;;<<===,UDKgNNN""g"666V\1%%%rx :;;<<=== [Q++33Aq99
,UDK2<6@26AqJ J J
 	V\1%%%rx :;;<<===-2333'61222 !gf&@&@&L&L&', ,F-bqb13FGGG 	BF6#4RaR#8991===BF6#4RaR#8991=== [Q++33Aq99
j1	.t{+	. 	. 	.  ,	. 	. 	. Y3Sq99,4;2
 
 
 	)!,b3h77777r;   c                     t          t          | j        ddg          }|j        sJ t	          t
                    5  t          t          | j        ddg           d d d            d S # 1 swxY w Y   d S )Nr.  r*   r9   @)r   r   r0   r   rw   rx   )r8   r   s     r9   test_x0z'TestDifferentialEvolutionSolver.test_x0  s    $UDKS#JGGG{{ :&& 	F 	F"5$+3*EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   A((A,/A,c                 8    d }ddg}t          ||d           d S )Nc                 B    | d         dk     rt           j        S | d         S )Nr   r&   r$   )r+   r   r   s    r9   sometimes_infzWTestDifferentialEvolutionSolver.test_infinite_objective_function.<locals>.sometimes_inf  s    tbyyvQ4Kr;   r#   F)r0   disp)r   )r8   rM  r0   s      r9    test_infinite_objective_functionz@TestDifferentialEvolutionSolver.test_infinite_objective_function  s8    	 	 	 &!}V%HHHHHHr;   c                 (   ddg}t          t          |d          }t          |j        dk               t          |j        j        t          u            |                                }|j        sJ t          t          |dd          }|j        sJ d S )Nr    r   )r   rD   )r   rF   )
r   r   r   	_updating_mapwrapper_mapfuncmapr   r   r   )r8   r0   rZ   r   s       r9   test_deferred_updatingz6TestDifferentialEvolutionSolver.test_deferred_updating  s    H%,UFZPPP J.///"+s2333llnn{{ %6J
 
 
 {{r;   c                 `   ddg}t          t          |          }t          |j        dk               t	          t
                    5  t          t          |d          5 }|                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr    	immediaterA   )workersr   )r   r   r   rQ  r   UserWarningr   )r8   r0   rZ   ss       r9   test_immediate_updatingz7TestDifferentialEvolutionSolver.test_immediate_updating  s%   H%,UF;; K/000 ; 	 	,UFAFFF !              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 {j((((((s6   BA?3B?B	BB	BBBc           	      *   ddg}t          d          5 }t          t          |d|j        dd          5 }|j        j        J |j        dk    sJ |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr    rA   r   r)   r_   )r   rX  r  r'   )
ThreadPoolr   r   rT  rR  poolrQ  r   )r8   r0   prZ   s       r9   test_parallel_threadsz5TestDifferentialEvolutionSolver.test_parallel_threads  s$   H%]] 	a!<6J3PQ"
 "
 "
 	%*666#z1111LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4    B0A0$B0A4	4B7A4	8BBBr   c                     ddg}t          t          |dddd          5 }|j        j        J |j        dk    sJ |                                 d d d            d S # 1 swxY w Y   d S )Nr    r   rA   r_   r)   )r   rX  r'   r  )r   r   rR  r^  rQ  r   )r8   r0   rZ   s      r9   test_parallel_processesz7TestDifferentialEvolutionSolver.test_parallel_processes  s    H%(6J1#
 
 
 	%*666#z1111LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0AA #A c                     t          t          ddg          }|                                 t          |                                           d S )Nr   )r   r   r   r   	convergedrY   s     r9   test_convergedz.TestDifferentialEvolutionSolver.test_converged  sC    ,UVV4DEE  ""#####r;   c                 z   d }d t          |t          j         d          }t          t          ddg|f                              t          j        ddg                    }t          |d           t          t          j         d          }t          t          ddg||f          g d	}g d
}t          ||          D ]N\  }}                    t          j        |                    }t          |t          j
        |                     Ot                              t          j        |                    t          j        |                     t          j        fdt          j        |          D                       }	|	j        dk    sJ fd}
t          |
t          j         d          }t          t          ddg||fd          d_        t          j        t          d          5                      t          j        |                     d d d            d S # 1 swxY w Y   d S )Nc                 &    | d         | d         z   gS Nr   r$   r=   r   s    r9   constr_fzNTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f      aD1Q4K= r;   c                 p    t          j        | d         dz  | d         z   | d         | d         z
  g          S Nr   rA   r$   r+   r.   r   s    r9   	constr_f2zOTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f2  3    8QqT1Wqt^QqTAaD[9:::r;   ffffff?r   constraintsr   r)   ?))333333?r$   r   )r&   r&   ))r   {Gz?r   )rI  @r   )r   r   r   c                 :    g | ]}                     |          S r=   )_constraint_violation_fn).0rB   rZ   s     r9   
<listcomp>zPTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.<listcomp>  s=     )@ )@ )@-. *0)H)H)K)K )@ )@ )@r;   )r_   r$   r_   c                 $     |           j         S r   )r6   )rB   rn  s    r9   	constr_f3zOTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f3  s    9Q<<>!r;   F)rr  
vectorizedTz#An array returned from a Constraintr   )r
   r+   r   r   r   rx  r.   r   r   r   r4   r   r}  pytestr   r   )r8   ri  nlccvnlc2xsvsrB   r   constraint_violationr|  rn  rZ   s              @@r9   test_constraint_violation_fnz<TestDifferentialEvolutionSolver.test_constraint_violation_fn  s   	! 	! 	!	; 	; 	; "(RVGS99,UVV4D:=A A A ,,RXsCj-A-ABBB$$$"9rvgs;;,UVV4D:=tF F F
 0//;;;BKK 	2 	2DAq00!==BBa 0 01111 	++BHRLL9928B<<	
 	
 	
  "x )@ )@ )@ )@24(2,,)@ )@ )@  A  A#)Y6666	" 	" 	" 	" 	" #9rvgs;;,UVV4D:=t8=? ? ? !]$I
 
 
 	: 	: ++BHRLL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   ;(H00H47H4c           	         d }d }t          |t          j         d          }t          t          ddg|f          }|                    t          j        ddgddgg                    \  }}t          |ddg           t          |t          j        d	gd
gg                     |j	        dk    sJ t          |t          j         d          }dD ]x}t          t          ddg||f|d          }|                    t          j        ddgddgg                    \  }}t          |ddg           t          |t          j        g dg dg                     |                    t          j        ddgddgg                    \  }}t          |ddg           t          |t          j        g dg dg                     |j	        dk    sJ |                    t          j        ddgddgg                    \  }}t          |ddg           t          |t          j        g dg dg                     |j	        dk    sJ zd S )Nc                 &    | d         | d         z   gS rh  r=   r   s    r9   ri  zZTestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f%  rj  r;   c                 L    | d         dz  | d         z   | d         | d         z
  gS rl  r=   r   s    r9   rn  z[TestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f2(  s)    aD!GadNAaD1Q4K00r;   rp  r   rq  r&   r   Fr)   rI  )rA   r$   rs  )FTr   )rr  r}  r   g333333?)r)   r.  r   )r   ru  r   )rI  rv  r   )rA   r_   rc   T)r   r   r   )
r
   r+   r   r   r   #_calculate_population_feasibilitiesr.   r   r   r   )	r8   ri  rn  r  rZ   feasr  r  	vectorizes	            r9   (test_constraint_population_feasibilitieszHTestDifferentialEvolutionSolver.test_constraint_population_feasibilities$  s   	! 	! 	!	1 	1 	1 "(RVGS99,UVV4D:=A A A
 ==HsCj2r(+,,. .bTE5>***B3%# 8 8999x6!!!!"9rvgs;;& 	& 	&I08H>A4[<E:DF F FF
 AA3*sCj1224 4HD"u~...BHmmm^^^-L$M$MNNNAA3*r2h/002 2HD"u~...BHmmm]]]-K$L$LMMM8v%%%%AA4,R1224 4HD"e}---BHnnnmmm-L$M$MNNN8v%%%%%+	& 	&r;   c                 6   d }t          |t          j         d          }t          t          ddg|f          }t          t                    5  |                                }d d d            n# 1 swxY w Y    ||j                  dk    sJ |j	        sJ d S )Nc                 J    t          j        | d         | d         z   g          S rh  rm  r   s    r9   ri  zGTestDifferentialEvolutionSolver.test_constraint_solve.<locals>.constr_fR       8QqTAaD[M***r;   rp  r   rq  )
r
   r+   r   r   r   r   rY  r   rB   r   )r8   ri  r  rZ   r   s        r9   test_constraint_solvez5TestDifferentialEvolutionSolver.test_constraint_solveQ  s    	+ 	+ 	+ "(RVGS99,UVV4D:=A A A ; 	! 	!,,..C	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! x#%%%%{{s   A//A36A3c                 @   d }t          |t          j         d          }t          t          ddg|fddd          }t          t                    5  |                                }d d d            n# 1 swxY w Y   |j        dk    sJ |j	        rJ t          t          ddg|fd	          }t          |           |j                                        rJ t          j        |j                                                  rJ d
}|j        d         }|j        |dg         |j        d|g<   |j        |dgd d f         |j        d|gd d f<   |j        |dgd d f         |j        d|gd d f<   |                                 t%          |j        d         |           d S )Nc                 J    t          j        | d         | d         z   g          S rh  rm  r   s    r9   ri  zLTestDifferentialEvolutionSolver.test_impossible_constraint.<locals>.constr_fc  r  r;   rv   r   r$   r"   )rr  r'   r   r   r   F)rr  r      )r
   r+   r   r   r   r   rY  r   maxcvr   r$  feasibler   isfiniter   r  r7   r  r   )r8   ri  r  rZ   r   lr  s          r9   test_impossible_constraintz:TestDifferentialEvolutionSolver.test_impossible_constrainta  s   	+ 	+ 	+ "(RVGR88,FF##SV
 
 
 ; 	! 	!,,..C	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! y1}}}};
 -FF##G G GV?&&(((((;v9::>>@@@@@ (+-3-GA-O"Aq6*'-'8!Q'C1a&!!!)$'A	2 	#QFAAAI. 	%%'''V03R88888s   A22A69A6c                    d }t          |t          j         d          }t          t          ddg|f          }|j        } |ddt          j        dg          ddt          j        dg                    sJ  |ddt          j        dg          ddt          j        dg                    d	u sJ  |ddt          j        dg          ddt          j        dg                    sJ  |d
dt          j        dg          dd	t          j        dg                    sJ  |dd	t          j        ddg          dd	t          j        ddg                    sJ  |dd	t          j        ddg          dd	t          j        ddg                    sJ  |dd	t          j        ddg          dd	t          j        ddg                    rJ d S )Nc                 &    | d         | d         z   gS rh  r=   r   s    r9   ri  zCTestDifferentialEvolutionSolver.test_accept_trial.<locals>.constr_f  rj  r;   rp  r   rq  r)   Tr   r   Fg#@r&   g?)r
   r+   r   r   r   _accept_trialr.   )r8   ri  r  rZ   fns        r9   test_accept_trialz1TestDifferentialEvolutionSolver.test_accept_trial  s   	! 	! 	!!(RVGS99,UVV4D:=A A A!r#tRXrd^^S$"GGGGG3bhuoosD"(C5//JJeSSSSr#tRXrd^^S$"GGGGG r#tRXrd^^S%2$HHHHH 3rxc
33rxS	224 4 	5 	5 43rxc
33rxT
335 5 	6 	6 5BsE28S#J#7#7E28S#J#7#79 9 	: 	: : 	: 	:r;   c                   
 t          j        g d          }t          j        dt           j        dg          }t          j        g d          }t          t	          ||          |          }|                    |          dk                                    sJ |                    g d          dk                                    sJ t          j        dd          	                    d	d
          }g }|D ]*}|
                    |                    |                     +t           j                            |                    |j                  t          j        |          j                   t          j        g d          }t          j        g dg dg dg          
t          t          
t           j         d          |          }|                    |          dk                                    sJ |                    g d          dk                                    sJ t          j        dd          	                    dd          }g }|D ]*}|
                    |                    |                     +t           j                            |                    |j                  t          j        |          j                   t          t          t          
          t           j         d          |          }|                    |          dk                                    sJ |                    g d          dk                                    sJ 
fd}t!          |t           j         d          }	t          |	g d          }|                    |          dk                                    sJ |                    g d          dk                                    sJ d S )N)r   r  r   r&   F   )r$   rA   r_   r   )rc         r$      ra   r_   )r$   rA   r_   r`   )ra   r   r   rb   )r%   r      r   )r   rA   r   r`      r%   r`   c                 .                         |           S r   )dot)rB   As    r9   r   zDTestDifferentialEvolutionSolver.test_constraint_wrapper.<locals>.fun  s    5588Or;   )r+   r.   r   r   r	   	violationanyr   r5   r   appendtestingr   r6   r   r   r
   )r8   lbubr:  pcr  
violationsrB   r   	nonlinearr  s             @r9   test_constraint_wrapperz7TestDifferentialEvolutionSolver.test_constraint_wrapper  s   Xkkk""XsBFB'((Xiii  r233R  1$))+++++^^^,,16688888 Yq"%%a++
 	/ 	/Abll1oo....

""2<<#5#5rx
7K7K7MNNNXlll##HlllLLL,,,?@@ 0RVGQ ? ?DDR  1$))+++++---..!388::::: Yq"%%a++
 	/ 	/Abll1oo....

""2<<#5#5rx
7K7K7MNNN 01w J J "$ $R  1$))+++++---..!388:::::	 	 	 	 	 (bfWa88		+;+;+;<<R  1$))+++++---..!388:::::::r;   c                    d }t          |ddgddg          }t          |ddg          }t          j        |j        d                   dk    sJ g d}g d	}t          ||          D ](\  }}t          |                    |          |           )t          |                    t          j        |          j	                  t          j        |          j	                   |
                    t          j        |          j	                  j        dt          |          fk    sJ |                    t          j        |          j	                  j        dt          |          fk    sJ |j        dk    sJ |j        dk    sJ d S )
Nc                 v    t          j        | d         dz  | d         z   | d         dz  | d         z
  g          S rl  rm  r   s    r9   cons_fzQTestDifferentialEvolutionSolver.test_constraint_wrapper_violation.<locals>.cons_f  sD     8QqTQY1-qTQY1-/ 0 0 0r;   rv   g333333rA   r&   r$   r   )ro   )r&   rt  )rt  rt  )r)   333333)r)   r   ))r   r   )r   r)   )ru  r   )gRQ?r   )r5  g=
ףp=?)r
   r   r+   r%  r0   r   r   r  r.   r6   r   r   r   
num_constrparameter_count)r8   r  r  r  r  r  rB   r   s           r9   !test_constraint_wrapper_violationzATestDifferentialEvolutionSolver.test_constraint_wrapper_violation  s|   	0 	0 	0 "&2w-!Q@@c1X..wry|$$))))HHHCCCBKK 	0 	0DAqBLLOOQ//// 	RXb\\^44	( 	( 	(vvbhrlln%%+3r77|;;;;||BHRLLN++1aR\AAAA}!!!!!Q&&&&&&r;   c                    t          j                    5  t          j        dt                     t	          j        g dg dg          }d d d            n# 1 swxY w Y   t          |dd          }t	          j        d          }t          ||          }|	                    |          j
        dk    sJ t	          j        d                              dd	          }|	                    |          j
        d
k    sJ d S )Nignore)r$   r$   r$   r   )rA   rA   rA   r   r   r$   r`   )rA   r  ra   )rA   ra   )warningscatch_warningssimplefilterPendingDeprecationWarningr+   matrixr   onesr   r  r   r5   r   )r8   r  lcr:  cwxtrials         r9   test_matrix_linear_constraintz=TestDifferentialEvolutionSolver.test_matrix_linear_constraint  s7    $&& 	0 	0!(,EFFFY - / 0 0F	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 fa++WQZZB'' ||B%---- 5!!))!Q//||F##)V333333s   5AAAr  c           
      B
   d }t          j        d          }d|dg df<   d|dddgf<   d	|d
g df<   d|dg df<   d|dddgf<   d	|dg df<   d|dg df<   d|dd
dgf<   d	|dg df<   |dd dd f         }t          j        g d          }t          |t           j         |          }dgdz  dgd
z  z   dgz   }t          ||dd|fdd          }d}d }t           ||          |d!"           |j        sJ t          |j        |d!"           t          |j	        |d#"           t          t          j        ||j        z  |k                         t          t          j        |j        t          j        |          d d d$f         k                         t          t          j        |j        t          j        |          d d df         k                         t          t          |          t           j         |          }t          ||dd%|fdd&          }t           ||          |           |j        sJ t          |j        |d'"           t          |j	        |d#"           t          t          j        ||j        z  |k                         t          t          j        |j        t          j        |          d d d$f         k                         t          t          j        |j        t          j        |          d d df         k                         d( }	d) }
t          |d dd d f         t           j         |d d                   }t          |ddd d f         t           j         |dd                   }t          |	t           j         |dd                   }t          |
t           j         |dd                   }||||f}t          j                    5  t          j        d*t"                     t          ||dd%|dd&          }d d d            n# 1 swxY w Y   t          |j        |d!"           t          |j	        |d#"           t          t          j        ||j        z  |k                         t          t          j        |j        t          j        |          d d d$f         k                         t          t          j        |j        t          j        |          d d df         k                         d S )+Nc                     t          j        dg| f          } t          j        d| dd         z            d| dd         z  | dd         z  z
  t          j        | dd                    z
  }|S )Nr   ra   r$   )r+   hstackr   rB   r   s     r9   fz2TestDifferentialEvolutionSolver.test_L1.<locals>.f  si    	A3(##A&1QqS6""Qq1vXa!f_4rvae}}DCJr;   )r      )rA   rA   r$   r$   r$   )r$   rA   r      )r$   rA   r   )r   rv   r$   r_   )r`   ra   r   r`   )r$   r_   r   r  ra   r  rb   )rb   r%   r  r%   )rA   r_   r  r"  r  r"  	   )r  r  r"  )	r   r   r   r   r   r   r   r   r   r#   r!   rH   i90  r5  rF   r   rr  r'   r  )r$   r$   r$   r$   r$   r$   r$   r$   r$   r_   r_   r_   r$   iga2U0*C?r   g{Gzt?r   iz r]   gMb@?c                     t          j        dg| f          } d| d         z  d| d         z  z   | d         z   | d         z   d| d         z  | d         z   gS )Nr   rA   r_   r  r"  r  r+   r  r   s    r9   c1z3TestDifferentialEvolutionSolver.test_L1.<locals>.c1A  s]    	A3(##AadFQqtVOae+ae3qtGaeO% %r;   c                 j    t          j        dg| f          } d| d         z  | d         z
  | d         z   S )Nr   r   r  r  r"  r  r   s    r9   c2z3TestDifferentialEvolutionSolver.test_L1.<locals>.c2F  s6    	A3(##Aad7QqT>AbE))r;   r  )r+   zerosr.   r   r   r   r   r   rB   r   r   r   r   r
   r  r  r  rY  )r8   r  r  bLr0   r   x_optf_optr  r  L2NN2rr  s                  r9   test_L1z'TestDifferentialEvolutionSolver.test_L1  s   	 	 	
 HX)!^^^
!aW*$!ZZZ-)!^^^
!aW*$!ZZZ-)!^^^
!aW*$!ZZZ-abb!""fIH33344Q++!xjl*fX5 %v
A44
 
 

 8%%d3333{{u40000T2222qw!|$$%%%su 0 0A 6677888su 0 0A 6677888 Yq\\BF7A66 %v
aT4
 
 

 	%%((({{u40000T2222qw!|$$%%%su 0 0A 6677888su 0 0A 6677888
	% 	% 	%
	* 	* 	* Qrr111uXw"1"66a!QQQi"&!AaC&99RVGQqsV44 bfWa!f55!Rn$&& 	 	!(K888(6JG'  C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	u40000T2222qw!|$$%%%su 0 0A 6677888su 0 0A 667788888s   01P--P14P1c           	      P   d }d }t          |dt          j                  }dgdz  }|}t          j                    5  t          j        dt                     t          ||dd|	          }d d d            n# 1 swxY w Y   d
}d}t           ||          |           t          |j	        |           t          |j
        |d           |j        sJ t          t          j        t          j         ||j
                            dk                         t          t          j        |j
        t          j        |          d d df         k                         t          t          j        |j
        t          j        |          d d df         k                         d S )Nc                 ^   t          j        dg| f          } | 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   rA   ra   r"  r_   r`   r  rb   r%   r  r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L2.<locals>.fa  s    	A3(##AaDGa<!QqT"WqL.01Q47:Q!R!|^KadAg: !!A$'	*,-aD!G467!fQqTkBDFqtGLQqT6C Jr;   c                 @   t          j        dg| f          } dd| d         dz  z  z
  d| d         dz  z  z
  | d         z
  d| d         dz  z  z
  d| d         z  z
  dd	| d         z  z
  | d         dz  z
  d
| d
         dz  z  z
  d| d         z  z   dd| d         z  z
  d| d         z  z
  d| d         dz  z  z
  | d         z
  | d         z   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   gS )Nr      rA   r$   r_   r`   ra         rb   r  r%   i  r   r  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L2.<locals>.c1h  sG   	A3(##A!AaD!G)Oa!ai/!A$61Q47BQqtVK"QqT'MAaD!G+a!ai7!AaD&@!AaD&L1QqT6)BqtQwJ61=!DqtQwJ1q(1QqT6!A$;61Q47BadF!W%& &r;   r   r   r%   r  rH     rF   r   rr  gy\
E@)gܤ@g$H8?g	޿g0ev@gn8)gk_@/?g0g+?h㈵>r  r$   )r
   r+   r   r  r  r  rY  r   r   r   rB   r   r   r   r.   )	r8   r  r  r  r0   rr  r   r  r  s	            r9   test_L2z'TestDifferentialEvolutionSolver.test_L2]  s   	 	 		& 	& 	&  Arv..Q$&& 	L 	L!(K888(FZ-1{L L LC	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L
 "1 	%%((('''u40000{{rx35		**a/00111su 0 0A 6677888su 0 0A 667788888s   /A88A<?A<c           	         d }t          j        d          }d|dg df<   d|dg df<   d|d	g d
f<   |dd dd f         }t          j        g d          }d }t          ||t           j                  }t          |dt           j                  }dgdz  }||f}t          j                    5  t          j        dt                     t          ||d|d	          }	d d d            n# 1 swxY w Y   d}
d}t           ||
          |d           t          |	j        |
d           t          |	j        |d           |	j        sJ t          t          j        ||	j        z  |k                         t          t          j        t          j         ||	j                            dk                         t          t          j        |	j        t          j        |          d d df         k                         t          t          j        |	j        t          j        |          d d df         k                         d S )Nc                    t          j        dg| f          } | d         dz  | d         dz  z   | d         | d         z  z   d| d         z  z
  d| d         z  z
  | d         dz
  dz  z   d| d         d	z
  dz  z  z   | d	         dz
  dz  z   d| d
         dz
  dz  z  z   d	| d         dz  z  z   d| d         dz
  dz  z  z   d| d         dz
  dz  z  z   | d         dz
  dz  z   dz   }|S )Nr   r$   rA   r  r  r_   r   r`   ra   rb   r%   r  r  r  -   r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L3.<locals>.f  s    	A3(##AQ47QqT1W$qtAaDy02ad7:R!WDaDGa< "#QqT!VaK-034Q46A+>@A1Q46A+NQqT1W9 !A$r'A~.011Q47Q,? bEAI>" %''C
 Jr;   )r`   r  )r  r  r_   ir$   )r$   rA   r%   r  )r   r     r   rA   )r  r   r  rA   r_   )r$   rA   r  r   )ir   ic                    t          j        dg| f          } d| d         z  d| d         z  z
  d| d         dz
  dz  z  z
  d	| d
         z  z   d| d         dz
  dz  z  d| d         dz
  dz  z  z
  d| d         dz  z  z
  d	| d         z  z   dz   | d         dz   d| d         dz
  dz  z  z
  d| d         z  | d         z  z   d| d         z  z
  d| d         z  z   d| d         dz  z  d| d         z  z
  | d         dz
  dz  z
  d| d         z  z   dz   d| d         dz
  dz  z  d| d         dz
  dz  z  z
  d| d         dz  z  z
  | d         z   dz   gS )Nr   r_   r$   rb   rA   r"  r  r  r%   r   r   r`   x   r  ra   r  r         r   r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L3.<locals>.c1  s   	A3(##AadFQqtVOb!A$q&1n4q2w>!Q{NQ!Q{]2QqtQwY>1Q4G#MqT1WHq!A$q&1},q1vad{:R!WDq1vMqtQwJ1Q4'1Q46A+5!A$>C!A$q&1$q!A$q&1}4q1qy@1Q4G"L	N Nr;   r   r   r   r  r  )r   rr  r'   )
gWXp?`@g@gVW@!@g3Ib@grq?g` ?g$F-t%?g6N#@g7h @g]y @g<6cN8@r  r  ư>)r+   r  r.   r   r   r
   r  r  r  rY  r   r   rB   r   r   r   r   r8   r  r  r  r  r  r  r0   rr  r   r  r  s               r9   test_L3z'TestDifferentialEvolutionSolver.test_L3  s   	 	 	 HW*!\\\/+!\\\/*!]]]
abb!""fIH^^^$$	N 	N 	N Q26**Arv..R!f$&& 	M 	M!(K888(F5@!M M MC	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
C%%d3333u40000T2222{{q35yA~&&'''rx35		**a/00111su 0 0A 6677888su 0 0A 667788888s   -/C((C,/C,c           
      b   d }t          j        d          }d|dddgf<   d|dg d	f<   d
|dddgf<   |dd dd f         }t          j        g d          }d }t          |t           j         d          }t          |dt           j                  }dgdgdz  z   dgdz  z   }||f}t          j                    5  t          j        dt                     t          ||dd|dd          }	d d d            n# 1 swxY w Y   d}
g d}t           ||          |
d           t          |	j        |
d           t          j                    dk    r@t          j        t           j                  j        dk     rt          |	j        |dd            nt          |	j        |d!d"            |	j        sJ t)          t          j        ||	j        z  |k                         t)          t          j        t          j         ||	j                            dk                         t)          t          j        |	j        t          j        |          d d df         k                         t)          t          j        |	j        t          j        |          d d df         k                         d S )#Nc                 :    t          j        | d d                   S )Nr_   r+   r   r   s    r9   r  z2TestDifferentialEvolutionSolver.test_L4.<locals>.f  s    6!BQB%== r;   )r`   r  ){Gzd?r  r$   r`   rb   )r  r  g{GzdrA   )ra   r%   r`   )r5  g{Gzr_   r  ra   )r$   r$   r$   c                 `   t          j        dg| f          } | d         | d         z  d| d         z  z
  d| d         z  z
  dz   | d         | d	         z  d
| d         z  z
  | d         | d         z  z
  d
| d         z  z   | d         | d         z  dz
  | d         | d         z  z
  d| d         z  z   gS )Nr   r$   rb   g!> 
@r`   r"   gSUX@rA   r%   i  ra   r_   r  i i	  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L4.<locals>.c1  s    	A3(##AaD1I	!A$.QqT9IEaD1IQqT	)AaD1I5QqT	AaD1I'!A$qt)3d1Q4i?A Ar;   r   )r"   '  )  r  )r   r  r  rH   r  r]   r  gh|?@)got@g?@g:@gt$f@gVfyr@gh o?k@gCq@gVfx@MbP?r  Windowsgv!>gy&1l?)r   r   gh㈵>ga2U0*c?)r+   r  r.   r   r   r
   r  r  r  rY  r   r   r   platformsystemr   intpitemsizerB   r   r   r   )r8   r  r  r  r  r  r  r0   rr  r   r  r  s               r9   test_L4z'TestDifferentialEvolutionSolver.test_L4  s    	! 	! 	! HV%!aV)1!YYY,"!aV)abb!""fIHYYY	A 	A 	A Q++Arv..=/!"33zl1nD!f$&& 	 	!(K888(6JD'  C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 2 2 2 	%%e4444U3333 O**rx/@/@/IA/M/MCE5vFCCCCC CE5t&AAAA{{q35yA~&&'''rx35		**a/00111su 0 0A 6677888su 0 0A 667788888s   91C66C:=C:c           	         d }d }t          |t          j         d          }dgdz  }|}t          ||dd|          }d	}d
}t	           ||          |d           t	          |j        |d           |j        sJ t          t          j        t          j	         ||j
                            dk                         t          t          j        |j
        t          j	        |          d d df         k                         t          t          j        |j
        t          j	        |          d d df         k                         d S )Nc                 "   t          j        dg| f          } t          j        dt           j        z  | d         z            dz  t          j        dt           j        z  | d         z            z  | d         dz  | d         | d         z   z  z  }| S )Nr   rA   r$   r_   )r+   r  sinpir  s     r9   r  z2TestDifferentialEvolutionSolver.test_L5.<locals>.f  s~    	A3(##A6!BE'!A$,''*26!BE'!A$,+?+??aD!GQqT!A$Y')C4Kr;   c                     t          j        dg| f          } | d         dz  | d         z
  dz   d| d         z
  | d         dz
  dz  z   gS )Nr   r$   rA   r`   r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L5.<locals>.c1  sU    	A3(##AaD!GadNQ&!H!Q{*, ,r;   r   r   r   rA   rI   r  r  )gJIť?gU(C@g#gh㈵>r  -C6?r$   )r
   r+   r   r   r   r   r   r   r   r.   rB   	r8   r  r  r  r0   rr  r   r  r  s	            r9   test_L5z'TestDifferentialEvolutionSolver.test_L5  sV   	 	 		, 	, 	,
  RVGQ//1$Q1<> > > )%%d3333T2222{{rx35		**a/00111su 0 0A 6677888su 0 0A 667788888r;   c           	         d }d }t          |dt          j                  }ddg}|}t          ||dd|d	          }d
}d}t	           ||          |d           t	          |j        |d           t	          |j        |d           |j        sJ t          t          j	        t          j
         ||j                            dk                         t          t          j	        |j        t          j
        |          d d df         k                         t          t          j	        |j        t          j
        |          d d df         k                         d S )Nc                 n    t          j        dg| f          } | d         dz
  dz  | d         dz
  dz  z   }|S )Nr   r$   r   r_   rA   r  r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L6.<locals>.f  s>    	A3(##AQ47Q,!A$)a/CJr;   c                     t          j        dg| f          } | d         dz
  dz  | d         dz
  dz  z   dz
  | d         dz
  dz   | d         dz
  dz  z
  dz   gS )Nr   r$   ra   rA   r"   rb   gp=
׳T@r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L6.<locals>.c1  sm    	A3(##AqT!VaK1Q4!8a-/#5d1fq[LAaD1Hq=058: :r;   r   )   r"   r!   rI   r  gHz>)rF   r   rr  r  )gq=
ף0,@g??g1r  r  r  r  r$   )r
   r+   r   r   r   r   rB   r   r   r   r.   r  s	            r9   test_L6z'TestDifferentialEvolutionSolver.test_L6  sm   	 	 	
	: 	: 	:
  Arv..X&$Q1<$H H H!%%d3333U3333u40000{{rx35		**a/00111su 0 0A 6677888su 0 0A 667788888r;   c           	         d }d }t          |g dg d          }ddgdgdz  z   }|}t          ||d	d
|          }g d}d}t           ||          |           t          |j        |d           t          |j        |d           |j        sJ t          t          j        t          j	         ||j                            t          j	        g d          k                         t          t          j        t          j	         ||j                            t          j	        g d          k                         t          t          j        |j        t          j	        |          d d df         k                         t          t          j        |j        t          j	        |          d d df         k                         d S )Nc                     t          j        dg| f          } d| d         dz  z  d| d         z  | d         z  z   d| d         z  z   d	z
  }|S )
Nr   g+dvqn@r_   rA   g"C?r$   ra   gtۈB@gn@r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L7.<locals>.f+  s\    	A3(##AQqT1W$y1~ad'::QqT>"$-.CJr;   c                    t          j        dg| f          } dd| d         z  | d         z  z   d| d         z  | d         z  z   d	| d
         z  | d         z  z
  dd| d         z  | d         z  z   d| d         z  | d         z  z   d| d
         dz  z  z   dd| d
         z  | d         z  z   d| d         z  | d
         z  z   d| d
         z  | d         z  z   gS )Nr   gl#fUU@g+WPIw?rA   ra   g=BD?r$   r`   gOlb?r_   gaۢ T@g+<$!6}?g h?g^5a?g/h"@gxLCs?gݗT?g^gED_?r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L7.<locals>.c11  s    	A3(##A	!A$qt 33i!nQqT6IIadN1Q4'( y1~ad22Yqt^AaD5HHadAg%& y1~ad22Yqt^AaD5HHadN1Q4'(	 	r;   )r   Z   r  )\   n      )N   f   )!   r  )   r  r_   rI   r  r  )gq S@g] @@g˻f=@g:F@g%ShMcB@gCgbr  r  r   r$   )
r
   r   r   rB   r   r   r   r+   r   r.   r  s	            r9   test_L7z'TestDifferentialEvolutionSolver.test_L7)  s   	 	 		 	 	  KKK??X&(A5$Q1<> > >
   %%(((u40000T2222{{rx35		**bh{{{.C.CCDDEEErx35		**bh}}}.E.EEFFGGGsu 0 0A 6677888su 0 0A 667788888r;   ppc64lezfails on ppc64le)reasonc           	         d }t          j        d          }d|dddgf<   d|dddgf<   |dd dd f         }t          j        ddg          }d	 }t          ||t           j                  }t          |t          j        dd
          t          j        dd                    }dgdz  dgdz  z   }||f}t          j                    5  t          j	        dt                     t          ||dd|d          }	d d d            n# 1 swxY w Y   d}
d}t           ||
          |d           t          |	j        d d         |
d d         d           t          |	j        dd          |
dd          d           t          |	j        |d           |	j        sJ t!          t          j        ||	j        z  |k                         t!          t          j        t          j         ||	j                            d
k                         t!          t          j        t          j         ||	j                            dk                         t!          t          j        |	j        t          j        |          d d df         k                         t!          t          j        |	j        t          j        |          d d df         k                         d S )Nc                     t          j        dg| f          } d| d         z  d| d         dz  z  z   d| d         z  z   d| d         dz  z  z   }|S )Nr   r_   r$   r  rA   g^>r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L8.<locals>.f[  sZ    	A3(##AAaD&8AaD!G++a!f4z!A$'7IICJr;   )r_   ra   )r$   rv   r$   r`   r_   rA   皙c           	         t          j        dg| f          } dt          j        | d          dz
            z  dt          j        | d          dz
            z  z   dz   | d         z
  dt          j        | d         dz
            z  dt          j        | d         | d         z
  dz
            z  z   dz   | d         z
  dt          j        | d         dz
            z  dt          j        | d         | d         z
  dz
            z  z   d	z   gS )
Nr   r  r_   rc   r`   gfffff@r$   rA   g33333;@)r+   r  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L8.<locals>.c1f  s   	A3(##A1d
+++d261Q4%*3E3E.EEaD!!T	***T"&1ad42H2H-HHaD!!T	***T"&1ad42H2H-HH r;   MbPr  )r   i  )r  g?r  rH   r  i  )rF   r   rr  r   )gEGr?@gT㥛D@g&D
n?gd,[ٿg#J{@r  gMb`?r  r   )r+   r  r.   r   r   r
   fullr  r  r  rY  r   r   rB   r   r   r   r   r  s               r9   test_L8z'TestDifferentialEvolutionSolver.test_L8W  s   	 	 	
 HV!aV)!aV)abb!""fIHdD\""		 		 		 Q26**BGAv$6$658I8IJJQ}Q.!f$&& 	7 	7!(K888 )FZ-1{157 7 7C	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 <%%d3333bqb	5!948888abb	5948888T2222{{qw!|$$%%%rx35		**f455666rx35		**e344555su 0 0A 6677888su 0 0A 667788888s   0DD
Dra   c           	         d }d }t          |dgdg          }dgdz  }|}t          ||dd|	          }t          j        d          dz  d
g}d}t	           ||          |           t	          t          j        |j                  |d           t	          |j        |d           |j        sJ t          t          j
        t          j         ||j                            dk                         t          t          j
        t          j         ||j                            dk                         t          t          j
        |j        t          j        |          d d df         k                         t          t          j
        |j        t          j        |          d d df         k                         d S )Nc                 d    t          j        dg| f          } | d         dz  | d         dz
  dz  z   S )Nr   r$   rA   r  r   s    r9   r  z2TestDifferentialEvolutionSolver.test_L9.<locals>.f  s6    	A3(##AQ47ad1fq[((r;   c                 Z    t          j        dg| f          } | d         | d         dz  z
  gS rl  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L9.<locals>.c1  s0    	A3(##AaD1Q47N##r;   r!  r  ru   rA   rI   r  r  r&   g      ?r  r   r$   )r
   r   r+   sqrtr   absrB   r   r   r   r   r.   r  s	            r9   test_L9z'TestDifferentialEvolutionSolver.test_L9  s   	) 	) 	)	$ 	$ 	$  UGeW551$Q1<> > > As#%%(((suu48888T2222{{rx35		**f455666rx35		**e344555su 0 0A 6677888su 0 0A 667788888r;   c                    t           j                            d          }t          j        }d} |j        |d|d}d ddg}dd	g}t          |||f|d|
          }|j        d         dk    sJ t          |j        |d           t          |||f|d|
          }fd}	t          |	|j        d         d||fd	g          }
t          |j        d         |
j                   |j
        |j
        k    sJ d S )Nl   b	)ra   r&   r  )r%  random_statec                     |\  }}t          j         |j        |g| R                                d           }t          j        |          rt           j        }|S )Nrv   axis)r+   logpmfr   isnanr   )r_  r   distrB   lls        r9   r{   z>TestDifferentialEvolutionSolver.test_integrality.<locals>.func  sZ    GD!&!a))--2-666Bx|| VIr;   TF)r$      )r   gffffff?)r   integralityr   r   r   ra   g?)r   c                 ^    |\  }}} t          j        || d         g          ||          S )Nr   rm  )r_  r   nr2  rB   r{   s        r9   func2z?TestDifferentialEvolutionSolver.test_integrality.<locals>.func2  s4    JAtQ4!QqT++T1555r;   r$   )r   r0   )r+   r  r  r   nbinomrvsr   rB   r   r   r   )r8   r   r2  shapesrB   r5  r0   r   res2r8  LBFGSBr{   s              @r9   test_integralityz0TestDifferentialEvolutionSolver.test_integrality  sU    i##M22|DHf5s;;;	 	 	 Um9%$T6q	1<U),. . .
 uQx1}}}}vE2222 &dF$2=d*-/ / /	6 	6 	6 	6 	6 %!T1"+. . .q	68,,,x37""""""r;   c                 *   d }g d}g d}t          ||dd          }t          |j        d         g d           t          |j        d         g d	           t          ||d|          }t          |j        d         g d
           t          |j        d         g d           t          |j        g d           |j        du sJ g d}t          ||d|          }t          |j        d         g d           t          |j        d         g d           t          t          j        |j        d                   g d           t          t          j        |j        d                   g d           g d}t          ||d|          }t          |j        d         g d           t          |j        d         g d           g d}t          j	        t          d          5  t          ||d|           d d d            d S # 1 swxY w Y   d S )Nc                     | S r   r=   r   s    r9   r  zBTestDifferentialEvolutionSolver.test_integrality_limits.<locals>.f  s    Hr;   )TFT))r.  r   r   皙@)ffffff
@皙@F)r0   r   r5  r   )r.  r   rC  r$   )r   rB  rD  )r&   r   g      @)g      ?rB        @))r  grA  )g$gffffff@)g      r         %)r  rB  rE  )      r   g      $)rG  r   g      @))ffffff$g333333 rA  g%gr#)rF  r   rF  )g      !rB  g      #))rH  g333333$rA  rI  zOne of the integralityr   )r   r   r/   r   r5  r   r+   roundr~  r   rx   )r8   r  r5  r0   rZ   s        r9   test_integrality_limitsz7TestDifferentialEvolutionSolver.test_integrality_limits  s   	 	 	 *))555 -Qve9>@ @ @a(///:::a(///::: -Qve9DF F Fa(///:::a(///:::V')<)<)<===}%%%%999,Qve9DF F Fa(*<*<*<===a(*:*:*:;;; 	q!1224F4F4FGGGq!1224D4D4DEEE>>>,Qve9DF F Fa(*=*=*=>>>a(*;*;*;<<<???]:-EFFF 	A 	A'&4?A A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   'HHHc                    d }d }t          j        t          d          5  t          || j        dd           d d d            n# 1 swxY w Y   t          t          d          5  t          || j        d	           d d d            n# 1 swxY w Y   t          t          d
          5  t          || j        dt          d           d d d            n# 1 swxY w Y   dgfd}ddg}t          t          |dd          }t          ||ddd          }t          |j
        |j
                   d         |j        k    sJ |j        |j        k    sJ d S )Nc                 0    t          j        | dz            S r   r  r   s    r9   r1   zBTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic  s    6!Q$<<r;   c                 4    t          j        | dz  d          S )NrA   r   r-  r  r   s    r9   quadratic_veczFTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic_vec  s    6!Q$Q''''r;   zThe vectorized functionr   Tr   )r}  r   z#differential_evolution: the 'vector)r}  z$differential_evolution: the 'workers)r}  rX  r   r   c                 B    dxx         dz  cc<   t          |           S rh  )r   )rB   ncallss    r9   	rosen_veczBTestDifferentialEvolutionSolver.test_vectorized.<locals>.rosen_vec   s#    1IIINIII88Or;   r  r$   )r   r   )r}  r   r   )r~  r   r   r   r0   r   rY  rT  r   r   rB   r   r   )r8   r1   rO  rR  r0   res1r<  rQ  s          @r9   test_vectorizedz/TestDifferentialEvolutionSolver.test_vectorized  s   	  	  	 	( 	( 	( ]</HIII 	I 	I"9dk.2ZI I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 ;&KLLL 	4 	4"=$+.24 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4
 ;&LMMM 	8 	8"=$+.2C,68 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
 	 	 	 	 	 7#%eVj*+- - -%iD/9qB B B 	'''ayDI%%%%x48######s5   AAA)BBB.CC Cc           	         d }d }t          |t          j         d          }t          |dd          }d }ddg}t          t          |dd	||gd
          }t          ||ddd	||gd
          }t          |j        |j                   d S )Nc                 J    t          j        | d         | d         z   g          S rh  rm  r   s    r9   ri  zMTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f0  r  r;   c                 p    t          j        | d         dz  | d         z   | d         | d         z
  g          S rl  rm  r   s    r9   rn  zNTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f23  ro  r;   rp  )r   r&   r   c                     d| dd          | d d         dz  z
  dz  z  }|d| d d         z
  dz  z  }t          j        |          S )Nr"   r$   rv   r   )r+   squeeze)rB   r   s     r9   rR  zNTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.rosen_vec9  sS    quq"vs{*S00A!af*s""A:a== r;   r  r   r$   F)r   r   rr  r   T)r}  r   r   rr  r   )r
   r+   r   r   r   r   rB   )	r8   ri  rn  nlc1r  rR  r0   rS  r<  s	            r9   test_vectorized_constraintsz;TestDifferentialEvolutionSolver.test_vectorized_constraints/  s    	+ 	+ 	+	; 	; 	; #8bfWc::"9j*EE	! 	! 	! 7#%eVj*+$-24 4 4 &iD/9q37,-24 4 4
 	'''''r;   c                    t          | j                  fdd _        t          t          | j        dd          }t          t          | j        ddd          }|j        J t          |j        t          j	                  d           |j
        j        j
        k    sJ |j
        |j
        k    sJ fd}t          t          d	
          5  t          t          | j        |d           d d d            n# 1 swxY w Y   d t          j                            d          }t          t          | j        d|d          }t          t          |j        | j        d          }t          j                            d          }t          t          | j        |d          }t          |j        |j                   t          |j
        |j
                   d S )Nc                 H    t          | |ft          dd|_        j        S )Nztrust-constr)jacmethod)r   r   r   )r   rB   kwdspfs      r9   ra  z@TestDifferentialEvolutionSolver.test_polish_function.<locals>.pfO  s*    c1S)NSSdSSBF6Mr;   r$   r   )r   r   r   Tr  r  c                 ~    d|v sJ t          |d         t                    sJ d|v sJ t          j                  S )Nr0   rr  )r   r	   r+   r  )r{   rB   r`  r  s      r9   dummy_pfzFTestDifferentialEvolutionSolver.test_polish_function.<locals>.dummy_pf`  sM    t####d8nf55555 D((((71::r;   z(The result from a user defined polishingr   )r   r   c                 "    t          | |fddi|S )Nr_  L-BFGS-B)r   )r{   rB   r`  s      r9   ra  z@TestDifferentialEvolutionSolver.test_polish_function.<locals>.pft  s    D!??J?$???r;   l   -g F)r   r   r   re  )r0   r_  )r   r0   r   r   r   r^  r   rB   r+   r  r   rw   rx   r  r  r   )r8   r   r   rc  r   r<  r  ra  s         @@r9   test_polish_functionz4TestDifferentialEvolutionSolver.test_polish_functionK  sD   	 	 	 	 	 $UDKASTUUU$UDKaUVWWW
 w"""rwqzz5555w"&*$$$$w#'!!!!	 	 	 	 	 <
 
 
 		 		 #	   			 		 		 		 		 		 		 		 		 		 		 		 		 		 			@ 	@ 	@ i##L11$4;u#q
 
 
 uceDK
KKKi##L11%4;rsA
 
 

 	tv&&&*****s   C??DDc                     d }t          d dt          j                  }t          d t          j         d          }t          |ddg||gddd	
          }|j        du sJ d|j        v sJ d S )Nc                 l    t          j        | d                   t          j        | d                   z   S rh  )r+   cosr  r   s    r9   r{   zUTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.func  s%    6!A$<<"&1,,..r;   c                 0    | d         | d         dz
  dz  z
  S Nr$   r   rA   r=   r   s    r9   <lambda>zYTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>  s    1Q41Q46A++= r;   r   c                 *    | d         | d         dz  z   S rk  r=   r   s    r9   rl  zYTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>  s    1Q4!A$'> r;   )rv   rA   ru   r   Fi3)r0   rr  r   r   r   z
MAXCV = 0.)r
   r+   r   r   r   r   )r8   r{   c0r  re   s        r9   'test_constraint_violation_error_messagezGTestDifferentialEvolutionSolver.test_constraint_violation_error_message  s    	/ 	/ 	/ !!=!=q"&II !9!9BF7AFF'07/A57H02/4,57 7 7 ~&&&& v~------r;   c                   	
 dd}dgz  }|z  
dd	dgd	
fd	}t          t          ||	d|dd	
	  	        }|j        |u sJ |                                 d         dk    sJ t	          t          ||d          }|j        sJ dd}t          j        t          d          5  t	          t          ||           d d d            d S # 1 swxY w Y   d S )Nr`   r   )r   g      $@r*   gffffff?r   c                    dxx         dz  cc<   t          j        ||                    }|                              }t          j                  }|                    |           |d d         }||| k             d d         }|d d         \  }}|d         ||         ||         z
  z  z   }	|                              }
|
k     }
d|
|<   t          j        |
|	|          }|S )Nr   r$   r_   rA   )r%  T)r+   copychoicer5   shufflerE  where)r   r7   r   rf   
fill_pointr^  idxsr0r   bprime
crossoverscallsr(   r  recombinationtotal_popsizes              r9   custom_strategy_fnzLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fn  s    !HHHMHHHGJy122EO44J9]++DKK<D	)*2A2.D"1"XFB mh^jn4'6 6F /::J#m3J%)Jz"HZ77ELr;   rA   F)r'   r|  r(   r   rF   r   r   r   )rF   r   c                 .    t          j        ddg          S )Nr   r   rm  )r   r7   r   s      r9   r~  zLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fn  s    8S#J'''r;   z	strategy*r   rE   r   )	r   r   rF   r   r   r   r~  r   r   )r8   r'   r0   r~  rZ   r   r{  r(   r  r|  r}  s         @@@@@r9   test_strategy_fnz0TestDifferentialEvolutionSolver.test_strategy_fn  s    o-''1	 	 	 	 	 	 	 	 	 	* -''

 

 

 "44444Qx!|||| %6$6
 
 
 {{	( 	( 	( 	( ]<{;;; 	 	"+   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0CCCc                 x    t          t          t          dgdz            5  	 d d d            d S # 1 swxY w Y   d S )Nr  rA   )r   r   r   r>   s    r9   test_reference_cyclesz5TestDifferentialEvolutionSolver.test_reference_cycles  s     ;UWIaKPP 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /33N)NrX   
__module____qualname__r:   r?   r1   r[   rg   ri   rk   rm   rs   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/  r1  rG  rJ  rO  rU  r[  r`  r~  mark	fail_slowrb  re  r  r  r  r  r  r  r  r  r  r  r  r   r	  r  r  xslowxfailr  machiner#  r)  r>  rK  rT  r[  rf  ro  r  r  r=   r;   r9   r   r      s       3 3 3&% % %  IG IG IGV' ' '
' 
' 
'' ' '' ' '4 4 4* * *<= = =E E EH H H
( 
( 
(> > >; ; ;@ @ @G! G! G!R     D0 0 0 * * *0 0 0$J J JK K K.& .& .&`? ? ?' ' '0 0 0. . .  E E E & & &  4* * *  D8 D8 D8LF F FI I I  ) ) )	 	 	 [2  $ $ $
7: 7: 7:r+& +& +&Z    [2%9 %9 %9N: : :4*; *; *;X' ' '84 4 4& [2\9 \9 \9| [2%9 %9 %9N [209 09 09d [229 29 29h [29 9 9< [29 9 98,9 ,9 ,9\ [['x'))Y60  2 219 192 2 19f [19 9 9< [2*# *# *#X+A +A +AZ [2&$ &$ &$P( ( (88+ 8+ 8+t. . .. [2= = =~    r;   r   )&__doc__multiprocessing.dummyr   r]  r  r  scipy._lib._gcutilsr   %scipy.optimize._differentialevolutionr   r   scipy.optimizer   r   scipy.optimize._constraintsr	   r
   r   r   r   r   scipy.sparser   scipyr   numpyr+   numpy.testingr   r   r   r   r   r~  r   rw   r   r   r=   r;   r9   <module>r     s    5 4 4 4 4 4   2 2 2 2 2 2G G G G G G G G A A A A A A A A; ; ; ; ; ; ; ; ; ; 5 5 5 5 5 5 5 5 5 5 " " " " " "          9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 1 1 1 1 1 1 1 E E E E E E E E E Er;   