
    !#h                       d dl mZ d dlmZ d dlmZ d dlZd dlmZ d dl	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 erd dlZnd dlmZ  ed      ZddZddZddZd dZd dZ G d de      Z ed       G d d             Z ed       G d de             Z	 	 	 d!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d"dZd#dZd$dZ	 	 	 	 	 	 d%dZ y)&    )annotations)	dataclass)IntEnumN)TYPE_CHECKING)kernel)KernelParamsTensor)	posterior)	ScaleType)SearchSpace)_LazyImporttorchc                   | dk  }t        j                  |       }| |   }| |    }t        j                  dt        j                  z        }dt         j
                  j                  | t        j                  d      z        z  }t        j                  d|dz  z        d|z  z  }t        j                  ||z  |z         || <   t        j                  dt        j                  z        t         j
                  j                  | t        j                  d      z        z  }d|dz  z  t        j                  ||z  dz   d|z  z        z   ||<   |S )Ni   g      ?g         )
r   
empty_likemathsqrtpispecialerfcexplogerfcx)	zsmallvalsz_smallz_normalsqrt_2picdfpdfrs	            L/var/www/html/sandstorm/venv/lib/python3.12/site-packages/optuna/_gp/acqf.pystandard_logeir$      s   
 GEAD hG%yHyyTWW%H
""H9tyy~#=>
>C
))D8Q;&
'1x<
8C99X^c12D%L		#- 5==#6#6x$))C.7P#QQA!#eii1qQ\0R&SSDKK    c                    t        j                  |      }t        | |z
  |z        }t        j                  |      |z   }|S N)r   r   r$   r   )meanvarf0sigmast_valvals         r#   logeir.   0   s:    JJsOETBY%/0F
))E
V
#CJr%   c                v    t        j                  |      }t         j                  j                  || z
  |z        S r'   )r   r   r   log_ndtr)r(   r)   r*   r+   s       r#   logpir1   8   s/     JJsOE==!!29"566r%   c                8    | t        j                  ||z        z   S r'   r   r   r(   r)   betas      r#   ucbr6   @       %**TCZ(((r%   c                8    | t        j                  ||z        z
  S r'   r3   r4   s      r#   lcbr9   D   r7   r%   c                      e Zd ZdZdZdZdZy)AcquisitionFunctionTyper   r   r      N)__name__
__module____qualname__LOG_EIUCBLCBLOG_PI r%   r#   r;   r;   J   s    F
C
CFr%   r;   T)frozenc                  h    e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   y)AcquisitionFunctionParamsr;   	acqf_typer   kernel_params
np.ndarrayXr   search_spacecov_Y_Y_invcov_Y_Y_inv_Yfloatmax_Yfloat | Noner5   acqf_stabilizing_noiseN)r=   r>   r?   __annotations__rD   r%   r#   rG   rG   Q   s8    &&%%M L
!!r%   rG   c                  6    e Zd ZU ded<   e	 	 	 	 	 	 dd       Zy)$ConstrainedAcquisitionFunctionParamslist[AcquisitionFunctionParams]acqf_params_for_constraintsc                     | |j                   |j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |
      S )N)
rH   rI   rK   rL   rM   rN   rP   r5   rR   rW   	rH   rI   rK   rL   rM   rN   rP   r5   rR   )clsacqf_paramsrW   s      r#   from_acqf_paramsz5ConstrainedAcquisitionFunctionParams.from_acqf_paramsd   sc     !++%33mm$11#//%33##!!#.#E#E(C
 	
r%   N)r[   rG   rW   rV   returnrU   )r=   r>   r?   rS   classmethodr\   rD   r%   r#   rU   rU   `   s7    !@@
.
 &E
 
.	
 
r%   rU   c                V   t        j                  |      }t        j                  |j                  t        j                  k(        }	t        j
                         5  t        |	|||      j                         j                         }
