
    bi|                        d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlZddlmZmZmZmZm Z  ddl!m"Z#m$Z$ ddl!Z! G d d      Z%y)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                   
   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+e,jZ                  j]                  d*      d+        Z/d, Z0d- Z1d. Z2d/ Z3e,jZ                  j]                  d*      d0        Z4d1 Z5d2 Z6d3 Z7d4 Z8e,jZ                  j]                  d5      d6        Z9e,jZ                  j]                  d*      d7        Z:e,jZ                  j]                  d*      d8        Z;e,jZ                  j]                  d*      d9        Z<e,jZ                  j]                  d*      d:        Z=e,jZ                  j]                  d*      d;        Z>d< Z?e,jZ                  j                  e,jZ                  j                   eBj                         d=k(  d>?      d@               ZDe,jZ                  j]                  dA      dB        ZEe,jZ                  j]                  d*      dC        ZFdD ZGe,jZ                  j]                  d*      dE        ZHdF ZIdG ZJdH ZKe,jZ                  j]                  d5      dI        ZLdJ ZMyK)LTestDifferentialEvolutionSolverc                    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                  _        y )Nraiseinvalid               @r   r   r   d   r               ?)popsizemutation皙?皙?)npseterr
old_seterrarraylimitsboundsr   	quadraticdummy_solverdummy_solver2
atleast_2darangeT
population)selfr7   s     l/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/optimize/tests/test__differential_evolution.pysetup_methodz,TestDifferentialEvolutionSolver.setup_method   s    ))G4hhR!#R * +*79A
D 9:@ABBEG ]]299S#s#;<>>
(2%    c                 B    t        j                  di | j                   y )N )r+   r,   r-   r8   s    r9   teardown_methodz/TestDifferentialEvolutionSolver.teardown_method.   s    
		$DOO$r;   c                     |d   dz  S )Nr      r=   )r8   xs     r9   r1   z)TestDifferentialEvolutionSolver.quadratic1   s    tQwr;   c                    t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d	       t        t        | j                  d
      }t        |j                  d
       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d	       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d	       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       t        t        | j                  d      }t        |j                  d       t        |j
                  j                  d       y )Nbest1expstrategy_best1best1binrand1bin_rand1rand1exprand2exp_rand2best2bin_best2rand2binrandtobest1bin_randtobest1randtobest1expcurrenttobest1bin_currenttobest1currenttobest1exp)r   r   r0   r   rF   mutation_func__name__r8   solvers     r9   test__strategy_resolvesz7TestDifferentialEvolutionSolver.test__strategy_resolves4   s    -U-1[[6@B 	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                 L   t        j                  dg      }| j                  j                  t        j                  g d            }t	        ||       t        j                  dg      }| j                  j                  t        j                  g d            }t	        ||       y )N皙?rA                     ?)r+   r.   r3   rG   r   rJ   r8   resulttrials      r9   test__mutate1z-TestDifferentialEvolutionSolver.test__mutate1   st    4&!""))"((?*CDv&4&!""))"((?*CDv&r;   c                 L   t        j                  dg      }| j                  j                  t        j                  g d            }t	        ||       t        j                  dg      }| j                  j                  t        j                  g d            }t	        ||       y )Ngr^   r)   )r+   r.   r3   rO   r   rM   rd   s      r9   test__mutate2z-TestDifferentialEvolutionSolver.test__mutate2   su     4&!""))"((?*CDv&3%""))"((?*CDv&r;   c                     t        j                  dg      }| j                  j                  t        j                  g d            }t	        ||       y )Ng333333?r^   )r+   r.   r3   rR   r   rd   s      r9   test__randtobest1z1TestDifferentialEvolutionSolver.test__randtobest1   s;    4&!""//0IJv&r;   c                     t        j                  dg      }| j                  j                  dt        j                  g d            }t	        ||       y )Nr)   r$   r^   )r+   r.   r3   rU   r   rd   s      r9   test__currenttobest1z4TestDifferentialEvolutionSolver.test__currenttobest1   sB    3%""22HH_%
 	v&r;   c                     d}t        | j                  | j                  |      }t        |j                  t        |             y )Nr&   r$   r(   )r   r1   r0   r   ditherlist)r8   r(   rZ   s      r9   test_can_init_with_ditheringz<TestDifferentialEvolutionSolver.test_can_init_with_dithering   s6    ,T^^-1[[6>@ 	V]]DN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                         y )N)r&   r_   rp   r$   r)   r&   )
