ó
î&]\c           @   sb   d  Z  d d l m Z m Z d d l m Z d d l Z d d l m	 Z	 d e
 f d „  ƒ  YZ d S(   s5   
Unit tests for TNC optimization routine from tnc.py
iÿÿÿÿ(   t   assert_allcloset   assert_equal(   t   optimizeN(   t   powt   TestTncc           B   sd  e  Z d  Z d „  Z d d „ Z d d „ Z d 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' RS('   sÝ   TNC non-linear optimization.

    These tests are taken from Prof. K. Schittkowski's test examples
    for constrained non-linear programming.

    http://www.uni-bayreuth.de/departments/math/~kschittkowski/home.htm

    c         C   s   i t  d 6d d 6|  _ d  S(   Nt   dispiÈ   t   maxiter(   t   Falset   opts(   t   self(    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   setup_method   s    g      Y@c         C   s;   | t  | d t  | d d ƒ d ƒ t  d | d d ƒ S(   Ni   i    i   g      ð?(   R   (   R	   t   xt   a(    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   f1   s    c         C   sY   d d g } d | | d t  | d d ƒ | d <d | d | d d d | d <| S(   Ni    i   i   g       Àg      ð?(   R   (   R	   R   R   t   dif(    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   g1   s    '"c         C   s"   |  j  | | ƒ |  j | | ƒ f S(   N(   R   R   (   R	   R   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   fg1#   s    c         C   s%   | d t  | d | d d ƒ d S(   Ni   i    i   gñhãˆµøä>(   R   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   f3&   s    c         C   s@   d d g } d | d | d d | d <d | d | d <| S(   Ni    g       Ài   gñhãˆµøä>g      ð?(    (   R	   R   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   g3)   s    c         C   s   |  j  | ƒ |  j | ƒ f S(   N(   R   R   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   fg3/   s    c         C   s!   t  | d d d ƒ d | d S(   Ni    g      ð?i   g      @i   (   R   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   f42   s    c         C   s5   d d g } t  | d d d ƒ | d <d | d <| S(   Ni    g      ð?i   i   (   R   (   R	   R   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   g45   s    
c         C   s   |  j  | ƒ |  j | ƒ f S(   N(   R   R   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   fg4;   s    c         C   sN   t  j | d | d ƒ t | d | d d ƒ d | d d | d d S(   Ni    i   i   g      ø?g      @g      ð?(   t   npt   sinR   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   f5>   s    c         C   se   d d g } t  j | d | d ƒ } d | d | d } | | d | d <| | d | d <| S(   Ni    i   g       @g      ø?g      @(   R   t   cos(   R	   R   R   t   v1t   v2(    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   g5B   s    c         C   s   |  j  | ƒ |  j | ƒ f S(   N(   R   R   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   fg5K   s    c         C   sÄ   d t  | d t  | d d ƒ d ƒ t  d | d d ƒ d t  | d t  | d d ƒ d ƒ t  d | d d ƒ d t  | d d d ƒ t  | d d d ƒ d	 | d d | d d d
 S(   Ng      Y@i   i    i   g      ð?g     €V@i   g333333$@gÍÌÌÌÌÌ3@gñhãˆµøä>(   R   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   f38N   s    £c         C   s"  d d d d g } d | d | d t  | d d ƒ d d | d d | d <d | d t  | d d ƒ d	 | d d d
 | d d d | d <d | d | d t  | d d ƒ d d | d d | d <d | d t  | d d ƒ d	 | d d d
 | d d d | d <| S(   Ni    g      yÀi   i   g       @g      ð?gñhãˆµøä>g      i@g3333334@gÍÌÌÌÌÌ3@i   g     €vÀg     €f@(   R   (   R	   R   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   g38U   s    $,$,c         C   s   |  j  | ƒ |  j | ƒ f S(   N(   R   R    (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   fg38a   s    c         C   s0   d | d | d | d | d | d d S(   Ng       @i    i   i   i   i   g      ^@(    (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   f45d   s    c         C   sè   d g d } | d | d | d | d d | d <| d | d | d | d d | d <| d | d | d | d d | d <| d | d | d | d d | d <| d | d | d | d d | d <| S(   Ni    i   i   i   i   i   g      ^@(    (   R	   R   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   g45g   s    +++++c         C   s   |  j  | ƒ |  j | ƒ f S(   N(   R"   R#   (   R	   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   fg45p   s    c         C   s°   d d g t  j d  g d d  g f } } d d g } g  } t j |  j | d d d |  j d | d |  j d	 | j ƒ} t	 | j
 |  j | ƒ d
 d ƒt t | ƒ | j ƒ d  S(   Niþÿÿÿi   g      ø¿t   methodt   TNCt   jact   boundst   optionst   callbackt   atolg:Œ0âŽyE>(   R   t   inft   NoneR   t   minimizeR   R   R   t   appendR    t   funR   t   lent   nit(   R	   t   x0t   bndst   xoptt   iterxt   res(    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc1u   s    )!c      	   C   s”   t  j d d g ƒ t  j d  g d d  g f } } d d g } t j |  j | d d d | d |  j ƒj } t	 |  j | ƒ |  j | ƒ d d	 ƒd  S(
   Niþÿÿÿi   g      ø¿R%   R&   R(   R)   R+   g-Cëâ6?(
   R   t   matrixR,   R-   R   R.   R   R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc1b€   s
    2c         C   s‘   d d g t  j d  g d d  g f } } d d g } t j |  j | d d d t d | d |  j ƒj } t	 |  j
 | ƒ |  j
 | ƒ d	 d
 ƒd  S(   Niþÿÿÿi   g      ø¿R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(   R   R,   R-   R   R.   R   t   TrueR   R   R    R   (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc1c‡   s    )c         C   s”   d d g t  j d  g d d  g f } } d d g } t j |  j | d d d |  j d | d	 |  j ƒj } t	 |  j | ƒ |  j | ƒ d
 d ƒd  S(   Niþÿÿÿi   g      ø?gA‡ÐR‰ó¿R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(
   R   R,   R-   R   R.   R   R   R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc2   s    )c         C   s”   d d g t  j d  g d d  g f } } d d g } t j |  j | d d d |  j d | d	 |  j ƒj } t	 |  j | ƒ |  j | ƒ d
 d ƒd  S(   Ni
   i   g        i    R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(
   R   R,   R-   R   R.   R   R   R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc3—   s    )c         C   s„   d d g d d g } } d d g } t j |  j | d d d |  j d | d	 |  j ƒj } t |  j | ƒ |  j | ƒ d
 d ƒd  S(   Ng      ò?g      À?i   i    R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(   i   N(   i    N(   R-   R   R.   R   R   R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc4Ÿ   s    c         C   s„   d d g d d g } } d d g } t  j |  j | d d	 d
 |  j d | d |  j ƒj } t |  j | ƒ |  j | ƒ d d ƒd  S(   Ni    g      ø¿i   iýÿÿÿi   gÊæZp¤‚á¿ges-8RÁø¿R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(   g      ø¿i   (   iýÿÿÿi   (   R   R.   R   R   R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc5§   s    c         C   s•   t  j d d d d g ƒ d g d } } d g d } t j |  j | d d d	 |  j d
 | d |  j ƒj } t |  j | ƒ |  j | ƒ d d ƒd  S(   Niýÿÿÿiÿÿÿÿiöÿÿÿi
   i   i   R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(   iöÿÿÿi
   (	   R   t   arrayR   R.   R   R    R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc38¯   s    )c         C   s—   d g d d d d d d g } } d d d d d g } t  j |  j | d d d	 |  j d
 | d |  j ƒj } t |  j | ƒ |  j | ƒ d d ƒd  S(   Ni   i   i    i   i   i   R%   R&   R'   R(   R)   R+   g:Œ0âŽyE>(   i    i   (   i    i   (   i    i   (   i    i   (   i    i   (   R   R.   R"   R#   R   R   R    (   R	   R3   R4   R5   R   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   test_minimize_tnc45·   s    #c         C   sµ   |  j  d d g t j d  g d d  g f } } } d d g } t j | | d | d d d t j j d d	 ƒ\ } } } t |  j	 | ƒ |  j	 | ƒ d
 d d d t j j
 | ƒd  S(   Niþÿÿÿi   g      ø¿R(   t   argsg      Y@t   messagest   maxfuniÈ   R+   g:Œ0âŽyE>t   err_msgs   TNC failed with status: (   g      Y@(   R   R   R,   R-   R   t   fmin_tnct   tnct   MSG_NONER    R   t	   RCSTRINGS(   R	   t   fgR   R(   R5   t   nft   rc(    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt	   test_tnc1À   s    3$c         C   s®   d d g t  j d  g d d  g f } } d d g } t j |  j | d t d | d t j j d d ƒ\ } } } t	 |  j | ƒ |  j | ƒ d	 d
 d d t j j
 | ƒd  S(   Niþÿÿÿi   g      ø¿t   approx_gradR(   RE   RF   iÈ   R+   g-Cëâ6?RG   s   TNC failed with status: (   R   R,   R-   R   RH   R   R;   RI   RJ   R    RK   (   R	   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt
   test_tnc1bÌ   s    )$c         C   s±   d d g t  j d  g d d  g f } } d d g } t j |  j | d |  j d | d t j j d d ƒ\ } } } t	 |  j | ƒ |  j | ƒ d	 d
 d d t j j
 | ƒd  S(   Niþÿÿÿi   g      ø¿t   fprimeR(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   R   R,   R-   R   RH   R   R   RI   RJ   R    RK   (   R	   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt
   test_tnc1cÙ   s    )$c      	   C   s¯   |  j  d d g t j d  g d d  g f } } } d d g } t j | | d | d t j j d d ƒ\ } } } t |  j	 | ƒ |  j	 | ƒ d	 d
 d d t j j
 | ƒd  S(   Niþÿÿÿi   g      ø?gA‡ÐR‰ó¿R(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   R   R   R,   R-   R   RH   RI   RJ   R    R   RK   (   R	   RL   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt	   test_tnc2æ   s    3$c      	   C   s¯   |  j  d d g t j d  g d d  g f } } } d d g } t j | | d | d t j j d d ƒ\ } } } t |  j	 | ƒ |  j	 | ƒ d	 d
 d d t j j
 | ƒd  S(   Ni
   i   g        i    R(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   R   R   R,   R-   R   RH   RI   RJ   R    R   RK   (   R	   RL   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt	   test_tnc3ò   s    3$c      	   C   sŸ   |  j  d d g d d g } } } d d g } t j | | d | d t j j d d ƒ\ } } } t |  j | ƒ |  j | ƒ d	 d
 d d t j j | ƒd  S(   Ng      ò?g      À?i   i    R(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   i   N(   i    N(	   R   R-   R   RH   RI   RJ   R    R   RK   (   R	   RL   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt	   test_tnc4þ   s    #$c      	   C   sŸ   |  j  d d g d d g } } } d d g } t j | | d | d	 t j j d
 d ƒ\ } } } t |  j | ƒ |  j | ƒ d d d d t j j | ƒd  S(   Ni    g      ø¿i   iýÿÿÿi   gÊæZp¤‚á¿ges-8RÁø¿R(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   g      ø¿i   (   iýÿÿÿi   (   R   R   RH   RI   RJ   R    R   RK   (   R	   RL   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt	   test_tnc5
  s    #$c      	   C   s°   |  j  t j d d d d g ƒ d g d } } } d g d } t j | | d | d t j j d	 d
 ƒ\ } } } t |  j | ƒ |  j | ƒ d d d d t j j	 | ƒd  S(   Niýÿÿÿiÿÿÿÿiöÿÿÿi
   i   i   R(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   iöÿÿÿi
   (
   R!   R   RA   R   RH   RI   RJ   R    R   RK   (   R	   RL   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt
   test_tnc38  s    3$c      	   C   s²   |  j  d g d d d d d d g } } } d d d d d g } t j | | d | d t j j d	 d
 ƒ\ } } } t |  j | ƒ |  j | ƒ d d d d t j j | ƒd  S(   Ni   i   i    i   i   i   R(   RE   RF   iÈ   R+   g:Œ0âŽyE>RG   s   TNC failed with status: (   i    i   (   i    i   (   i    i   (   i    i   (   i    i   (   R$   R   RH   RI   RJ   R    R"   RK   (   R	   RL   R   R(   R5   RM   RN   (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt
   test_tnc45"  s    $((   t   __name__t
   __module__t   __doc__R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R8   R:   R<   R=   R>   R?   R@   RB   RC   RO   RQ   RS   RT   RU   RV   RW   RX   RY   (    (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyR      sL   																																				(   R\   t   numpy.testingR    R   t   scipyR   t   numpyR   t   mathR   t   objectR   (    (    (    s<   lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyt   <module>   s
   