d d d        
t        j                  |j                  d         xx   |j                  j                         z  cc<   t        j                  j                  |
      }t!        | ||||||z  ||nt        j"                  |      ||	      S # 1 sw Y   xY w)Nr   rY   )r   
from_numpyscale_typesr
   CATEGORICALno_gradr   detachnumpynpdiag_indicesshape	noise_varitemlinalginvrG   max)rH   rI   rL   rK   YrP   r5   rR   X_tensoris_categoricalcov_Y_YrM   s               r#   create_acqf_paramsrr   x   s     "H%%l&>&>)BWBW&WXN	 ](KRRTZZ\] BOOAGGAJ'(M,C,C,H,H,JJ())--(K$#
!!Ao(ebffQi5
 
] ]s   +DD(c           	        t        | j                  t        j                  | j                        t        j                  | j
                  j                  t        j                  k(        t        j                  | j                        t        j                  | j                              \  }}| j                  t        j                  k(  rjt        j                  | j                         s%t#        ||| j$                  z   | j                         n$t        j&                  dt        j(                        }n| j                  t        j*                  k(  r&t-        ||| j$                  z   | j                         }n| j                  t        j.                  k(  r,| j0                  J d       t3        ||| j0                        }nP| j                  t        j4                  k(  r,| j0                  J d       t7        ||| j0                        }nJ d       t9        | t:              r#t=        fd| j>                  D              }||z   S |S )	N)r(   r)   r*   g        )dtypezbeta must be given to UCB.r4   zbeta must be given to LCB.z"Unknown acquisition function type.c              3  6   K   | ]  }t        |        y wr'   )	eval_acqf).0paramsxs     r#   	<genexpr>zeval_acqf.<locals>.<genexpr>   s     _VIfa(_s   ) r	   rI   r   r`   rK   rL   ra   r
   rb   rM   rN   rH   r;   r@   rf   isneginfrP   r.   rR   tensorfloat64rC   r1   rA   r5   r6   rB   r9   
isinstancerU   sumrW   )r[   ry   r(   r)   f_valc_vals    `    r#   rv   rv      s   !!'11==AVAVVW001223	ID#  7 > >>
 ;;{001 t{'I'I!IkN_N_`c7 	
 
		"9"@"@	@3!C!CCHYHY
 
		"9"="=	=+I-II+3[-=-=>			"9"="=	=+I-II+3[-=-=>:::u+CD_{7^7^__u}r%   c                    t        j                         5  t        | t        j                  |            j	                         j                         cd d d        S # 1 sw Y   y xY wr'   )r   rc   rv   r`   rd   re   )r[   ry   s     r#   eval_acqf_no_gradr      sK    	 Le&6&6q&9:AACIIKL L Ls   ;AA#c                   |j                   dk(  sJ t        j                  |      }|j                  d       t	        | |      }|j                          |j                         |j                  j                         j                         fS )Nr   T)
ndimr   r`   requires_grad_rv   backwardrj   gradrd   re   )r[   ry   x_tensorr-   s       r#   eval_acqf_with_gradr      sn     66Q;;"HD!
K
*CLLN88:x}}++-33555r%   )r   torch.Tensorr]   r   )r(   r   r)   r   r*   rO   r]   r   )r(   r   r)   r   r5   rO   r]   r   )NNg-q=)rH   r;   rI   r   rL   r   rK   rJ   rn   rJ   rP   rQ   r5   rQ   rR   rO   r]   rG   )r[   rG   ry   r   r]   r   )r[   rG   ry   rJ   r]   rJ   )r[   rG   ry   rJ   r]   ztuple[float, np.ndarray])!
__future__r   dataclassesr   enumr   r   typingr   re   rf   optuna._gp.gpr   r   r	   optuna._gp.search_spacer
   r   r   optuna._importsr   r$   r.   r1   r6   r9   r;   rG   rU   rr   rv   r   r   rD   r%   r#   <module>r      s.   " !        , # - / + E.7))g  $" " " $
+D 
 
: $)&%  	
    " >#LL
6*6/966r%   