
    ^Mh                        d Z ddlZddlmZ ddlZddlmZmZ ddl	m
Z
mZ ddlmZmZmZ ddl	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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.
    N)Pool)DifferentialEvolutionSolver_ConstraintWrapper)differential_evolutionOptimizeResult)BoundsNonlinearConstraintLinearConstraint)rosenminimize)
csr_matrix)stats)assert_equalassert_allcloseassert_almost_equalassert_string_equalassert_suppress_warnings)raiseswarnsc                      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)e*j+        j,        d(             Z-e*j+        .                    d)          d*             Z/d+ Z0d, Z1d- Z2e*j+        j,        d.             Z3e*j+        .                    d)          e*j+        j,        d/                         Z4d0 Z5d1 Z6d2 Z7d3 Z8e*j+        .                    d4          d5             Z9e*j+        .                    d)          d6             Z:e*j+        .                    d)          d7             Z;e*j+        .                    d)          d8             Z<e*j+        .                    d)          d9             Z=e*j+        .                    d)          d:             Z>d; Z?e*j+        j@        e*j+        A                     eBjC                    d<k    d=>          d?                         ZDe*j+        .                    d@          dA             ZEe*j+        .                    d)          dB             ZFdC ZGe*j+        j,        e*j+        .                    d)          dD                         ZHdE ZIdF ZJe*j+        .                    d4          dG             ZKdHS )I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)selfr6   s     q/var/www/html/test/jupyter/venv/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,   r7   s    r8   teardown_methodz/TestDifferentialEvolutionSolver.teardown_method-   s     
	$$DO$$$$$r:   c                     |d         dz  S )Nr      r<   )r7   xs     r8   r0   z)TestDifferentialEvolutionSolver.quadratic0   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   r/   r   rE   mutation_func__name__r7   solvers     r8   test__strategy_resolvesz7TestDifferentialEvolutionSolver.test__strategy_resolves3   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皙?r@                     ?)r*   r-   r2   rF   r   rI   r7   resulttrials      r8   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-   r2   rN   r   rL   rc   s      r8   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-   r2   rQ   r   rc   s      r8   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-   r2   rT   r   rc   s      r8   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   r0   r/   r   ditherlist)r7   r'   rY   s      r8   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^   ro   r#   r(   r%   )
r   assert_raises
ValueErrorr   r/   r*   nanr   scalerp   )r7   funcr'   rY   s       r8   +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 Nr@   )r*   r-   sumrA   s    r8   rz   zETestDifferentialEvolutionSolver.test_invalid_functional.<locals>.func   s+    8RVAF^^RVAYY7888r:   z,func\(x, \*args\) must return a scalar valuematchr@   )rv   RuntimeErrorr   )r7   rz   s     r8   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   r1   _scale_parametersr.   r7   re   s     r8   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   r1   _unscale_parametersr.   r   s     r8   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   )      ?      @)r/   r   r%   )r   r   r   )	r*   errstater   r0   r   r   r   r   rA   )r7   rY   vress       r8   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㈵r@   r   r   r#   )r*   r-   r1   _ensure_constraintr   r   logical_andallr   s     r8   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   r0   solver   funrA   r7   rY   rd   s      r8   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 S )Nr   )r   r0   r   r   rA   r   s      r8   test_best_solution_retrievalz<TestDifferentialEvolutionSolver.test_best_solution_retrieval  s<    ,T^gYGGVXvx(((((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   valrA   )rA   r   rz   s     r8   rz   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#   r@   r   zin progressT)nitintermediate_resultr6   ndimshaper   rA   rz   r   r   r   rangelenpopulation_energiesmessagesuccess
isinstancer   StopIteration)r   ir   refcallbackr   s       r8   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   r@   ie F)rz   r/   rngr   r   r   &callback function requested stop early/Maximum number of iterations has been exceeded.>   r   r   Tr   r<   )rA   r*   infr   r   r   rz   dictr   r   r   itemsr   r   )
r7   r/   kwargsr   r   fieldr   r   rz   r   s
          @@@r8   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     r8   callback_python_truezVTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_python_trueW  s    4r:   )r   c                     t           r   )r   )r   s    r8   callback_stopzOTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_stop`  s    r:   c                     dgS )Nr   r<   r   s     r8   callback_evaluates_truezYTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_truef  s	    4Kr:   c                     g S r   r<   r   s     r8   callback_evaluates_falsezZTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_falsen  s    Ir:   )r   )r   r   r   r   r   )r7   r/   expected_msgr   rd   r   r   r   s           r8   test_callback_terminatesz8TestDifferentialEvolutionSolver.test_callback_terminatesS  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#   r@   r   )r   tuplerw   )rA   argss     r8   r0   zLTestDifferentialEvolutionSolver.test_args_tuple_is_passed.<locals>.quadraticz  sK    dE** ; !9:::7T!Wq[(47QU?::r:   T)r   r   gUUUUUU?)r   r   r   )r7   r/   r   r0   rd   s        r8   test_args_tuple_is_passedz9TestDifferentialEvolutionSolver.test_args_tuple_is_passedu  sX    	; 	; 	;
 (	(.-1/35 5 5 	FJ/////r:   c                 V    t           }dg}t          t          t          ||d           d S )Nr^   abcrD   )r   rv   rw   r   )r7   rz   r/   s      r8   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_   r`   r   r@   )r   r   )r   rv   rw   r   r   r   rA   )r7   rz   r/   rd   s       r8   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)dtyper@   ra   r   r#   r&   r`   )r*   r4   reshaperq   zipr   _select_samplesr   r   uniquer-   )