r   assert_raises
ValueErrorr   r0   r+   nanr   scalerq   )r8   funcr(   rZ   s       r9   +test_invalid_mutation_values_arent_acceptedzKTestDifferentialEvolutionSolver.test_invalid_mutation_values_arent_accepted   s    j5++#+		- j5++#+		- =j5++#+		- ,T-1[[6>@ 	S&,,'T6==)r;   c                 r    d }t        t        d      5  t        |ddg       d d d        y # 1 sw Y   y xY w)Nc                     t        j                  t        j                  | dz        t        j                  |       g      S NrA   )r+   r.   sumrB   s    r9   r{   zETestDifferentialEvolutionSolver.test_invalid_functional.<locals>.func   s*    88RVVAF^RVVAY788r;   z,func\(x, \*args\) must return a scalar valuematchrA   )rw   RuntimeErrorr   )r8   r{   s     r9   test_invalid_functionalz7TestDifferentialEvolutionSolver.test_invalid_functional   s>    	9 EG 	= #4'7);<	= 	= 	=s   -6c                    t        j                  dg      }t        d| j                  j	                  |             t        j                  dgdgg      | j                  _        t        d| j                  j	                  |             y )N333333?   r"   r   )r+   r.   r   r2   _scale_parametersr/   r8   rf   s     r9   test__scale_parametersz6TestDifferentialEvolutionSolver.test__scale_parameters   sh    #R**<<UCD $&88cURDM#: R**<<UCDr;   c                    t        j                  dg      }t        d| j                  j	                  |             t        j                  dgdgg      | j                  _        t        d| j                  j	                  |             y )Nr   r   r"   r   )r+   r.   r   r2   _unscale_parametersr/   r   s     r9   test__unscale_parametersz8TestDifferentialEvolutionSolver.test__unscale_parameters   sh    "S$++??FG $&88cURDM#: S$++??FGr;   c                 *   t        j                  d      5  t        | j                  ddg      }|j	                  ddg      }t        |d       d d d        t        | j                  ddg      }t        |j                  dd	g       y # 1 sw Y   :xY w)
Nr   r   r   r   )      ?      @)r0   r   r&   )r   r   r   )	r+   errstater   r1   r   r   r   r   rB   )r8   rZ   vress       r9   test_equal_boundsz1TestDifferentialEvolutionSolver.test_equal_bounds   s    [[) 	$0"J/F **C:6AAs#	$ %T^^j*5MNSUUS#J'	$ 	$s   9B		Bc                     t        j                  g d      }| j                  j                  |       t	        |d   d       t        t        j                  |dk\  |dk        j                                y )N)皙??r   g     r@gh㈵rA   r   r   r$   )r+   r.   r2   _ensure_constraintr   r   logical_andallr   s     r9   test__ensure_constraintz7TestDifferentialEvolutionSolver.test__ensure_constraint   sW    =>,,U3U1Xs#uz5A:6::<=r;   c                 h   t        | j                  dgdd      }|j                         }t        |j                  | j                  |j
                               t        | j                  dgdd      }|j                         }t        |j                  | j                  |j
                               y )Nr   r$   F)maxiterpolishT)r   r1   solver   funrB   r8   rZ   re   s      r9   test_differential_evolutionz;TestDifferentialEvolutionSolver.test_differential_evolution   s     -NNWIq
 VZZ!9:,NNWIq
 VZZ!9:r;   c                     t        | j                  dg      }|j                         }t        |j                  |j                  dd       y )Nr   gV瞯<r   )atolrtol)r   r1   r   r   rB   r   s      r9   test_best_solution_retrievalz<TestDifferentialEvolutionSolver.test_best_solution_retrieval  s5    ,T^^gYG&((Q?r;   c                   	 d	fdd _         t        j                  _        	fdd_        d _        _        ddg}t        |dd      }t        di |d	i}t        di |d
	i}|j                  |j                  cxu rdu sJ  J j                  |j                  cxk(  r	k(  sJ  J |j                  dk(  sJ |j                  dk(  sJ |j                         D ]2  \  }}|dv rt        j
                  |   |       t        ||   |       4 d_        t        j                  _        d|d<   t        di |d	i}|j                  |j                  k  sJ y )N
   c                 X    t        |       }|j                  k  r| _        |_        |S N)r   valrB   )rB   r   r{   s     r9   r{   zFTestDifferentialEvolutionSolver.test_intermediate_result.<locals>.func  s*    (CTXX~Jr;   c                    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 ]5  }| j                  |   }t        | j                  |         }t        ||       7 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$        y )Nr$   rA   r   zin progressT)nitintermediate_resultr7   ndimshaper   rB   r{   r   r   r   rangelenpopulation_energiesmessagesuccess
isinstancer   StopIteration)r   ir   refcallbackr   s       r9   r   zJTestDifferentialEvolutionSolver.test_intermediate_result.<locals>.callback  s   LLA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#&' ,..,77:<,00,@@CE '..-???&..$6661>BBB||w&## 'r;   r   r   rA   ie F)r{   r0   rngr   r   r   &callback function requested stop early/Maximum number of iterations has been exceeded.>   r   r   Tr   r=   )rB   r+   infr   r   r   r{   dictr   r   r   itemsr   r   )
r8   r0   kwargsr   r   fieldr   r   r{   r   s
          @@@r9   test_intermediate_resultz8TestDifferentialEvolutionSolver.test_intermediate_result  sv    	 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))+ 	*JE3..55e<cBUS)		* 66x$AvAAww   r;   c                 j   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 y )	Nr   r   c                      y)NTr=   paramconvergences     r9   callback_python_truezVTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_python_trueX  s    r;   )r   c                     t         r   )r   )r   s    r9   callback_stopzOTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_stopa  s    r;   c                     dgS )Nr   r=   r   s     r9   callback_evaluates_truezYTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_trueg  s	    4Kr;   c                     g S r   r=   r   s     r9   callback_evaluates_falsezZTestDifferentialEvolutionSolver.test_callback_terminates.<locals>.callback_evaluates_falseo  s    Ir;   )r   )r   r   r   r   r   )r8   r0   expected_msgr   re   r   r   r   s           r9   test_callback_terminatesz8TestDifferentialEvolutionSolver.test_callback_terminatesT  s    &!?	 (6$8
 	FNNL9	  (vN>>!!	 (v@WXFNNL9>>!!	 (v1IK~~~r;   c                 ^    dg}d}d }t        |||d      }t        |j                  d       y )Nr   )r   r   r   c                 l    t        |t              st        d      |d   |d   | z  z   |d   | dz  z  z   S )Nzargs should be a tupler   r$   rA   r   )r   tuplerx   )rB   argss     r9   r1   zLTestDifferentialEvolutionSolver.test_args_tuple_is_passed.<locals>.quadratic{  s@    dE* !9::7T!Wq[(47QU?::r;   T)r   r   gUUUUUU?)r   r   r   )r8   r0   r   r1   re   s        r9   test_args_tuple_is_passedz9TestDifferentialEvolutionSolver.test_args_tuple_is_passedv  s:    	;
 (	(.-1/35 	FJJ/r;   c                 F    t         }dg}t        t        t        ||d       y )Nr_   abcrE   )r   rw   rx   r   )r8   r{   r0   s      r9   test_init_with_invalid_strategyz?TestDifferentialEvolutionSolver.test_init_with_invalid_strategy  s$    j0 #(		*r;   c                     t         }dg}t        t        t        ||       ddg}t        t        t        ||       t        t         t	        ddgddg            }t        |j                  d       y )Nr   r   )r_   r`   ra   r   rA   )r   r   )r   rw   rx   r   r	   r   rB   )r8   r{   r0   re   s       r9   test_bounds_checkingz4TestDifferentialEvolutionSolver.test_bounds_checking  sk    j0 	" 9%j0 	" (vq!fq!f/EFFHHh/r;   c                 j   t        j                  dd      j                  dd      }t        t	        |dd d f   |dd d f               }t        d |d      }d}|j                  |d	      \  }}}}}	t        t        t        j                  t        j                  ||||||	g                  d       y )
Ng      (@float64)dtyperA   rb   r   r$   r'   ra   )r+   r5   reshaperr   zipr   _select_samplesr   r   uniquer.   )
r8   r/   r0   rZ   	candidater1r2r3r4r5s
             r9   test_select_samplesz3TestDifferentialEvolutionSolver.test_select_samples  s    3i088A>c&A,q!t56,T61E	#33IqABB		"((Ir2r2r#BCDEq	Jr;   c                     t        t        | j                  d      }|j                         }t	        |j
                  d       t	        |j                  d       y )Nr$   )r   Fr   )r   r   r0   r   r   r   r   r   s      r9   test_maxiter_stops_solvez8TestDifferentialEvolutionSolver.test_maxiter_stops_solve  sA     -UDKKKV^^U+V^^I	Kr;   c                    t        t        | j                  dd      }|j                         }t	        |j
                  d       t	        |j                  d       t	        |j                  d       t        t        | j                  ddd      }|j                         }t	        |j
                  d	       t	        |j                  d       t	        |j                  d       t        t        | j                  ddd
d      }|j                         }t	        |j
                  d
       t	        |j                  d       t	        |j                  d       y )Nr$   F)maxfunr   rA   z9Maximum number of function evaluations has been exceeded.ra   (   )r'   r   r   )   /   deferred)r'   r   r   updatingz8Maximum number of function evaluations has been reached.)r   r   r0   r   r   nfevr   r   r   s      r9   test_maxfun_stops_solvez7TestDifferentialEvolutionSolver.test_maxfun_stops_solve  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                     t        | j                  dgd      }|j                          t        t	        j
                  |j                        d       y )Nr   r"   {Gz?)tolr   )r   r1   r   r   r+   argminr   rY   s     r9   test_quadraticz.TestDifferentialEvolutionSolver.test_quadratic  s>    ,T^^.9]157 	RYYv99:A>r;   c                 8    t        | j                  dgdd       y )Nr  r  r$   )r  seed)r   r1   r>   s    r9   test_quadratic_from_diff_evz;TestDifferentialEvolutionSolver.test_quadratic_from_diff_ev  s    t~~ +}#'$%	'r;   c                     t        | j                  dgddd      }t        | j                  dgddd      }t        |j                  |j                         t        |j                  |j                         y )Nr  Fr$   r&   )r   r   r  )r   r1   r   rB   r   )r8   re   result2s      r9   test_rng_gives_repeatabilityz<TestDifferentialEvolutionSolver.test_rng_gives_repeatability  sf    ')4/4,-,/	1
 ))4/4,-,/	1
 	VXXwyy)V[[',,/r;   c           	          t         j                  j                         }g d}|D ]  }t        | j                  dgd|d|         y )N)randomlatinhypercubesobolhaltonr  Fr&   )r   r   r  init)r+   r  default_rngr   r1   )r8   r   initsr  s       r9   test_random_generatorz5TestDifferentialEvolutionSolver.test_random_generator  sI     ii##%? 	.D"4>>$/=*/'*'*(,.	.r;   c                 ^    t        t        | j                  dd      }|j                          y )NrD   r$   )rF   r   r   r   r0   r   rY   s     r9   test_exp_runsz-TestDifferentialEvolutionSolver.test_exp_runs  s&    ,U-1[[6@568
 	r;   c                 2    ddg}t        t        |dd       y )N)ra   1   r$   )r'   r   )r   r   )r8   r0   s     r9   test_gh_4511_regressionz7TestDifferentialEvolutionSolver.test_gh_4511_regression  s    
 7# 	ufb!Dr;   c                    t        t        | j                  d      }|j                  |j                         |j                          t        t        j                  |j                        d       t        |j                  d       y )Nr_   r   r   rb   )r   r   r0   _calculate_population_energiesr7   _promote_lowest_energyr   r+   r  r   _nfevrY   s     r9   "test_calculate_population_energieszBTestDifferentialEvolutionSolver.test_calculate_population_energies)  s]    ,UDKKK--f.?.?@%%'RYYv9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(  s y  y )Nr_      )r'   r   r   rA   2   )r   r   r0   nextr   r+   sizer  rw   r   	enumerate)
