Ë
    (†^i"  ã                  ó°  — d dl mZ d dlmZ d dl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 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  ej0                  «       rd dlmZ  e	e«      ZdZdZ G d„ de«      Z ed«      dddef	 	 	 	 	 	 	 	 	 	 	 dd„«       Z	 	 	 d	 	 	 	 	 	 	 	 	 dd„Z 	 	 d	 	 	 	 	 	 	 	 	 d d„Z!	 	 	 	 	 	 d!d„Z"d"d„Z#d#d„Z$y)$é    )Úannotations)Ú
NamedTupleN)Úexperimental_func)Ú
get_logger)ÚStudy)ÚBaseErrorEvaluator)ÚBaseImprovementEvaluator)ÚCrossValidationErrorEvaluator)ÚRegretBoundEvaluator)ÚStaticErrorEvaluator)ÚBestValueStagnationEvaluator)ÚDEFAULT_MIN_N_TRIALS)Ú_imports)Úgogš™™™™™©?g      Ð?c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_ImprovementInfoú	list[int]Útrial_numbersúlist[float]Úimprovementsúlist[float] | NoneÚerrorsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úm/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/optuna/visualization/_terminator_improvement.pyr   r      s   … ØÓØÓØÔr   r   z3.2.0Fc                ó^   — t        j                  «        t        | |||«      }t        ||«      S )aÆ  Plot the potentials for future objective improvement.

    This function visualizes the objective improvement potentials, evaluated
    with ``improvement_evaluator``.
    It helps to determine whether we should continue the optimization or not.
    You can also plot the error evaluated with
    ``error_evaluator`` if the ``plot_error`` argument is set to :obj:`True`.
    Note that this function may take some time to compute
    the improvement potentials.

    Args:
        study:
            A :class:`~optuna.study.Study` object whose trials are plotted
            for their improvement.
        plot_error:
            A flag to show the error. If it is set to :obj:`True`, errors
            evaluated by ``error_evaluator`` are also plotted as line graph.
            Defaults to :obj:`False`.
        improvement_evaluator:
            An object that evaluates the improvement of the objective function.
            Defaults to :class:`~optuna.terminator.RegretBoundEvaluator`.
        error_evaluator:
            An object that evaluates the error inherent in the objective function.
            Defaults to :class:`~optuna.terminator.CrossValidationErrorEvaluator`.
        min_n_trials:
            The minimum number of trials before termination is considered.
            Terminator improvements for trials below this value are
            shown in a lighter color. Defaults to ``20``.

    Returns:
        A :class:`plotly.graph_objects.Figure` object.
    )r   ÚcheckÚ_get_improvement_infoÚ_get_improvement_plot)ÚstudyÚ
plot_errorÚimprovement_evaluatorÚerror_evaluatorÚmin_n_trialsÚinfos         r   Úplot_terminator_improvementr*   %   s-   € ôP ‡NNÔä  ¨
Ð4IÈ?Ó[€DÜ   |Ó4Ð4r   c                óä  — | j                  «       rt        d«      ‚|€
t        «       }|€'t        |t        «      rt        d¬«      }n
t        «       }g }g }g }g }t        j                  | j                  «      D ]Í  }|j                  t        j                  j                  j                  k(  r|j                  |«       t        |«      dk(  rŒT|j                  |j                   «       |j#                  || j$                  ¬«      }	|j                  |	«       |sŒ |j#                  || j$                  ¬«      }
|j                  |
«       ŒÏ t        |«      dk(  rt'        ||d ¬«      S t'        |||¬«      S )NzBThis function does not support multi-objective optimization study.r   )Úconstant)ÚtrialsÚstudy_direction)r   r   r   )Ú_is_multi_objectiveÚ
ValueErrorr   Ú
isinstancer   r   r
   Útqdmr-   ÚstateÚoptunaÚtrialÚ
TrialStateÚCOMPLETEÚappendÚlenÚnumberÚevaluateÚ	directionr   )r$   Ú	get_errorr&   r'   r   Úcompleted_trialsr   r   r5   ÚimprovementÚerrors              r   r"   r"   S   sb  € ð × Ñ Ô"ÜÐ]Ó^Ð^àÐ$Ü 4Ó 6ÐØÐÜÐ+Ô-IÔJÜ2¸AÔ>‰Oä;Ó=ˆOà€MØÐØ€LØ€Fä—‘˜5Ÿ<™<Ó(ò !ˆØ;‰;œ&Ÿ,™,×1Ñ1×:Ñ:Ò:Ø×#Ñ# EÔ*äÐÓ  AÒ%Øà×Ñ˜UŸ\™\Ô*à+×4Ñ4Ø#°U·_±_ð 5ó 
ˆð 	×Ñ˜KÔ(âØ#×,Ñ,Ø'¸¿¹ð -ó ˆEð M‰M˜%Õ ð%!ô( ˆ6ƒ{aÒÜØ'°lÈ4ô
ð 	
ô  Ø'°lÈ6ô
ð 	
r   c           
     óp   — d|› d}t        j                  | |dt        |¬«      t        |¬«      d|d¬«      S )Nzrgba(99, 110, 250, ú)úmarkers+lines©ÚcolorúTerminator Improvementr?   )ÚxÚyÚmodeÚmarkerÚlineÚnameÚ
