Ë
    þÍ:j;?  ã                  ó  — 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 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rd dlmZ  ej4                  «       rd dlmZ e	j8                  j;                  e«      Z G d„ de«      Z ddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z!dd„Z"	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 d d„Z#d!d„Z$	 	 	 	 	 	 d"d„Z%	 	 d#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d$d„Z&	 	 d#	 	 	 	 	 	 	 	 	 d%d„Z'y)&é    )Úannotations)ÚCallable)ÚSequence)ÚAny)Ú
NamedTuple)ÚTYPE_CHECKINGN)Ú_deprecated)Úoptuna_warn)Ú_CONSTRAINTS_KEY)Ú"_get_pareto_front_trials_by_trials)ÚFrozenTrial)Ú
TrialState)Ú_imports)Ú_make_hovertext)ÚStudy)Úgoc                  ó^   — 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<   y)Ú_ParetoFrontInfoÚintÚ	n_targetsz	list[str]Útarget_namesú%list[tuple[FrozenTrial, list[float]]]Úbest_trials_with_valuesÚnon_best_trials_with_valuesÚinfeasible_trials_with_valuesz	list[int]Ú
axis_orderÚboolÚinclude_dominated_trialsÚhas_constraintsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úw/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/optuna/visualization/_pareto_front.pyr   r      s1   … ØƒNØÓØBÓBØ!FÓFØ#HÓHØÓØ"Ó"ØÔr%   r   T)r   r   r   Úconstraints_funcÚtargetsc               ó`   — t        j                  «        t        | |||||«      }t        |«      S )aÚ  Plot the Pareto front of a study.

    .. seealso::
        Please refer to :ref:`multi_objective` for the tutorial of the Pareto front visualization.

    Args:
        study:
            A :class:`~optuna.study.Study` object whose trials are plotted for their objective
            values. The number of objectives must be either 2 or 3 when ``targets`` is :obj:`None`.
        target_names:
            Objective name list used as the axis titles. If :obj:`None` is specified,
            "Objective {objective_index}" is used instead. If ``targets`` is specified
            for a study that does not contain any completed trial,
            ``target_name`` must be specified.
        include_dominated_trials:
            A flag to include all dominated trial's objective values.
        axis_order:
            A list of indices indicating the axis order. If :obj:`None` is specified,
            default order is used. ``axis_order`` and ``targets`` cannot be used at the same time.

            .. warning::
                Deprecated in v3.0.0. This feature will be removed in the future. The removal of
                this feature is currently scheduled for v5.0.0, but this schedule is subject to
                change. See https://github.com/optuna/optuna/releases/tag/v3.0.0.
        constraints_func:
            An optional function that computes the objective constraints. It must take a
            :class:`~optuna.trial.FrozenTrial` and return the constraints. The return value must
            be a sequence of :obj:`float` s. A value strictly larger than 0 means that a
            constraint is violated. A value equal to or smaller than 0 is considered feasible.
            This specification is the same as in, for example,
            :class:`~optuna.samplers.NSGAIISampler`.

            If given, trials are classified into three categories: feasible and best, feasible but
            non-best, and infeasible. Categories are shown in different colors. Here, whether a
            trial is best (on Pareto front) or not is determined ignoring all infeasible trials.

            .. warning::
                Deprecated in v4.0.0. This feature will be removed in the future. The removal of
                this feature is currently scheduled for v6.0.0, but this schedule is subject to
                change. See https://github.com/optuna/optuna/releases/tag/v4.0.0.
        targets:
            A function that returns targets values to display.
            The argument to this function is :class:`~optuna.trial.FrozenTrial`.
            ``axis_order`` and ``targets`` cannot be used at the same time.
            If ``study.n_objectives`` is neither 2 nor 3, ``targets`` must be specified.

            .. note::
                Added in v3.0.0 as an experimental feature. The interface may change in newer
                versions without prior notice.
                See https://github.com/optuna/optuna/releases/tag/v3.0.0.

    Returns:
        A :class:`plotly.graph_objects.Figure` object.
    )r   ÚcheckÚ_get_pareto_front_infoÚ_get_pareto_front_plot)Ústudyr   r   r   r'   r(   Úinfos          r&   Úplot_pareto_frontr/   )   s6   € ô@ ‡N�NÔä!Øˆ|Ð5°zÐCSÐU\ó€Dô " $Ó'Ð'r%   c           
     óÄ  — | j                   }| j                  }|s_t        | j                  | j                  || j
                  dd¬«      t        | j                  | j                  || j                  dd¬«      g}nŒt        | j                  | j                  || j                  dd¬«      t        | j                  | j                  || j
                  dd¬«      t        | j                  | j                  || j                  dd¬«      g}| j                  d	k(  rMt        j                  d
| j                  | j                  d      | j                  | j                  d      ¬«      }nit        j                  d
| j                  | j                  d      | j                  | j                  d      | j                  | j                  d	      dœ¬«      }t        j                  ||¬«      S )Nz%{text}<extra>Trial</extra>T)ÚhovertemplateÚdominated_trialsz %{text}<extra>Best Trial</extra>Fz&%{text}<extra>Infeasible Trial</extra>)r1   Ú
infeasiblez$%{text}<extra>Feasible Trial</extra>é   zPareto-front Plotr   é   )ÚtitleÚxaxis_titleÚyaxis_title)r7   r8   Úzaxis_title)r6   Úscene)ÚdataÚlayout)r   r   Ú_make_scatter_objectr   r   r   r   r   r   ÚLayoutr   ÚFigure)r.   r   r   r;   r<   s        r&   r,   r,   q   s·  € Ø#×<Ñ<ÐØ×*Ñ*€OÙä Ø—‘Ø—‘Ø(Ø×0Ñ0Ø;Ø!%ôô !Ø—‘Ø—‘Ø(Ø×,Ñ,Ø@Ø!&ôð
‰ô( !Ø—‘Ø—‘Ø(Ø×2Ñ2ØFØôô !Ø—‘Ø—‘Ø(Ø×0Ñ0ØDØ!%ôô !Ø—‘Ø—‘Ø(Ø×,Ñ,Ø@Ø!&ôð#
ˆð6 ‡~�~˜ÒÜ—‘Ø%Ø×)Ñ)¨$¯/©/¸!Ñ*<Ñ=Ø×)Ñ)¨$¯/©/¸!Ñ*<Ñ=ô
‰ô —‘Ø%à#×0Ñ0°·±ÀÑ1CÑDØ#×0Ñ0°·±ÀÑ1CÑDØ#×0Ñ0°·±ÀÑ1CÑDñô
ˆô �9‰9˜$ vÔ.Ð.r%   c           
     óè  — |�2t         j                  j                  ddd¬«      }t        |t        «       |�2t         j                  j                  ddd¬«      }t        |t        «       |�|�t        d«      ‚g }g }d	}	| j                  d	t        j                  f¬