r8   rZ   rB   r   _fun_prevr   soln	x_currentfun_currents
             r9   test_iterationz.TestDifferentialEvolutionSolver.test_iteration3  s     -UDKK468f3RWWQ]A& 	V\\2& 	mT62 -UDKK@6l8 ( 	GAt%)"I{{***#[xABw	r;   c                     t        t        | j                  dd      }|j                          t	        |j
                  dk         y )N皙?F)r  r   )r   r   r0   r   r   r   rY   s     r9   test_convergencez0TestDifferentialEvolutionSolver.test_convergenceM  s5    ,UDKKS49;""S()r;   c                 ^    t        t        | j                  d d       }|j                          y )N)r   r   r  rY   s     r9   test_maxiter_none_GH5731z8TestDifferentialEvolutionSolver.test_maxiter_none_GH5731S  s$    
 -UDKK48:r;   c           	         t        t        t        gt        | j                  fi ddi t        t        | j                        }|j                          t        |j                  d       t        t        j                  t        j                  |j                                     |j                          t        |j                  d       t        t        j                  t        j                  |j                                     |j                  d       t        |j                  d       t        t        j                  t        j                  |j                                     t        t        | j                  d      }|j                  d       t        |j                  d       t        t        j                  t        j                  |j                                     t        j                  dd	d
      j!                  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&                  |j)                  |      dd      }t+        |j,                  d d |       t+        t        j.                  |j,                  d d       d       t+        t        j0                  |j,                  d d       d       t        j                  dd	d      j!                  dd	      }t        t        t        gt        | j                  fi d|i t        j2                  j5                  ddd      }t        t        | j                  |      }t7        |j,                  d   |dz         y )Nr  rubbishr   r  )
qmc_enginer  )r  rv   r_   r   ra   rA   rN   {Gz?r$   )r  rF   r   r   r'   )ra   rA      r   r   )lowhighr%  x0)rw   rx   r   r   r0   init_population_randomr   r  r   r+   r   isinfr   init_population_lhsinit_population_qmclinspacer   num_population_memberspopulation_shapeclipr   r   r7   minmaxr  uniformr   )r8   rZ   r7   unscaled_populationr:  s        r9   test_population_initiationz:TestDifferentialEvolutionSolver.test_population_initiation\  s   
 	j1	-t{{+	-  +	-
 -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                     t        t        | j                  ddg      }|j                  sJ t	        t
              5  t        t        | j                  ddg       d d d        y # 1 sw Y   y xY w)Nr.  r*   r9   @)r   r   r0   r   rw   rx   )r8   r   s     r9   test_x0z'TestDifferentialEvolutionSolver.test_x0  s[    $UDKKS#JG{{{ :& 	F"5$++3*E	F 	F 	Fs   A$$A-c                 .    d }ddg}t        ||d       y )Nc                 <    | d   dk  rt         j                  S | d   S )Nr   r&   r$   )r+   r   r   s    r9   sometimes_infzWTestDifferentialEvolutionSolver.test_infinite_objective_function.<locals>.sometimes_inf  s    tbyvvQ4Kr;   r#   F)r0   disp)r   )r8   rM  r0   s      r9    test_infinite_objective_functionz@TestDifferentialEvolutionSolver.test_infinite_objective_function  s    	 &!}V%Hr;   c                 (   ddg}t        t        |d      }t        |j                  dk(         t        |j                  j
                  t        u        |j                         }|j                  sJ t        t        |dd      }|j                  sJ y )Nr    r   )r   rD   )r   rF   )
r   r   r   	_updating_mapwrapper_mapfuncmapr   r   r   )r8   r0   rZ   r   s       r9   test_deferred_updatingz6TestDifferentialEvolutionSolver.test_deferred_updating  s    H%,UFZP  J./""++s23lln{{{ %6J
 {{{r;   c                 4   ddg}t        t        |      }t        |j                  dk(         t	        t
              5  t        t        |d      5 }|j                          d d d        d d d        j                  dk(  sJ y # 1 sw Y   #xY w# 1 sw Y   'xY w)Nr    	immediaterA   )workersr   )r   r   r   rQ  r   UserWarningr   )r8   r0   rZ   ss       r9   test_immediate_updatingz7TestDifferentialEvolutionSolver.test_immediate_updating  s    H%,UF;  K/0 ; 	,UFAF !	 {{j((( 	 	s#   BB BB	BBc           	      &   ddg}t        d      5 }t        t        |d|j                  dd      5 }|j                  j
                  J |j                  dk(  sJ |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr    rA   r   r)   r_   )r   rX  r  r'   )
ThreadPoolr   r   rT  rR  poolrQ  r   )r8   r0   prZ   s       r9   test_parallel_threadsz5TestDifferentialEvolutionSolver.test_parallel_threads  s    H%] 	a!<6J3PQ"
 	%%**666##z111LLN	 	 	 	 	 	s"    B:A;*B;B	 BBr   c                     ddg}t        t        |dddd      5 }|j                  j                  J |j                  dk(  sJ |j                          d d d        y # 1 sw Y   y xY w)Nr    r   rA   r_   r)   )r   rX  r'   r  )r   r   rR  r^  rQ  r   )r8   r0   rZ   s      r9   test_parallel_processesz7TestDifferentialEvolutionSolver.test_parallel_processes  sn    H%(6J1#
 	%%**666##z111LLN	 	 	s   :AA&c                 z    t        t        ddg      }|j                          t        |j	                                y )Nr   )r   r   r   r   	convergedrY   s     r9   test_convergedz.TestDifferentialEvolutionSolver.test_converged  s-    ,UVV4DE  "#r;   c                 X   d }d t        |t        j                   d      }t        t        ddg|f      }|j                  t        j                  ddg            }t        |d       t        t        j                   d      }t        t        ddg||f      }g d	}g d
}t        ||      D ]H  \  }}	|j                  t        j                  |            }t        |t        j                  |	             J t        |j                  t        j                  |            t        j                  |             t        j                  t        j                  |      D cg c]  }|j                  |       c}      }
|
j                  dk(  sJ fd}t        |t        j                   d      }t        t        ddg||fd      }d|_        t        j                  t        d      5  |j                  t        j                  |             d d d        y c c}w # 1 sw Y   y xY w)Nc                     | d   | d   z   gS Nr   r$   r=   r   s    r9   constr_fzNTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f      aD1Q4K= r;   c                 Z    t        j                  | d   dz  | d   z   | d   | d   z
  g      S Nr   rA   r$   r+   r.   r   s    r9   	constr_f2zOTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f2  2    88QqT1Wqt^QqTAaD[9::r;   ffffff?r   constraintsr   r)   ?))333333?r$   r   )r&   r&   ))r   {Gz?r   )rI  @r   )r   r   r   )r_   r$   r_   c                 (     |       j                   S r   )r6   )rB   rn  s    r9   	constr_f3zOTestDifferentialEvolutionSolver.test_constraint_violation_fn.<locals>.constr_f3  s    Q<>>!r;   F)rr  
