ó
Z™xTc           @   sy  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d	 l Z d
 Z e j d d g ƒ Z d Z d 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 „  Z e d k rud  d	 l Z e d e j d ƒ n  d	 S(   iÿÿÿÿ(   t   division(   t   Function(   t   simplex(   t!   direct_search_simulated_annealing(   t   differential_evolution(   t   cross_entropy(   t   lbfgs(   t   flexNi   i   i    g:Œ0âŽyE>c   	      C   s…   |  j  ƒ  } |  j  ƒ  } | | ƒ } | d } xB t | ƒ D]4 \ } } | | | | <| | ƒ | | <| | | <q; W| | | } | S(   Ng        (   t	   deep_copyt	   enumerate(	   t   vectort   ft   ht   orit   tmpt   f0t   f_vectort   iit   var(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyt
   derivative   s    
t
   test_lbfgsc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s}   t  j ƒ  |  _ d |  _ | |  _ d |  _ t j d |  ƒ |  _ d G|  j j	 ƒ  G|  j Gd Gt
 |  j ƒ G|  j |  j ƒ GHd  S(   Ni   i    t   target_evaluators   LBFGS ITERATIONSs	    SOLUTION(   t   startR   t   xt   nt   namet   fcountR   t   runt	   minimizert   itert   listt   function(   t   selfR   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyt   __init__!   s    			c         C   s1   |  j  d 7_  t |  j ƒ t ƒ j | ƒ } | S(   Ni   (   R   R   R   t   dimt   eval(   R    R
   t   result(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR   )   s    c         C   s7   |  j  |  j ƒ } t |  j |  j  d d ƒ} | | f S(   NR   gñhãˆµøä>(   R   R   R   (   R    R   t   g(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyt    compute_functional_and_gradients.   s    (   t   __name__t
   __module__R!   R   R&   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR       s   		t   test_simplexc           B   s   e  Z d  „  Z d „  Z RS(   c      	   C   sú   d |  _  t j ƒ  |  _ | |  _ g  |  _ d |  _ xJ t |  j  d ƒ D]5 } |  j j t	 j
 |  j  ƒ d d d |  j ƒ qG Wt j d |  j  d |  j d |  d d	 ƒ |  _ |  j j ƒ  |  _ d
 G|  j j G|  j Gd Gt |  j ƒ G|  j |  j ƒ GHd  S(   Ni   i    i   ga2U0*©3?t	   dimensiont   matrixt	   evaluatort	   toleranceg»½×Ùß|Û=s   SIMPLEX ITRATIONSt   SOLUTION(   R   R   R   R   R   t   starting_simplexR   t   ranget   appendR   t   random_doubleR   t   simplex_optt	   optimizert   get_solutiont   countR   t   target(   R    R   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR!   4   s    				3			c         C   s+   |  j  d 7_  t |  j ƒ t ƒ j | ƒ S(   Ni   (   R   R   R   R"   R#   (   R    R
   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR7   D   s    (   R'   R(   R!   R7   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR)   3   s   	t	   test_dssac           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s  | |  _  d |  _ d |  _ t j ƒ  |  _ g  |  _ xJ t |  j d ƒ D]5 } |  j j d t	 j
 |  j ƒ d d |  j ƒ qG Wt j d |  j d |  j d |  d t d	 d
 d d ƒ |  _ |  j j ƒ  |  _ d G|  j j G|  j Gd Gt |  j ƒ G|  j |  j ƒ GHd  S(   Ni    i   i   gÍÌÌÌÌÌ@R*   R+   R,   t   further_optt
   coolfactorg      à?t   simplex_scales   DSSA ITERATIONSR.   (   R   R   R   R   R   R   R/   R0   R1   R   R2   R   t   dssat   TrueR4   R5   R6   R   R7   (   R    R   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR!   J   s    				3			c         C   s+   |  j  d 7_  t |  j ƒ t ƒ j | ƒ S(   Ni   (   R   R   R   R"   R#   (   R    R
   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR   \   s    c         C   s   |  j  | ƒ S(   N(   R   (   R    R
   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR7   `   s    c         C   s7   |  j  |  j ƒ } t |  j |  j  d d ƒ} | | f S(   NR   gñhãˆµøä>(   R   R   R   (   R    R   R%   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR&   c   s    (   R'   R(   R!   R   R7   R&   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR8   I   s   			t   test_cross_entropyc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sï   | |  _  d |  _ d |  _ t j ƒ  |  _ t j |  j d ƒ |  _ t j |  j d ƒ |  _	 t
 j |  d |  j d |  j	 d d d	 d
 d d d d d d d d d d d d ƒ
|  _ d G|  j j G|  j Gd Gt |  j j ƒ G|  j |  j j ƒ GHd  S(   Ni    i   g      @g       @t   meant   sigmat   alphagffffffî?t   betag      è?t   qg      !@t
   elite_sizei
   t   sample_sizei2   t
   inject_epsg-Cëâ6?t   monitor_cyclei–   t   epsg:Œ0âŽyE>s   CROSS ENTROPY ITERATIONSR.   (   R   R   R   R   R   R   R   t   doublet   meanst   sigmasR   t   cross_entropy_optimizerR4   R6   R   t   best_solR7   (   R    R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR!   k   s     					c         C   s1   |  j  d 7_  t |  j ƒ t ƒ j | ƒ } | S(   Ni   (   R   R   R   R"   R#   (   R    R
   R$   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR   }   s    c         C   s   |  j  | ƒ S(   N(   R   (   R    R
   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR7   ‚   s    c         C   s7   |  j  |  j ƒ } t |  j |  j  d d ƒ} | | f S(   NR   gñhãˆµøä>(   R   R   R   (   R    R   R%   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR&   …   s    (   R'   R(   R!   R   R7   R&   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR>   j   s   			t   test_differential_evolutionc           B   s8   e  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z RS(   i   c         C   sÊ   | |  _  d |  _ d |  _ d  |  _ t d d t d d f t d d t d d f g |  _ t j |  d | d d d d d d	 d
 t	 ƒ|  _
 d G|  j
 j G|  j Gd Gt |  j ƒ G|  j |  j ƒ GHd  S(   Ni    i   i   t   population_sizet   crgÍÌÌÌÌÌì?t   n_crossRH   gê-�™—q=t   show_progresss!   DIFFERENTIAL EVOLUTION ITERATIONSR.   (   R   R   R   t   NoneR   R   t   domainR   t    differential_evolution_optimizert   FalseR4   R6   R   R7   (   R    R   t   npop(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR!   �   s    				;0c         C   s1   |  j  d 7_  t |  j ƒ t ƒ j | ƒ } | S(   Ni   (   R   R   R   R"   R#   (   R    R
   R$   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR   ˜   s    c         C   s   |  j  | ƒ S(   N(   R   (   R    R
   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR7   �   s    c         C   s7   |  j  |  j ƒ } t |  j |  j  d d ƒ} | | f S(   NR   gñhãˆµøä>(   R   R   R   (   R    R   R%   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR&       s    c         C   s   | G| G| Gt  | ƒ GHd  S(   N(   R   (   R    t   minsRJ   R
   t   txt(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyt   print_status¥   s    (   R'   R(   R!   R   R7   R&   RZ   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyRN   Ž   s
   				t   test_cma_esc           B   s&   e  Z d  d „ Z d „  Z d „  Z RS(   i    c         C   sÒ   t  j ƒ  |  _ t j d d g ƒ |  _ | |  _ | |  _ d |  _ d d l	 m
 } | j d |  j |  j |  j |  j ƒ |  _ d G|  j j G|  j Gd Gt |  j j ƒ G|  j |  j j ƒ GH|  j j j ƒ  |  _ d  S(   Ni   i    iÿÿÿÿ(   t   cma_es_interfaces   CMA-ES ITERATIONSR.   (   R   R   t   mR   RI   t   st   lR   R   t   cma_esR\   t   cma_es_drivert   my_functionR   R6   R   t   x_finalR   (   R    R   R_   R\   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR!   «   s    			*=c         C   s7   |  j  |  j ƒ } t |  j |  j  d d ƒ} | | f S(   NR   gñhãˆµøä>(   Rb   R   R   (   R    R   R%   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR&   ¸   s    c         C   s7   |  j  d 7_  t |  j ƒ t ƒ } | j t | ƒ ƒ S(   Ni   (   R   R   R   R"   R#   R   (   R    R
   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyRb   ½   s    (   R'   R(   R!   R&   Rb   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR[   ª   s   	c         C   s  t  |  ƒ d k s t ‚ t j j d ƒ } | s9 d GHHn  d d d d g } x² | D]ª } d G| Gd GH| d k r‰ t j d	 d	 g ƒ } n t j d
 d
 g ƒ } xZ t d ƒ D]L } t | ƒ | rÎ t	 | ƒ n  t
 | ƒ t | ƒ t | ƒ t | ƒ Hq« WHqR Wd d l m } | ƒ  GHd  S(   Ni    R`   sC   Skipping some tests: cma_es module not available or not configured.t   easomt
   rosenbrockt   ackleyt	   rastrigins   ****g        i   i   iÿÿÿÿ(   t   format_cpu_times(   t   lent   AssertionErrort   libtbxt   envt
   has_moduleR   RI   R0   R   R[   RN   R>   R)   R8   t   libtbx.utilsRh   (   t   argst   have_cma_est   namesR   R   R   Rh   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyR   Ã   s.    




t   __main__Ro   i   (   t
   __future__R    t	   functionsR   t   scitbxR   R   R   R   R   t   scitbx.array_familyR   t   libtbx.load_envRk   R"   RI   R   t   funct_countR   t   objectR   R)   R8   R>   RN   R[   R   R'   t   syst   argv(    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/minimizer_comparisons.pyt   <module>   s,   !$	