r7   r.   r/   rY   	candidater1r2r3r4r5s
             r8   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   r/   r   r   r   r   r   s      r8   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   r@   z9Maximum number of function evaluations has been exceeded.r`   (   )r&   r   r   )   /   deferred)r&   r   r   updatingz8Maximum number of function evaluations has been reached.)r   r   r/   r   r   nfevr   r   r   s      r8   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   r0   r   r   r*   argminr   rX   s     r8   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   r0   r=   s    r8   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   r0   r   rA   r   )r7   rd   result2s      r8   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   r0   )r7   r   initsr  s       r8   test_random_generatorz5TestDifferentialEvolutionSolver.test_random_generator  sl     i##%%??? 	. 	.D"4>$/=*/'*'*(,. . . . .	. 	.r:   c                 h    t          t          | j        dd          }|                                 d S )NrC   r#   )rE   r   r   r   r/   r   rX   s     r8   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)r`   1   r#   )r&   r   )r   r   )r7   r/   s     r8   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   ra   )r   r   r/   _calculate_population_energiesr6   _promote_lowest_energyr   r*   r  r   _nfevrX   s     r8   "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   r@   2   )r   r   r/   nextr   r*   sizer  rv   r   	enumerate)
r7   rY   rA   r   _fun_prevr   soln	x_currentfun_currents
             r8   test_iterationz.TestDifferentialEvolutionSolver.test_iteration2  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   r/   r   r   r   rX   s     r8   test_convergencez0TestDifferentialEvolutionSolver.test_convergenceL  sJ    ,UDKS49; ; ;"S()))))r:   c                 h    t          t          | j        d d           }|                                 d S )N)r   r   r  rX   s     r8   test_maxiter_none_GH5731z8TestDifferentialEvolutionSolver.test_maxiter_none_GH5731R  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  ru   r^   r   r`   r@   rM   {Gz?r#   )r  rE   atolr   r&   )r`   r@      r   r   )lowhighr"  x0)rv   rw   r   r   r/   init_population_randomr   r  r   r*   r   isinfr   init_population_lhsinit_population_qmclinspacer   num_population_memberspopulation_shapeclipr   r   r6   minmaxr
  uniformr   )r7   rY   r6   unscaled_populationr8  s        r8   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)   r7   @)r   r   r/   r   rv   rw   )r7   r   s     r8   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    r8   sometimes_infzWTestDifferentialEvolutionSolver.test_infinite_objective_function.<locals>.sometimes_inf  s    tbyyvQ4Kr:   r"   F)r/   disp)r   )r7   rK  r/   s      r8    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   rC   )r   rE   )