vectorizedTz#An array returned from a Constraintr   )r
   r+   r   r   r   _constraint_violation_fnr.   r   r   r   r4   r   ry  pytestr   r   )r8   ri  nlcrZ   cvnlc2xsvsrB   r   constraint_violationrx  rn  s               @r9   test_constraint_violation_fnz<TestDifferentialEvolutionSolver.test_constraint_violation_fn  s   	!	; "(RVVGS9,UVV4D:=A ,,RXXsCj-ABB$"9rvvgs;,UVV4D:=tF
 0;BK 	2DAq00!=BBa 01	2
 	++BHHRL9288B<	
  "xx24((2,)@-. *0)H)H)K )@  A#))Y666	" #9rvvgs;,UVV4D:=t8=? !]]$I
 	: ++BHHRL9	: 	:)@	: 	:s   #H-%H  H)c           	      N   d }d }t        |t        j                   d      }t        t        ddg|f      }|j                  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 ]]  }t        t        ddg||f|d      }|j                  t        j                  ddgddgg            \  }}t        |ddg       t        |t        j                  g dg dg             |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 |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(  r^J  y )Nc                     | d   | d   z   gS rh  r=   r   s    r9   ri  zZTestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f%  rj  r;   c                 4    | d   dz  | d   z   | d   | d   z
  gS rl  r=   r   s    r9   rn  z[TestDifferentialEvolutionSolver.test_constraint_population_feasibilities.<locals>.constr_f2(  s)    aD!GadNAaD1Q4K00r;   rp  r   rq  r&   r   Fr)   rI  )rA   r$   rs  )FTr   )rr  ry  r   g333333?)r)   r.  r   )r   ru  r   )rI  rv  r   )rA   r_   rc   T)r   r   r   )
r
   r+   r   r   r   #_calculate_population_feasibilitiesr.   r   r   r   )	r8   ri  rn  r|  rZ   feasr}  r~  	vectorizes	            r9   (test_constraint_population_feasibilitieszHTestDifferentialEvolutionSolver.test_constraint_population_feasibilities$  s   	!	1 "(RVVGS9,UVV4D:=A
 ==HHsCj2r(+,.bTE5>*B3%# 89xx6!!!"9rvvgs;& 	&I08H>A4[<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                    d }t        |t        j                   d      }t        t        ddg|f      }t        t              5  |j                         }d d d         |j                        dk  sJ |j                  sJ y # 1 sw Y   /xY w)Nc                 @    t        j                  | d   | d   z   g      S rh  rm  r   s    r9   ri  zGTestDifferentialEvolutionSolver.test_constraint_solve.<locals>.constr_fR      88QqTAaD[M**r;   rp  r   rq  )
r
   r+   r   r   r   r   rY  r   rB   r   )r8   ri  r|  rZ   r   s        r9   test_constraint_solvez5TestDifferentialEvolutionSolver.test_constraint_solveQ  s    	+ "(RVVGS9,UVV4D:=A ; 	!,,.C	! #%%%{{{		! 	!s   BBc                 F   d }t        |t        j                   d      }t        t        ddg|fddd      }t        t              5  |j                         }d d d        j                  dkD  sJ |j                  rJ t        t        ddg|fd	      }t        |       |j                  j                         rJ t        j                  |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<   |j#                          t%        |j                  d   |       y # 1 sw Y   @xY w)Nc                 @    t        j                  | d   | d   z   g      S rh  rm  r   s    r9   ri  zLTestDifferentialEvolutionSolver.test_impossible_constraint.<locals>.constr_fc  r  r;   rv   r   r$   r"   )rr  r'   r   r   r   F)rr  r      )r
   r+   r   r   r   r   rY  r   maxcvr   r$  feasibler   isfiniter   r  r7   r  r   )r8   ri  r|  rZ   r   lr}  s          r9   test_impossible_constraintz:TestDifferentialEvolutionSolver.test_impossible_constrainta  s   	+ "(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F 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 y )Nc                     | d   | d   z   gS rh  r=   r   s    r9   ri  zCTestDifferentialEvolutionSolver.test_accept_trial.<locals>.constr_f  rj  r;   rp  r   rq  r)   Tr   r   Fg#@r&   g?)r
   r+   r   r   r   _accept_trialr.   )r8   ri  r|  rZ   fns        r9   test_accept_trialz1TestDifferentialEvolutionSolver.test_accept_trial  s   	!!(RVVGS9,UVV4D:=A!!#tRXXrd^S$"GGG3bhhuosD"((C5/JeSTS#tRXXrd^S$"GGG #tRXXrd^S%2$HHH 3rxxc
3rxxS	24 	5 43rxxc
3rxxT
35 	6 5sE288S#J#7E288S#J#79 	: : 9r;   c                 0  
 t        j                  g d      }t        j                  dt         j                  dg      }t        j                  g d      }t        t	        ||      |      }|j                  |      dkD  j                         sJ |j                  g d      dk(  j                         sJ t        j                  dd      j                  d	d
      }g }|D ]"  }|j                  |j                  |             $ t         j                  j                  |j                  |j                        t        j                  |      j                         t        j                  g d      }t        j                  g dg dg dg      
t        t        
t         j                   d      |      }|j                  |      dkD  j                         sJ |j                  g d      dk(  j                         sJ t        j                  dd      j                  dd      }g }|D ]"  }|j                  |j                  |             $ t         j                  j                  |j                  |j                        t        j                  |      j                         t        t        t        
      t         j                   d      |      }|j                  |      dkD  j                         sJ |j                  g d      dk(  j                         sJ 
fd}t!        |t         j                   d      }	t        |	g d      }|j                  |      dkD  j                         sJ |j                  g d      dk(  j                         sJ y )N)r   r  r   r&   F   )r$   rA   r_   r   )rc         r$      ra   r_   )r$   rA   r_   r`   )ra   r   r   rb   )r%   r      r   )r   rA   r   r`      r%   r`   c                 &    j                  |       S r   )dot)rB   As    r9   r   zDTestDifferentialEvolutionSolver.test_constraint_wrapper.<locals>.fun  s    558Or;   )r+   r.   r   r   r	   	violationanyr   r5   r   appendtestingr   r6   r   r   r
   )r8   lbubr:  pcr  
violationsrB   r   	nonlinearr  s             @r9   test_constraint_wrapperz7TestDifferentialEvolutionSolver.test_constraint_wrapper  s   XXk"XXsBFFB'(XXi r23R 1$))+++^,166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                    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        |j                  |      |       " t        |j                  t        j                  |      j                        t        j                  |      j                         |j                  t        j                  |      j                        j                  dt        |      fk(  sJ |j                  t        j                  |      j                        j                  dt        |      fk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )
Nc                 `    t        j                  | d   dz  | d   z   | d   dz  | d   z
  g      S rl  rm  r   s    r9   cons_fzQTestDifferentialEvolutionSolver.test_constraint_wrapper_violation.<locals>.cons_f  sA     88QqTQY1-qTQY1-/ 0 0r;   rv   g333333rA   r&   r$   r   )ro   )r&   rt  )rt  rt  )r)   333333)r)   r   ))r   r   )r   r)   )ru  r   )gRQ?r   )r5  g=