showlegendÚlegendgroup©r   ÚScatterÚdict)r   r   ÚopacityrM   Úplotly_blue_with_opacitys        r   Ú_get_improvement_scatterrT   ‡   sH   € ð "5°W°I¸QÐ?ÐÜ:‰:Ø
Ø
ØÜÐ2Ô3ÜÐ0Ô1Ø%ØØ!ô	ð 	r   c           
     ó   — |€t        j                  «       S d}t        j                  | |ddt        |¬«      t        |¬«      ¬«      S )Nzrgb(239, 85, 59)rC   ÚErrorrD   )rG   rH   rI   rL   rJ   rK   rO   )r   r   Ú
plotly_reds      r   Ú_get_error_scatterrX   š   sG   € ð €~Üz‰z‹|Ðà#€JÜ:‰:Ø
Ø
ØØÜ˜*Ô%Ü˜
Ô#ôð r   c                ó  — t        | j                  «      }| j                  t        |t        | j                  «      «      }t        | j                  «      |kD  rt        | j                  |d  «      }nt        | j                  «      }| j                  t        |t        | j                  «      «      }||z
  t        z  }||z
  ||z   fS )N)Úminr   r   r9   r   ÚmaxÚPADDING_RATIO_Y)r)   r(   Ú	min_valueÚ	max_valueÚpaddings        r   Ú_get_y_ranger`   ¬   s²   € ÜD×%Ñ%Ó&€IØ‡{{ÐÜ˜	¤3 t§{¡{Ó#3Ó4ˆ	ô ˆ4×ÑÓ Ò-Ü˜×)Ñ)¨,¨-Ð8Ó9‰	ô ˜×)Ñ)Ó*ˆ	à‡{{ÐÜ˜	¤3 t§{¡{Ó#3Ó4ˆ	à˜9Ñ$¬Ñ7€GØwÑ 	¨GÑ 3Ð3Ð3r   c           	     óz  — t        | j                  «      }t        j                  t        j                  dt        d¬«      t        d¬«      ¬«      ¬«      }|dk(  rt        j                  d«       |S |j                  t        | j                  d |d	z    | j                  d |d	z    t        ||k  «      «       ||kD  r5|j                  t        | j                  |d  | j                  |d  «      «       |j                  t        | j                  | j                  «      «       |j                  t        | |«      ¬
«       |S )NzTerminator Improvement PlotÚTrial)ÚtitlerF   )rc   ÚxaxisÚyaxis)Úlayoutr   zThere are no complete trials.é   )Úrange)r9   r   r   ÚFigureÚLayoutrQ   Ú_loggerÚwarningÚ	add_tracerT   r   ÚOPACITYrX   r   Úupdate_yaxesr`   )r)   r(   Ún_trialsÚfigs       r   r#   r#   ¿   s!  € Ü4×%Ñ%Ó&€Hä
)‰)Üy‰yØ/Ü˜WÔ%ÜÐ5Ô6ô
ô€Cð 1‚}Ü‰Ð7Ô8Øˆ
à‡MMÜ Ø×ÑÐ1 °Ñ!1Ð2Ø×ÑÐ0 ¨qÑ 0Ð1äØ˜Ñ$ó	
ôð ,ÒØ‰Ü$Ø×"Ñ" < =Ð1Ø×!Ñ! , -Ð0óô	
ð ‡MMÔ$ T×%7Ñ%7¸¿¹ÓEÔFà×Ñœ<¨¨lÓ;ÐÔ<Ø€Jr   )r$   r   r%   Úboolr&   úBaseImprovementEvaluator | Noner'   úBaseErrorEvaluator | Noner(   ÚintÚreturnú'go.Figure')FNN)
r$   r   r=   rr   r&   rs   r'   rt   rv   r   )g      ð?T)
r   r   r   r   rR   ÚfloatrM   rr   rv   ú'go.Scatter')r   r   r   r   rv   ry   )r)   r   r(   ru   rv   ztuple[float, float])r)   r   r(   ru   rv   rw   )%Ú
__future__r   Útypingr   r2   r4   Úoptuna._experimentalr   Úoptuna.loggingr   Úoptuna.study.studyr   Úoptuna.terminatorr   r	   r
   r   Úoptuna.terminator.errorevalr   Ú'optuna.terminator.improvement.evaluatorr   r   Ú$optuna.visualization._plotly_importsr   Úis_successfulr   r   rk   r\   rn   r   r*   r"   rT   rX   r`   r#   r   r   r   ú<module>r„      sj  ðÝ "å ã ã Ý 2Ý %Ý $Ý 0Ý 6Ý ;Ý 2Ý <Ý PÝ HÝ 9ð €8×ÑÔÝ7á
XÓ
€ð €Ø
€ôzô ñ 7Óð Ø=AØ15Ø,ð*5Øð*5àð*5ð ;ð*5ð /ð	*5ð
 ð*5ð ò*5ó ð*5ð^ Ø=AØ15ð	1
Øð1
àð1
ð ;ð1
ð /ð	1
ð
 ó1
ðn Øð	Øðàðð ðð ð	ð
 óð&Øðàðð óó$4ô&#r   