r   r   r   	_updating_mapwrapper_mapfuncmapr   r   r   )r7   r/   rY   r   s       r8   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	          j        d          }|                    d          5 }t          t                    5  t          t          ||j	                  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 d d            d S # 1 swxY w Y   d S )Nr   	immediatespawnr@   )workersr   )r   r   r   rO  multiprocessingget_contextr   r   UserWarningrR  r   )r7   r/   rY   ctxpss         r8   test_immediate_updatingz7TestDifferentialEvolutionSolver.test_immediate_updating  s    H%,UF;; K/000 )'22XXa[[ 	-A {## # #0NNN #RSLLNNN# # # # # # # # # # # # # # ## # # # # # # # # # # # # # # ;*,,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-sZ   C+0CB."C.B22C5B26C9C+C			C+C		C++C/2C/r   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            n# 1 swxY w Y   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@   r   r(   r^   )r   rW  r   r&   )r   rW  r&   r   )
ThreadPoolr   r   rR  rP  poolrO  r   )r7   r/   r\  rY   s       r8   test_parallelz-TestDifferentialEvolutionSolver.test_parallel  s    H%]] 	a!<6J3PQ"
 "
 "
 	%*666#z1111LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 )6J1#
 
 
 	%*666#z1111LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sF    B0A0$B0A4	4B7A4	8BBB,0C))C-0C-c                     t          t          ddg          }|                                 t          |                                           d S )Nr   )r   r   r   r   	convergedrX   s     r8   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    r8   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   r@   r#   r*   r-   r   s    r8   	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   )rG  @r   )r   r   r   c                 :    g | ]}                     |          S r<   )_constraint_violation_fn).0rA   rY   s     r8   
<listcomp>zPTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.<listcomp>  s=     )@ )@ )@-. *0)H)H)K)K )@ )@ )@r:   )r^   r#   r^   c                 $     |           j         S r   )r5   )rA   rn  s    r8   	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   r3   r   r}  pytestr   r   )r7   ri  nlccvnlc2xsvsrA   r   constraint_violationr|  rn  rY   s              @@r8   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    r8   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    r8   rn  z[TestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f2,  s)    aD!GadNAaD1Q4K00r:   rp  r   rq  r%   r   Fr(   rG  )r@   r#   rs  )FTr   )rr  r}  r   g333333?)r(   r+  r   )r   ru  r   )rG  rv  r   )r@   r^   rb   T)r   r   r   )
r	   r*   r   r   r   #_calculate_population_feasibilitiesr-   r   r   r   )	r7   ri  rn  r  rY   feasr  r  	vectorizes	            r8   (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    r8   ri  zGTestDifferentialEvolutionSolver.test_constraint_solve.<locals>.constr_fW       8QqTAaD[M***r:   rp  r   rq  )
r	   r*   r   r   r   r   rZ  r   rA   r   )r7   ri  r  rY   r   s        r8   test_constraint_solvez5TestDifferentialEvolutionSolver.test_constraint_solveU  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    r8   ri  zLTestDifferentialEvolutionSolver.test_impossible_constraint.<locals>.constr_fi  r  r:   ru   r   r#   r!   )rr  r&   r   r   r   F)rr  r      )r	   r*   r   r   r   r   rZ  r   maxcvr   r!  feasibler   isfiniter   r  r6   r  r   )r7   ri  r  rY   r   lr  s          r8   test_impossible_constraintz:TestDifferentialEvolutionSolver.test_impossible_constraintf  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    r8   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-   )r7   ri  r  rY   fns        r8   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 	53rxc
33rxT
335 5 	6 	6 	6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#   r@   r^   r   )rb         r#      r`   r^   )r#   r@   r^   r_   )r`   r   r   ra   )r$   r      r   )r   r@   r   r_      r$   r_   c                 .                         |           S r   )dot)rA   As    r8   r   zDTestDifferentialEvolutionSolver.test_constraint_wrapper.<locals>.fun  s    5588Or:   )r*   r-   r   r   r   	violationanyr   r4   r   appendtestingr   r5   r
   r   r	   )r7   lbubr8  pcr  