ףp=?)r
   r   r+   r%  r0   r   r   r  r.   r6   r   r   r   
num_constrparameter_count)r8   r  r|  r  r  r  rB   r   s           r9   !test_constraint_wrapper_violationzATestDifferentialEvolutionSolver.test_constraint_wrapper_violation  s;   	0 "&2w-!Q@c1X.wwryy|$)))HCBK 	0DAqBLLOQ/	0 	RXXb\^^4	(vvbhhrlnn%++3r7|;;;||BHHRLNN+11aR\AAA}}!!!!!Q&&&r;   c                    t        j                         5  t        j                  dt               t	        j
                  g dg dg      }d d d        t        dd      }t	        j                  d      }t        ||      }|j                  |      j                  dk(  sJ t	        j                  d      j                  dd	      }|j                  |      j                  d
k(  sJ y # 1 sw Y   xY w)Nignore)r$   r$   r$   r   )rA   rA   rA   r   r   r$   r`   )rA   r  ra   )rA   ra   )warningscatch_warningssimplefilterPendingDeprecationWarningr+   matrixr   onesr   r  r   r5   r   )r8   r  lcr:  cwxtrials         r9   test_matrix_linear_constraintz=TestDifferentialEvolutionSolver.test_matrix_linear_constraint  s     $$& 	0!!(,EFYY - / 0F	0 fa+WWQZB' ||B%%--- 5!))!Q/||F#))V333	0 	0s   6C''C0r  c           
      	   d }t        j                  d      }d|dg df<   d|dddgf<   d	|d
g df<   d|dg df<   d|dddgf<   d	|dg df<   d|dg df<   d|dd
dgf<   d	|dg df<   |dd dd f   }t        j                  g d      }t        |t         j                   |      }dgdz  dgd
z  z   dgz   }t        ||dd|fdd      }d}d }t         ||      |d!"       |j                  sJ t        |j                  |d!"       t        |j                  |d#"       t        t        j                  ||j                  z  |k               t        t        j                  |j                  t        j                  |      d d d$f   k\               t        t        j                  |j                  t        j                  |      d d df   k               t        t        |      t         j                   |      }t        ||dd%|fdd&      }t         ||      |       |j                  sJ t        |j                  |d'"       t        |j                  |d#"       t        t        j                  ||j                  z  |k               t        t        j                  |j                  t        j                  |      d d d$f   k\               t        t        j                  |j                  t        j                  |      d d df   k               d( }	d) }
t        |d dd d f   t         j                   |d d       }t        |ddd d f   t         j                   |dd       }t        |	t         j                   |dd       }t        |
t         j                   |dd       }||||f}t        j                         5  t        j                   d*t"               t        ||dd%|dd&      }d d d        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               y # 1 sw Y   xY w)+Nc                     t        j                  dg| f      } t        j                  d| dd z        d| dd z  | dd z  z
  t        j                  | dd        z
  }|S )Nr   ra   r$   )r+   hstackr   rB   r   s     r9   fz2TestDifferentialEvolutionSolver.test_L1.<locals>.f  s_    		A3(#A&&1Qq6"Qq1vXa!f_4rvvae}DCJr;   )r      )rA   rA   r$   r$   r$   )r$   rA   r      )r$   rA   r   )r   rv   r$   r_   )r`   ra   r   r`   )r$   r_   r   r  ra   r  rb   )rb   r%   r  r%   )rA   r_   r  r"  r  r"  	   )r  r  r"  )	r   r   r   r   r   r   r   r   r   r#   r!   rH   i90  r5  rF   r   rr  r'   r  )r$   r$   r$   r$   r$   r$   r$   r$   r$   r_   r_   r_   r$   iga2U0*C?r   g{Gzt?r   iz r]   gMb@?c                     t        j                  dg| f      } d| d   z  d| d   z  z   | d   z   | d   z   d| d   z  | d   z   gS )Nr   rA   r_   r  r"  r  r+   r  r   s    r9   c1z3TestDifferentialEvolutionSolver.test_L1.<locals>.c1A  s\    		A3(#AadFQqtVOae+ae3qtGaeO% %r;   c                 Z    t        j                  dg| f      } d| d   z  | d   z
  | d   z   S )Nr   r   r  r  r"  r  r   s    r9   c2z3TestDifferentialEvolutionSolver.test_L1.<locals>.c2F  s5    		A3(#Aad7QqT>AbE))r;   r  )r+   zerosr.   r   r   r   r   r   rB   r   r   r   r   r
   r  r  r  rY  )r8   r  r  bLr0   r   x_optf_optr  r  L2NN2rr  s                  r9   test_L1z'TestDifferentialEvolutionSolver.test_L1  s1   	
 HHX)!^
!aW*$!Z-)!^
!aW*$!Z-)!^
!aW*$!Z-ab!"fIHH34Q+!xjl*fX5 %v
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 %v
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!Rn$$& 	!!(K8(6JG'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           	      >   d }d }t        |dt        j                        }dgdz  }|}t        j                         5  t        j
                  dt               t        ||dd|	      }d d d        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               y # 1 sw Y   +xY w)Nc                    t        j                  dg| f      } | d   dz
  dz  d| d   dz
  dz  z  z   | d   dz  z   d| d   d	z
  dz  z  z   d| d   d
z  z  z   d| d
   dz  z  z   | d   dz  z   d| d
   z  | d   z  z
  d| d
   z  z
  d| d   z  z
  }|S )Nr   r$   r   rA   ra   r"  r_   r`   r  rb   r%   r  r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L2.<locals>.fa  s    		A3(#AaDGa<!QqT"WqL.01Q47:Q!R!|^KadAg: !!A$'	*,-aD!G467!fQqTkBDFqtGLQqT6C Jr;   c                    t        j                  dg| f      } dd| d   dz  z  z
  d| d   dz  z  z
  | d   z
  d| d   dz  z  z
  d| d   z  z
  dd	| d   z  z
  | d   dz  z
  d
