
    doi|                        S r SSKJr  SSKrSSKrSSKJr  SSKJ	r	J
r
  SSKJrJr  SSKJrJrJr  SSKJrJrJr  SS	KJr  SS
KJr  SSKrSSKJrJrJrJrJ r   SSK!J"r#J$r$  SSK!r! " S S5      r%g)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                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,\-R\                  R_                  S+5      S, 5       r0S- r1S. r2S/ r3S0 r4\-R\                  R_                  S+5      S1 5       r5S2 r6S3 r7S4 r8S5 r9\-R\                  R_                  S65      S7 5       r:\-R\                  R_                  S+5      S8 5       r;\-R\                  R_                  S+5      S9 5       r<\-R\                  R_                  S+5      S: 5       r=\-R\                  R_                  S+5      S; 5       r>\-R\                  R_                  S+5      S< 5       r?S= r@\-R\                  R                  \-R\                  R                  \CR                  " 5       S>:H  S?S@9SA 5       5       rE\-R\                  R_                  SB5      SC 5       rF\-R\                  R_                  S+5      SD 5       rGSE rH\-R\                  R_                  S+5      SF 5       rISG rJSH rKSI rL\-R\                  R_                  S65      SJ 5       rMSK rNSLrOgM)NTestDifferentialEvolutionSolver   c                    [         R                  " SS9U l        [         R                  " SS/SS//5      U l        SS/U l        [        U R                  S/5      U l        [        U R                  S/SS	S
9U l	        [         R                  " [         R                  " SSS5      5      R                  nXR                  l        g )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)selfr8   s     m/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/optimize/tests/test__differential_evolution.pysetup_method,TestDifferentialEvolutionSolver.setup_method   s    ))G4hhR!#R * +*79A
D 9:@ABBEG ]]299S#s#;<>>
(2%    c                 D    [         R                  " S0 U R                  D6  g )N )r,   r-   r.   r9   s    r:   teardown_method/TestDifferentialEvolutionSolver.teardown_method.   s    
		$DOO$r=   c                     US   S-  $ )Nr      r?   )r9   xs     r:   r2   )TestDifferentialEvolutionSolver.quadratic1   s    tQwr=   c                 l   [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S	5        [        [        U R                  S
S9n[        UR                  S
5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S	5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S	5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        [        [        U R                  SS9n[        UR                  S5        [        UR
                  R                  S5        g )Nbest1expstrategy_best1best1binrand1bin_rand1rand1exprand2exp_rand2best2bin_best2rand2binrandtobest1bin_randtobest1randtobest1expcurrenttobest1bin_currenttobest1currenttobest1exp)r   r   r1   r   rJ   mutation_func__name__r9   solvers     r:   test__strategy_resolves7TestDifferentialEvolutionSolver.test__strategy_resolves4   s    -U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6@B 	V__j1V))22H=,U-1[[6FH 	V__&67V))22NC,U-1[[6FH 	V__&67V))22NC,U-1[[6IK 	V__&9:V))224EF,U-1[[6IK 	V__&9:V))224EFr=   c                 P   [         R                  " S/5      nU R                  R                  [         R                  " / SQ5      5      n[	        X!5        [         R                  " S/5      nU R                  R                  [         R                  " / SQ5      5      n[	        X!5        g )N皙?rD                     ?)r,   r/   r4   rK   r   rN   r9   resulttrials      r:   test__mutate1-TestDifferentialEvolutionSolver.test__mutate1   sp    4&!""))"((?*CD&4&!""))"((?*CD&r=   c                 P   [         R                  " S/5      nU R                  R                  [         R                  " / SQ5      5      n[	        X!5        [         R                  " S/5      nU R                  R                  [         R                  " / SQ5      5      n[	        X!5        g )Ngrc   r*   )r,   r/   r4   rS   r   rQ   ri   s      r:   test__mutate2-TestDifferentialEvolutionSolver.test__mutate2   sq     4&!""))"((?*CD&3%""))"((?*CD&r=   c                     [         R                  " S/5      nU R                  R                  [         R                  " / SQ5      5      n[	        X!5        g )Ng333333?rc   )r,   r/   r4   rV   r   ri   s      r:   test__randtobest11TestDifferentialEvolutionSolver.test__randtobest1   s9    4&!""//0IJ&r=   c                     [         R                  " S/5      nU R                  R                  S[         R                  " / SQ5      5      n[	        X!5        g )Nr*   r%   rc   )r,   r/   r4   rY   r   ri   s      r:   test__currenttobest14TestDifferentialEvolutionSolver.test__currenttobest1   s@    3%""22HH_%
 	&r=   c                     Sn[        U R                  U R                  US9n[        UR                  [        U5      5        g )Nr'   r%   r)   )r   r2   r1   r   ditherlist)r9   r)   r^   s      r:   test_can_init_with_dithering<TestDifferentialEvolutionSolver.test_can_init_with_dithering   s6    ,T^^-1[[6>@ 	V]]DN3r=   c                 |   [         nSn[        [        [        UU R                  US9  Sn[        [        [        UU R                  US9  S[
        R                  4n[        [        [        UU R                  US9  Sn[        UU R                  US9n[        SUR                  5        [        S UR                  5        g )N)r'   rd   ry   r%   r*   r'   )
r   assert_raises
ValueErrorr   r1   r,   nanr   scalerz   )r9   funcr)   r^   s       r:   +test_invalid_mutation_values_arent_acceptedKTestDifferentialEvolutionSolver.test_invalid_mutation_values_arent_accepted   s    j5++#+		- j5++#+		- =j5++#+		- ,T-1[[6>@ 	S&,,'T6==)r=   c                 v    S n[        [        SS9   [        USS/5        S S S 5        g ! , (       d  f       g = f)Nc                     [         R                  " [         R                  " U S-  5      [         R                  " U 5      /5      $ NrD   )r,   r/   sumrE   s    r:   r   ETestDifferentialEvolutionSolver.test_invalid_functional.<locals>.func   s*    88RVVAF^RVVAY788r=   z,func\(x, \*args\) must return a scalar valuematchrD   )r   RuntimeErrorr   )r9   r   s     r:   test_invalid_functional7TestDifferentialEvolutionSolver.test_invalid_functional   s<    	9 EG #4'7);<G G Gs   *
8c                    [         R                  " S/5      n[        SU R                  R	                  U5      5        [         R                  " S/S//5      U R                  l        [        SU R                  R	                  U5      5        g )N333333?   r#   r   )r,   r/   r   r3   _scale_parametersr0   r9   rk   s     r:   test__scale_parameters6TestDifferentialEvolutionSolver.test__scale_parameters   sh    #R**<<UCD $&88cURDM#: R**<<UCDr=   c                    [         R                  " S/5      n[        SU R                  R	                  U5      5        [         R                  " S/S//5      U R                  l        [        SU R                  R	                  U5      5        g )Nr   r   r#   r   )r,   r/   r   r3   _unscale_parametersr0   r   s     r:   test__unscale_parameters8TestDifferentialEvolutionSolver.test__unscale_parameters   sh    "S$++??FG $&88cURDM#: S$++??FGr=   c                 *   [         R                  " SS9   [        U R                  SS/S9nUR	                  SS/5      n[        US5        S S S 5        [        U R                  SS/5      n[        UR                  SS	/5        g ! , (       d  f       N?= f)
Nr   r   r    r    )      ?      @)r1   r    r'   )r   r   r   )	r,   errstater   r2   r   r   r   r   rE   )r9   r^   vress       r:   test_equal_bounds1TestDifferentialEvolutionSolver.test_equal_bounds   s~    [[)0"J/F **C:6AAs# * %T^^j*5MNSUUS#J' *)s   6B
Bc                     [         R                  " / SQ5      nU R                  R                  U5        [	        US   S5        [        [         R                  " US:  US:*  5      R                  5       5        g )N)皙??r    g     r@gh㈵rD   r   r   r%   )r,   r/   r3   _ensure_constraintr   r   logical_andallr   s     r:   test__ensure_constraint7TestDifferentialEvolutionSolver.test__ensure_constraint   sW    =>,,U3U1Xs#uz5A:6::<=r=   c                 \   [        U R                  S/SSS9nUR                  5       n[        UR                  U R                  UR
                  5      5        [        U R                  S/SSS9nUR                  5       n[        UR                  U R                  UR
                  5      5        g )Nr   r%   F)maxiterpolishT)r   r2   solver   funrE   r9   r^   rj   s      r:   test_differential_evolution;TestDifferentialEvolutionSolver.test_differential_evolution   s     -NNWIq
 VZZ!9:,NNWIq
 VZZ!9:r=   c                     [        U R                  S/5      nUR                  5       n[        UR                  UR                  SSS9  g )Nr   gV瞯<r   )atolrtol)r   r2   r   r   rE   r   s      r:   test_best_solution_retrieval<TestDifferentialEvolutionSolver.test_best_solution_retrieval  s5    ,T^^gYG&((Q?r=   c                   ^^^	 Sm	U4S jmS Tl         [        R                  Tl        UU	4S jmSTl        S Tl        TTl        SS/n[        TUSSS9n[        S0 UDS	T0D6n[        S0 UDS
T	0D6nUR                  UR                  s=L a  SL d   e   eTR                  UR                  s=:X  a  T	:X  d   e   eUR                  S:X  d   eUR                  S:X  d   eUR                  5        H4  u  pVUS;   a  M  [        TR
                  U   U5        [        X5   U5        M6     STl        [        R                  Tl        SUS'   [        S0 UDS	T0D6nUR                  UR                  :  d   eg )N
   c                 Z   > [        U 5      nUTR                  :  a  U Tl        UTl        U$ N)r   valrE   )rE   r   r   s     r:   r   FTestDifferentialEvolutionSolver.test_intermediate_result.<locals>.func  s*    (CTXX~Jr=   c                   > T=R                   S-  sl         U Tl        U R                  R                  S:X  d   eU R                  R                  S   S:X  d   eU R                   TR                   :X  d   e[        U R                  TR                  R                  5        [        U R                  TR                  R                  5        [        U R                  [        U R                  5      5        [        [        U R                  5      5       H5  nU R                  U   n[        U R                  U   5      n[        X#5        M7     [        U R                  U R                  S   5        [        U R                  U R                  S   5        U R                  S:X  d   eU R                  SL d   e[!        U ["        5      (       d   eTR                   T:X  a  [$        eg )Nr%   rD   r   zin progressT)nitintermediate_resultr8   ndimshaper   rE   r   r   r   r   rangelenpopulation_energiesmessagesuccess
isinstancer   StopIteration)r   ir   refcallbackr   s       r:   r   JTestDifferentialEvolutionSolver.test_intermediate_result.<locals>.callback  s   LLAL+>H(&1166!;;;&1177:a???&**hll::: ,..@,00(--2C2CD ,00%8K8M8M2NO32FFGH)==a@/::1=>S& I ,..,77:<,00,@@CE '..-???&..$6661>BBBB||w&## 'r=   r   r   rD   ie F)r   r1   rngr   r   r   &callback function requested stop early/Maximum number of iterations has been exceeded.>   r   r   Tr   r?   )rE   r,   infr   r   r   r   dictr   r   r   itemsr   r   )
r9   r1   kwargsr   r   fieldr   r   r   r   s
          @@@r:   test_intermediate_result8TestDifferentialEvolutionSolver.test_intermediate_result  sm    	 66	$8 '+$&!4F5I$AvAA$?v?w? {{ckk2U22222||sww1'11111{{FFFF{{OOOO))+JE..55e<cBS)	 & 66x$AvAAww   r=   c                 p   SS/nSnSS jn[        [        XS9n[        UR                  U5        S n[        [        XS9nUR                  (       a   eSS jn[        [        XS9n[        UR                  U5        UR                  (       a   eSS jn[        [        UUS9nUR                  (       d   eg )	Nr   r   c                     g)NTr?   paramconvergences     r:   callback_python_trueVTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_python_trueX  s    r=   )r   c                     [         er   )r   )r   s    r:   callback_stopOTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_stopa  s    r=   c                     S/$ )Nr   r?   r   s     r:   callback_evaluates_trueYTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_trueg  s	    4Kr=   c                     / $ r   r?   r   s     r:   callback_evaluates_falseZTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_falseo  s    Ir=   )r   )r   r   r   r   r   )r9   r1   expected_msgr   rj   r   r   r   s           r:   test_callback_terminates8TestDifferentialEvolutionSolver.test_callback_terminatesT  s    &!?	 (6
 	FNNL9	  (vN>>!!	 (vXFNNL9>>!!	 (v1IK~~~r=   c                 X    S/nSnS n[        UUUSS9n[        UR                  S5        g )Nr   )r   r    r   c                 v    [        U[        5      (       d  [        S5      eUS   US   U -  -   US   U S-  -  -   $ )Nzargs should be a tupler   r%   rD   r    )r   tupler   )rE   argss     r:   r2   LTestDifferentialEvolutionSolver.test_args_tuple_is_passed.<locals>.quadratic{  sC    dE** !9::7T!Wq[(47QU?::r=   T)r   r   gUUUUUU?)r   r   r   )r9   r1   r   r2   rj   s        r:   test_args_tuple_is_passed9TestDifferentialEvolutionSolver.test_args_tuple_is_passedv  s:    	;
 (	(.-1/35 	FJJ/r=   c                 @    [         nS/n[        [        [        UUSS9  g )Nrd   abcrI   )r   r   r   r   )r9   r   r1   s      r:   test_init_with_invalid_strategy?TestDifferentialEvolutionSolver.test_init_with_invalid_strategy  s$    j0 #(		*r=   c                     [         nS/n[        [        [        UU5        SS/n[        [        [        UU5        [        [         [	        SS/SS/5      5      n[        UR                  S5        g )Nr   r   )rd   re   rf   r   rD   )r   r   )r   r   r   r   r	   r   rE   )r9   r   r1   rj   s       r:   test_bounds_checking4TestDifferentialEvolutionSolver.test_bounds_checking  sk    j0 	" 9%j0 	" (vq!fq!f/EFFHHh/r=   c                 Z   [         R                  " SSS9R                  SS5      n[        [	        USS S 24   USS S 24   5      5      n[        S USS9nSnUR                  US	5      u  pVpxn	[        [        [         R                  " [         R                  " XEXgX/5      5      5      S5        g )
Ng      (@float64)dtyperD   rg   r   r%   r(   rf   )r,   r6   reshaper{   zipr   _select_samplesr   r   uniquer/   )
r9   r0   r1   r^   	candidater1r2r3r4r5s
             r:   test_select_samples3TestDifferentialEvolutionSolver.test_select_samples  s    3i088A>c&A,q!t56,T61E	#33IqA		"((I22#BCDEq	Jr=   c                     [        [        U R                  SS9nUR                  5       n[	        UR
                  S5        [	        UR                  S5        g )Nr%   )r   Fr   )r   r   r1   r   r   r   r   r   s      r:   test_maxiter_stops_solve8TestDifferentialEvolutionSolver.test_maxiter_stops_solve  sA     -UDKKKV^^U+V^^I	Kr=   c           	         [        [        U R                  SSS9nUR                  5       n[	        UR
                  S5        [	        UR                  S5        [	        UR                  S5        [        [        U R                  SSSS9nUR                  5       n[	        UR
                  S	5        [	        UR                  S5        [	        UR                  S5        [        [        U R                  SSS
SS9nUR                  5       n[	        UR
                  S
5        [	        UR                  S5        [	        UR                  S5        g )Nr%   F)maxfunr   rD   z9Maximum number of function evaluations has been exceeded.rf   (   )r(   r   r  )   /   deferred)r(   r   r  updatingz8Maximum number of function evaluations has been reached.)r   r   r1   r   r   nfevr   r   r   s      r:   test_maxfun_stops_solve7TestDifferentialEvolutionSolver.test_maxfun_stops_solve  s    -UDKK49;V[[!$V^^U+V^^&	' -U-1[[564946	8
 V[["%V^^U+V^^&	' -U-1[[5649466@B V[["%V^^U+V^^%	&r=   c                     [        U R                  S/SS9nUR                  5         [        [        R
                  " UR                  5      S5        g )Nr   r#   {Gz?)tolr   )r   r2   r   r   r,   argminr   r]   s     r:   test_quadratic.TestDifferentialEvolutionSolver.test_quadratic  s>    ,T^^.9]157 	RYYv99:A>r=   c                 2    [        U R                  S/SSS9  g )Nr#  r$  r%   )r%  seed)r   r2   r@   s    r:   test_quadratic_from_diff_ev;TestDifferentialEvolutionSolver.test_quadratic_from_diff_ev  s    t~~ +}#'$%	'r=   c                     [        U R                  S/SSSS9n[        U R                  S/SSSS9n[        UR                  UR                  5        [        UR                  UR                  5        g )Nr#  Fr%   r'   )r   r   r%  )r   r2   r   rE   r  )r9   rj   result2s      r:   test_rng_gives_repeatability<TestDifferentialEvolutionSolver.test_rng_gives_repeatability  sf    ')4/4,-,/	1
 ))4/4,-,/	1
 	VXXwyy)V[[',,/r=   c           
          [         R                  R                  5       n/ SQnU H  n[        U R                  S/SUSUS9  M     g )N)randomlatinhypercubesobolhaltonr#  Fr'   )r   r   r%  init)r,   r2  default_rngr   r2   )r9   r   initsr6  s       r:   test_random_generator5TestDifferentialEvolutionSolver.test_random_generator  sD     ii##%?D"4>>$/=*/'*'*(,. r=   c                 X    [        [        U R                  SSS9nUR                  5         g )NrH   r%   )rJ   r   r   r   r1   r   r]   s     r:   test_exp_runs-TestDifferentialEvolutionSolver.test_exp_runs  s&    ,U-1[[6@568
 	r=   c                 ,    SS/n[        [        USSS9  g )N)rf   1   r%   )r(   r   )r   r   )r9   r1   s     r:   test_gh_4511_regression7TestDifferentialEvolutionSolver.test_gh_4511_regression  s    
 7# 	ufb!Dr=   c                    [        [        U R                  SS9nUR                  UR                  5        UR                  5         [        [        R                  " UR                  5      S5        [        UR                  S5        g )Nrd   r  r   rg   )r   r   r1   _calculate_population_energiesr8   _promote_lowest_energyr   r,   r&  r   _nfevr]   s     r:   "test_calculate_population_energiesBTestDifferentialEvolutionSolver.test_calculate_population_energies)  s]    ,UDKKK--f.?.?@%%'RYYv99:A> 	V\\1%r=   c                    [        [        U R                  SSS9n[        U5      u  p#[	        [
        R                  " US5      S5        [	        UR                  S5        [        [        [        U5        [        [        U R                  5      n[        U5      u  pE[        U5       H  u  pgUu  pXY:  d   eXpTUS:X  d  M    g    g )Nrd      )r(   r  r   rD   2   )r   r   r1   nextr   r,   sizerG  r   r   	enumerate)
r9   r^   rE   r   _fun_prevr   soln	x_currentfun_currents
             r:   test_iteration.TestDifferentialEvolutionSolver.test_iteration3  s     -UDKK468fRWWQ]A& 	V\\2& 	mT62 -UDKK@6l (GA%)"I***#xBw )r=   c                     [        [        U R                  SSS9nUR                  5         [	        UR
                  S:  5        g )N皙?F)r%  r   )r   r   r1   r   r   r   r]   s     r:   test_convergence0TestDifferentialEvolutionSolver.test_convergenceM  s5    ,UDKKS49;""S()r=   c                 X    [        [        U R                  S S S9nUR                  5         g )N)r   r  r<  r]   s     r:   test_maxiter_none_GH57318TestDifferentialEvolutionSolver.test_maxiter_none_GH5731S  s$    
 -UDKK48:r=   c           
         [        [        [        /[        U R                  4Q70 SS0D6  [        [        U R                  5      nUR                  5         [        UR                  S5        [        [        R                  " [        R                  " UR                  5      5      5        UR                  5         [        UR                  S5        [        [        R                  " [        R                  " UR                  5      5      5        UR                  SS9  [        UR                  S5        [        [        R                  " [        R                  " UR                  5      5      5        [        [        U R                  SS9nUR                  SS9  [        UR                  S5        [        [        R                  " [        R                  " UR                  5      5      5        [        R                  " SS	S
5      R!                  SS5      n[        [        U R                  USSSSS9n[        UR                  S5        [        [        R                  " [        R                  " UR                  5      5      5        [        UR"                  S:H  5        [        UR$                  S:H  5        [        R&                  " UR)                  U5      SS5      n[+        UR,                  S S U5        [+        [        R.                  " UR,                  S S 5      S5        [+        [        R0                  " UR,                  S S 5      S5        [        R                  " SS	S5      R!                  SS	5      n[        [        [        /[        U R                  4Q70 SU0D6  [        R2                  R5                  SSSS9n[        [        U R                  US9n[7        UR,                  S   US-  5        g )Nr6  rubbishr   r5  )
qmc_enginer4  )r6  r   rd   r   rf   rD   rR   {Gz?r%   )r6  rJ   r   r   r(   )rf   rD      r   r    )lowhighrN  x0)r   r   r   r   r1   init_population_randomr   rG  r   r,   r   isinfr   init_population_lhsinit_population_qmclinspacer	  num_population_memberspopulation_shapeclipr   r   r8   minmaxr2  uniformr   )r9   r^   r8   unscaled_populationrf  s        r:   test_population_initiation:TestDifferentialEvolutionSolver.test_population_initiation\  s   
 	j1	-t{{+	-  +	-
 -UDKK@
 	%%'V\\1%rxx : :;<=""$V\\1%rxx : :;<=""h"7V\\1%rxx : :;<=,UDKKgN""g"6V\\1%rxx : :;<= [[Q+33Aq9
,UDKK2<6@26AqJ
 	V\\1%rxx : :;<=--23''612 !ggf&@&@&L&',F--bq13FG 	BFF6#4#4Ra#891=BFF6#4#4Ra#891= [[Q+33Aq9
j1	.t{{+	.  ,	. YY3Sq9,4;;2
 	))!,b3h7r=   c                     [        [        U R                  SS/S9nUR                  (       d   e[	        [
        5         [        [        U R                  SS/S9  S S S 5        g ! , (       d  f       g = f)NrX  r+   re   @)r   r   r1   r   r   r   )r9   r   s     r:   test_x0'TestDifferentialEvolutionSolver.test_x0  sN    $UDKKS#JG{{{ :&"5$++3*E '&&s   A##
A1c                 &    S nSS/n[        XSS9  g )Nc                 >    U S   S:  a  [         R                  $ U S   $ )Nr   r'   r%   )r,   r   r   s    r:   sometimes_infWTestDifferentialEvolutionSolver.test_infinite_objective_function.<locals>.sometimes_inf  s    tbyvvQ4Kr=   r$   F)r1   disp)r   )r9   r{  r1   s      r:    test_infinite_objective_function@TestDifferentialEvolutionSolver.test_infinite_objective_function  s    	 &!}%Hr=   c                 0   SS/n[        [        USS9n[        UR                  S:H  5        [        UR                  R
                  [        L 5        UR                  5       nUR                  (       d   e[        [        USSS9nUR                  (       d   eg )Nr!   r  )r  rH   )r  rJ   )
r   r   r   	_updating_mapwrapper_mapfuncmapr   r   r   )r9   r1   r^   r   s       r:   test_deferred_updating6TestDifferentialEvolutionSolver.test_deferred_updating  s    H%,UFZP  J./""++s23lln{{{ %6J
 {{{r=   c                 D   SS/n[        [        U5      n[        UR                  S:H  5        [	        [
        5         [        [        USS9 nUR                  5         S S S 5        S S S 5        WR                  S:X  d   eg ! , (       d  f       N)= f! , (       d  f       N2= f)Nr!   	immediaterD   )workersr  )r   r   r   r  r   UserWarningr   )r9   r1   r^   ss       r:   test_immediate_updating7TestDifferentialEvolutionSolver.test_immediate_updating  s~    H%,UF;  K/0 ;,UFAF! G   {{j((( GF  s#   BB B 
B	
B
Bc           
      8   SS/n[        S5       n[        [        USUR                  SSS9 nUR                  R
                  c   eUR                  S:X  d   eUR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr!   rD   r  r*   rd   )r  r  r%  r(   )
ThreadPoolr   r   r  r  poolr  r   )r9   r1   pr^   s       r:   test_parallel_threads5TestDifferentialEvolutionSolver.test_parallel_threads  s    H%]a!<6J3PQ"
%%**666##z111LLN"
]] "
 "
]]s"   B<A:)B:
B	B
Br   c           	          SS/n[        [        USSSSS9 nUR                  R                  c   eUR                  S:X  d   eUR                  5         S S S 5        g ! , (       d  f       g = f)Nr!   r  rD   rd   r*   )r  r  r(   r%  )r   r   r  r  r  r   )r9   r1   r^   s      r:   test_parallel_processes7TestDifferentialEvolutionSolver.test_parallel_processes  si    H%(6J1#
%%**666##z111LLN
 
 
s   <A
A*c                 z    [        [        SS/5      nUR                  5         [        UR	                  5       5        g )Nr   )r   r   r   r   	convergedr]   s     r:   test_converged.TestDifferentialEvolutionSolver.test_converged  s-    ,UVV4DE  "#r=   c                 b  ^ S nS m[        U[        R                  * S5      n[        [        SS/U4S9nUR                  [        R                  " SS/5      5      n[        US5        [        T[        R                  * S5      n[        [        SS/X%4S9n/ S	Qn/ S
Qn[        Xg5       HJ  u  pUR                  [        R                  " U5      5      n[        U[        R                  " U	5      5        ML     [        UR                  [        R                  " U5      5      [        R                  " U5      5        [        R                  " [        R                  " U5       Vs/ s H  nUR                  U5      PM     sn5      n
U
R                  S:X  d   eU4S jn[        U[        R                  * S5      n[        [        SS/X%4SS9nSUl        [        R                  " [        SS9   UR                  [        R                  " U5      5        S S S 5        g s  snf ! , (       d  f       g = f)Nc                     U S   U S   -   /$ Nr   r%   r?   r   s    r:   constr_fNTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f      aD1Q4K= r=   c                 \    [         R                  " U S   S-  U S   -   U S   U S   -
  /5      $ Nr   rD   r%   r,   r/   r   s    r:   	constr_f2OTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f2  2    88QqT1Wqt^QqTAaD[9::r=   ffffff?r   constraintsr   r*   ?))333333?r%   r   )r'   r'   ))r   {Gz?r   )rv  @r   )r   r   r   )rd   r%   rd   c                 (   > T" U 5      R                   $ r   )r7   )rE   r  s    r:   	constr_f3OTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f3  s    Q<>>!r=   F)r  
vectorizedTz#An array returned from a Constraintr   )r
   r,   r   r   r   _constraint_violation_fnr/   r   r
  r   r5   r   r  pytestr   r   )r9   r  nlcr^   cvnlc2xsvsrE   r   constraint_violationr  r  s               @r:   test_constraint_violation_fn<TestDifferentialEvolutionSolver.test_constraint_violation_fn  s   	!	; "(RVVGS9,UVV4D:=A ,,RXXsCj-ABB$"9rvvgs;,UVV4D:=F
 0;KDA00!=BBa 01  
 	++BHHRL9288B<	
  "xx24((2,)@2>Q *0)H)H)K2>)@  A#))Y666	" #9rvvgs;,UVV4D:=8=? !]]$I
 ++BHHRL9
 
)@
 
s   #H,&H  
H.c           	      R   S nS n[        U[        R                  * S5      n[        [        SS/U4S9nUR                  [        R                  " SS/SS//5      5      u  pV[        USS/5        [        U[        R                  " S	/S
//5      5        UR                  S:X  d   e[        U[        R                  * S5      nS GH_  n[        [        SS/X74USS9nUR                  [        R                  " SS/SS//5      5      u  pV[        USS/5        [        U[        R                  " / SQ/ SQ/5      5        UR                  [        R                  " SS/SS//5      5      u  pV[        USS/5        [        U[        R                  " / SQ/ SQ/5      5        UR                  S:X  d   eUR                  [        R                  " SS/SS//5      5      u  pV[        USS/5        [        U[        R                  " / SQ/ SQ/5      5        UR                  S:X  a  GM`   e   g )Nc                     U S   U S   -   /$ r  r?   r   s    r:   r  ZTestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f%  r  r=   c                 4    U S   S-  U S   -   U S   U S   -
  /$ r  r?   r   s    r:   r  [TestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f2(  s)    aD!GadNAaD1Q4K00r=   r  r   r  r'   r   Fr*   rv  )rD   r%   r  )FTr  )r  r  r  g333333?)r*   rX  r   )r   r  r   )rv  r  r   )rD   rd   rh   T)r   r   r   )
r
   r,   r   r   r   #_calculate_population_feasibilitiesr/   r   r   r   )	r9   r  r  r  r^   feasr  r  	vectorizes	            r:   (test_constraint_population_feasibilitiesHTestDifferentialEvolutionSolver.test_constraint_population_feasibilities$  s   	!	1 "(RVVGS9,UVV4D:=A
 ==HHsCj2r(+,.TE5>*B3%# 89xx6!!!"9rvvgs;&I08H>A[<E:DFF
 AA3*sCj124HDu~.BHHm^-L$MNAA3*r2h/02HDu~.BHHm]-K$LM88v%%%AA4,R124HDe}-BHHnm-L$MN88v%%%+ 'r=   c                 .   S n[        U[        R                  * S5      n[        [        SS/U4S9n[        [        5         UR                  5       nS S S 5        U" WR                  5      S::  d   eUR                  (       d   eg ! , (       d  f       N:= f)Nc                 B    [         R                  " U S   U S   -   /5      $ r  r  r   s    r:   r  GTestDifferentialEvolutionSolver.test_constraint_solve.<locals>.constr_fR      88QqTAaD[M**r=   r  r   r  )
r
   r,   r   r   r   r   r  r   rE   r   )r9   r  r  r^   r   s        r:   test_constraint_solve5TestDifferentialEvolutionSolver.test_constraint_solveQ  s}    	+ "(RVVGS9,UVV4D:=A ;,,.C   #%%%{{{	  s   B
Bc           	      f   S n[        U[        R                  * S5      n[        [        SS/U4SSSS9n[        [        5         UR                  5       nS S S 5        WR                  S:  d   eUR                  (       a   e[        [        SS/U4SS	9n[        U5        UR                  R                  5       (       a   e[        R                  " UR                  5      R                  5       (       a   eS
nUR                  S   nUR                  US/   UR                  SU/'   UR                   US/S S 24   UR                   SU/S S 24'   UR                  US/S S 24   UR                  SU/S S 24'   UR#                  5         [%        UR                  S   U5        g ! , (       d  f       GNS= f)Nc                 B    [         R                  " U S   U S   -   /5      $ r  r  r   s    r:   r  LTestDifferentialEvolutionSolver.test_impossible_constraint.<locals>.constr_fc  r  r=   r   r   r%   r#   )r  r(   r   r   r   F)r  r      )r
   r,   r   r   r   r   r  r   maxcvr   rM  feasibler   isfiniter   r  r8   rF  r   )r9   r  r  r^   r   lr  s          r:   test_impossible_constraint:TestDifferentialEvolutionSolver.test_impossible_constrainta  s   	+ "(RVVGR8,FF##SV
 ;,,.C   yy1}};;
 -FF##GV??&&((((;;v99:>>@@@@ ((+-3-G-GA-O""Aq6*'-'8'8!Q'C1a&!)$''A	2 	##QFAI. 	%%'V003R83  s   F!!
F0c                    S n[        U[        R                  * S5      n[        [        SS/U4S9nUR
                  nU" SS[        R                  " S/5      SS[        R                  " S/5      5      (       d   eU" SS[        R                  " S/5      SS[        R                  " S/5      5      S	L d   eU" SS[        R                  " S/5      SS[        R                  " S/5      5      (       d   eU" S
S[        R                  " S/5      SS	[        R                  " S/5      5      (       d   eU" SS	[        R                  " SS/5      SS	[        R                  " SS/5      5      (       d   eU" SS	[        R                  " SS/5      SS	[        R                  " SS/5      5      (       d   eU" SS	[        R                  " SS/5      SS	[        R                  " SS/5      5      (       a   eg )Nc                     U S   U S   -   /$ r  r?   r   s    r:   r  CTestDifferentialEvolutionSolver.test_accept_trial.<locals>.constr_f  r  r=   r  r   r  r*   Tr   r   Fg#@r'   g?)r
   r,   r   r   r   _accept_trialr/   )r9   r  r  r^   fns        r:   test_accept_trial1TestDifferentialEvolutionSolver.test_accept_trial  s   	!!(RVVGS9,UVV4D:=A!!#tRXXrd^S$"GGGG3bhhuosD"((C5/JeSTS#tRXXrd^S$"GGGG #tRXXrd^S%2$HHHH 3rxxc
3rxxS	24 4 	5 43rxxc
3rxxT
35 5 	6 5sE288S#J#7E288S#J#79 9 	: : 9r=   c                   ^
 [         R                  " / SQ5      n[         R                  " S[         R                  S/5      n[         R                  " / SQ5      n[        [	        X5      U5      nUR                  U5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   e[         R                  " SS5      R                  S	S
5      n/ nU H#  nUR                  UR                  U5      5        M%     [         R                  R                  UR                  UR                  5      [         R                  " U5      R                  5        [         R                  " / SQ5      n[         R                  " / SQ/ SQ/ SQ/5      m
[        [        T
[         R                  * S5      U5      nUR                  U5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   e[         R                  " SS5      R                  SS5      n/ nU H#  nUR                  UR                  U5      5        M%     [         R                  R                  UR                  UR                  5      [         R                  " U5      R                  5        [        [        [        T
5      [         R                  * S5      U5      nUR                  U5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   eU
4S jn[!        U[         R                  * S5      n	[        U	/ SQ5      nUR                  U5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   eg )N)r   r  r   r'   F   )r%   rD   rd   r   )rh         r%      rf   rd   )r%   rD   rd   re   )rf   r   r   rg   )r&   r      r   )r   rD   r   re      r&   re   c                 &   > TR                  U 5      $ r   )dot)rE   As    r:   r   DTestDifferentialEvolutionSolver.test_constraint_wrapper.<locals>.fun  s    558Or=   )r,   r/   r   r   r	   	violationanyr   r6   r	  appendtestingr   r7   r   r   r
   )r9   lbubrf  pcr  
violationsrE   r   	nonlinearr  s             @r:   test_constraint_wrapper7TestDifferentialEvolutionSolver.test_constraint_wrapper  s   XXk"XXsBFFB'(XXi r3R 1$))++++^,1668888 YYq"%%a+
Abll1o. 


""2<<#5rxx
7K7M7MNXXl#HHlL,?@ 0RVVGQ ?DR 1$))++++-.!388:::: YYq"%%a+
Abll1o. 


""2<<#5rxx
7K7M7MN 01w J "$R 1$))++++-.!388::::	 (bffWa8		+;<R 1$))++++-.!388::::r=   c                 &   S n[        USS/SS/5      n[        USS/5      n[        R                  " UR                  S   5      S:X  d   e/ SQn/ S	Qn[        XE5       H   u  pg[        UR                  U5      U5        M"     [        UR                  [        R                  " U5      R                  5      [        R                  " U5      R                  5        UR                  [        R                  " U5      R                  5      R                  S[        U5      4:X  d   eUR                  [        R                  " U5      R                  5      R                  S[        U5      4:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )
Nc                 b    [         R                  " U S   S-  U S   -   U S   S-  U S   -
  /5      $ r  r  r   s    r:   cons_fQTestDifferentialEvolutionSolver.test_constraint_wrapper_violation.<locals>.cons_f  sA     88QqTQY1-qTQY1-/ 0 0r=   r   g333333rD   r'   r%   r   )rx   )r'   r  )r  r  )r*   333333)r*   r    ))r   r   )r   r*   )r  r   )gRQ?r   )ra  g=
ףp=?)r
   r   r,   rN  r1   r
  r   r  r/   r7   r   r   r   
num_constrparameter_count)r9   r  r  r  r  r  rE   r   s           r:   !test_constraint_wrapper_violationATestDifferentialEvolutionSolver.test_constraint_wrapper_violation  s2   	0 "&2w-!Q@c1X.wwryy|$)))HCKDABLLOQ/   	RXXb\^^4	(vvbhhrlnn%++3r7|;;;||BHHRLNN+11aR\AAA}}!!!!!Q&&&r=   c                    [         R                  " 5          [         R                  " S[        5        [        R
                  " / SQ/ SQ/5      nS S S 5        [        WSS5      n[        R                  " S5      n[        X#5      nUR                  U5      R                  S:X  d   e[        R                  " S5      R                  SS	5      nUR                  U5      R                  S
:X  d   eg ! , (       d  f       N= f)Nignore)r%   r%   r%   r   )rD   rD   rD   r    r   r%   re   )rD   r  rf   )rD   rf   )warningscatch_warningssimplefilterPendingDeprecationWarningr,   matrixr   onesr   r  r   r6   r	  )r9   r  lcrf  cwxtrials         r:   test_matrix_linear_constraint=TestDifferentialEvolutionSolver.test_matrix_linear_constraint  s     $$&!!(,EFYY - / 0F ' fa+WWQZ' ||B%%--- 5!))!Q/||F#))V333 '&s   8C--
C;r  c                 	   S n[         R                  " S5      nSUS/ SQ4'   SUSSS/4'   S	US
/ SQ4'   SUS/ SQ4'   SUSSS/4'   S	US/ SQ4'   SUS/ SQ4'   SUSS
S/4'   S	US/ SQ4'   USS 2SS 24   n[         R                  " / SQ5      n[        U[         R                  * U5      nS/S-  S/S
-  -   S/-   n[        XSSU4SSS9nSnS n[        U" U5      US!S"9  UR                  (       d   e[        UR                  US!S"9  [        UR                  US#S"9  [        [         R                  " X&R                  -  U:*  5      5        [        [         R                  " UR                  [         R                  " U5      S S 2S$4   :  5      5        [        [         R                  " UR                  [         R                  " U5      S S 2S4   :*  5      5        [        [        U5      [         R                  * U5      n[        XSS%U4SS&S9n[        U" U5      U5        UR                  (       d   e[        UR                  US'S"9  [        UR                  US#S"9  [        [         R                  " X&R                  -  U:*  5      5        [        [         R                  " UR                  [         R                  " U5      S S 2S$4   :  5      5        [        [         R                  " UR                  [         R                  " U5      S S 2S4   :*  5      5        S( n	S) n
[        US S2S S 24   [         R                  * US S 5      n[        USS2S S 24   [         R                  * USS 5      n[        U	[         R                  * USS 5      n[        U
[         R                  * USS 5      nXLX4n[        R                  " 5          [        R                   " S*["        5        [        XSS%USS&S9nS S S 5        [        UR                  US!S"9  [        UR                  US#S"9  [        [         R                  " X&R                  -  U:*  5      5        [        [         R                  " UR                  [         R                  " U5      S S 2S$4   :  5      5        [        [         R                  " UR                  [         R                  " U5      S S 2S4   :*  5      5        g ! , (       d  f       N= f)+Nc                     [         R                  " S/U 45      n [         R                  " SU SS -  5      SU SS -  U SS -  -
  [         R                  " U SS  5      -
  nU$ )Nr   rf   r%   )r,   hstackr   rE   r   s     r:   f2TestDifferentialEvolutionSolver.test_L1.<locals>.f  s_    		A3(#A&&1Qq6"Qq1vXa!f_4rvvae}DCJr=   )r      )rD   rD   r%   r%   r%   )r%   rD   r      )r%   rD   r   )r   r   r%   rd   )re   rf   r   re   )r%   rd   r   r  rf   r  rg   )rg   r&   r  r&   )rD   rd   r  rK  r  rK  	   )r  r  rK  )	r   r   r   r   r   r   r   r   r   r$   r"   rL   i90  ra  rJ   r   r  r(   r%  )r%   r%   r%   r%   r%   r%   r%   r%   r%   rd   rd   rd   r%   iga2U0*C?r   g{Gzt?r   iz rb   gMb@?c                     [         R                  " S/U 45      n SU S   -  SU S   -  -   U S   -   U S   -   SU S   -  U S   -   /$ )Nr   rD   rd   r  rK  r  r,   r  r   s    r:   c13TestDifferentialEvolutionSolver.test_L1.<locals>.c1A  s\    		A3(#AadFQqtVOae+ae3qtGaeO% %r=   c                 \    [         R                  " S/U 45      n SU S   -  U S   -
  U S   -   $ )Nr   r   r  r  rK  r  r   s    r:   c23TestDifferentialEvolutionSolver.test_L1.<locals>.c2F  s5    		A3(#Aad7QqT>AbE))r=   r  )r,   zerosr/   r   r   r   r   r   rE   r   r   r   r   r
   r  r  r   r  )r9   r  r  bLr1   r   x_optf_optr  r  L2NN2r  s                  r:   test_L1'TestDifferentialEvolutionSolver.test_L1  s   	
 HHX)!^
!aW*$!Z-)!^
!aW*$!Z-)!^
!aW*$!Z-ab!"fIHH34Q+!xjl*fX5 %
A44

 8%%d3{{{u40T2qw!|$%suu 0A 6678suu 0A 6678 Yq\BFF7A6 %
aT4

 	%%({{{u40T2qw!|$%suu 0A 6678suu 0A 6678
	%
	* Qrr1uXw"16a!Qi"&&!Aa&9RVVGQqV4 bffWa!f5Rn$$&!!(K8(JG'C ' 	u40T2qw!|$%suu 0A 6678suu 0A 6678 '&s   *S
S+c           	      T   S nS n[        US[        R                  5      nS/S-  nUn[        R                  " 5          [        R
                  " S[        5        [        XSSUS	9nS S S 5        S
nSn[        U" U5      U5        [        WR                  U5        [        UR                  USS9  UR                  (       d   e[        [        R                  " [        R                  " U" UR                  5      5      S:  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :*  5      5        g ! , (       d  f       GN8= f)Nc                     [         R                  " S/U 45      n U S   S-
  S-  SU S   S-
  S-  -  -   U S   S-  -   SU S   S	-
  S-  -  -   SU S   S
-  -  -   SU S
   S-  -  -   U S   S-  -   SU S
   -  U S   -  -
  SU S
   -  -
  SU S   -  -
  nU$ )Nr   r%   r   rD   rf   rK  rd   re   r  rg   r&   r  r  r  s     r:   r  2TestDifferentialEvolutionSolver.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                    [         R                  " S/U 45      n SSU S   S-  -  -
  SU S   S-  -  -
  U S   -
  SU S   S-  -  -
  SU S   -  -
  SS	U S   -  -
  U S   S-  -
  S
U S
   S-  -  -
  SU S   -  -   SSU S   -  -
  SU S   -  -
  SU S   S-  -  -
  U S   -
  U S   -   SU S   S-  -  U S   S-  -
  SU S   -  U S   -  -   SU S   S-  -  -
  SU S
   -  -
  SU S   -  -   /$ )Nr      rD   r%   rd   re   rf         rg   r  r&   i  r   r  r  r   s    r:   r  3TestDifferentialEvolutionSolver.test_L2.<locals>.c1h  sF   		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  rL     rJ   r   r  gy\
E@)gܤ@g$H8?g	޿g0ev@gn8)gk_@/?g0g+?h㈵>r  r%   )r
   r,   r   r  r  r   r  r   r   r   rE   r   r   r   r/   )	r9   r  r  r"  r1   r  r   r   r  s	            r:   test_L2'TestDifferentialEvolutionSolver.test_L2]  s5   		&  Arvv.Q$$&!!(K8(Z-1{LC '
 "1 	%%('u40{{{rxx355	*a/01suu 0A 6678suu 0A 6678 '&s   (F
F'c           	         S n[         R                  " S5      nSUS/ SQ4'   SUS/ SQ4'   SUS	/ S
Q4'   USS 2SS 24   n[         R                  " / SQ5      nS n[        X#[         R                  5      n[        US[         R                  5      nS/S-  nXV4n[        R                  " 5          [        R                  " S[        5        [        XSUS	S9n	S S S 5        Sn
Sn[        U" U
5      USS9  [        W	R                  U
SS9  [        U	R                  USS9  U	R                  (       d   e[        [         R                   " X)R                  -  U:  5      5        [        [         R                   " [         R                  " U" U	R                  5      5      S:  5      5        [        [         R                   " U	R                  [         R                  " U5      S S 2S4   :  5      5        [        [         R                   " U	R                  [         R                  " U5      S S 2S4   :*  5      5        g ! , (       d  f       GNd= f)Nc                 t   [         R                  " S/U 45      n U S   S-  U S   S-  -   U S   U S   -  -   SU S   -  -
  SU S   -  -
  U S   S-
  S-  -   SU S   S	-
  S-  -  -   U S	   S-
  S-  -   SU S
   S-
  S-  -  -   S	U S   S-  -  -   SU S   S-
  S-  -  -   SU S   S-
  S-  -  -   U S   S-
  S-  -   S-   nU$ )Nr   r%   rD   r  r  rd   r   re   rf   rg   r&   r  r  r  -   r  r  s     r:   r  2TestDifferentialEvolutionSolver.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=   )re   r  )r-  r@  rd   ir%   )r%   rD   r&   r  )r   r     r   rD   )r  r   r@  rD   rd   )r%   rD   r  r   )ir   ic                    [         R                  " S/U 45      n SU S   -  SU S   -  -
  SU S   S-
  S-  -  -
  S	U S
   -  -   SU S   S-
  S-  -  SU S   S-
  S-  -  -
  SU S   S-  -  -
  S	U S   -  -   S-   U S   S-  * SU S   S-
  S-  -  -
  SU S   -  U S   -  -   SU S   -  -
  SU S   -  -   SU S   S-  -  SU S   -  -
  U S   S-
  S-  -
  SU S   -  -   S-   SU S   S-
  S-  -  SU S   S-
  S-  -  -
  SU S   S-  -  -
  U S   -   S-   /$ )Nr   rd   r%   rg   rD   rK  r  r  r&   r   r   re   x   r  rf   r@  r        r   r  r   s    r:   r  3TestDifferentialEvolutionSolver.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   r  r(   )
gWXp?`@g@gVW@!@g3Ib@grq?g` ?g$F-t%?g6N#@g7h @g]y @g<6cN8@r1  r  ư>)r,   r  r/   r   r   r
   r  r  r   r  r   r   rE   r   r   r   r   r9   r  r  r  r  r  r"  r1   r  r   r  r   s               r:   test_L3'TestDifferentialEvolutionSolver.test_L3  s   	 HHW*!\/+!\/*!]
ab!"fIHH^$	N Q266*Arvv.Rf$$&!!(K8(5@!MC '
C%%d3u40T2{{{q55yA~&'rxx355	*a/01suu 0A 6678suu 0A 6678! '&s   .(H33
Ic                 r   S n[         R                  " S5      nSUSSS/4'   SUS/ S	Q4'   S
USSS/4'   USS 2SS 24   n[         R                  " / SQ5      nS n[        U[         R                  * S5      n[        US[         R                  5      nS/S/S-  -   S/S-  -   nXV4n[        R                  " 5          [        R                  " S[        5        [        XSSUSSS9n	S S S 5        Sn
/ SQn[        U" U5      U
SS9  [        W	R                  U
SS9  [        R                  " 5       S:X  aI  [         R                  " [         R                   5      R"                  S:  a  [        U	R$                  USSS 9  O[        U	R$                  US!S"S 9  U	R&                  (       d   e[)        [         R*                  " X)R$                  -  U:*  5      5        [)        [         R*                  " [         R                  " U" U	R$                  5      5      S:  5      5        [)        [         R*                  " U	R$                  [         R                  " U5      S S 2S4   :  5      5        [)        [         R*                  " U	R$                  [         R                  " U5      S S 2S4   :*  5      5        g ! , (       d  f       GN= f)#Nc                 4    [         R                  " U S S 5      $ )Nrd   r,   r   r   s    r:   r  2TestDifferentialEvolutionSolver.test_L4.<locals>.f  s    66!BQ%= r=   )re   r  ){Gzd?rE  r%   re   rg   )rE  rE  g{GzdrD   )rf   r&   re   )ra  g{Gzrd   r  rf   )r%   r%   r%   c                 
   [         R                  " S/U 45      n U S   U S   -  SU S   -  -
  SU S   -  -
  S-   U S   U S	   -  S
U S   -  -
  U S   U S   -  -
  S
U S   -  -   U S   U S   -  S-
  U S   U S   -  -
  SU S   -  -   /$ )Nr   r%   rg   g!> 
@re   r#   gSUX@rD   r&   i  rf   rd   r  i i	  r  r   s    r:   r  3TestDifferentialEvolutionSolver.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#   '  )  rH  )r   rI  r  rL   r/  rb   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   r  r   r   r   platformsystemr  intpitemsizerE   r   r   r   )r9   r  r  r  r  r  r"  r1   r  r   r   r  s               r:   test_L4'TestDifferentialEvolutionSolver.test_L4  s!   	! HHV%!aV)1!Y,"!aV)ab!"fIHHY	A Q+Arvv.=/!"33zl1nDf$$&!!(K8(JD'C ' 2 	%%e4U3 OO*rxx/@/I/IA/MCEE5vFC CEE5t&A{{{q55yA~&'rxx355	*a/01suu 0A 6678suu 0A 66785 '&s   ;*J''
J6c           	         S nS n[        U[        R                  * S5      nS/S-  nUn[        XSSUS9nS	nS
n[	        U" U5      USS9  [	        UR
                  USS9  UR                  (       d   e[        [        R                  " [        R                  " U" UR                  5      5      S:*  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :*  5      5        g )Nc                     [         R                  " S/U 45      n [         R                  " S[         R                  -  U S   -  5      S-  [         R                  " S[         R                  -  U S   -  5      -  U S   S-  U S   U S   -   -  -  nU* $ )Nr   rD   r%   rd   )r,   r  sinpir  s     r:   r  2TestDifferentialEvolutionSolver.test_L5.<locals>.f  s    		A3(#A66!BEE'!A$,'*266!BEE'!A$,+??aD!GQqT!A$Y')C4Kr=   c                 ~    [         R                  " S/U 45      n U S   S-  U S   -
  S-   SU S   -
  U S   S-
  S-  -   /$ )Nr   r%   rD   re   r  r   s    r:   r  3TestDifferentialEvolutionSolver.test_L5.<locals>.c1  sT    		A3(#AaD!GadNQ&!H!Q{*, ,r=   r   r   r   rD   rM   r/  r0  )gJIť?gU(C@g#gh㈵>r  -C6?r%   )r
   r,   r   r   r   r   r   r   r   r/   rE   	r9   r  r  r"  r1   r  r   r  r   s	            r:   test_L5'TestDifferentialEvolutionSolver.test_L5  s    		,
  RVVGQ/1$Q1<> )%%d3T2{{{rxx355	*a/01suu 0A 6678suu 0A 6678r=   c           	         S nS n[        US[        R                  5      nSS/nUn[        XSSUSS	9nS
nSn[	        U" U5      USS9  [	        UR
                  USS9  [	        UR                  USS9  UR                  (       d   e[        [        R                  " [        R                  " U" UR                  5      5      S:  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :*  5      5        g )Nc                 f    [         R                  " S/U 45      n U S   S-
  S-  U S   S-
  S-  -   nU$ )Nr   r%   r   rd   rD   r  r  r  s     r:   r  2TestDifferentialEvolutionSolver.test_L6.<locals>.f  s=    		A3(#AQ47Q,!A$)a/CJr=   c                     [         R                  " S/U 45      n U S   S-
  S-  U S   S-
  S-  -   S-
  U S   S-
  S-  * U S   S-
  S-  -
  S-   /$ )Nr   r%   rf   rD   r#   rg   gp=
׳T@r  r   s    r:   r  3TestDifferentialEvolutionSolver.test_L6.<locals>.c1  sl    		A3(#AqT!VaK1Q4!8a-/#5d1fq[LAaD1Hq=058: :r=   r   )   r#   r"   rM   r/  gHz>)rJ   r   r  r%  )gq=
ף0,@g??g1r=  r  rJ  rZ  r%   )r
   r,   r   r   r   r   rE   r   r   r   r/   r[  s	            r:   test_L6'TestDifferentialEvolutionSolver.test_L6  s
   	
	:
  Arvv.X&$Q1<$H!%%d3U3u40{{{rxx355	*a/01suu 0A 6678suu 0A 6678r=   c           	         S nS n[        U/ SQ/ SQ5      nSS/S/S-  -   nUn[        XS	S
US9n/ SQnSn[        U" U5      U5        [        UR                  USS9  [        UR                  USS9  UR
                  (       d   e[        [        R                  " [        R                  " U" UR                  5      5      [        R                  " / SQ5      :  5      5        [        [        R                  " [        R                  " U" UR                  5      5      [        R                  " / SQ5      :*  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :*  5      5        g )Nc                     [         R                  " S/U 45      n SU S   S-  -  SU S   -  U S   -  -   SU S   -  -   S	-
  nU$ )
Nr   g+dvqn@rd   rD   g"C?r%   rf   gtۈB@gn@r  r  s     r:   r  2TestDifferentialEvolutionSolver.test_L7.<locals>.f+  s[    		A3(#AQqT1W$y1~ad'::QqT>"$-.CJr=   c                 F   [         R                  " S/U 45      n SSU S   -  U S   -  -   SU S   -  U S   -  -   S	U S
   -  U S   -  -
  SSU S   -  U S   -  -   SU S   -  U S   -  -   SU S
   S-  -  -   SSU S
   -  U S   -  -   SU S   -  U S
   -  -   SU S
   -  U S   -  -   /$ )Nr   gl#fUU@g+WPIw?rD   rf   g=BD?r%   re   gOlb?rd   gaۢ T@g+<$!6}?g h?g^5a?g/h"@gxLCs?gݗT?g^gED_?r  r   s    r:   r  3TestDifferentialEvolutionSolver.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   r   )N   f   )!   r6  )   r6  rd   rM   r/  r0  )gq S@g] @@g˻f=@g:F@g%ShMcB@gCgbrJ  r  r   r%   )
r
   r   r   rE   r   r   r   r,   r   r/   r[  s	            r:   test_L7'TestDifferentialEvolutionSolver.test_L7)  sI   		  K?X&(A5$Q1<>
 %%(u40T2{{{rxx355	*bhh{.CCDErxx355	*bhh}.EEFGsuu 0A 6678suu 0A 6678r=   ppc64lezfails on ppc64le)reasonc           
         S n[         R                  " S5      nSUSSS/4'   SUSSS/4'   USS 2SS 24   n[         R                  " SS/5      nS	 n[        X#[         R                  5      n[        U[         R                  " SS
5      [         R                  " SS5      5      nS/S-  S/S-  -   nXV4n[        R                  " 5          [        R                  " S[        5        [        XSSUSS9n	S S S 5        Sn
Sn[        U" U
5      USS9  [        W	R                  S S U
S S SS9  [        U	R                  SS  U
SS  SS9  [        U	R                  USS9  U	R                  (       d   e[!        [         R"                  " X)R                  -  U:  5      5        [!        [         R"                  " [         R                  " U" U	R                  5      5      S
:  5      5        [!        [         R"                  " [         R                  " U" U	R                  5      5      S:*  5      5        [!        [         R"                  " U	R                  [         R                  " U5      S S 2S4   :  5      5        [!        [         R"                  " U	R                  [         R                  " U5      S S 2S4   :*  5      5        g ! , (       d  f       GN= f)Nc                     [         R                  " S/U 45      n SU S   -  SU S   S-  -  -   SU S   -  -   SU S   S-  -  -   nU$ )Nr   rd   r%   r=  rD   g^>r  r  s     r:   r  2TestDifferentialEvolutionSolver.test_L8.<locals>.f[  sY    		A3(#AAaD&8AaD!G++a!f4z!A$'7IICJr=   )rd   rf   )r%   r   r%   re   rd   rD   皙c           	         [         R                  " S/U 45      n S[         R                  " U S   * S-
  5      -  S[         R                  " U S   * S-
  5      -  -   S-   U S   -
  S[         R                  " U S   S-
  5      -  S[         R                  " U S   U S   -
  S-
  5      -  -   S-   U S   -
  S[         R                  " U S   S-
  5      -  S[         R                  " U S   U S   -
  S-
  5      -  -   S	-   /$ )
Nr   rI  rd   rh   re   gfffff@r%   rD   g33333;@)r,   r  rT  r   s    r:   r  3TestDifferentialEvolutionSolver.test_L8.<locals>.c1f  s    		A3(#A1d
++d2661Q4%*3E.EEaD!!T	**T"&&1ad42H-HHaD!!T	**T"&&1ad42H-HH r=   MbPrJ  )r   i  )ry  g?r  rL   r/  i  )rJ   r   r  r   )gEGr?@gT㥛D@g&D
n?gd,[ٿg#J{@r  gMb`?r$  r   )r,   r  r/   r   r   r
   fullr  r  r   r  r   r   rE   r   r   r   r   r>  s               r:   test_L8'TestDifferentialEvolutionSolver.test_L8W  s'   	
 HHV!aV)!aV)ab!"fIHHdD\"		 Q266*BGGAv$658IJQ}Q.f$$&!!(K8 )Z-1{157C ' <%%d3bq	5!948ab	5948T2{{{qw!|$%rxx355	*f456rxx355	*e345suu 0A 6678suu 0A 6678+ '&s   )J55
Krf   c           	         S nS n[        US/S/5      nS/S-  nUn[        XSSUS	9n[        R                  " S5      S-  S
/nSn[	        U" U5      U5        [	        [        R
                  " UR                  5      USS9  [	        UR                  USS9  UR                  (       d   e[        [        R                  " [        R                  " U" UR                  5      5      S:  5      5        [        [        R                  " [        R                  " U" UR                  5      5      S:*  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :  5      5        [        [        R                  " UR                  [        R                  " U5      S S 2S4   :*  5      5        g )Nc                 \    [         R                  " S/U 45      n U S   S-  U S   S-
  S-  -   $ )Nr   r%   rD   r  r   s    r:   r  2TestDifferentialEvolutionSolver.test_L9.<locals>.f  s5    		A3(#AQ47ad1fq[((r=   c                 R    [         R                  " S/U 45      n U S   U S   S-  -
  /$ r  r  r   s    r:   r  3TestDifferentialEvolutionSolver.test_L9.<locals>.c1  s/    		A3(#AaD1Q47N##r=   r|  rJ  r   rD   rM   r/  r0  r'   g      ?r  r   r%   )r
   r   r,   sqrtr   absrE   r   r   r   r   r/   r[  s	            r:   test_L9'TestDifferentialEvolutionSolver.test_L9  sH   	)	$  UGeW51$Q1<> As#%%(suuu48T2{{{rxx355	*f456rxx355	*e345suu 0A 6678suu 0A 6678r=   c           	        ^ [         R                  R                  S5      n[        R                  nSnUR
                  " USUS.6nS mSS/nSS	/n[        TXbU4USUS
9nUR                  S   S:X  d   e[        UR                  USS9  [        TXbU4USUS
9nU4S jn	[        XR                  S   SX$4S	/S9n
[        UR                  S   U
R                  5        UR                  UR                  ::  d   eg )Nl   b	)rf   r'   rH  )rN  random_statec                     Uu  p#[         R                  " UR                  " U/U Q76 5      R                  SS9* n[         R                  " U5      (       a  [         R
                  nU$ )Nr   axis)r,   logpmfr   isnanr   )r  r   distrE   lls        r:   r   >TestDifferentialEvolutionSolver.test_integrality.<locals>.func  sO    GD&&!a)--2-66Bxx||VVIr=   TF)r%      )r   gffffff?)r   integralityr   r   r   rf   g?)r   c                 P   > Uu  p#nT" [         R                  " X S   /5      X45      $ )Nr   r  )r  r   nr  rE   r   s        r:   func2?TestDifferentialEvolutionSolver.test_integrality.<locals>.func2  s(    JAQ!qT+T55r=   r%   )r   r1   )r,   r2  r7  r   nbinomrvsr   rE   r   r   r   )r9   r   r  shapesrE   r  r1   r   res2r  LBFGSBr   s              @r:   test_integrality0TestDifferentialEvolutionSolver.test_integrality  s    ii##M2||HHf5s;	 Um9%$T6q	1<U),.
 uuQx1}}vE2 &dF2=d*-/	6 %!T"+.q	688,xx377"""r=   c                    S n/ SQn/ SQn[        XSSS9n[        UR                  S   / SQ5        [        UR                  S   / S	Q5        [        XSUS9n[        UR                  S   / S
Q5        [        UR                  S   / SQ5        [        UR                  / SQ5        UR
                  SL d   e/ SQn[        XSUS9n[        UR                  S   / SQ5        [        UR                  S   / SQ5        [        [        R                  " UR                  S   5      / SQ5        [        [        R                  " UR                  S   5      / SQ5        / SQn[        XSUS9n[        UR                  S   / SQ5        [        UR                  S   / SQ5        / SQn[        R                  " [        SS9   [        XSUS9  S S S 5        g ! , (       d  f       g = f)Nc                     U $ r   r?   r   s    r:   r  BTestDifferentialEvolutionSolver.test_integrality_limits.<locals>.f  s    Hr=   )TFT))rX  r   r   皙@)ffffff
@皙@F)r1   r   r  r   )rX  r   r  r%   )r   r  r  )r'   r   g      @)g      ?r        @))r  gr  )g$gffffff@)g      r         %)r;  r  r  )      r   g      $)r  r    g      @))ffffff$g333333 r  g%gr#)r  r   r  )g      !r  g      #))r  g333333$r  r  zOne of the integralityr   )r   r   r0   r   r  r   r,   roundr  r   r   )r9   r  r  r1   r^   s        r:   test_integrality_limits7TestDifferentialEvolutionSolver.test_integrality_limits  s   	 *5 -Qe9>@a(/:a(/: -Qe9DFa(/:a(/:V'')<=}}%%%9,Qe9DFa(*<=a(*:; 	q!124FGq!124DE>,Qe9DFa(*=>a(*;<?]]:-EF'4?A GFFs   <G
Gc           	        ^ S nS n[         R                  " [        SS9   [        XR                  SSS9  S S S 5        [        [        SS9   [        X R                  SS	9  S S S 5        [        [        S
S9   [        X R                  S[        SS9  S S S 5        S/mU4S jnSS/n[        [        USSS9n[        X4SSSS9n[        UR                  UR                  5        TS   UR                  :X  d   eUR                  UR                  :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nc                 4    [         R                  " U S-  5      $ r   rC  r   s    r:   r2   BTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic  s    66!Q$<r=   c                 2    [         R                  " U S-  SS9$ )NrD   r   r  rC  r   s    r:   quadratic_vecFTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic_vec  s    66!Q$Q''r=   zThe vectorized functionr   Tr  )r  r  z#differential_evolution: the 'vector)r  z$differential_evolution: the 'workers)r  r  r  r   c                 4   > TS==   S-  ss'   [        U 5      $ r  )r   )rE   ncallss    r:   	rosen_vecBTestDifferentialEvolutionSolver.test_vectorized.<locals>.rosen_vec   s    1INI8Or=   rY  r%   )r  r   )r  r  r   )r  r   r   r   r1   r   r  r  r   r   rE   r  r   )r9   r2   r  r  r1   res1r  r  s          @r:   test_vectorized/TestDifferentialEvolutionSolver.test_vectorized  s$   	 	( ]]</HI"9kk.2ZI J
 ;&KL"=++.24 M
 ;&LM"=++.2C,68 N
 	 7#%eVj*+-%iD/9qB 	'ayDII%%%xx488###= JI
 ML
 NMs#   DD'8D8
D$'
D58
Ec           
          S nS n[        U[        R                  * S5      n[        USS5      nS nSS/n[        [        USS	X4/S
S9n[        XVSSS	X4/S
S9n[        UR                  UR                  5        g )Nc                 B    [         R                  " U S   U S   -   /5      $ r  r  r   s    r:   r  MTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f0  r  r=   c                 \    [         R                  " U S   S-  U S   -   U S   U S   -
  /5      $ r  r  r   s    r:   r  NTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f23  r  r=   r  )r   r'   r   c                 r    SU SS  U S S S-  -
  S-  -  nUSU S S -
  S-  -  n[         R                  " U5      $ )Nr#   r%   r   r    )r,   squeeze)rE   r   s     r:   r  NTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.rosen_vec9  sM    quq"vs{*S00A!af*s""A::a= r=   rY  r  r%   F)r  r   r  r   T)r  r  r   r  r   )r
   r,   r   r   r   r   rE   )	r9   r  r  nlc1r  r  r1   r  r  s	            r:   test_vectorized_constraints;TestDifferentialEvolutionSolver.test_vectorized_constraints/  s    	+	; #8bffWc:"9j*E	! 7#%eVj*+$-24 &iD/9q37,-24
 	'r=   c                   ^^ [        U R                  5      mU4S jmS Tl        [        [        U R                  TSSS9n[        [        U R                  SSSS9nUR
                  c   e[        UR                  [        R                  " T5      SS9  UR                  TR                  R                  :X  d   eUR                  UR                  :w  d   eU4S jn[        [        S	S
9   [        [        U R                  USS9  S S S 5        S m[        R                  R                  S5      n[        [        U R                  SUSS9n[        [        UR                  U R                  SS9n[        R                  R                  S5      n[        [        U R                  TUSS9n[        UR                  UR                  5        [        UR                  UR                  5        g ! , (       d  f       N= f)Nc                 L   > [        X4[        SS.UD6Tl        TR                  $ )Nztrust-constr)jacmethod)r   r   r   )r   rE   kwdspfs      r:   r  @TestDifferentialEvolutionSolver.test_polish_function.<locals>.pfO  s$    cS)NSdSBF66Mr=   r%   r   )r   r   r   Tr=  r  c                    > SU;   d   e[        US   [        5      (       d   eSU;   d   e[        R                  " T5      $ )Nr1   r  )r   r	   r,   r  )r   rE   r  r"  s      r:   dummy_pfFTestDifferentialEvolutionSolver.test_polish_function.<locals>.dummy_pf`  sD    t###d8nf5555 D(((771:r=   z(The result from a user defined polishingr   )r   r   c                     [        X4SS0UD6$ )Nr  L-BFGS-B)r   )r   rE   r  s      r:   r  r  t  s    D?J?$??r=   l   -g F)r   r   r   r  )r1   r  )r   r1   r   r   r   r  r   rE   r,   r  r   r   r   r2  r7  r   )r9   r   r   r  r   r  r"  r  s         @@r:   test_polish_function4TestDifferentialEvolutionSolver.test_polish_functionK  s   	 $UDKKASTU$UDKKaUVW
 ww"""rwwqz5ww"&&**$$$ww#''!!!	 <
 #		
	@ ii##L1$4;;u#q
 uceeDKK
Kii##L1%4;;rsA

 	tvv&*;
 
s   )G((
G6c           	          S n[        S S[        R                  5      n[        S [        R                  * S5      n[        USS/X#/SSS	S
9nUR                  SL d   eSUR
                  ;   d   eg )Nc                 h    [         R                  " U S   5      [         R                  " U S   5      -   $ r  )r,   cosrT  r   s    r:   r   UTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.func  s%    66!A$<"&&1,..r=   c                 $    U S   U S   S-
  S-  -
  $ Nr%   r   rD   r?   r   s    r:   <lambda>YTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>  s    1Q41Q46A++=r=   r   c                     U S   U S   S-  -   $ r  r?   r   s    r:   r  r    s    1Q4!A$'>r=   )r   rD   r   r   Fi3)r1   r  r   r   r   z
MAXCV = 0.)r
   r,   r   r   r   r   )r9   r   c0r  rj   s        r:   'test_constraint_violation_error_messageGTestDifferentialEvolutionSolver.test_constraint_violation_error_message  s{    	/ !!=q"&&I !9BFF7AF'07/A57H02/4,57 ~~&&& v~~---r=   c                   ^^^^	^
 SmSnS/T-  nTU-  m
SmSm	S/mSUUUU	U
4S jjn[        [        UUT	TSUSS	S
9	nUR                  UL d   eUR                  5         TS   S:  d   e[	        [        X#SS9nUR
                  (       d   eSS jn[        R                  " [        SS9   [	        [        UUS9  S S S 5        g ! , (       d  f       g = f)Nre   r   )r   g      $@r+   gffffff?r   c                 p  > TS==   S-  ss'   [         R                  " X   5      nUR                  T5      n[         R                  " T5      nUR	                  U5        US S nXfU :g     S S nUS S u  pxUS   TX   X   -
  -  -   n	UR                  TS9n
U
T:  n
SX'   [         R                  " XU5      nU$ )Nr   r%   rd   rD   )rN  T)r,   copychoicer6   shufflerq  where)r  r8   r   rk   
fill_pointr  idxsr0r  bprime
crossoverscallsr)   r  recombinationtotal_popsizes              r:   custom_strategy_fnLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fn  s    !HMHGGJ12EO4J99]+DKK<D	)*2A.D"1XFB mh^jn4'6 6F /:J#m3J%)J"HHZ7ELr=   rD   F)r(   r  r)   r   rJ   r   r   r  )rJ   r  c                 2    [         R                  " SS/5      $ )Nr   r    r  )r  r8   r   s      r:   r  r    s    88S#J''r=   z	strategy*r   rI   r   )	r   r   rJ   r   r   r   r  r   r   )r9   r(   r1   r  r^   r   r  r)   r  r  r  s         @@@@@r:   test_strategy_fn0TestDifferentialEvolutionSolver.test_strategy_fn  s     o-''1	 	* -''

 "4444Qx!|| %6
 {{{	( ]]<{;"+ <;;s   )C
Cc                 l    [        [        [        S/S-  5          S S S 5        g ! , (       d  f       g = f)NrY  rD   )r   r   r   r@   s    r:   test_reference_cycles5TestDifferentialEvolutionSolver.test_reference_cycles  s%     ;UWIaKP QPPs   %
3)r1   r3   r4   r0   r.   N)Pr\   
__module____qualname____firstlineno__r;   rA   r2   r_   rl   ro   rr   ru   r|   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r'  r+  r/  r9  r=  rB  rH  rU  rY  r\  rs  rw  r~  r  r  r  r  mark	fail_slowr  r  r  r  r  r  r  r  r  r  r$  r2  r?  rP  r\  rd  rr  xslowxfailrL  machiner~  r  r  r  r  r  r  r  r  r  __static_attributes__r?   r=   r:   r   r      s)   3&%IGV'
'''4*<=EH
(>;@G!R D0 *0$JK.&`?'0.E &4*D8LFI)	 [[2 $
7:r+&Z  [[2%9 %9N:4*;X'84& [[2\9 \9| [[2%9 %9N [[209 09d [[229 29h [[29 9< [[29 98,9\ [[[[x'')Y60  2192 19f [[19 9< [[2*# *#X+AZ [[2&$ &$P(88+t.. [[2= =~r=   r   )&__doc__multiprocessing.dummyr   r  rL  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   r   r   r   r?   r=   r:   <module>r     sV    5   2G A; ; 5 5 "  9 9 1 E Er=   