
&]\c           @` s?  d  Z  d d l m Z m Z m Z d d l Z d d l Z d d l m	 Z	 m
 Z
 m Z m Z m Z m Z d d l Z d d l m Z d d l m Z d d l m Z d   Z d	 e f d
     YZ d e f d     YZ d   Z d   Z d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ  d e f d     YZ! d e f d     YZ" d   Z# d e f d     YZ$ d  e f d!     YZ% d"   Z& d#   Z' d$   Z( d% d& g Z) d' d( g Z* d) Z+ d*   Z, d+ e f d,     YZ- d- f  d.     YZ. d/ e f d0     YZ/ d S(1   s   
Unit tests for optimization routines from optimize.py

Authors:
   Ed Schofield, Nov 2005
   Andrew Straw, April 2008

To run it in its simplest form::
  nosetests test_optimize.py

i    (   t   divisiont   print_functiont   absolute_importN(   t   assert_allcloset   assert_equalt   assert_t   assert_almost_equalt   assert_warnst   assert_array_less(   t   raises(   t   suppress_warnings(   t   optimizec          C` s   d   }  d   } t  j d g  } t j |  | |  } t | d  t j |  | | d d } t | d  t t j |  | | d d d  } t | d k  d  S(	   Nc         S` s   d d t  j |   S(   Ni   (   t   npt   exp(   t   x(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   logit    s    c         S` s$   t  j |   d t  j |   d S(   Ni   i   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt	   der_logit#   s    g      ?i    t   epsilongư>g?gHz>(   R   t   arrayR   t
   check_gradR   t   absR   (   R   R   t   x0t   r(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_check_grad   s    		%t   CheckOptimizec           B` s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s    Base test case for a simple constrained entropy maximization problem
    (the machine translation example of Berger et al in
    Computational Linguistics, vol 22, num 1, pp 39--72, 1996.)
    c         C` s   t  j d d d g d d d g d d d g d d d g d d d g g  |  _ t  j d d d g  |  _ t  j d t  j  |  _ t  j d d d	 g  |  _ d
 |  _ d |  _	 d |  _
 g  |  _ d  S(   Ni   i    g      ?g333333?g      ?i   g        g\g)3?i  (   R   R   t   Ft   Kt   zerost   float64t   startparamst   solutiont   maxitert	   funccallst	   gradcallst   trace(   t   self(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   setup_method8   s    N			c         C` s   |  j  d 7_  |  j  d k r- t d   n  t j |  j |  } t j t t j |    } | t j |  j |  } |  j	 j
 |  | S(   Ni   ip  s+   too many iterations in optimization routine(   R    t   RuntimeErrorR   t   dotR   t   logt   sumR   R   R"   t   append(   R#   R   t   log_pdott   logZt   f(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   funcB   s    c         C` su   |  j  d 7_  t j |  j |  } t j t t j |    } t j | |  } t j |  j j   |  |  j S(   Ni   (	   R!   R   R&   R   R'   R(   R   t	   transposeR   (   R#   R   R*   R+   t   p(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   gradL   s
    c         C` s   t  j |  j |  } t  j t t  j |    } t  j | |  } t  j |  j j t  j t  j |  |  j t  j |  j j |    S(   N(   R   R&   R   R'   R(   R   t   Tt   diag(   R#   R   R*   R+   R/   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   hessS   s
    c         C` s   t  j |  j |  |  S(   N(   R   R&   R3   (   R#   R   R/   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   hesspZ   s    (   t   __name__t
   __module__t   __doc__R$   R-   R0   R3   R4   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR   3   s   	
	
		t   CheckOptimizeParameterizedc           B` st   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 RS(   c   	      C` s  |  j  r i |  j d 6|  j d 6t d 6} t j |  j |  j d d d d d |  j d | } | d	 | d
 | d | d | d f \ } } } } } nT t j	 |  j |  j |  j d d |  j d t
 d |  j d t } | \ } } } } } t |  j |  |  j |  j  d d t |  j d k |  j  t |  j d k |  j  t |  j d d !d d d g d d d g g d d d d d  S(    NR   t   dispt
   return_allt   argst   methodt   CGt   jact   optionsR   t   funt   nfevt   njevt   statust   full_outputt   retallt   atolgư>i	   i   i   i   i    g      g      ?g;ӱ.g)`$|;?g+=t   rtolgHz>(    (    (   t   use_wrapperR   R9   t   FalseR   t   minimizeR-   R   R0   t   fmin_cgt   TrueR   R   R   R    R!   R"   (	   R#   t   optst   rest   paramst   foptt
   func_callst
   grad_callst   warnflagt   retval(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_cg`   s(    	
	;	!c         C` sn   d   } x^ t  j d d d  D]G } t j | | g d d } t | j  t | j d g d d	 q Wd  S(
   Nc         S` s!   d d t  j d |  d  d S(   Ng      @i   g      g      ?i   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR,      s    g      i   iG   R<   R=   g      ?RG   gh㈵>(   R   t   linspaceR   RJ   R   t   successR   R   (   R#   R,   R   t   sol(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_cg_cornercase   s
    	c         C` s  |  j  r i |  j d 6|  j d 6t d 6} t j |  j |  j d |  j d d d d d | } | d	 | d
 | d | d | d | d | d f \ } } } } } } }	 n] t j	 |  j |  j |  j d d d |  j d t
 d |  j d t }
 |
 \ } } } } } } }	 t |  j |  |  j |  j  d d t |  j d k |  j  t |  j d k |  j  t |  j d d !d d d g d d d g g d d d d d  S(    NR   R9   R:   R>   R<   t   BFGSR;   R?   R   R@   t   hess_invRA   RB   RC   RD   RE   RF   gư>i
   i   i   i    g&/LgB__E7?g$g
|3?g+=RG   gHz>(    (    (   RH   R   R9   RI   R   RJ   R-   R   R0   t	   fmin_bfgsRL   R   R   R   R    R!   R"   (   R#   RM   RN   RO   RP   t   goptt   HoptRQ   RR   RS   RT   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt	   test_bfgs   s*    	
	3	!c         ` s   d       f d   } d g } t  j d d  } z |  j r i |  j d 6} t j   | d | d d	 d
 d d | d } n t j   | | d |  j } t t  j   |    Wd  t  j |   Xd  S(   Nc         S` s   t  j |  S(   N(   R   t   e(   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   <lambda>   s    c         ` s     |   S(   N(    (   R   (   R-   (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa      s    i    t   overt   ignoreR9   R>   R<   RZ   R;   R?   R   (    (	   R   t   seterrRH   R9   R   RJ   R\   R   t   isfinite(   R#   t   fprimeR   t   olderrRM   R   (    (   R-   sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_bfgs_infinite   s    			c   
      C` s  |  j  r i |  j d 6|  j d 6t d 6} t j |  j |  j d d# d d d | } | d | d	 | d
 | d | d | d f \ } } } } } } nT t j |  j |  j d d$ d |  j d t	 d |  j d t }	 |	 \ } } } } } } t
 |  j |  |  j |  j  d d t |  j d% k |  j  t |  j d k |  j  t
 |  j d d !d d d g d d d g d d d g d d d g d d d g g d d  d! d" d  S(&   NR   R9   R:   R;   R<   t   PowellR?   R   R@   t   direct   nitRA   RC   RD   RE   RF   gư>it   i   i    i"   i'   g~W?gf"Bܿg%?g:&?gSϼW?gf"Bg{år?g{år?gB?g+=RG   gHz>(    (    i   (   RH   R   R9   RI   R   RJ   R-   R   t   fmin_powellRL   R   R   R   R    R!   R"   (
   R#   RM   RN   RO   RP   Rj   t   numiterRQ   RS   RT   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_powell   s.    	
)	!c   
      C` s  |  j  r i |  j d 6|  j d 6t d 6} t j |  j |  j d d d d d | } | d | d	 | d
 | d | d | d f \ } } } } } } nQ t j |  j |  j d d  d |  j d t	 d |  j d t }	 |	 \ } } } } } t
 |  j |  |  j |  j  d d t |  j d k |  j  t |  j d k |  j  t
 |  j d d !d d d g d d d g g d d d d d  S(!   NR   R9   R:   R;   R<   s   Nelder-meadR?   R   R@   Rk   RA   RC   t   final_simplexRD   RE   RF   gư>i   i    iL   iN   g	dװ?g]fgt䝁?gә ?g#=^goT?g+=RG   gHz>(    (    (   RH   R   R9   RI   R   RJ   R-   R   t   fminRL   R   R   R   R    R!   R"   (
   R#   RM   RN   RO   RP   Rm   RQ   RS   Ro   RT   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_neldermead   s(    	
)	!c         C` s  t  j d%  } |  j | d <x. t d  D]  } | | d | f c d 7<q) W|  j r i |  j d 6t d 6t d 6| d	 6} t j	 |  j
 |  j d
 d& d d d | } | d | d | d | d | d f \ } } } } }	 t | d d | d  nT t j |  j
 |  j d
 d' d |  j d t d t d t d	 | }
 |
 \ } } } } }	 t |  j
 |  |  j
 |  j  d d t |  j d k |  j  t |  j d k |  j  t |  j d d !d d d g d d  d! g g d d" d# d$ d  S((   Ni   i   .i   g?R   R9   R:   t   initial_simplexR;   R<   s   Nelder-meadR?   R   R@   Rk   RA   RC   t   allvecsi    RD   RE   RF   gư>id   i2   i4   gIt?g?'ΛTgx8?gҢ_׆?goMg囎|52?g+=RG   gHz>(   i   i   (    (    (   R   R   R   t   rangeRH   R   RI   RL   R   RJ   R-   R   Rp   R   R   R    R!   R"   (   R#   t   simplext   jRM   RN   RO   RP   Rm   RQ   RS   RT   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_neldermead_initial_simplex  s2    		!c         C` s7  g  } t  j d  } |  j d  | d <x. t d  D]  } | | d | f c d 7<q3 W| j |  t  j d  } | j |  x | D] } |  j r i |  j d 6t d 6t d 6| d	 6} t t	 t
 j |  j |  j d
 d d d d | q t t	 t
 j |  j |  j d
 d d |  j d t d t d t d	 | q Wd  S(   Ni   i   .i   g?R   R9   R:   Rr   R;   R<   s   Nelder-meadR?   RD   RE   (   i   i   (   i   i   (    (    (   R   R   R   Rt   R)   RH   R   RI   t   assert_raisest
   ValueErrorR   RJ   R-   Rp   RL   (   R#   t   bad_simplicesRu   Rv   RM   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt#   test_neldermead_initial_simplex_bad*  s&    	c         C` sW   i d d 6} t  j |  j |  j d d d |  j d d	 d | } t | j d k  d  S(
   NiR   R<   s	   Newton-CGR>   R;   R?   i   (    (   R   RJ   R-   R   R0   R   RC   (   R#   RM   t   result(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_ncg_negative_maxiterD  s
    c         C` sE  |  j  rd i |  j d 6|  j d 6t d 6} t j |  j |  j d d d |  j d d d | d	 } nB t j	 |  j |  j |  j d d d |  j d
 t d |  j d t } | } t
 |  j |  |  j |  j  d d t |  j d k |  j  t |  j d k |  j  t
 |  j d d !d d d g d d d g g d d d d d  S(   NR   R9   R:   R<   s	   Newton-CGR>   R;   R?   R   RD   RE   RF   gư>i   i   i   i   g(6-H=g?g4u3?g_g/N3?RG   gHz>(    (    (   RH   R   R9   RI   R   RJ   R-   R   R0   t   fmin_ncgR   R   R   R    R!   R"   (   R#   RM   RT   RO   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_ncgL  s&    	
	!c         C` sW  |  j  rm i |  j d 6|  j d 6t d 6} t j |  j |  j d d d |  j d |  j	 d d d	 | d
 } nK t j
 |  j |  j |  j d |  j	 d d d |  j d t d |  j d t } | } t |  j |  |  j |  j  d d t |  j d k |  j  t |  j d k |  j  t |  j d d !d d d g d d d g g d d d d d  S(   NR   R9   R:   R<   s	   Newton-CGR>   R3   R;   R?   R   t   fhessRD   RE   RF   gư>i   i   i   i   g(6-H=g?g4u3?g_g/N3?RG   gHz>(    (    (   RH   R   R9   RI   R   RJ   R-   R   R0   R3   R~   R   R   R   R    R!   R"   (   R#   RM   RT   RO   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_ncg_hessm  s*    	
			!c         C` sW  |  j  rm i |  j d 6|  j d 6t d 6} t j |  j |  j d d d |  j d |  j	 d d d	 | d
 } nK t j
 |  j |  j |  j d |  j	 d d d |  j d t d |  j d t } | } t |  j |  |  j |  j  d d t |  j d k |  j  t |  j d k |  j  t |  j d d !d d d g d d d g g d d d d d  S(   NR   R9   R:   R<   s	   Newton-CGR>   R4   R;   R?   R   t   fhess_pRD   RE   RF   gư>i   i   i   i   g(6-H=g?g4u3?g_g/N3?RG   gHz>(    (    (   RH   R   R9   RI   R   RJ   R-   R   R0   R4   R~   R   R   R   R    R!   R"   (   R#   RM   RT   RO   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_ncg_hessp  s*    	
			!(   R5   R6   RU   RY   R_   Rh   Rn   Rq   Rw   R{   R}   R   R   R   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR8   ^   s   			!		)		&			!	"c          C` si   d   }  t  j j |  d d g d d d d d d t t t  j j |  d d g d d d	 d d d d  S(
   Nc         S` s   |  d d |  d d S(   Ni    i   i   (    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    i   R   i   t   xatolgMbP?t   fatolt   xtolt   ftol(   R   t	   _minimizet   _minimize_neldermeadR   t   DeprecationWarning(   R-   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_neldermead_xatol_fatol  s    		c          C` s   d   }  d d d d d d d d	 d
 d d d d d d g } t  j |  | d d } t | j t  t  j |  | d d d i t d 6} t | j t  d  S(   Nc         S` s   t  j |  d  S(   Ni   (   R   R(   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    gM@'?gOC?g~?g -?g?g#j?g ?g~^g?gܠr#?g^cǽ?g)i	?g'?g?g1?g[VΤ?R<   s   Nelder-MeadR?   t   adaptive(   R   RJ   R   RW   RI   RL   (   R-   t   p0RN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_neldermead_adaptive  s    	t   TestOptimizeWrapperDispc           B` s   e  Z e Z e Z RS(    (   R5   R6   RL   RH   R9   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s   t   TestOptimizeWrapperNoDispc           B` s   e  Z e Z e Z RS(    (   R5   R6   RL   RH   RI   R9   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s   t   TestOptimizeNoWrapperDispc           B` s   e  Z e Z e Z RS(    (   R5   R6   RI   RH   RL   R9   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s   t   TestOptimizeNoWrapperNoDispc           B` s   e  Z e Z e Z RS(    (   R5   R6   RI   RH   R9   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s   t   TestOptimizeSimplec           B` s@  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 e j j d d d d d d d d d d d d d d d d d d d  d! d" d# g  d$    Z e j j d d% d& d' d( d) d* d+ d, d- g	  d.    Z d/   Z d0   Z d1   Z d2   Z RS(3   c      
   C` su   d   } d   } t  j g } t  j d d d d  9 t j | | | d t } t t  j | |    Wd  QXd  S(   Nc         S` s   |  S(   N(    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    c         S` s   t  j |   S(   N(   R   t	   ones_like(   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    Rb   Rc   t   invalidR9   (   R   t   nant   errstateR   R\   RI   R   t   isnan(   R#   R-   Rf   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_bfgs_nan  s    		c      
   C` s   d   } t  j d d   t j | d  } Wd  QXt t  j | d   t | d t k  d   } d   } t  j d d   t j | d d	 | } Wd  QXt t  j | d   t | d t k  d  S(
   Nc         S` s   t  j S(   N(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    R   Rc   i    R@   RW   c         S` s   |  d k r d St  j S(   Ni    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    c         S` s   t  j |   S(   N(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    R>   (   R   R   R   RJ   R   R   RI   (   R#   R-   R|   Rf   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_bfgs_nan_return  s    			c         C` s   t  j t  j t  j  t  j j t |  j   } t	 j
 |  j |  j d | d d d |  j d t } t |  j |  |  j |  j  d d d  S(   NR   R;   R   R9   RF   gư>(    (   R   t   sqrtt   finfot   floatt   epst   randomt   randt   lenR   R   R\   R-   R   R   RI   R   (   R#   R   RO   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_bfgs_numerical_jacobian  s    4!c         C` sA   d   } t  j | d g d t } t | d d d d d d  S(   Nc         S` s    |  d k  r d S|  d |  Sd  S(   Ni    gBg      ?(    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR,   
  s    g      $@R9   g      ?RG   g-C6?RF   (   R   R\   RI   R   (   R#   R,   t   xs(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_bfgs_gh_2169	  s    	c         C` s   t  j |  j |  j |  j d d d |  j } | \ } } } t |  j |  |  j |  j  d d t |  j	 d k |  j	  t |  j
 d k |  j
  t |  j d d !d d	 d
 g d d	 d
 g g d d d d d  S(   NR;   R   RF   gư>i   i   i   g        gHg!mʲ3?g+=RG   gHz>(    (   R   t   fmin_l_bfgs_bR-   R   R0   R   R   R   R   R    R!   R"   (   R#   RT   RO   RP   t   d(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_l_bfgs_b  s    !c         C` sb   t  j |  j |  j d t d |  j } | \ } } } t |  j |  |  j |  j  d d d  S(   Nt   approx_gradR   RF   gư>(   R   R   R-   R   RL   R   R   R   (   R#   RT   RO   RP   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_l_bfgs_b_numjac(  s    !c         ` sh     f d   } t  j |   j d   j } | \ } } } t   j |    j   j  d d d  S(   Nc         ` s     j  |     j |   f S(   N(   R-   R0   (   R   (   R#   (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR@   5  s    R   RF   gư>(   R   R   R   R   R   R-   R   (   R#   R@   RT   RO   RP   R   (    (   R#   sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_l_bfgs_b_funjac3  s    !c         C` s   d t  f d     Y} |   } t j t j d d g d d d | d i d d	 6} t | j d  t | j | j  t | j | j  t | j	 d
  t
 | j t k  t | j j   d  d  S(   Nt   Callbackc           B` s   e  Z d    Z d   Z RS(   c         S` s   d |  _  d  |  _ d  |  _ d  S(   Ni    (   Rk   t   NoneR@   R   (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   __init__D  s    		c         S` s.   | |  _  t j |  |  _ |  j d 7_ d  S(   Ni   (   R   R   t   rosenR@   Rk   (   R#   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   __call__I  s    	(   R5   R6   R   R   (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR   C  s   	g        R<   s   l-bfgs-bt   callbackR?   i   R   i   s+   STOP: TOTAL NO. of ITERATIONS REACHED LIMIT(   t   objectR   RJ   R   R   Rk   R   R   R@   RC   R   RW   RI   t   messaget   decode(   R#   R   t   cRN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_l_bfgs_b_maxiter@  s    	c      	   C` s   i t  d 6|  j d 6} t j |  j |  j d d d |  j d | } t |  j | j  |  j |  j	  d d t j |  j |  j d d d | } t |  j | j  |  j |  j	  d d t
 | j | j k  d  S(	   NR9   R   R<   s   L-BFGS-BR>   R?   RF   gư>(   RI   R   R   RJ   R-   R   R0   R   R   R   R   RA   (   R#   RM   R   t   ra(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_l_bfgs_bY  s    	$$c      
   C` s   d  } x d d d d g D] } i t d 6|  j d 6| d 6} t j |  j |  j d d	 d
 |  j d | } |  j | j  } | d  k r | } n t	 | | k   t
 | |  j |  j  d | q Wd  S(   Ng?g-C6?gHz>g|=R9   R   R   R<   s   L-BFGS-BR>   R?   RG   (   R   RI   R   R   RJ   R-   R   R0   R   R   R   R   (   R#   t   v0t   tolRM   RX   t   v(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_l_bfgs_b_ftoli  s    		c         C` sY   t  j t  j t j d d g  d d d t  j d i t d 6d d	 6} t | j  d  S(
   Ng333333g      ?R<   s   L-BFGS-BR>   R?   R9   i   t   maxls(	   R   RJ   R   R   R   t	   rosen_derRI   R   RW   (   R#   RX   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_l_bfgs_maxlsz  s    !c         ` s   t  j   t  j } g   t j d  d }    f d   } d
 \ } } } t  j | | d | d | t d	   t  |  D  \ } } | | }	 t  |   }
 t  j   | d | d |	 \ } } } t	 | |
  d  S(   Ni   i  c         ` s     |   }  j  |  | S(   N(   R)   (   R   t   value(   R,   t   values(    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   objfun  s    i   id   i,  Rf   t   maxfunc         s` s!   |  ] \ } } | | f Vq d  S(   N(    (   t   .0t   it   y(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pys	   <genexpr>  s    (   i   id   i,  (
   R   R   R   R   t   onesR   t   maxt	   enumeratet   minR   (   R#   t   gR   R   t   lowt   mediumt   highR   t   kR   t   targett   xminRp   R   (    (   R,   R   sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt*   test_minimize_l_bfgs_b_maxfun_interruption  s    		&
'c      	   C` sw   d d  d d d  d  } d d d d d g } t j t j | d	 | d
 t d d  } t | j d d d d d d  S(   Ng?id   c         [` s]  | } |  |  }	 d }
 d } t  } t } x| r.| r.| | k  r.t } | d 7} x t t j |   D] } xw | | | | | | g D]Y } t j |  } | | | <|  | |  } |
 d 7}
 | |	 k  r | }	 | } t  } q q W| d  k	 r| |  n  | d  k	 rl |
 | k rl t  } Pql ql Wq- Wt j d |	 d | d | d |
 d | d k  S(   Ni   i    R@   R   Rk   RA   RW   (	   RL   RI   Rt   R   t   sizet   copyR   R   t   OptimizeResult(   R@   R   R;   t   maxfevt   stepsizeR   R   R?   t   bestxt   bestyt   funcallst   nitert   improvedt   stopt   dimt   st   testxt   testy(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   custmin  s4    
#

g?g?g?g?g333333?R<   R?   R   g?g      ?RG   g-C6?RF   (    (   R   R   RJ   R   t   dictR   R   (   R#   R   R   RN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_custom  s    	c      
   C` s   d   } d   } x d d d d d d d	 d
 d g	 D] } | d k rO d  } n | } t j | d d g d | d d d | } t j | d d g d | d d d | } t | | j  | | j  k  d | | | j  | | j  f  q4 Wd  S(   Nc         S` s(   |  \ } } | d | d | d d S(   Ni   i   i   (    (   t   zR   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR-     s    c         S` sC   |  \ } } t  j d | | d d | d d | d | g  S(   Ni   i   i   (   R   R   (   R   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   dfunc  s    s   nelder-meadt   powellt   cgt   bfgss	   newton-cgs   l-bfgs-bt   tnct   cobylat   slsqpi   R>   R   g|=R<   g      ?s   %s: %s vs. %s(   s   nelder-meadR   R   (   R   R   RJ   R   R   (   R#   R-   R   R<   R>   t   sol1t   sol2(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_tol_parameter  s    				!	!	R<   Rp   Rl   RK   R\   R~   R   t   fmin_tnct
   fmin_slsqps   Nelder-MeadRi   R=   RZ   s	   Newton-CGs   L-BFGS-Bt   TNCt   SLSQPs   trust-constrt   doglegs	   trust-ncgs   trust-exacts   trust-krylovc   
      ` s    d k r d   } n t  j } t  j } t  j } t j d  } i  }   j d  r t t     }   d k r d | d <q   d k r d	 | d
 <q d | d <nD   f d   }   d k r t d d	  | d <n t d d  | d <  d k r| | d <n<   d  k r| | d <n#   d! k r>| | d <| | d <n  g    f d   } | | | d | | }	 t	 t
   d k  t	 t d    D   t	 t d   t j  d  D   d  S("   NR   R   c         S` s   t  j |   t  j |   f S(   N(   R   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    i
   Rp   R   i   t   iterid   R   R   c          ` s     | d <t  j |  |   S(   NR<   (   R   RJ   (   t   at   kw(   R<   (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   routine  s    
R   R?   R~   Rf   s	   Newton-CGR>   s   trust-krylovs   trust-exacts	   trust-ncgR   s   trust-constrR3   c         ` s      j  |  t j |   f  d  S(   N(   R)   R   R   (   R   R;   t   kwargs(   t   results(    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s    R   i   c         s` s*   |  ]  \ } } t  j | | k  Vq d  S(   N(   R   t   all(   R   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pys	   <genexpr>  s    c         s` s/   |  ]% \ } } t  j | d  | d   Vq d S(   i    N(   R   t   may_share_memory(   R   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pys	   <genexpr>  s    (   R   R   (   R~   (   s	   Newton-CG(   s   trust-krylovs   trust-exacts	   trust-ncgR   s   trust-constr(   R   R   R   t
   rosen_hessR   R   t
   startswitht   getattrR   R   R   R   t   anyt	   itertoolst   combinations(
   R#   R<   R-   R>   R3   R   R   R   R   RX   (    (   R<   R   sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt#   test_minimize_callback_copies_array  s@    
				
s   nelder-meadR   R   R   s	   newton-cgs   l-bfgs-bR   R   R   c         C` s   d   } d   } t  j d g  } | |  } | } | d k rK d  } n  t j | | d | d | d	 t d
 d  } t | | j  | j  | d k r t	 j
 d  n  t | | j  | k  d  S(   Nc         S` s   |  d d S(   Ni   i   (    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR-     s    c         S` s   d |  d d d S(   Ni   i   i(    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   bad_grad   s    g       @s   nelder-meadR   R   R>   R<   R?   R   i   R   s   SLSQP returns slightly worse(   s   nelder-meadR   R   (   R   R   R   R   RJ   R   R   R   R@   t   pytestt   xfailR   (   R#   R<   R-   R  R   t   f0R>   RX   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_no_increase  s    			c      	   C` s   d   } d   } t  j d d d d g  } t j | | d d d	 i d
 d 6| d 6} t | j t  j d d d d g  d d d d  S(   Nc         S` s'   t  |  t j d d d d g  d  S(   Ng      ?g       @g      @g      @i   (   R(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR,   4  s    c         S` s_   t  j d d d d g d d d d g g  } t  j t  j | |   t  j d d g  |  g  S(   Niiii   i
   (   R   R   t   concatenateR&   (   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   cons7  s    -g      ?g      ?g      ?g       @R<   R   t   constraintst   ineqt   typeR@   g        i   i   i   i   RF   g-q=(   R   R   R   RJ   R   R   (   R#   R,   R	  R   RN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_slsqp_respect_bounds2  s    		c   
      C` s}  d   } d   } t  j d g  } t j | |  } t j | | d i d d 6| d 6g } t j | | d d g } t j | | d i d d 6| d 6g d d g } t j | | d i d d 6| d 6g d d g } x* | | | | | g D] }	 t |	 j  q Wt | j d d d t | j d d d t | j d	 d d t | j d	 d d t | j d d d d  S(   Nc         S` s   |  d S(   Ni   (    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR,   A  s    c         S` s   |  d S(   Ni   (    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR	  D  s    g      $@R
  R  R  R@   t   boundsi   i
   i   i    RF   gHz>i   (   i   i
   (   i   i
   (   i   i
   (   R   R   R   RJ   R   RW   R   R   (
   R#   R,   R	  R   t   sol_0t   sol_1t   sol_2t   sol_3t   sol_4RX   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_automethod@  s    		)22c         C` s   d   } d  d  } t j d d d d d d d d	 d d d g  } t j j t |   } t j | | d
 | d | d d d  S(   Nc         S` s   t  j |  | d  S(   Ni   (   R   R(   (   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   YW  s    c         S` s   d |  | S(   Ni   (    (   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   dY_dxZ  s    i   i   i   i   i	   i   i   R>   R;   R<   RZ   (   R   R   R   R   t   randnR   R   RJ   (   R#   R  R  R   t   xinit(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_coerce_args_paramU  s
    	0c   	   
   ` s  d d d g } d d d d g }     f d   }  f d	   } xRt  j | |  D]>\  } | d k r t d
  d  } n	 t   }  d k  r | d k r qX n  d g  d  g   t j |  d | d | d | } d j |    |  } t | j |  t	 | j
 d g d | t | j d k |   d k rX | d k rlt	   d d d | qt   d d k o  d d k  |  qX qX Wd  S(   NgJz5i   gd~QJR=   RZ   s   L-BFGS-Bs	   Newton-CGc         ` s~     d d  k rC |  d  d k rC t |  d  d    d <n  t |   j   d k rj t d   n   |  d d d S(   Ni    g     @s   Optimization stepped far away!i   i   (   R   R   R   t   AssertionError(   R   (   t   first_step_sizet   scaleR   (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR,   h  s
    $c         ` s   t  j   |  d d g  S(   Ni    i   (   R   R   (   R   (   R  (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR   o  s    t   gtolg:0yE>g|=g      R>   R<   R?   s   {0} {1}: {2}: {3}g      ?t   err_msgi   i    g)\(?g      ?(   R=   RZ   (   s   L-BFGS-Bs	   Newton-CG(   R=   RZ   (   R   t   productR   R   R   RJ   t   formatR   RW   R   R   Rk   (	   R#   t   scalest   methodsR,   R   R<   R?   RN   R  (    (   R  R  R   sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_initial_step_scalinga  s2    					 
(   R5   R6   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  t   markt   parametrizeR  R  R  R  R  R#  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s4   															&		8			t   TestLBFGSBBoundsc           B` sP   e  Z d    Z d d  Z d d  Z d d  Z d   Z d   Z d   Z RS(   c         C` s   d d f |  _ d |  _ d  S(   Ni   i    (   i   N(   NN(   i   i    (   R   R  R   (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR$     s    g       @c         C` s    d | | d | | d | S(   Ng      ?i    i   (    (   R#   R   R/   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR@     s    c         C` s   | | d S(   Ni   (    (   R#   R   R/   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR>     s    c         C` s"   |  j  | |  |  j | |  f S(   N(   R@   R>   (   R#   R   R/   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   fj  s    c         C` sk   t  j |  j d d g d |  j d |  j \ } } } t | d d k | d  t | |  j d d d  S(	   Ni    iRf   R  RS   t   taskRF   gư>(   R   R   R@   R>   R  R   R   R   (   R#   R   R,   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_l_bfgs_b_bounds  s
    	c         C` sh   t  j |  j d d g d d
 d |  j \ } } } t | d d k | d  t | |  j d d	 d  S(   Ni    iR;   g       @R  RS   R(  RF   gư>(   g       @(   R   R   R'  R  R   R   R   (   R#   R   R,   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR     s    c      	   C` se   t  j |  j d d g d d d |  j d |  j } t | d | d  t | j |  j d	 d
 d  S(   Ni    iR<   s   L-BFGS-BR>   R  RW   R   RF   gư>(	   R   RJ   R@   R>   R  R   R   R   R   (   R#   RN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_l_bfgs_b_bounds  s    (	   R5   R6   R$   R@   R>   R'  R)  R   R*  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR&    s   			t   TestOptimizeScalarc           B` s\   e  Z d    Z d d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 RS(
   c         C` s   d |  _  d  S(   Ng      ?(   R   (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR$     s    g      ?c         C` s   | | d d S(   s   Objective functioni   g?(    (   R#   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR@     s    c         C` s   t  j |  j  } t | |  j d d t  j |  j d d } t | |  j d d t  j |  j d t } t | d |  j d d t  j |  j d d } t | |  j d d d  S(   NRF   gư>t   brackiiRD   i    iii   (   ii(   iii   (   R   t   brentR@   R   R   RL   (   R#   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt
   test_brent  s    c         C` sd  t  j |  j  } t | |  j d d t  j |  j d d } t | |  j d d t  j |  j d t } t | d |  j d d t  j |  j d d } t | |  j d d t  j |  j d d } t | |  j  d d d g } xp | D]h } t  j |  j d d d t } t  j |  j d | d t } | d | d } } t | | |  q Wd  S(   NRF   gư>R,  iiRD   i    iii   R   i   i   R   i   (   ii(   iii   (   R   t   goldenR@   R   R   RL   R   (   R#   R   t   maxiter_test_casesR   R   t   nfev0RA   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_golden  s     c         C` s   t  j |  j d d  } t | d d d t  j |  j d d  } t | |  j d d t  j |  j t j d g  t j d g   } t | |  j d d t t t  j |  j d d  d  S(   Ni    i   RF   g-C6?i   gư>(	   R   t	   fminboundR@   R   R   R   R   Rx   Ry   (   R#   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_fminbound  s    0c      	   C` sv   t  j t d d $ t j |  j t j d  d  Wd  QXt j |  j d t j d   } t	 | |  j
 d d d  S(	   Nt   matchs   .*must be scalar.*i   i   i   RF   gư>(   i   i   (   R  R	   Ry   R   R3  R@   R   R   R   R   R   (   R#   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_fminbound_scalar  s    %!c      
   C` sq  t  j |  j  j } t | |  j d d t  j |  j d d } t | j  t  j |  j d d d t d d  } t | j  t  j |  j d d d d d d j } t | |  j d d t  j |  j d d d d j } t | |  j d d t  j |  j d d d d d d j } t | |  j d d t  j |  j d d d d d d j } t | |  j d d t  j |  j d d d d  j } t | |  j d d t  j |  j d d! d d" d d j } t | |  j d d t  j |  j d d# d d$ d d j } t | d d d t  j |  j d d% d d& d d j } t | |  j d d t  j |  j d t	 j
 d g  t	 j
 d g  f d t	 j
 d g  f d d j } t | |  j d d t t t  j |  j d d' d d d d( t t t  j |  j d t	 j d  d f d d d d) t  j |  j d d t	 j
 d  f d d j } t | |  j d d d  S(*   NRF   gư>R<   t   BrentR?   R   i   t   bracketiiR;   g      ?iii   R/  R  i    i   t   Boundedg-C6?i   t   boundedi   (   ii(   g      ?(   g      ?(   iii   (   g      ?(   ii(   g      ?(   g      ?(   iii   (   g      ?(   i    i   (   g      ?(   i   i   (   g      ?(   i   i   (   g      ?(   g      ?(   R   t   minimize_scalarR@   R   R   R   R   RW   R   R   R   Rx   Ry   R   (   R#   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_scalar  sV    "$c      
   C` sb   d d  d d d  d  } t j |  j d d d | d t d	 d
  } t | j |  j d d d  S(   Ng?id   c         [` s,  | d | d d } |  |  }	 d }
 d } t  } t } x | r | r | | k  r t } | d 7} xV | | | | g D]@ } |  | |  } |
 d 7}
 | |	 k  r{ | }	 | } t  } q{ q{ W| d  k	 r | |  n  | d  k	 r= |
 | k r= t  } Pq= q= Wt j d |	 d | d | d |
 d | d k  S(	   Ni   i    g       @R@   R   Rk   RA   RW   (   RL   RI   R   R   R   (   R@   R8  R;   R   R   R   R   R?   R   R   R   R   R   R   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR   6  s.    

R8  i    i   R<   R?   R   g?RF   gư>(    (   i    i   (   R   R   R;  R@   R   R   R   R   (   R#   R   RN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_minimize_scalar_custom4  s
    	c         C` s   t  j |  j d d d  S(   NR;   g      ?(   R   R;  R@   (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt&   test_minimize_scalar_coerce_args_paramV  s    (   R5   R6   R$   R@   R.  R2  R4  R6  R<  R=  R>  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR+    s   						<	"c           C` s    t  t t j t j d d d  S(   NR   g{Gz(   Rx   Ry   R   R-  R   t   cos(    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_brent_negative_tolerance[  s    t   TestNewtonCgc           B` s   e  Z d    Z d   Z RS(   c         C` s   t  j d d g  } t j t j | d t j d t j d d d d } t | j | j	  t
 | j t  j d	 d	 g  d
 d d  S(   Ng333333g      ?R>   R3   R   gh㈵>R<   s	   Newton-CGi   RG   g-C6?(   R   R   R   RJ   R   R   R   R   RW   R   R   R   (   R#   R   RX   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_rosenbrock`  s    			c         C` s|   t  j t  } t j t | d t d t d d d d } t | j	 | j
  t | j t d d t | j t d	 d d  S(
   NR>   R3   R<   s	   Newton-CGR   gư>RG   g-C6?RF   (   R   R   t   himmelblau_x0R   RJ   t
   himmelblaut   himmelblau_gradt   himmelblau_hessR   RW   R   R   R   t   himmelblau_xoptR@   t   himmelblau_min(   R#   R   RX   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_himmelblauj  s    		(   R5   R6   RB  RI  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRA  _  s   	
t	   TestRosenc           B` s   e  Z d    Z RS(   c         C` sn   t  j d d d g  } t  j d d d g  } t j | |  } t  j t j |  |  } t | |  d  S(   Ni   i   i   i   (   R   R   R   t   rosen_hess_prodR&   R   R   (   R#   R   R/   t   hpt   dothp(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt	   test_hessy  s
    (   R5   R6   RN  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRJ  w  s   c         C` s@   |  \ } } | | | d } | | | d } | | | | S(   sy   
    R^2 -> R^1 test function for optimization.  The function has four local
    minima where himmelblau(xopt) == 0.
    i   i   (    (   R/   R   R   R   t   b(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRD    s    c         C` sw   |  \ } } t  j d | d d | | d | d | d d d | d d | | d | d d | d g  S(   Ni   i   i*   i   i   i   i   (   R   R   (   R/   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRE    s    5c         C` sk   |  \ } } t  j d | d d | d d | d | g d | d | d | d | d d g g  S(   Ni   i   i   i*   i   (   R   R   (   R/   R   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRF    s    /gHzGѿgi   i   g        c          C` s   d   }  d   } d   } i d d 6|  d 6i d d 6| d 6i d d 6| d 6f } d   } t  j | d d d g d	 d
 d | } t | j d d d g d d d  S(   Nc         S` s4   t  j d d |  d d |  d d |  d g  S(   Ni   g?i    g?i   gQ?i   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR-     s    c         S` s   t  j |  d g  S(   Ni   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   func1  s    c         S` s   t  j |  d g  S(   Ni   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   func2  s    R  R  R@   c         S` s   d |  d |  d |  d S(   Nii    i   i   (    (   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRa     s    i    R<   R   R
  i}   RF   g|=(   R   RJ   R   R   (   R-   RP  RQ  R	  R,   RN   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt"   test_minimize_multiple_constraints  s    				't   TestOptimizeResultAttributesc           B` s   e  Z d    Z d   Z RS(   c         C` sR   d d g |  _  t j |  _ t j |  _ t j |  _ t j |  _	 d d g |  _
 d  S(   Ni   g        g      $@(   g        g      $@(   g        g      $@(   R   R   R   R-   R   R>   R   R3   RK  R4   R  (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR$     s    c         C` s  d d d d d d d d d	 d
 d g } d d d d d d d g } i d g d 6} x | D] } t    P } | j t d  t j |  j |  j d | d |  j d |  j d |  j	 } Wd  QXxY | D]Q } | | k r | | | k r q n  t
 t | |   t
 | t |  k  q WqY Wd  S(   Ns   Nelder-MeadRi   R=   RZ   s	   Newton-CGs   L-BFGS-BR   t   COBYLAR   R   s	   trust-ncgRk   RA   R   RW   RC   R@   R   s7   Method .+ does not use (gradient|Hessian.*) informationR<   R>   R3   R4   (   R
   t   filtert   RuntimeWarningR   RJ   R-   R   R>   R3   R4   R   t   hasattrt   dir(   R#   R"  t
   attributest   skipR<   t   supRN   t	   attribute(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_attributes_present  s$    			(   R5   R6   R$   R]  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRS    s   	t	   TestBrutec           B` sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C` sL   d |  _  t d d d  t d d d  f |  _ t j d d g  |  _ d  S(   Ni   i   i   i   i	   i
   i,   ii   i   ig      ?ii   g      ?g_}gi?(   i   i   i   i   i	   i
   i,   ii   i   i   ig      ?(   RO   t   slicet   rrangesR   R   R   (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR$     s    	'c         G` sq   | \ } } | \ } } } } }	 }
 } } } } } } } | | d | | | | | d | | |	 | |
 S(   Ni   (    (   R#   R   RO   R   R   R   RO  R   R   R`   R,   R   t   hR   Rv   R   t   lR  (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   f1  s    -c         G` sd   | \ } } | \ } } } } }	 }
 } } } } } } } | t  j | | d | | d |  S(   Ni   (   R   R   (   R#   R   RO   R   R   R   RO  R   R   R`   R,   R   Ra  R   Rv   R   Rb  R  (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   f2  s    -c         G` sd   | \ } } | \ } } } } }	 }
 } } } } } } } | t  j | | d | | d |  S(   Ni   (   R   R   (   R#   R   RO   R   R   R   RO  R   R   R`   R,   R   Ra  R   Rv   R   Rb  R  (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   f3  s    -c         G` s0   |  j  | |  |  j | |  |  j | |  S(   N(   Rc  Rd  Re  (   R#   R   RO   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR-     s    c      	   C` s   t  j |  j |  j d |  j d t d t  j } t | d |  j d d t | d |  j |  j |  j  d d t  j |  j |  j d |  j d t d t  j	 } t | d |  j d d t | d |  j |  j |  j  d d d  S(   NR;   RD   t   finishi    RF   gMbP?i   (
   R   t   bruteR-   R`  RO   RL   Rp   R   R   RJ   (   R#   t   resbrute(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt
   test_brute  s    ""c         C` s,   d   } t  j | d g d d d d  d  S(   Nc         S` s8   t  t |  j  d k  t  |  j d d k  |  d S(   Ni   i    i   (   R   R   t   shape(   R   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR,      s    ii   t   Nsi   Rf  (   ii   (   R   Rg  R   (   R#   R,   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_1D  s    	(	   R5   R6   R$   Rc  Rd  Re  R-   Ri  Rl  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR^    s   						t   TestIterationLimitsc           B` s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C` s   d |  _  d  S(   Ni    (   R   (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyR$     s    c         C` sj   |  j  d 7_  t j | d d | d d  t j | d | d  } } t j | d |  | d S(   Ni   i    i   i   g      ?(   R   R   R   t   arctan2t   sin(   R#   R   R   t   t(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt	   slow_func  s    >c         C` s   |  j  d d  d  S(   Ns   Nelder-Meadi   (   t   check_limits(   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_neldermead_limit  s    c         C` s   |  j  d d  d  S(   NR   i  (   Rr  (   R#   (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   test_powell_limit  s    c         C` s  xd d g d d g d d g g D]} x d d d g D] } d |  _  t j |  j | d | d	 i | d
 6} t |  j  | d k  | d r t | d | k   q8 t | d | k  q8 Wxt d d d g D]c } t j |  j | d | d	 i | d 6} | d rt | d | k  q t | d | k  q Wx d d g d d g d t j g g D] \ } } d |  _  t j |  j | d | d	 i | d 6| d
 6} t |  j  | d k  | d rt | d | k  o| d | k  q[t | d | k p| d | k  q[Wx t j d  g d  t j g g D] \ } } d |  _  t j |  j | d | d	 i | d 6| d
 6} t |  j  | d k  | d r| d  k rt | d | d k   qt | d | d k  q.t | d | d k p| d | d k  q.Wq" Wd  S(   Ng?i   i   i2   i  i  i    R<   R?   R   RA   RW   R   Rk   (   R   R   RJ   Rq  R   R   t   infR   (   R#   R<   t   default_iterst   start_vt   mfevRN   t   mit(    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRr    sD    (	

1	
'(+	
(   R5   R6   R$   Rq  Rs  Rt  Rr  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyRm    s
   				(0   R7   t
   __future__R    R   R   R   t   numpyR   t   numpy.testingR   R   R   R   R   R   R  R	   Rx   t   scipy._lib._numpy_compatR
   t   scipyR   R   R   R   R8   R   R   R   R   R   R   R   R&  R+  R@  RA  RJ  RD  RE  RF  RC  RG  RH  RR  RS  R^  Rm  (    (    (    sA   lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyt   <module>   sF   .	+ U		 $					!4