| d
   dz  z  z
  d| d   z  z   dd| d   z  z
  d| d   z  z
  d| d   dz  z  z
  | d   z
  | d   z   d| d   dz  z  | d   dz  z
  d| d   z  | d   z  z   d| d   dz  z  z
  d| d
   z  z
  d| d   z  z   gS )Nr      rA   r$   r_   r`   ra         rb   r  r%   i  r   r  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L2.<locals>.c1h  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  rH     rF   r   rr  gy\
E@)gܤ@g$H8?g	޿g0ev@gn8)gk_@/?g0g+?h㈵>r  r$   )r
   r+   r   r  r  r  rY  r   r   r   rB   r   r   r   r.   )	r8   r  r  r  r0   rr  r   r  r  s	            r9   test_L2z'TestDifferentialEvolutionSolver.test_L2]  sB   		&  Arvv.Q$$& 	L!!(K8(FZ-1{LC	L
 "1 	%%('u40{{{rxx355	*a/01suu 0A 6678suu 0A 6678	L 	Ls   +FFc           	         d }t        j                  d      }d|dg df<   d|dg df<   d|d	g d
f<   |dd dd f   }t        j                  g d      }d }t        ||t         j                        }t        |dt         j                        }dgdz  }||f}t        j                         5  t        j                  dt               t        ||d|d	      }	d d d        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               y # 1 sw Y   ]xY w)Nc                 r   t        j                  dg| f      } | d   dz  | d   dz  z   | d   | d   z  z   d| d   z  z
  d| d   z  z
  | d   dz
  dz  z   d| d   d	z
  dz  z  z   | d	   dz
  dz  z   d| d
   dz
  dz  z  z   d	| d   dz  z  z   d| d   dz
  dz  z  z   d| d   dz
  dz  z  z   | d   dz
  dz  z   dz   }|S )Nr   r$   rA   r  r  r_   r   r`   ra   rb   r%   r  r  r  -   r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L3.<locals>.f  s   		A3(#AQ47QqT1W$qtAaDy02ad7:R!WDaDGa< "#QqT!VaK-034Q46A+>@A1Q46A+NQqT1W9 !A$r'A~.011Q47Q,? bEAI>" %''C
 Jr;   )r`   r  )r  r  r_   ir$   )r$   rA   r%   r  )r   r     r   rA   )r  r   r  rA   r_   )r$   rA   r  r   )ir   ic                    t        j                  dg| f      } d| d   z  d| d   z  z
  d| d   dz
  dz  z  z
  d	| d
   z  z   d| d   dz
  dz  z  d| d   dz
  dz  z  z
  d| d   dz  z  z
  d	| d   z  z   dz   | d   dz   d| d   dz
  dz  z  z
  d| d   z  | d   z  z   d| d   z  z
  d| d   z  z   d| d   dz  z  d| d   z  z
  | d   dz
  dz  z
  d| d   z  z   dz   d| d   dz
  dz  z  d| d   dz
  dz  z  z
  d| d   dz  z  z
  | d   z   dz   gS )Nr   r_   r$   rb   rA   r"  r  r  r%   r   r   r`   x   r  ra   r  r         r   r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L3.<locals>.c1  s~   		A3(#AadFQqtVOb!A$q&1n4q2w>!Q{NQ!Q{]2QqtQwY>1Q4G#MqT1WHq!A$q&1},q1vad{:R!WDq1vMqtQwJ1Q4'1Q46A+5!A$>C!A$q&1$q!A$q&1}4q1qy@1Q4G"L	N Nr;   r   r   r   r  r  )r   rr  r'   )
gWXp?`@g@gVW@!@g3Ib@grq?g` ?g$F-t%?g6N#@g7h @g]y @g<6cN8@r  r  ư>)r+   r  r.   r   r   r
   r  r  r  rY  r   r   rB   r   r   r   r   r8   r  r  r  r  r  r  r0   rr  r   r  r  s               r9   test_L3z'TestDifferentialEvolutionSolver.test_L3  s   	 HHW*!\/+!\/*!]
ab!"fIHH^$	N Q266*Arvv.R!f$$& 	M!!(K8(F5@!MC	M
C%%d3u40T2{{{q355yA~&'rxx355	*a/01suu 0A 6678suu 0A 6678!	M 	Ms   -+H33H=c           
      d   d }t        j                  d      }d|dddgf<   d|dg d	f<   d
|dddgf<   |dd dd f   }t        j                  g d      }d }t        |t         j                   d      }t        |dt         j                        }dgdgdz  z   dgdz  z   }||f}t        j                         5  t        j                  dt               t        ||dd|dd      }	d d d        d}
g d}t         ||      |
d       t        	j                  |
d       t        j                         dk(  rJt        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               y # 1 sw Y   xY w)#Nc                 2    t        j                  | d d       S )Nr_   r+   r   r   s    r9   r  z2TestDifferentialEvolutionSolver.test_L4.<locals>.f  s    66!BQ%= r;   )r`   r  ){Gzd?r  r$   r`   rb   )r  r  g{GzdrA   )ra   r%   r`   )r5  g{Gzr_   r  ra   )r$   r$   r$   c                    t        j                  dg| f      } | d   | d   z  d| d   z  z
  d| d   z  z
  dz   | d   | d	   z  d
| d   z  z
  | d   | d   z  z
  d
| d   z  z   | d   | d   z  dz
  | d   | d   z  z
  d| d   z  z   gS )Nr   r$   rb   g!> 
@r`   r"   gSUX@rA   r%   i  ra   r_   r  i i	  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L4.<locals>.c1  s    		A3(#AaD1I	!A$.QqT9IEaD1IQqT	)AaD1I5QqT	AaD1I'!A$qt)3d1Q4i?A Ar;   r   )r"   '  )  r  )r   r  r  rH   r  r]   r  gh|?@)got@g?@g:@gt$f@gVfyr@gh o?k@gCq@gVfx@MbP?r  Windowsgv!>gy&1l?)r   r   gh㈵>ga2U0*c?)r+   r  r.   r   r   r
   r  r  r  rY  r   r   r   platformsystemr   intpitemsizerB   r   r   r   )r8   r  r  r  r  r  r  r0   rr  r   r  r  s               r9   test_L4z'TestDifferentialEvolutionSolver.test_L4  s.   	! HHV%!aV)1!Y,"!aV)ab!"fIHHY	A Q+Arvv.=/!"33zl1nD!f$$& 	!!(K8(6JD'C	 2 	%%e4U3 OO*rxx/@/I/IA/MCEE5vFC CEE5t&A{{{q355yA~&'rxx355	*a/01suu 0A 6678suu 0A 66785	 	s   9-J%%J/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               y )Nc                    t        j                  dg| f      } t        j                  dt         j                  z  | d   z        dz  t        j                  dt         j                  z  | d   z        z  | d   dz  | d   | d   z   z  z  }| S )Nr   rA   r$   r_   )r+   r  sinpir  s     r9   r  z2TestDifferentialEvolutionSolver.test_L5.<locals>.f  s    		A3(#A66!BEE'!A$,'*266!BEE'!A$,+??aD!GQqT!A$Y')C4Kr;   c                 |    t        j                  dg| f      } | d   dz  | d   z
  dz   d| d   z
  | d   dz
  dz  z   gS )Nr   r$   rA   r`   r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L5.<locals>.c1  sT    		A3(#AaD!GadNQ&!H!Q{*, ,r;   r   r   r   rA   rI   r  r  )gJIť?gU(C@g#gh㈵>r  -C6?r$   )r
   r+   r   r   r   r   r   r   r   r.   rB   	r8   r  r  r  r0   rr  r   r  r  s	            r9   test_L5z'TestDifferentialEvolutionSolver.test_L5  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           	         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               y )Nc                 d    t        j                  dg| f      } | d   dz
  dz  | d   dz
  dz  z   }|S )Nr   r$   r   r_   rA   r  r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L6.<locals>.f  s=    		A3(#AQ47Q,!A$)a/CJr;   c                     t        j                  dg| f      } | d   dz
  dz  | d   dz
  dz  z   dz
  | d   dz
  dz   | d   dz
  dz  z
  dz   gS )Nr   r$   ra   rA   r"   rb   gp=
׳T@r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L6.<locals>.c1  sl    		A3(#AqT!VaK1Q4!8a-/#5d1fq[LAaD1Hq=058: :r;   r   )   r"   r!   rI   r  gHz>)rF   r   rr  r  )gq=
ף0,@g??g1r  r  r  r  r$   )r
   r+   r   r   r   r   rB   r   r   r   r.   r  s	            r9   test_L6z'TestDifferentialEvolutionSolver.test_L6  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           	         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               y )Nc                     t        j                  dg| f      } d| d   dz  z  d| d   z  | d   z  z   d| d   z  z   d	z
  }|S )
