optuna.trial.create_trial(*, state=TrialState.COMPLETE, value=None, values=None, params=None, distributions=None, user_attrs=None, system_attrs=None, intermediate_values=None)[source]

Create a new FrozenTrial.


import optuna
from optuna.distributions import CategoricalDistribution
from optuna.distributions import UniformDistribution

trial = optuna.trial.create_trial(
    params={"x": 1.0, "y": 0},
        "x": UniformDistribution(0, 10),
        "y": CategoricalDistribution([-1, 0, 1]),

assert isinstance(trial, optuna.trial.FrozenTrial)
assert trial.value == 5.0
assert trial.params == {"x": 1.0, "y": 0}

See also

See add_trial() for how this function can be used to create a study from existing trials.


Please note that this is a low-level API. In general, trials that are passed to objective functions are created inside optimize().


When state is TrialState.COMPLETE, the following parameters are required:

  • params

  • distributions

  • value or values

  • state (optuna.trial._state.TrialState) – Trial state.

  • value (Optional[float]) – Trial objective value. Must be specified if state is TrialState.COMPLETE.

  • values (Optional[Sequence[float]]) – Sequence of the trial objective values. The length is greater than 1 if the problem is multi-objective optimization. Must be specified if state is TrialState.COMPLETE.

  • params (Optional[Dict[str, Any]]) – Dictionary with suggested parameters of the trial.

  • distributions (Optional[Dict[str, optuna.distributions.BaseDistribution]]) – Dictionary with parameter distributions of the trial.

  • user_attrs (Optional[Dict[str, Any]]) – Dictionary with user attributes.

  • system_attrs (Optional[Dict[str, Any]]) – Dictionary with system attributes. Should not have to be used for most users.

  • intermediate_values (Optional[Dict[int, float]]) – Dictionary with intermediate objective values of the trial.


Created trial.


ValueError – If both value and values are specified.

Return type



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