«      D ]£  }
|�Bd}	t        t        d„  ||
«      «      «      r|j                  |
«       n|j                  |
«       ŒG|
j                  j                  t        «      }|	|d uz  }	|�t        d„ |D «       «      r|j                  |
«       Œ“|j                  |
«       Œ¥ t        || j                   «      }|rt#        ||«      }ng }t%        |«      dk(  r|	rdnd}t&        j)                  d|› d�«       |}|€)t%        | j                   «      dv rt*        }nt        d«      ‚	 	 	 	 	 	 d(d„} |||«      } |||«      } |||«      }	 	 	 	 d)d„} ||«      xs  ||«      }|€1|�t%        |«      }n#|€t%        | j                   «      }nt        d«      ‚|dvrt        d|› d�«      ‚|€-| j,                  }|€t/        |«      D �cg c]  }d|› �‘Œ	 }}n |}nt%        |«      |k7  rt        d|› d�«      ‚|€t1        t/        |«      «      }n­t%        |«      |k7  rt        d|› d|› dt%        |«      › d�«      ‚t%        t3        |«      «      |k7  rt        d |› d!�«      ‚t5        |«      |d"z
  kD  r!t        d#|› d$t5        |«      › d%|d"z
  › d�«      ‚t7        |«      dk  rt        d#|› d$t7        |«      › d&�«      ‚t9        ||||||||	¬'«      S c c}w )*Nz`axis_order`z3.0.0z5.0.0)ÚnameÚd_verÚr_verz`constraints_func`z4.0.0z6.0.0z]Using both `targets` and `axis_order` is not supported. Use either `targets` or `axis_order`.F)ÚdeepcopyÚstatesTc                ó   — | dk  S )Nç        r$   )Úxs    r&   ú<lambda>z(_get_pareto_front_info.<locals>.<lambda>Ö   s
   €   c¡€ r%   c              3  ó&   K  — | ]	  }|d k  –— Œ y­w)rG   Nr$   )Ú.0rH   s     r&   ú	<genexpr>z)_get_pareto_front_info.<locals>.<genexpr>Þ   s   è ø€ Ò%D°1 a¨3¥hÑ%Dùs   ‚r   zcompleted and feasibleÚ	completedzYour study does not have any z	 trials. )r4   é   z¯`plot_pareto_front` function only supports 2 or 3 objective studies when using `targets` is `None`. Please use `targets` if your objective studies have more than 3 objectives.c                óò   — | D �cg c]
  } ||«      ‘Œ }}|D ])  }t        |t        «      rŒt        dt        |«      › �«      ‚ t	        | |«      D ��cg c]  \  }}|t        |«      f‘Œ c}}S c c}w c c}}w )NzL`targets` should return a sequence of target values. your `targets` returns )Ú