violationsrA   r   	nonlinearr  s             @r8   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A K K "$ $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    r8   cons_fzQTestDifferentialEvolutionSolver.test_constraint_wrapper_violation.<locals>.cons_f  sD     8QqTQY1-qTQY1-/ 0 0 0r:   ru   g333333r@   r%   r#   r   )rn   )r%   rt  )rt  rt  )r(   333333)r(   r   ))r   r   )r   r(   )ru  r   )gRQ?r   )r2  g=
ףp=?)r	   r   r*   r"  r/   r   r   r  r-   r5   r   r   r   
num_constrparameter_count)r7   r  r  r  r  r  rA   r   s           r8   !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                      5 }|                    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)r#   r#   r#   r   )r@   r@   r@   r   r   r#   r_   )r@   r  r`   )r@   r`   )r   filterPendingDeprecationWarningr*   matrixr
   onesr   r  r   r4   r   )r7   supr  lcr8  cwxtrials          r8   test_matrix_linear_constraintz=TestDifferentialEvolutionSolver.test_matrix_linear_constraint  s0       	0CJJ0111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           
      8
   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                      5 }|                    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   r`   r#   )r*   hstackr   rA   r   s     r8   fz2TestDifferentialEvolutionSolver.test_L1.<locals>.f  si    	A3(##A&1QqS6""Qq1vXa!f_4rvae}}DCJr:   )r      )r@   r@   r#   r#   r#   )r#   r@   r      )r#   r@   r   )r   ru   r#   r^   )r_   r`   r   r_   )r#   r^   r   r  r`   r  ra   )ra   r$   r  r$   )r@   r^   r  r  r  r  	   )r  r  r  )	r   r   r   r   r   r   r   r   r   r"   r    rG   i90  r2  rE   r   rr  r&   r   )r#   r#   r#   r#   r#   r#   r#   r#   r#   r^   r^   r^   r#   iga2U0*C?r3  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   r@   r^   r  r  r  r*   r  r   s    r8   c1z3TestDifferentialEvolutionSolver.test_L1.<locals>.c1G  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    r8   c2z3TestDifferentialEvolutionSolver.test_L1.<locals>.c2L  s6    	A3(##Aad7QqT>AbE))r:   )r*   zerosr-   r
   r   r   r   r   rA   r   r   r   r   r	   r   r  rZ  )r7   r  r  bLr/   r   x_optf_optr  r  L2NN2rr  r  s                   r8   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 Z]]RVGQ77 %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   	CJJ{###(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   +1P((P,/P,c           	      F   d }d }t          |dt          j                  }dgdz  }|}t                      5 }|                    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   r@   r`   r  r^   r_   r  ra   r$   r  r  r  s     r8   r  z2TestDifferentialEvolutionSolver.test_L2.<locals>.fg  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      r@   r#   r^   r_   r`         ra   r  r$   i  r   r  r  r   s    r8   r  z3TestDifferentialEvolutionSolver.test_L2.<locals>.c1n  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$   rG     rE   r   rr  gy\
E@)gܤ@g$H8?g	޿g0ev@gn8)gk_@/?g0g+?h㈵>r  r#   )r	   r*   r   r   r  rZ  r   r   r   rA   r   r   r   r-   )
r7   r  r  r  r/   rr  r  r   r  r  s
             r8   test_L2z'TestDifferentialEvolutionSolver.test_L2c  s   	 	 		& 	& 	&  Arv..Q   	LCJJ{###(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   /A33A7:A7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                      5 }	|	                    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#   r@   r  r  r^   r   r_   r`   ra   r$   r  r  r  -   r  r  s     r8   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#   r@   r$   r  )r   r     r   r@   )r  r   r  r@   r^   )r#   r@   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#   ra   r@   r  r  r  r$   r   r   r_   x   r  r`   r  r         r   r  r   s    r8   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   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  rZ  r   r   rA   r   r   r   r   r7   r  r  r  r  r  r  r/   rr  r  r   r  r  s                r8   test_L3z'TestDifferentialEvolutionSolver.test_L3  s   	 	 	 HW*!\\\/+!\\\/*!]]]
abb!""fIH^^^$$	N 	N 	N Q26**Arv..R!f   	MCJJ{###(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           
      X   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                      5 }	|	                    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    r8   r  z2TestDifferentialEvolutionSolver.test_L4.<locals>.f  s    6!BQB%== r:   )r_   r  ){Gzd?r  r#   r_   ra   )r  r  g{Gzdr@   )r`   r$   r_   )r2  g{Gzr^   r  r`   )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#   ra   g!> 
@r_   r!   gSUX@r@   r$   i  r`   r^   r  i i	  r  r   s    r8   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  rG   r  r\   r  gh|?@)got@g?@g:@gt$f@gVfyr@gh o?k@gCq@gVfx@MbP?r  Windowsgv!>gy&1l?)rtolr3  gh㈵>ga2U0*c?)r*   r  r-   r
   r   r	   r   r  rZ  r   r   r   platformsystemr   intpitemsizerA   r   r   r   )r7   r  r  r  r  r  r  r/   rr  r  r   r  r  s                r8   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   	CJJ{###(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   41C11C58C5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   r@   r#   r^   )r*   r  sinpir  s     r8   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#   r@   r_   r  r   s    r8   r  z3TestDifferentialEvolutionSolver.test_L5.<locals>.c1  sU    	A3(##AaD!GadNQ&!H!Q{*, ,r:   r   r   r   r@   rH   r  r  )gJIť?gU(C@g#gh㈵>r  -C6?r#   )r	   r*   r   r   r   r   r   r   r   r-   rA   	r7   r  r  r  r/   rr  r   r  r  s	            r8   test_L5z'TestDifferentialEvolutionSolver.test_L5  sW   	 	 		, 	, 	,
  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^   r@   r  r  r  s     r8   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#   r`   r@   r!   ra   gp=
׳T@r  r   s    r8   r  z3TestDifferentialEvolutionSolver.test_L6.<locals>.c1  sm    	A3(##AqT!VaK1Q4!8a-/#5d1fq[LAaD1Hq=058: :r:   r   )   r!   r    rH   r  gHz>)rE   r   rr  r   )gq=
ף0,@g??g1r  r  r  r  r#   )r	   r*   r   r   r   r   rA   r   r   r   r-   r  s	            r8   test_L6z'TestDifferentialEvolutionSolver.test_L6  sn   	 	 	
	: 	: 	:
  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^   r@   g"C?r#   r`   gtۈB@gn@r  r  s     r8   r  z2TestDifferentialEvolutionSolver.test_L7.<locals>.f1  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?r@   r`   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    r8   r  z3TestDifferentialEvolutionSolver.test_L7.<locals>.c17  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^   rH   r  r  )gq S@g] @@g˻f=@g:F@g%ShMcB@gCgbr  r  r   r#   )
r	   r   r   rA   r   r   r   r*   r   r-   r  s	            r8   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                      5 }	|	                    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  r@   g^>r  r  s     r8   r  z2TestDifferentialEvolutionSolver.test_L8.<locals>.fa  sZ    	A3(##AAaD&8AaD!G++a!f4z!A$'7IICJr:   )r^   r`   )r#   ru   r#   r_   r^   r@   皙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^   rb   r_   gfffff@r#   r@   g33333;@)r*   r  r  r   s    r8   r  z3TestDifferentialEvolutionSolver.test_L8.<locals>.c1l  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?rG   r  i  )rE   r   rr  r   )gEGr?@gT㥛D@g&D
n?gd,[ٿg#J{@r  gMb`?r   r   )r*   r  r-   r
   r   r	   fullr   r  rZ  r   r   rA   r   r   r   r   r  s                r8   test_L8z'TestDifferentialEvolutionSolver.test_L8]  s   	 	 	
 HV!aV)!aV)abb!""fIHdD\""		 		 		 Q26**BGAv$6$658I8IJJQ}Q.!f   	7CJJ{### )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   0C>>DDr`   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#   r@   r  r   s    r8   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    r8   r  z3TestDifferentialEvolutionSolver.test_L9.<locals>.c1  s0    	A3(##AaD1Q47N##r:   r   r  rt   r@   rH   r  r  r%   g      ?r  r   r#   )r	   r   r*   sqrtr   absrA   r   r   r   r   r-   r  s	            r8   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	)r`   r%   r  )r"  random_statec                     |\  }}t          j         |j        |g| R                                d           }t          j        |          rt           j        }|S )Nru   axis)r*   logpmfr   isnanr   )r\  r   distrA   lls        r8   rz   z>TestDifferentialEvolutionSolver.test_integrality.<locals>.func  sZ    GD!&!a))--2-666Bx|| VIr:   TF)r#      )r   gffffff?)r   integralityr   r   r   r`   g?)r  c                 ^    |\  }}} t          j        || d         g          ||          S )Nr   rm  )r\  r   nr1  rA   rz   s        r8   func2z?TestDifferentialEvolutionSolver.test_integrality.<locals>.func2  s4    JAtQ4!QqT++T1555r:   r#   )r   r/   )r*   r
  r  r   nbinomrvsr   rA   r   r   r   )r7   r   r1  shapesrA   r4  r/   r   res2r7  LBFGSBrz   s              @r8   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    r8   r  zBTestDifferentialEvolutionSolver.test_integrality_limits.<locals>.f  s    Hr:   )TFT))r+  r   r   皙@)ffffff
@皙@F)r/   r   r4  r   )r+  r   rB  r#   )r   rA  rC  )r%   r   g      @)g      ?rA        @))r  gr@  )g$gffffff@)g      r         %)r  rA  rD  )      r   g      $)rF  r   g      @))ffffff$g333333 r@  g%gr#)rE  r   rE  )g      !rA  g      #))rG  g333333$r@  rH  zOne of the integralityr   )r   r   r.   r   r4  r   r*   roundr~  r   rw   )r7   r  r4  r/   rY   s        r8   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    r8   r0   zBTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic  s    6!Q$<<r:   c                 4    t          j        | dz  d          S )Nr@   r   r,  r  r   s    r8   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}  rW  r   r   c                 B    dxx         dz  cc<   t          |           S rh  )r   )rA   ncallss    r8   	rosen_veczBTestDifferentialEvolutionSolver.test_vectorized.<locals>.rosen_vec'  s#    1IIINIII88Or:   r  r#   )r   r   )r}  r   r   )r~  r   r   r   r/   r   rZ  rR  r   r   rA   r   r   )r7   r0   rN  rQ  r/   res1r;  rP  s          @r8   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    r8   ri  zMTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f7  r  r:   c                 p    t          j        | d         dz  | d         z   | d         | d         z
  g          S rl  rm  r   s    r8   rn  zNTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f2:  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#   ru   r   )r*   squeeze)rA   r   s     r8   rQ  zNTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.rosen_vec@  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   rA   )	r7   ri  rn  nlc1r  rQ  r/   rR  r;  s	            r8   test_vectorized_constraintsz;TestDifferentialEvolutionSolver.test_vectorized_constraints6  s    	+ 	+ 	+	; 	; 	; #8bfWc::"9j*EE	! 	! 	! 7#%eVj*+$-24 4 4 &iD/9q37,-24 4 4
 	'''''r:   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    r8   rz   zUTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.funcT  s%    6!A$<<"&1,,..r:   c                 0    | d         | d         dz
  dz  z
  S Nr#   r   r@   r<   r   s    r8   <lambda>zYTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>X  s    1Q41Q46A++= r:   r   c                 *    | d         | d         dz  z   S r_  r<   r   s    r8   r`  zYTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>Y  s    1Q4!A$'> r:   )ru   r@   rt   r   Fi3)r/   rr  r   r   r   z
MAXCV = 0.)r	   r*   r   r   r   r   )r7   rz   c0r  rd   s        r8   'test_constraint_violation_error_messagezGTestDifferentialEvolutionSolver.test_constraint_violation_error_messageR  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^   r@   )r"  T)r*   copychoicer4   shufflerC  where)r   r6   r   re   
fill_pointra  idxsr0r   bprime
crossoverscallsr'   r  recombinationtotal_popsizes              r8   custom_strategy_fnzLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fnu  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:   r@   F)r&   rp  r'   r   rE   r   r   r   )rE   r   c                 .    t          j        ddg          S )Nr   r   rm  )r   r6   r   s      r8   rr  zLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fn  s    8S#J'''r:   z	strategy*r   rD   r   )	r   r   rE   r   r   r   r~  r   r   )r7   r&   r/   rr  rY   r   ro  r'   r  rp  rq  s         @@@@@r8   test_strategy_fnz0TestDifferentialEvolutionSolver.test_strategy_fni  s    o-''1	 	 	 	 	 	 	 	 	 	* -''

 

 

 "44444Qx!|||| %6$6
 
 
 {	( 	( 	( 	( ]<{;;; 	 	"+   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0CCCN)LrW   
__module____qualname__r9   r>   r0   rZ   rf   rh   rj   rl   rr   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r)  r,  r.  rE  rH  rM  rS  r~  markthread_unsafer^  	fail_slowrb  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  xslowxfailr  machiner"  r(  r=  rJ  rS  rZ  rc  rt  r<   r:   r8   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( ( (8. . .. [2= = = = =r:   r   )$__doc__rX  multiprocessing.dummyr   r`  r  %scipy.optimize._differentialevolutionr   r   scipy.optimizer   r   scipy.optimize._constraintsr   r	   r
   r   r   scipy.sparser   scipyr   numpyr*   numpy.testingr   r   r   r   r   r   r~  r   rv   r   r   r<   r:   r8   <module>r     s        4 4 4 4 4 4 G G G G G G G G A A A A A A A A; ; ; ; ; ; ; ; ; ; * * * * * * * * # # # # # #          L L L L L L L L L L L L L L L L 1 1 1 1 1 1 1 1 O O O O O O O O O Or:   