Nr   g+dvqn@r_   rA   g"C?r$   ra   gtۈB@gn@r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L7.<locals>.f+  s[    		A3(#AQqT1W$y1~ad'::QqT>"$-.CJr;   c                 D   t        j                  dg| f      } dd| d   z  | d   z  z   d| d   z  | d   z  z   d	| d
   z  | d   z  z
  dd| d   z  | d   z  z   d| d   z  | d   z  z   d| d
   dz  z  z   dd| d
   z  | d   z  z   d| d   z  | d
   z  z   d| d
   z  | d   z  z   gS )Nr   gl#fUU@g+WPIw?rA   ra   g=BD?r$   r`   gOlb?r_   gaۢ T@g+<$!6}?g h?g^5a?g/h"@gxLCs?gݗT?g^gED_?r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L7.<locals>.c11  s    		A3(#A	!A$qt 33i!nQqT6IIadN1Q4'( y1~ad22Yqt^AaD5HHadAg%& y1~ad22Yqt^AaD5HHadN1Q4'(	 	r;   )r   Z   r  )\   n      )N   f   )!   r  )   r  r_   rI   r  r  )gq S@g] @@g˻f=@g:F@g%ShMcB@gCgbr  r  r   r$   )
r
   r   r   rB   r   r   r   r+   r   r.   r  s	            r9   test_L7z'TestDifferentialEvolutionSolver.test_L7)  sK   		  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           	         d }t        j                  d      }d|dddgf<   d|dddgf<   |dd dd f   }t        j                  ddg      }d	 }t        ||t         j                        }t        |t        j                  dd
      t        j                  dd            }dgdz  dgdz  z   }||f}t        j                         5  t        j                  dt               t        ||dd|d      }	d d d        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               y # 1 sw Y   xY w)Nc                     t        j                  dg| f      } d| d   z  d| d   dz  z  z   d| d   z  z   d| d   dz  z  z   }|S )Nr   r_   r$   r  rA   g^>r  r  s     r9   r  z2TestDifferentialEvolutionSolver.test_L8.<locals>.f[  sY    		A3(#AAaD&8AaD!G++a!f4z!A$'7IICJr;   )r_   ra   )r$   rv   r$   r`   r_   rA   皙c           	         t        j                  dg| f      } dt        j                  | d    dz
        z  dt        j                  | d    dz
        z  z   dz   | d   z
  dt        j                  | d   dz
        z  dt        j                  | d   | d   z
  dz
        z  z   dz   | d   z
  dt        j                  | d   dz
        z  dt        j                  | d   | d   z
  dz
        z  z   d	z   gS )
Nr   r  r_   rc   r`   gfffff@r$   rA   g33333;@)r+   r  r   r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L8.<locals>.c1f  s    		A3(#A1d
++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;   MbPr  )r   i  )r  g?r  rH   r  i  )rF   r   rr  r   )gEGr?@gT㥛D@g&D
n?gd,[ٿg#J{@r  gMb`?r  r   )r+   r  r.   r   r   r
   fullr  r  r  rY  r   r   rB   r   r   r   r   r  s               r9   test_L8z'TestDifferentialEvolutionSolver.test_L8W  s6   	
 HHV!aV)!aV)ab!"fIHHdD\"		 Q266*BGGAv$658IJQ}Q.!f$$& 	7!!(K8 )FZ-1{157C	7 <%%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+	7 	7s   ,J44J>ra   c           	         d }d }t        |dgdg      }dgdz  }|}t        ||dd|	      }t        j                  d      dz  d
g}d}t	         ||      |       t	        t        j
                  |j                        |d       t	        |j                  |d       |j                  sJ t        t        j                  t        j                   ||j                              dk\               t        t        j                  t        j                   ||j                              dk               t        t        j                  |j                  t        j                  |      d d df   k\               t        t        j                  |j                  t        j                  |      d d df   k               y )Nc                 Z    t        j                  dg| f      } | d   dz  | d   dz
  dz  z   S )Nr   r$   rA   r  r   s    r9   r  z2TestDifferentialEvolutionSolver.test_L9.<locals>.f  s5    		A3(#AQ47ad1fq[((r;   c                 P    t        j                  dg| f      } | d   | d   dz  z
  gS rl  r  r   s    r9   r  z3TestDifferentialEvolutionSolver.test_L9.<locals>.c1  s/    		A3(#AaD1Q47N##r;   r  r  ru   rA   rI   r  r  r&   g      ?r  r   r$   )r
   r   r+   sqrtr   absrB   r   r   r   r   r.   r  s	            r9   test_L9z'TestDifferentialEvolutionSolver.test_L9  sJ   	)	$  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                    t         j                  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 y )Nl   b	)ra   r&   r  )r%  random_statec                     |\  }}t        j                   |j                  |g|        j                  d       }t        j                  |      rt         j
                  }|S )Nrv   axis)r+   logpmfr   isnanr   )r_  r   distrB   lls        r9   r{   z>TestDifferentialEvolutionSolver.test_integrality.<locals>.func  sQ    GD!&&!a)--2-66Bxx|VVIr;   TF)r$      )r   gffffff?)r   integralityr   r   r   ra   g?)r   c                 T    |\  }}} t        j                  || d   g      ||      S )Nr   rm  )r_  r   nr/  rB   r{   s        r9   func2z?TestDifferentialEvolutionSolver.test_integrality.<locals>.func2  s.    JAtQ!QqT+T155r;   r$   )r   r0   )r+   r  r  r   nbinomrvsr   rB   r   r   r   )r8   r   r/  shapesrB   r2  r0   r   res2r5  LBFGSBr{   s              @r9   test_integralityz0TestDifferentialEvolutionSolver.test_integrality  s    ii##M2||DHHf5s;	 Um9%$T6q	1<U),.
 uuQx1}}vE2 &dF$2=d*-/	6 %!T1"+.q	688,xx377"""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        y # 1 sw Y   y xY w)Nc                     | S r   r=   r   s    r9   r  zBTestDifferentialEvolutionSolver.test_integrality_limits.<locals>.f  s    Hr;   )TFT))r.  r   r   皙@)ffffff