isinstancer   Ú
ValueErrorÚtypeÚzipÚlist)Útrialsr(   ÚtrialÚtarget_valuesÚvs        r&   Ú_make_trials_with_valuesz8_get_pareto_front_info.<locals>._make_trials_with_valuesø   s†   € ð 6<Ö<¨E™ �Ð<ˆÐ<Øò 	ˆAÜ˜a¤Õ*Ü ð/Ü/3°A«w¨ið9óð ð	ô 25°V¸]Ó1K×L¡X U¨A�œ˜Q›Ò ÓLÐLùò =ùó Ms   …A.ÁA3c                óB   — t        | «      dkD  rt        | d   d   «      S y )Nr   r5   )Úlen)Útrials_with_valuess    r&   Ú_infer_n_targetsz0_get_pareto_front_info.<locals>._infer_n_targets	  s+   € ô Ð!Ó" QÒ&ÜÐ)¨!Ñ,¨QÑ/Ó0Ð0Ør%   zNIf `targets` is specified for empty studies, `target_names` must be specified.zD`plot_pareto_front` function only supports 2 or 3 targets. you used z targets now.z
Objective z/The length of `target_names` is supposed to be ú.zSize of `axis_order` z
. Expect: z
, Actual: zElements of given `axis_order` z are not unique!.r5   zGiven `axis_order` z contains invalid index z higher than z lower than 0.)r   r   r   r   r   r   r   r   )rU   úlist[FrozenTrial]r(   z(Callable[[FrozenTrial], Sequence[float]]Úreturnr   )r\   ú-Sequence[tuple[FrozenTrial, Sequence[float]]]r`   z
int | None)r	   Ú_DEPRECATION_WARNING_TEMPLATEÚformatr
   ÚFutureWarningrQ   Ú
get_trialsr   ÚCOMPLETEÚallÚmapÚappendÚsystem_attrsÚgetr   r   Ú
directionsÚ_get_non_pareto_front_trialsr[   Ú_loggerÚwarningÚ_targets_defaultÚmetric_namesÚrangerT   ÚsetÚmaxÚminr   )r-   r   r   r   r'   r(   ÚmsgÚfeasible_trialsÚinfeasible_trialsr   rV   ÚconstraintsÚbest_trialsÚnon_best_trialsÚ
what_trialÚ_targetsrY   r   r   r   r]   r   rq   Úis                           r&   r+   r+   µ   sO  € ð ÐÜ×7Ñ7×>Ñ>Ø w°gð ?ó 
ˆô 	�CœÔ'àÐ#Ü×7Ñ7×>Ñ>Ø%¨W¸Gð ?ó 
ˆô 	�CœÔ'àÐ˜zÐ5Üð4ó
ð 	
ð
 €OØÐØ€OØ×!Ñ!¨5¼*×:MÑ:MÐ9OÐ!ÓPò ,ˆØÐ'à"ˆOÜ”3Ñ)Ñ+;¸EÓ+BÓCÔDØ×&Ñ& uÕ-à!×(Ñ(¨Ô/Øà×(Ñ(×,Ñ,Ô-=Ó>ˆØ˜;¨dÐ2Ñ2ˆØÐ¤#Ñ%D¸Ô%DÔ"DØ×"Ñ" 5Õ)à×$Ñ$ UÕ+ð,ô" 5°_Àe×FVÑFVÓW€KÙÜ6°ÈÓT‰àˆä
ˆ;Ó˜1ÒÙ1@Ñ-Àkˆ
Ü�‰Ð7¸
°|À9ÐMÔNà€HØÐÜˆu×ÑÓ  FÑ*Ü'‰HäðJóð ðMØ!ðMà9ðMð 
/óMñ 7°{ÀHÓMÐÙ":¸?ÈHÓ"UÐÙ$<Ð=NÐPXÓ$YÐ!ðØIðà	óñ !Ð!8Ó9ò Ñ=MØ%ó>€Ið ÐØÐ#Ü˜LÓ)‰IØˆ_Ü˜E×,Ñ,Ó-‰IäØ`óð ð ˜ÑÜðØ"˜ =ð2ó
ð 	
ð
 ÐØ×)Ñ)ˆØÐÜ6;¸IÓ6FÖG°˜j¨¨Ò,ÐGˆLÑGà'‰LÜ	ˆ\Ó	˜iÒ	'ÜÐJÈ9È+ÐUVÐWÓXÐXàÐÜœ% 	Ó*Ó+‰
äˆz‹?˜iÒ'ÜØ'¨
 |°:¸i¸[ð IÜ˜z›?Ð+¨1ð.óð ô Œs�:‹Ó 9Ò,ÜÐ>¸z¸lÐJ[Ð\Ó]Ð]Üˆz‹?˜Y¨™]Ò*ÜØ% j \Ð1IÌ#ÈjË/ÐIZð [Ø(¨1™}˜o¨Qð0óð ô ˆz‹?˜QÒÜØ% j \Ð1IÌ#ÈjË/ÐIZð [ ð  óð ô
 ØØ!Ø 7Ø$?Ø&CØØ!9Ø'ô	ð 	ùò7 Hs   É)M/c                ó   — | j                   S ©N)Úvalues)rV   s    r&   rp   rp   O  s   € Ø�<‰<Ðr%   c                óD   — g }| D ]  }||vsŒ|j                  |«       Œ |S r€   )ri   )rU   Úpareto_trialsÚnon_pareto_trialsrV   s       r&   rm   rm   S  s7   € ð ÐØò ,ˆØ˜Ò%Ø×$Ñ$ UÕ+ð,ð Ðr%   c                ó°  — |xs g }t        |D ��cg c]  \  }}|‘Œ	 c}}|||¬«      }	| dk(  rjt        j                  |D ��
cg c]  \  }}
|
|d      ‘Œ c}
}|D ��
cg c]  \  }}
|
|d      ‘Œ c}
}|D ��cg c]  \  }}t        |«      ‘Œ c}}d||	d¬«      S | dk(  r„t        j                  |D ��
cg c]  \  }}
|
|d      ‘Œ c}
}|D ��
cg c]  \  }}
|
|d      ‘Œ c}
}|D ��
cg c]  \  }}
|
|d      ‘Œ c}
}|D ��cg c]  \  }}t        |«      ‘Œ c}}d||	d¬	«      S J d
«       ‚c c}}w c c}
}w c c}
}w c c}}w c c}
}w c c}
}w c c}
}w c c}}w )N)r2   r3   r4   r   r5   ÚmarkersF)rH   ÚyÚtextÚmoder1   ÚmarkerÚ
showlegendrN   )rH   r‡   Úzrˆ   r‰   r1   rŠ   r‹   zMust not reach here)Ú_make_markerr   ÚScatterr   Ú	Scatter3d)r   r   r   r\   r1   r3   r2   rV   Ú_rŠ   r�   s              r&   r=   r=   ]  sb  € ð ,Ò1¨rÐäØ1×2‘8�5˜!ŠÓ2Ø Ø)Øô	€Fð �A‚~Ü�z‰zØ6H×I©¨¨Fˆv�j ‘mÓ$ÓIØ6H×I©¨¨Fˆv�j ‘mÓ$ÓIØ9K×L©X¨U°A”/ %Õ(ÓLØØ'ØØô
ð 	
ð 
�aŠÜ�|‰|Ø6H×I©¨¨Fˆv�j ‘mÓ$ÓIØ6H×I©¨¨Fˆv�j ‘mÓ$ÓIØ6H×I©¨¨Fˆv�j ‘mÓ$ÓIØ9K×L©X¨U°A”/ %Õ(ÓLØØ'ØØô	
ð 		
ð 	,Ð+Ó+ˆuùó7 	3ùó JùÛIùÛLùó JùÛIùÛIùÛLs/   ‘D(
ÁD.
ÁD4Á6D:Â1E 
ÃEÃ%EÃ?Ec                óê   — |r|st        | «      dk(  sJ ‚|rddiS |r$dddœ| D �cg c]  }|j                  ‘Œ c}ddd	id
œS dddœ| D �cg c]  }|j                  ‘Œ c}dd|rdndddœd
œS c c}w c c}w )Nr   Úcolorz#ccccccg      à?ÚGrey)Úwidthr’   ÚBluesr6   ÚTrial)Úliner’   Ú
colorscaleÚcolorbarÚRedsz
Best Trialgš™™™™™ñ?r5   é(   )r6   rH   Úxpad)r[   Únumber)rU   r   r2   r3   Úts        r&   r�   r�   ‡  s©   € ñ Ñ 8Ü�6‹{˜aÒÐÐáà�Yð
ð 	
ñ 
à!¨FÑ3Ø(.Ö/ 1�a—h“hÒ/Ø!à˜ðñ	
ð 	
ð "¨FÑ3Ø(.Ö/ 1�a—h“hÒ/Ø à%Ù4‘S¸!Øññ		
ð 		
ùò 0ùò 0s   ¥A+Á	A0)r-   r   r   úlist[str] | Noner   r   r   úlist[int] | Noner'   ú/Callable[[FrozenTrial], Sequence[float]] | Noner(   r¡   r`   ú'go.Figure')r.   r   r`   r¢   )NTNNN)r-   r   r   rŸ   r   r   r   r    r'   r¡   r(   r¡   r`   r   )rV   r   r`   zSequence[float])rU   r_   rƒ   r_   r`   r_   )FF)r   r   r   zSequence[int]r   r   r\   ra   r1   Ústrr3   r   r2   r   r`   z'go.Scatter' | 'go.Scatter3d')
rU   zSequence[FrozenTrial]r   r   r2   r   r3   r   r`   zdict[str, Any])(Ú
__future__r   Úcollections.abcr   r   Útypingr   r   r   Úoptunar	   Úoptuna._warningsr
   Úoptuna.samplers._baser   Úoptuna.study._multi_objectiver   Úoptuna.trialr   r   Ú$optuna.visualization._plotly_importsr   Úoptuna.visualization._utilsr   Úoptuna.studyr   Úis_successfulr   ÚloggingÚ
get_loggerr    rn   r   r/   r,   r+   rp   rm   r=   r�   r$   r%   r&   ú<module>r²      sò  ðÝ "å $Ý $Ý Ý Ý  ã Ý Ý (Ý 2Ý LÝ $Ý #Ý 9Ý 7ñ Ý"ð €8×ÑÔÝ7à
�.‰.×
#Ñ
# HÓ
-€ô�zô ð &*Ø%)Ø#'ØHLØ?CñE(ØðE(ð #ðE(ð #ð	E(ð
 !ðE(ð FðE(ð =ðE(ð óE(óPA/ðL &*Ø%)Ø#'ØHLØ?CðWØðWà"ðWð #ðWð !ð	Wð
 FðWð =ðWð óWótðØðØ.?ðàóð  Ø"ð',Øð',àð',ð #ð',ð Fð	',ð
 ð',ð ð',ð ð',ð #ó',ðZ #Øð	 
Ø!ð 
à"ð 
ð ð 
ð ð	 
ð
 ô 
r%   