ó
î&]\c           @` sŸ   d  Z  d d l m Z m Z 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 m Z d d
 d „  ƒ  YZ d e f d	 „  ƒ  YZ d S(   st   
Unit tests for trust-region optimization routines.

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

i    (   t   divisiont   print_functiont   absolute_importN(   t   minimizet   rosent	   rosen_dert
   rosen_hesst   rosen_hess_prod(   t   assert_t   assert_equalt   assert_allcloset   Accumulatorc           B` s    e  Z d  Z d „  Z d „  Z RS(   s    This is for testing callbacks.c         C` s   d |  _  d  |  _ d  S(   Ni    (   t   countt   Nonet   accum(   t   self(    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   __init__   s    	c         C` sF   |  j  d 7_  |  j d  k r3 t j | ƒ |  _ n |  j | 7_ d  S(   Ni   (   R   R   R   t   npt   array(   R   t   x(    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   __call__   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyR      s   	t   TestTrustRegionSolversc           B` sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C` s1   d d g |  _  d d g |  _ d d g |  _ d  S(   Ng      ð?g       @g333333ó¿(   t   x_optt
   easy_guesst
   hard_guess(   R   (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   setup_method    s    c         C` sƒ   |  j  } t t | d t d t d d d d d i t d 6ƒ} t | | d	 d
 ƒ t | d | d	 d ƒ t | d |  j ƒ d  S(   Nt   jact   hesst   tolg:Œ0âŽyE>t   methodt   doglegt   optionst
   return_allt   allvecsi    R   iÿÿÿÿ(   R   R   R   R   R   t   TrueR
   R   (   R   t   x0t   r(    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   test_dogleg_accuracy%   s    	c         C` s³   t  ƒ  } d } t t |  j d t d t d | d d d i t d 6| d	 6ƒ} t | j | ƒ t t	 | d
 ƒ | d ƒ t
 | d | d
 d ƒ t
 t | d
 d ƒ | j ƒ d  S(   Ni   R   R   t   callbackR    R!   R"   R#   t   maxiterR$   i   R   iÿÿÿÿ(   R   R   R   R   R   R   R%   R	   R   t   lenR
   t   sumR   (   R   t   accumulatorR*   R'   (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   test_dogleg_callback.   s    	c   
      C` s¿  t  } t } t } x¦|  j |  j f D]’} t | | d | d | d d d d d i t d 6ƒ} t | | d | d | d d d d	 d i t d 6ƒ} t | | d | d | d d d d
 d i t d 6ƒ} t | | d | d | d d d d d i t d 6ƒ} t | | d | d | d d d d d i t d 6ƒ}	 t |  j | d ƒ t |  j | d ƒ t |  j | d ƒ t |  j | d ƒ t |  j |	 d ƒ t	 t
 | d ƒ t
 | d ƒ k  ƒ q% Wd  S(   NR   R   R   g:Œ0âŽyE>R    R!   R"   R#   s	   trust-ncgs   trust-krylovs	   newton-cgs   trust-exactR   R$   (   R   R   R   R   R   R   R%   R
   R   R   R+   (
   R   t   ft   gt   hR&   t   r_doglegt   r_trust_ncgt   r_trust_krylovt   r_ncgt   r_iterative(    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   test_solver_concordance:   s.    c         C` sb   x[ |  j  |  j |  j f D]A } t t | d t d t d d d d ƒ} t |  j | d ƒ q Wd  S(   NR   t   hesspR   g:Œ0âŽyE>R    s	   trust-ncgR   (   R   R   R   R   R   R   R   R
   (   R   R&   R'   (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   test_trust_ncg_hesspW   s    c         C` sE   t  t d |  j d t d t d d d d ƒ} t |  j | d ƒ d  S(	   NR&   R   R   R   g:Œ0âŽyE>R    s	   trust-ncgR   (   R   R   R   R   R   R
   (   R   R'   (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   test_trust_ncg_start_in_optimum]   s    c         C` sE   t  t d |  j d t d t d d d d ƒ} t |  j | d ƒ d  S(	   NR&   R   R   R   g:Œ0âŽyE>R    s   trust-krylovR   (   R   R   R   R   R   R
   (   R   R'   (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt"   test_trust_krylov_start_in_optimumb   s    c         C` sE   t  t d |  j d t d t d d d d ƒ} t |  j | d ƒ d  S(	   NR&   R   R   R   g:Œ0âŽyE>R    s   trust-exactR   (   R   R   R   R   R   R
   (   R   R'   (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt!   test_trust_exact_start_in_optimumg   s    (
   R   R   R   R(   R.   R7   R9   R:   R;   R<   (    (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyR      s   								(    (   R   t
   __future__R    R   R   t   numpyR   t   scipy.optimizeR   R   R   R   R   t   numpy.testingR   R	   R
   R   t   objectR   (    (    (    sD   lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyt   <module>   s   (