@皙@F)r0   r   r2  r   )r.  r   r@  r$   )r   r?  rA  )r&   r   g      @)g      ?r?        @))r  gr>  )g$gffffff@)g      r         %)r  r?  rB  )      r   g      $)rD  r   g      @))ffffff$g333333 r>  g%gr#)rC  r   rC  )g      !r?  g      #))rE  g333333$r>  rF  zOne of the integralityr   )r   r   r/   r   r2  r   r+   roundr{  r   rx   )r8   r  r2  r0   rZ   s        r9   test_integrality_limitsz7TestDifferentialEvolutionSolver.test_integrality_limits  s   	 *5 -Qve9>@a(/:a(/: -Qve9DFa(/:a(/:V'')<=}}%%%9,Qve9DFa(*<=a(*:; 	q!124FGq!124DE>,Qve9DFa(*=>a(*;<?]]:-EF 	A'&4?A	A 	A 	As   G$$G-c                    d }d }t        j                  t        d      5  t        || j                  dd       d d d        t        t        d      5  t        || j                  d	       d d d        t        t        d
      5  t        || j                  dt        d       d d d        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 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                 2    t        j                  | dz        S r   r  r   s    r9   r1   zBTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic  s    66!Q$<r;   c                 6    t        j                  | dz  d      S )NrA   r   r*  r  r   s    r9   quadratic_veczFTestDifferentialEvolutionSolver.test_vectorized.<locals>.quadratic_vec  s    66!Q$Q''r;   zThe vectorized functionr   Tr   )ry  r   z#differential_evolution: the 'vector)ry  z$differential_evolution: the 'workers)ry  rX  r   r   c                 4    dxx   dz  cc<   t        |       S rh  )r   )rB   ncallss    r9   	rosen_veczBTestDifferentialEvolutionSolver.test_vectorized.<locals>.rosen_vec   s    1INI8Or;   r  r$   )r   r   )ry  r   r   )r{  r   r   r   r0   r   rY  rT  r   r   rB   r   r   )r8   r1   rL  rO  r0   res1r9  rN  s          @r9   test_vectorizedz/TestDifferentialEvolutionSolver.test_vectorized  s?   	 	( ]]</HI 	I"9dkk.2ZI	I
 ;&KL 	4"=$++.24	4
 ;&LM 	8"=$++.2C,68	8
 	 7#%eVj*+-%iD/9qB 	'ayDII%%%xx488###=	I 	I
	4 	4
	8 	8s#   D.D:E.D7:EE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                         y )Nc                 @    t        j                  | d   | d   z   g      S rh  rm  r   s    r9   ri  zMTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f0  r  r;   c                 Z    t        j                  | d   dz  | d   z   | d   | d   z
  g      S rl  rm  r   s    r9   rn  zNTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.constr_f23  ro  r;   rp  )r   r&   r   c                 p    d| dd  | d d dz  z
  dz  z  }|d| d d z
  dz  z  }t        j                  |      S )Nr"   r$   rv   r   )r+   squeeze)rB   r   s     r9   rO  zNTestDifferentialEvolutionSolver.test_vectorized_constraints.<locals>.rosen_vec9  sM    quq"vs{*S00A!af*s""A::a= r;   r  r   r$   F)r   r   rr  r   T)ry  r   r   rr  r   )r
   r+   r   r   r   r   rB   )	r8   ri  rn  nlc1r~  rO  r0   rP  r9  s	            r9   test_vectorized_constraintsz;TestDifferentialEvolutionSolver.test_vectorized_constraints/  s    	+	; #8bffWc:"9j*E	! 7#%eVj*+$-24 &iD/9q37,-24
 	'r;   c                    t        | j                        fdd _        t        t        | j                  dd      }t        t        | j                  ddd      }|j
                  J t        |j                  t        j                        d       |j                  j                  j                  k(  sJ |j                  |j                  k7  sJ fd}t        t        d	
      5  t        t        | j                  |d       d d d        d t        j                  j                  d      }t        t        | j                  d|d      }t        t        |j                  | j                  d      }t        j                  j                  d      }t        t        | j                  |d      }t        |j                  |j                         t        |j                  |j                         y # 1 sw Y   xY w)Nc                 N    t        | |ft        dd|_        j                  S )Nztrust-constr)jacmethod)r   r   r   )r   rB   kwdspfs      r9   r^  z@TestDifferentialEvolutionSolver.test_polish_function.<locals>.pfO  s&    c1S)NSdSBF66Mr;   r$   r   )r   r   r   Tr  r  c                 p    d|v sJ t        |d   t              sJ d|v sJ t        j                        S )Nr0   rr  )r   r	   r+   r  )r{   rB   r]  r  s      r9   dummy_pfzFTestDifferentialEvolutionSolver.test_polish_function.<locals>.dummy_pf`  sA    t###d8nf555 D(((771:r;   z(The result from a user defined polishingr   )r   r   c                      t        | |fddi|S )Nr\  L-BFGS-B)r   )r{   rB   r]  s      r9   r^  z@TestDifferentialEvolutionSolver.test_polish_function.<locals>.pft  s    D!?J?$??r;   l   -g F)r   r   r   rb  )r0   r\  )r   r0   r   r   r   r[  r   rB   r+   r  r   rw   rx   r  r  r   )r8   r   r   r`  r   r9  r  r^  s         @@r9   test_polish_functionz4TestDifferentialEvolutionSolver.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::H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 y )Nc                 d    t        j                  | d         t        j                  | d         z   S rh  )r+   cosr   r   s    r9   r{   zUTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.func  s%    66!A$<"&&1,..r;   c                 $    | d   | d   dz
  dz  z
  S Nr$   r   rA   r=   r   s    r9   <lambda>zYTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>  s    1Q41Q46A++= r;   r   c                     | d   | d   dz  z   S rh  r=   r   s    r9   ri  zYTestDifferentialEvolutionSolver.test_constraint_violation_error_message.<locals>.<lambda>  s    1Q4!A$'> r;   )rv   rA   ru   r   Fi3)r0   rr  r   r   r   z
MAXCV = 0.)r
   r+   r   r   r   r   )r8   r{   c0r  re   s        r9   'test_constraint_violation_error_messagezGTestDifferentialEvolutionSolver.test_constraint_violation_error_message  s}    	/ !!=q"&&I !9BFF7AF'07/A57H02/4,5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 |j                          d   dkD  sJ t	        t        ||d      }|j
                  sJ dd}t        j                  t        d      5  t	        t        ||       d d d        y # 1 sw Y   y xY w)Nr`   r   )r   g      $@r*   gffffff?r   c                 ~   dxx   dz  cc<   t        j                  ||          }|j                        }t        j                        }|j	                  |       |d d }||| k7     d d }|d d \  }}|d   ||   ||   z
  z  z   }	|j                        }
|
k  }
d|
|<   t        j                  |
|	|      }|S )Nr   r$   r_   rA   )r%  T)r+   copychoicer5   shufflerE  where)r   r7   r   rf   
fill_pointr^  idxsr0r   bprime
crossoverscallsr(   r  recombinationtotal_popsizes              r9   custom_strategy_fnzLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fn  s    !HMHGGJy12EO4J99]+DKK<D	)*2A.D"1XFB mh^jn4'6 6F /:J#m3J%)Jz"HHZ7ELr;   rA   F)r'   ry  r(   r   rF   r   r   r   )rF   r   c                 0    t        j                  ddg      S )Nr   r   rm  )r   r7   r   s      r9   r{  zLTestDifferentialEvolutionSolver.test_strategy_fn.<locals>.custom_strategy_fn  s    88S#J''r;   z	strategy*r   rE   r   )	r   r   rF   r   r   r   r{  r   r   )r8   r'   r0   r{  rZ   r   rx  r(   r  ry  rz  s         @@@@@r9   test_strategy_fnz0TestDifferentialEvolutionSolver.test_strategy_fn  s     o-''1	 	* -''

 "4444Qx!|| %6$6
 {{{	( ]]<{; 	"+	 	 	s   (CCc                 b    t        t        t        dgdz        5  	 d d d        y # 1 sw Y   y xY w)Nr  rA   )r   r   r   r>   s    r9   test_reference_cyclesz5TestDifferentialEvolutionSolver.test_reference_cycles  s-     ;UWIaKP 		 	 	s   %.N)NrX   
__module____qualname__r:   r?   r1   r[   rg   ri   rk   rm   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r,  r/  r1  rG  rJ  rO  rU  r[  r`  r{  mark	fail_slowrb  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  xslowxfailr  machiner   r&  r;  rH  rQ  rX  rc  rl  r}  r  r=   r;   r9   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]  r  r  scipy._lib._gcutilsr   %scipy.optimize._differentialevolutionr   r   scipy.optimizer   r   scipy.optimize._constraintsr	   r
   r   r   r   r   scipy.sparser   scipyr   numpyr+   numpy.testingr   r   r   r   r   r{  r   rw   r   r   r=   r;   r9   <module>r     sV    5   2G A; ; 5 5 "  9 9 1 E Er;   