Skip to content

Instantly share code, notes, and snippets.

@hvy
Last active January 22, 2021 01:57
Show Gist options
  • Select an option

  • Save hvy/4ef02ee2945fe50718c71953e1d6381d to your computer and use it in GitHub Desktop.

Select an option

Save hvy/4ef02ee2945fe50718c71953e1d6381d to your computer and use it in GitHub Desktop.
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
from scipy.special import erfcinv
import optuna
def objective(trial):
# Suggest from U(0, 1) with Optuna.
x = trial.suggest_float("x", 0, 1)
# Inverse transform into normal.
y0 = norm.ppf(x, loc=0, scale=1)
# Inverse transform into lognormal.
y1 = np.exp(-np.sqrt(2) * erfcinv(2 * x))
return y0, y1
if __name__ == "__main__":
n_objectives = 2 # Normal and lognormal.
study = optuna.create_study(
sampler=optuna.samplers.RandomSampler(),
# Could be "maximize". Does not matter for this demonstration.
directions=["minimize"] * n_objectives,
)
study.optimize(objective, n_trials=10000)
fig, axs = plt.subplots(n_objectives)
for i in range(n_objectives):
axs[i].hist(list(t.values[i] for t in study.trials), bins=100)
plt.show()
@hvy

hvy commented Jan 22, 2021

Copy link
Copy Markdown
Author

Resulting plots.

out

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment