Ë
    ÿÿæi  ã                  ó¸   — 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rd dlmZ  ed«       G d„ de«      «       Zy)é    )Úannotations)ÚSequence)ÚAny)ÚTYPE_CHECKING)Úexperimental_class)Úoptuna_warn)ÚBaseDistribution)ÚBaseSampler)ÚFrozenTrial)Ú
TrialState)ÚStudyz2.4.0c                  óŒ   — e Zd ZdZd
d„Zdd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z		 	 	 	 	 	 	 	 	 	 dd„Z
y	)ÚPartialFixedSampleraœ  Sampler with partially fixed parameters.

    Example:

        After several steps of optimization, you can fix the value of ``y`` and re-optimize it.

        .. testcode::

            import optuna


            def objective(trial):
                x = trial.suggest_float("x", -1, 1)
                y = trial.suggest_int("y", -1, 1)
                return x**2 + y


            study = optuna.create_study()
            study.optimize(objective, n_trials=10)

            best_params = study.best_params
            fixed_params = {"y": best_params["y"]}
            partial_sampler = optuna.samplers.PartialFixedSampler(fixed_params, study.sampler)

            study.sampler = partial_sampler
            study.optimize(objective, n_trials=10)

    Args:

        fixed_params:
            A dictionary of parameters to be fixed.

        base_sampler:
            A sampler which samples unfixed parameters.

    c                ó    — || _         || _        y ©N)Ú_fixed_paramsÚ_base_sampler)ÚselfÚfixed_paramsÚbase_samplers      ús/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/optuna/samplers/_partial_fixed.pyÚ__init__zPartialFixedSampler.__init__:   s   € Ø)ˆÔØ)ˆÕó    c                ó8   — | j                   j                  «        y r   )r   Ú
reseed_rng)r   s    r   r   zPartialFixedSampler.reseed_rng>   s   € Ø×Ñ×%Ñ%Õ'r   c                óŒ   — | j                   j                  ||«      }| j                  j                  «       D ]
  }||v sŒ||= Œ |S r   )r   Úinfer_relative_search_spacer   Úkeys)r   ÚstudyÚtrialÚsearch_spaceÚ
param_names        r   r   z/PartialFixedSampler.infer_relative_search_spaceA   sO   € ð ×)Ñ)×EÑEÀeÈUÓSˆð ×,Ñ,×1Ñ1Ö3ˆJØ˜\Ò)Ø  Ñ,ð 4ð Ðr   c                ó<   — | j                   j                  |||«      S r   )r   Úsample_relative)r   r   r    r!   s       r   r$   z#PartialFixedSampler.sample_relativeM   s   € ð ×!Ñ!×1Ñ1°%¸ÀÓMÐMr   c           	     óî   — || j                   vr| j                  j                  ||||«      S | j                   |   }|j                  |«      }|j	                  |«      }|st        d|› d|› d|› d�«       |S )NzFixed parameter 'z' with value z" is out of range for distribution Ú.)r   r   Úsample_independentÚto_internal_reprÚ	_containsr   )r   r   r    r"   Úparam_distributionÚparam_valueÚparam_value_in_internal_reprÚ	containeds           r   r'   z&PartialFixedSampler.sample_independentV   sœ   € ð ˜T×/Ñ/Ñ/à×%Ñ%×8Ñ8Ø�u˜jÐ*<óð ð ×,Ñ,¨ZÑ8ˆKà+=×+NÑ+NÈ{Ó+[Ð(Ø*×4Ñ4Ð5QÓRˆIáÜØ'¨
 |°=ÀÀð N(Ø(:Ð';¸1ð>ôð Ðr   c                ó<   — | j                   j                  ||«       y r   )r   Úbefore_trial)r   r   r    s      r   r/   z PartialFixedSampler.before_trialq   s   € Ø×Ñ×'Ñ'¨¨uÕ5r   c                ó@   — | j                   j                  ||||«       y r   )r   Úafter_trial)r   r   r    ÚstateÚvaluess        r   r1   zPartialFixedSampler.after_trialt   s   € ð 	×Ñ×&Ñ& u¨e°U¸FÕCr   N)r   údict[str, Any]r   r
   ÚreturnÚNone)r5   r6   )r   r   r    r   r5   údict[str, BaseDistribution])r   r   r    r   r!   r7   r5   r4   )
r   r   r    r   r"   Ústrr*   r	   r5   r   )r   r   r    r   r5   r6   )
r   r   r    r   r2   r   r3   zSequence[float] | Noner5   r6   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r$   r'   r/   r1   © r   r   r   r      sÔ   „ ñ#óJ*ó(ð
Øð
Ø#.ð
à	$ó
ðNàðNð ðNð 2ð	Nð
 
óNðàðð ðð ð	ð
 -ðð 
óó66ðDàðDð ðDð ð	Dð
 'ðDð 
ôDr   r   N)Ú
__future__r   Úcollections.abcr   Útypingr   r   Úoptuna._experimentalr   Úoptuna._warningsr   Úoptuna.distributionsr	   Úoptuna.samplersr
   Úoptuna.trialr   r   Úoptuna.studyr   r   r=   r   r   Ú<module>rG      sQ   ðÝ "å $Ý Ý  å 3Ý (Ý 1Ý 'Ý $Ý #ñ Ý"ñ �GÓôgD˜+ó gDó ñgDr   