テスト関数に対する最適化例

ここでは、Rastrigin 関数というテスト関数をブラックボックスと見なして、これに対してブラックボックス最適化を実施します。

Rastrigin 関数は、以下の式で記述できる著名な多峰性の関数です。

\[ f(\mathbf{x}) = 10 n + \sum_{i=1}^{n} \left( x_i^2 - 10 \cos(2\pi x_i) \right) \]

ここで、\(n\) は次元数で、\(\boldsymbol{x}\) は入力ベクトルです。この関数は、多数の局所最適解を持ち、グローバルな最小値は、\(\boldsymbol{x}=0\) のとき \(f(\boldsymbol{x})=0\) をとります。\(n=2\) の場合、Rastrigin 関数は以下のような分布を有します。

ブラックボックス関数の準備

まず、実数決定変数とブラックボックス関数を作成します。本サンプルプログラムでは、5 次元 (\(n=5\)) の Rastrigin 関数を対象とします。

from datetime import timedelta

import numpy as np
from amplify_bbopt import DiscretizationSpec, RealVariable, blackbox

# 問題・条件設定
rng = np.random.default_rng(0)
num_vars = 5  # 問題次元 (実数決定変数数)
var_min = -3.0  # 実数決定変数の最小値
var_max = 3.0  # 実数決定変数の最大値
disc_spec = DiscretizationSpec(num_bins=101)  # 離散点数を 101 に設定

# 問題を自明にしないため,大域最適解の位置をランダムにずらす
x_offset = rng.uniform(low=var_min / 2, high=var_max / 2, size=num_vars)


# Rastrigin 関数の定義
def rastrigin_function(x: list[float]) -> float:
    """A test function, yieldng the global min of 0 at (0, 0, ...).

    Args:
        x (list[float]): An input vector.

    Returns:
        float: The function value.
    """
    xnp = np.array(x) - x_offset
    return 10 * len(x) + (xnp**2 - 10 * np.cos(2 * np.pi * xnp)).sum()


# 実数決定変数リストの作成
x_list = [
    RealVariable((var_min, var_max), discretization_spec=disc_spec)
    for _ in range(num_vars)
]


# ブラックボックス関数の定義
@blackbox
def func(input_x: list[float] = x_list) -> float:  # type: ignore
    return rastrigin_function(input_x)

最適化の実行

最適化で利用するイジングマシン (Fixstars Amplify Annealing Engine (Amplify AE))をソルバークライアントとして設定します。ここでは、一度のアニーリング時間を 2 秒と設定します。

準備したブラックボックス関数とソルバークライアントを使い、最適化クラスのインスタンス化を行います。また、初期学習データを 10 サンプルランダム生成し、データセットに追加します。

Optimizer.optimize を使って最適化サイクルを実行します。

Optimizer.optimize の 引数 surrogate_data_transformerExpScaler を設定することで学習データの目的関数値に対して指数変換を施すことができます。詳細はこちらを参照してください。

from amplify import AmplifyAEClient
from amplify_bbopt import ExpScaler, KMTrainer, Optimizer

# イジングマシンの設定
client = AmplifyAEClient()
client.parameters.time_limit_ms = timedelta(seconds=2)
client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # ローカル環境等で使用する場合は、Amplify AEのアクセストークンを入力してください。

# 最適化クラスのインスタンス化
optimizer = Optimizer(
    blackbox=func,
    trainer=KMTrainer(),
    client=client,
    surrogate_data_transformer=ExpScaler(),
)

# 初期学習データの作成 (最適化クラスのメソッド利用)
num_init_data = 10
optimizer.add_random_training_data(num_data=num_init_data)

# 最適化を実行
optimizer.optimize(num_iterations=100)

# 最適化結果の表示
print(f"{optimizer.best.values=}")
print(f"{optimizer.best.objective=}")

Hide code cell output

[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 1/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 2/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 3/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 4/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 5/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 6/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 7/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 8/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 9/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] Random data sample: 10/10
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] === Iteration: 1/100 ===
[2026-06-15 15:58:56] [amplify_bbopt] [INFO] model corrcoefs: <=10%: nan, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:58:58] [amplify_bbopt] [INFO]    objective: 6.780e+01
[2026-06-15 15:58:58] [amplify_bbopt] [INFO] current best: 4.752e+01
[2026-06-15 15:58:58] [amplify_bbopt] [INFO] === Iteration: 2/100 ===
[2026-06-15 15:58:58] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:01] [amplify_bbopt] [INFO]    objective: 2.459e+01
[2026-06-15 15:59:01] [amplify_bbopt] [INFO] current best: 2.459e+01
[2026-06-15 15:59:01] [amplify_bbopt] [INFO] === Iteration: 3/100 ===
[2026-06-15 15:59:01] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:04] [amplify_bbopt] [INFO]    objective: 2.180e+01
[2026-06-15 15:59:04] [amplify_bbopt] [INFO] current best: 2.180e+01
[2026-06-15 15:59:04] [amplify_bbopt] [INFO] === Iteration: 4/100 ===
[2026-06-15 15:59:04] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:06] [amplify_bbopt] [INFO]    objective: 2.544e+01
[2026-06-15 15:59:06] [amplify_bbopt] [INFO] current best: 2.180e+01
[2026-06-15 15:59:06] [amplify_bbopt] [INFO] === Iteration: 5/100 ===
[2026-06-15 15:59:06] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:09] [amplify_bbopt] [INFO]    objective: 1.830e+01
[2026-06-15 15:59:09] [amplify_bbopt] [INFO] current best: 1.830e+01
[2026-06-15 15:59:09] [amplify_bbopt] [INFO] === Iteration: 6/100 ===
[2026-06-15 15:59:09] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:12] [amplify_bbopt] [INFO]    objective: 1.776e+01
[2026-06-15 15:59:12] [amplify_bbopt] [INFO] current best: 1.776e+01
[2026-06-15 15:59:12] [amplify_bbopt] [INFO] === Iteration: 7/100 ===
[2026-06-15 15:59:12] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:14] [amplify_bbopt] [INFO]    objective: 1.568e+01
[2026-06-15 15:59:14] [amplify_bbopt] [INFO] current best: 1.568e+01
[2026-06-15 15:59:14] [amplify_bbopt] [INFO] === Iteration: 8/100 ===
[2026-06-15 15:59:14] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:17] [amplify_bbopt] [INFO]    objective: 1.330e+02
[2026-06-15 15:59:17] [amplify_bbopt] [INFO] current best: 1.568e+01
[2026-06-15 15:59:17] [amplify_bbopt] [INFO] === Iteration: 9/100 ===
[2026-06-15 15:59:17] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:20] [amplify_bbopt] [INFO]    objective: 1.293e+01
[2026-06-15 15:59:20] [amplify_bbopt] [INFO] current best: 1.293e+01
[2026-06-15 15:59:20] [amplify_bbopt] [INFO] === Iteration: 10/100 ===
[2026-06-15 15:59:20] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:22] [amplify_bbopt] [INFO]    objective: 2.532e+01
[2026-06-15 15:59:22] [amplify_bbopt] [INFO] current best: 1.293e+01
[2026-06-15 15:59:22] [amplify_bbopt] [INFO] === Iteration: 11/100 ===
[2026-06-15 15:59:22] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:25] [amplify_bbopt] [INFO]    objective: 1.133e+01
[2026-06-15 15:59:25] [amplify_bbopt] [INFO] current best: 1.133e+01
[2026-06-15 15:59:25] [amplify_bbopt] [INFO] === Iteration: 12/100 ===
[2026-06-15 15:59:25] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:28] [amplify_bbopt] [INFO]    objective: 9.630e+00
[2026-06-15 15:59:28] [amplify_bbopt] [INFO] current best: 9.630e+00
[2026-06-15 15:59:28] [amplify_bbopt] [INFO] === Iteration: 13/100 ===
[2026-06-15 15:59:28] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:31] [amplify_bbopt] [INFO]    objective: 1.123e+01
[2026-06-15 15:59:31] [amplify_bbopt] [INFO] current best: 9.630e+00
[2026-06-15 15:59:31] [amplify_bbopt] [INFO] === Iteration: 14/100 ===
[2026-06-15 15:59:31] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:34] [amplify_bbopt] [INFO]    objective: 2.966e+01
[2026-06-15 15:59:34] [amplify_bbopt] [INFO] current best: 9.630e+00
[2026-06-15 15:59:34] [amplify_bbopt] [INFO] === Iteration: 15/100 ===
[2026-06-15 15:59:34] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:37] [amplify_bbopt] [INFO]    objective: 1.327e+01
[2026-06-15 15:59:37] [amplify_bbopt] [INFO] current best: 9.630e+00
[2026-06-15 15:59:37] [amplify_bbopt] [INFO] === Iteration: 16/100 ===
[2026-06-15 15:59:37] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:40] [amplify_bbopt] [INFO]    objective: 9.398e+00
[2026-06-15 15:59:40] [amplify_bbopt] [INFO] current best: 9.398e+00
[2026-06-15 15:59:40] [amplify_bbopt] [INFO] === Iteration: 17/100 ===
[2026-06-15 15:59:40] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:42] [amplify_bbopt] [INFO]    objective: 1.148e+01
[2026-06-15 15:59:42] [amplify_bbopt] [INFO] current best: 9.398e+00
[2026-06-15 15:59:42] [amplify_bbopt] [INFO] === Iteration: 18/100 ===
[2026-06-15 15:59:42] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:45] [amplify_bbopt] [INFO]    objective: 6.390e+00
[2026-06-15 15:59:45] [amplify_bbopt] [INFO] current best: 6.390e+00
[2026-06-15 15:59:45] [amplify_bbopt] [INFO] === Iteration: 19/100 ===
[2026-06-15 15:59:45] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:48] [amplify_bbopt] [INFO]    objective: 8.093e+00
[2026-06-15 15:59:48] [amplify_bbopt] [INFO] current best: 6.390e+00
[2026-06-15 15:59:48] [amplify_bbopt] [INFO] === Iteration: 20/100 ===
[2026-06-15 15:59:48] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 0.999, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:50] [amplify_bbopt] [INFO]    objective: 5.897e+00
[2026-06-15 15:59:50] [amplify_bbopt] [INFO] current best: 5.897e+00
[2026-06-15 15:59:50] [amplify_bbopt] [INFO] === Iteration: 21/100 ===
[2026-06-15 15:59:50] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:53] [amplify_bbopt] [INFO]    objective: 3.937e+00
[2026-06-15 15:59:53] [amplify_bbopt] [INFO] current best: 3.937e+00
[2026-06-15 15:59:53] [amplify_bbopt] [INFO] === Iteration: 22/100 ===
[2026-06-15 15:59:53] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:55] [amplify_bbopt] [INFO]    objective: 5.640e+00
[2026-06-15 15:59:55] [amplify_bbopt] [INFO] current best: 3.937e+00
[2026-06-15 15:59:55] [amplify_bbopt] [INFO] === Iteration: 23/100 ===
[2026-06-15 15:59:55] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 15:59:58] [amplify_bbopt] [INFO]    objective: 6.019e+00
[2026-06-15 15:59:58] [amplify_bbopt] [INFO] current best: 3.937e+00
[2026-06-15 15:59:58] [amplify_bbopt] [INFO] === Iteration: 24/100 ===
[2026-06-15 15:59:58] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:01] [amplify_bbopt] [INFO]    objective: 3.299e+00
[2026-06-15 16:00:01] [amplify_bbopt] [INFO] current best: 3.299e+00
[2026-06-15 16:00:01] [amplify_bbopt] [INFO] === Iteration: 25/100 ===
[2026-06-15 16:00:01] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 0.999, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:04] [amplify_bbopt] [INFO]    objective: 2.937e+00
[2026-06-15 16:00:04] [amplify_bbopt] [INFO] current best: 2.937e+00
[2026-06-15 16:00:04] [amplify_bbopt] [INFO] === Iteration: 26/100 ===
[2026-06-15 16:00:04] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 0.999, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:06] [amplify_bbopt] [INFO]    objective: 2.135e+00
[2026-06-15 16:00:06] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:06] [amplify_bbopt] [INFO] === Iteration: 27/100 ===
[2026-06-15 16:00:07] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 0.999, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:09] [amplify_bbopt] [INFO]    objective: 2.497e+00
[2026-06-15 16:00:09] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:09] [amplify_bbopt] [INFO] === Iteration: 28/100 ===
[2026-06-15 16:00:09] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:12] [amplify_bbopt] [INFO]    objective: 2.628e+00
[2026-06-15 16:00:12] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:12] [amplify_bbopt] [INFO] === Iteration: 29/100 ===
[2026-06-15 16:00:12] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:15] [amplify_bbopt] [INFO]    objective: 2.133e+01
[2026-06-15 16:00:15] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:15] [amplify_bbopt] [INFO] === Iteration: 30/100 ===
[2026-06-15 16:00:15] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:17] [amplify_bbopt] [INFO]    objective: 2.742e+00
[2026-06-15 16:00:17] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:17] [amplify_bbopt] [INFO] === Iteration: 31/100 ===
[2026-06-15 16:00:17] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:20] [amplify_bbopt] [INFO]    objective: 8.847e+01
[2026-06-15 16:00:20] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:20] [amplify_bbopt] [INFO] === Iteration: 32/100 ===
[2026-06-15 16:00:20] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:23] [amplify_bbopt] [INFO]    objective: 2.773e+00
[2026-06-15 16:00:23] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:23] [amplify_bbopt] [INFO] === Iteration: 33/100 ===
[2026-06-15 16:00:23] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:26] [amplify_bbopt] [INFO]    objective: 8.720e+01
[2026-06-15 16:00:26] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:26] [amplify_bbopt] [INFO] === Iteration: 34/100 ===
[2026-06-15 16:00:26] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:29] [amplify_bbopt] [INFO]    objective: 7.439e+01
[2026-06-15 16:00:29] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:29] [amplify_bbopt] [INFO] === Iteration: 35/100 ===
[2026-06-15 16:00:29] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:33] [amplify_bbopt] [INFO]    objective: 6.593e+00
[2026-06-15 16:00:33] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:33] [amplify_bbopt] [INFO] === Iteration: 36/100 ===
[2026-06-15 16:00:33] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:36] [amplify_bbopt] [INFO]    objective: 7.338e+01
[2026-06-15 16:00:36] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:36] [amplify_bbopt] [INFO] === Iteration: 37/100 ===
[2026-06-15 16:00:36] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:39] [amplify_bbopt] [INFO]    objective: 3.182e+00
[2026-06-15 16:00:39] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:39] [amplify_bbopt] [INFO] === Iteration: 38/100 ===
[2026-06-15 16:00:39] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:41] [amplify_bbopt] [INFO]    objective: 2.909e+00
[2026-06-15 16:00:41] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:41] [amplify_bbopt] [INFO] === Iteration: 39/100 ===
[2026-06-15 16:00:42] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:45] [amplify_bbopt] [INFO]    objective: 7.611e+00
[2026-06-15 16:00:45] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:45] [amplify_bbopt] [INFO] === Iteration: 40/100 ===
[2026-06-15 16:00:45] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:48] [amplify_bbopt] [INFO]    objective: 2.367e+00
[2026-06-15 16:00:48] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:48] [amplify_bbopt] [INFO] === Iteration: 41/100 ===
[2026-06-15 16:00:48] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:51] [amplify_bbopt] [INFO]    objective: 4.584e+01
[2026-06-15 16:00:51] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:51] [amplify_bbopt] [INFO] === Iteration: 42/100 ===
[2026-06-15 16:00:51] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:54] [amplify_bbopt] [INFO]    objective: 2.741e+01
[2026-06-15 16:00:54] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:54] [amplify_bbopt] [INFO] === Iteration: 43/100 ===
[2026-06-15 16:00:54] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:56] [amplify_bbopt] [INFO]    objective: 2.973e+01
[2026-06-15 16:00:56] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:56] [amplify_bbopt] [INFO] === Iteration: 44/100 ===
[2026-06-15 16:00:56] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:00:59] [amplify_bbopt] [INFO]    objective: 1.713e+01
[2026-06-15 16:00:59] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:00:59] [amplify_bbopt] [INFO] === Iteration: 45/100 ===
[2026-06-15 16:00:59] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:02] [amplify_bbopt] [INFO]    objective: 2.836e+01
[2026-06-15 16:01:02] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:02] [amplify_bbopt] [INFO] === Iteration: 46/100 ===
[2026-06-15 16:01:02] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:05] [amplify_bbopt] [INFO]    objective: 4.709e+01
[2026-06-15 16:01:05] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:05] [amplify_bbopt] [INFO] === Iteration: 47/100 ===
[2026-06-15 16:01:05] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:07] [amplify_bbopt] [INFO]    objective: 3.022e+01
[2026-06-15 16:01:07] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:07] [amplify_bbopt] [INFO] === Iteration: 48/100 ===
[2026-06-15 16:01:07] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:10] [amplify_bbopt] [INFO]    objective: 7.747e+01
[2026-06-15 16:01:10] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:10] [amplify_bbopt] [INFO] === Iteration: 49/100 ===
[2026-06-15 16:01:10] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:13] [amplify_bbopt] [INFO]    objective: 9.190e+01
[2026-06-15 16:01:13] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:13] [amplify_bbopt] [INFO] === Iteration: 50/100 ===
[2026-06-15 16:01:13] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:15] [amplify_bbopt] [INFO]    objective: 6.211e+01
[2026-06-15 16:01:15] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:15] [amplify_bbopt] [INFO] === Iteration: 51/100 ===
[2026-06-15 16:01:15] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:18] [amplify_bbopt] [INFO]    objective: 3.303e+00
[2026-06-15 16:01:18] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:18] [amplify_bbopt] [INFO] === Iteration: 52/100 ===
[2026-06-15 16:01:18] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:21] [amplify_bbopt] [INFO]    objective: 4.995e+01
[2026-06-15 16:01:21] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:21] [amplify_bbopt] [INFO] === Iteration: 53/100 ===
[2026-06-15 16:01:21] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:23] [amplify_bbopt] [INFO]    objective: 6.001e+01
[2026-06-15 16:01:23] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:23] [amplify_bbopt] [INFO] === Iteration: 54/100 ===
[2026-06-15 16:01:23] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:26] [amplify_bbopt] [INFO]    objective: 5.253e+01
[2026-06-15 16:01:26] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:26] [amplify_bbopt] [INFO] === Iteration: 55/100 ===
[2026-06-15 16:01:26] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:29] [amplify_bbopt] [INFO]    objective: 5.840e+01
[2026-06-15 16:01:29] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:29] [amplify_bbopt] [INFO] === Iteration: 56/100 ===
[2026-06-15 16:01:29] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:32] [amplify_bbopt] [INFO]    objective: 5.212e+01
[2026-06-15 16:01:32] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:32] [amplify_bbopt] [INFO] === Iteration: 57/100 ===
[2026-06-15 16:01:32] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:34] [amplify_bbopt] [INFO]    objective: 9.984e+01
[2026-06-15 16:01:34] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:34] [amplify_bbopt] [INFO] === Iteration: 58/100 ===
[2026-06-15 16:01:34] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:37] [amplify_bbopt] [INFO]    objective: 1.380e+02
[2026-06-15 16:01:37] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:37] [amplify_bbopt] [INFO] === Iteration: 59/100 ===
[2026-06-15 16:01:37] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:40] [amplify_bbopt] [INFO]    objective: 3.051e+00
[2026-06-15 16:01:40] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:40] [amplify_bbopt] [INFO] === Iteration: 60/100 ===
[2026-06-15 16:01:40] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:42] [amplify_bbopt] [INFO]    objective: 1.248e+02
[2026-06-15 16:01:42] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:42] [amplify_bbopt] [INFO] === Iteration: 61/100 ===
[2026-06-15 16:01:42] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:45] [amplify_bbopt] [INFO]    objective: 1.443e+02
[2026-06-15 16:01:45] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:45] [amplify_bbopt] [INFO] === Iteration: 62/100 ===
[2026-06-15 16:01:45] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:48] [amplify_bbopt] [INFO]    objective: 1.156e+02
[2026-06-15 16:01:48] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:48] [amplify_bbopt] [INFO] === Iteration: 63/100 ===
[2026-06-15 16:01:48] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:50] [amplify_bbopt] [INFO]    objective: 1.294e+02
[2026-06-15 16:01:50] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:50] [amplify_bbopt] [INFO] === Iteration: 64/100 ===
[2026-06-15 16:01:50] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:53] [amplify_bbopt] [INFO]    objective: 1.305e+02
[2026-06-15 16:01:53] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:53] [amplify_bbopt] [INFO] === Iteration: 65/100 ===
[2026-06-15 16:01:53] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:56] [amplify_bbopt] [INFO]    objective: 1.222e+02
[2026-06-15 16:01:56] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:56] [amplify_bbopt] [INFO] === Iteration: 66/100 ===
[2026-06-15 16:01:56] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:01:59] [amplify_bbopt] [INFO]    objective: 1.418e+02
[2026-06-15 16:01:59] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:01:59] [amplify_bbopt] [INFO] === Iteration: 67/100 ===
[2026-06-15 16:01:59] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:02] [amplify_bbopt] [INFO]    objective: 1.263e+02
[2026-06-15 16:02:02] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:02] [amplify_bbopt] [INFO] === Iteration: 68/100 ===
[2026-06-15 16:02:02] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:05] [amplify_bbopt] [INFO]    objective: 1.180e+02
[2026-06-15 16:02:05] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:05] [amplify_bbopt] [INFO] === Iteration: 69/100 ===
[2026-06-15 16:02:05] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:08] [amplify_bbopt] [INFO]    objective: 1.253e+02
[2026-06-15 16:02:08] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:08] [amplify_bbopt] [INFO] === Iteration: 70/100 ===
[2026-06-15 16:02:08] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:10] [amplify_bbopt] [INFO]    objective: 1.221e+02
[2026-06-15 16:02:10] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:10] [amplify_bbopt] [INFO] === Iteration: 71/100 ===
[2026-06-15 16:02:10] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:13] [amplify_bbopt] [INFO]    objective: 1.047e+02
[2026-06-15 16:02:13] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:13] [amplify_bbopt] [INFO] === Iteration: 72/100 ===
[2026-06-15 16:02:13] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:16] [amplify_bbopt] [INFO]    objective: 1.218e+02
[2026-06-15 16:02:16] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:16] [amplify_bbopt] [INFO] === Iteration: 73/100 ===
[2026-06-15 16:02:16] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:19] [amplify_bbopt] [INFO]    objective: 1.044e+02
[2026-06-15 16:02:19] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:19] [amplify_bbopt] [INFO] === Iteration: 74/100 ===
[2026-06-15 16:02:19] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:22] [amplify_bbopt] [INFO]    objective: 1.245e+02
[2026-06-15 16:02:22] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:22] [amplify_bbopt] [INFO] === Iteration: 75/100 ===
[2026-06-15 16:02:22] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:24] [amplify_bbopt] [INFO]    objective: 1.135e+02
[2026-06-15 16:02:24] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:24] [amplify_bbopt] [INFO] === Iteration: 76/100 ===
[2026-06-15 16:02:24] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:27] [amplify_bbopt] [INFO]    objective: 1.195e+02
[2026-06-15 16:02:27] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:27] [amplify_bbopt] [INFO] === Iteration: 77/100 ===
[2026-06-15 16:02:27] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:30] [amplify_bbopt] [INFO]    objective: 1.185e+02
[2026-06-15 16:02:30] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:30] [amplify_bbopt] [INFO] === Iteration: 78/100 ===
[2026-06-15 16:02:30] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:33] [amplify_bbopt] [INFO]    objective: 1.102e+02
[2026-06-15 16:02:33] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:33] [amplify_bbopt] [INFO] === Iteration: 79/100 ===
[2026-06-15 16:02:33] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:35] [amplify_bbopt] [INFO]    objective: 1.227e+02
[2026-06-15 16:02:35] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:35] [amplify_bbopt] [INFO] === Iteration: 80/100 ===
[2026-06-15 16:02:35] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:38] [amplify_bbopt] [INFO]    objective: 1.190e+02
[2026-06-15 16:02:38] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:38] [amplify_bbopt] [INFO] === Iteration: 81/100 ===
[2026-06-15 16:02:38] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:41] [amplify_bbopt] [INFO]    objective: 1.168e+02
[2026-06-15 16:02:41] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:41] [amplify_bbopt] [INFO] === Iteration: 82/100 ===
[2026-06-15 16:02:41] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:44] [amplify_bbopt] [INFO]    objective: 5.544e+01
[2026-06-15 16:02:44] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:44] [amplify_bbopt] [INFO] === Iteration: 83/100 ===
[2026-06-15 16:02:44] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:46] [amplify_bbopt] [INFO]    objective: 8.321e+01
[2026-06-15 16:02:46] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:46] [amplify_bbopt] [INFO] === Iteration: 84/100 ===
[2026-06-15 16:02:46] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:49] [amplify_bbopt] [INFO]    objective: 6.280e+01
[2026-06-15 16:02:49] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:49] [amplify_bbopt] [INFO] === Iteration: 85/100 ===
[2026-06-15 16:02:49] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:52] [amplify_bbopt] [INFO]    objective: 6.860e+01
[2026-06-15 16:02:52] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:52] [amplify_bbopt] [INFO] === Iteration: 86/100 ===
[2026-06-15 16:02:52] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:54] [amplify_bbopt] [INFO]    objective: 7.273e+01
[2026-06-15 16:02:54] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:54] [amplify_bbopt] [INFO] === Iteration: 87/100 ===
[2026-06-15 16:02:54] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:02:57] [amplify_bbopt] [INFO]    objective: 5.312e+01
[2026-06-15 16:02:57] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:02:57] [amplify_bbopt] [INFO] === Iteration: 88/100 ===
[2026-06-15 16:02:57] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:00] [amplify_bbopt] [INFO]    objective: 6.482e+01
[2026-06-15 16:03:00] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:00] [amplify_bbopt] [INFO] === Iteration: 89/100 ===
[2026-06-15 16:03:00] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:02] [amplify_bbopt] [INFO]    objective: 6.670e+01
[2026-06-15 16:03:02] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:02] [amplify_bbopt] [INFO] === Iteration: 90/100 ===
[2026-06-15 16:03:02] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:05] [amplify_bbopt] [INFO]    objective: 3.827e+01
[2026-06-15 16:03:05] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:05] [amplify_bbopt] [INFO] === Iteration: 91/100 ===
[2026-06-15 16:03:05] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:07] [amplify_bbopt] [INFO]    objective: 5.847e+01
[2026-06-15 16:03:07] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:07] [amplify_bbopt] [INFO] === Iteration: 92/100 ===
[2026-06-15 16:03:07] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:10] [amplify_bbopt] [INFO]    objective: 5.916e+01
[2026-06-15 16:03:10] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:10] [amplify_bbopt] [INFO] === Iteration: 93/100 ===
[2026-06-15 16:03:10] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:13] [amplify_bbopt] [INFO]    objective: 5.919e+01
[2026-06-15 16:03:13] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:13] [amplify_bbopt] [INFO] === Iteration: 94/100 ===
[2026-06-15 16:03:13] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:15] [amplify_bbopt] [INFO]    objective: 6.152e+01
[2026-06-15 16:03:15] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:15] [amplify_bbopt] [INFO] === Iteration: 95/100 ===
[2026-06-15 16:03:15] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:18] [amplify_bbopt] [INFO]    objective: 5.616e+01
[2026-06-15 16:03:18] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:18] [amplify_bbopt] [INFO] === Iteration: 96/100 ===
[2026-06-15 16:03:18] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:21] [amplify_bbopt] [INFO]    objective: 5.497e+01
[2026-06-15 16:03:21] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:21] [amplify_bbopt] [INFO] === Iteration: 97/100 ===
[2026-06-15 16:03:21] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:23] [amplify_bbopt] [INFO]    objective: 5.875e+01
[2026-06-15 16:03:23] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:23] [amplify_bbopt] [INFO] === Iteration: 98/100 ===
[2026-06-15 16:03:23] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:26] [amplify_bbopt] [INFO]    objective: 5.514e+01
[2026-06-15 16:03:26] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:26] [amplify_bbopt] [INFO] === Iteration: 99/100 ===
[2026-06-15 16:03:26] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:28] [amplify_bbopt] [INFO]    objective: 5.674e+01
[2026-06-15 16:03:28] [amplify_bbopt] [INFO] current best: 2.135e+00
[2026-06-15 16:03:28] [amplify_bbopt] [INFO] === Iteration: 100/100 ===
[2026-06-15 16:03:28] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2026-06-15 16:03:31] [amplify_bbopt] [INFO]    objective: 5.202e+01
[2026-06-15 16:03:31] [amplify_bbopt] [INFO] current best: 2.135e+00
optimizer.best.values={'input_x': [0.41999999999999993, 0.2999999999999998, -1.38, -2.46, 0.96]}
optimizer.best.objective=2.1349641363028837

結果の可視化

最適化クラスインスタンスが持つ履歴情報に基づき、最適化履歴を可視化します。また、ベスト解の出力も可能です。

import matplotlib.pyplot as plt


def plot_optimization_history(optim: Optimizer, num_init: int) -> None:
    # 初期学習データの履歴
    objective_init = optim.training_data.y[:num_init]

    # アニーリングから直接得られた最良解の履歴
    objective_anneal = [
        float(h.annealing_best_solution.objective) for h in optim.history
    ]

    # ベスト解履歴(累積最小値)
    best_objectives = np.minimum.accumulate(
        np.concatenate([objective_init, np.array(objective_anneal)])
    )

    plt.plot(range(-num_init + 1, 1), objective_init, "blue")
    plt.plot(range(1, len(objective_anneal) + 1), objective_anneal, "-r")
    plt.plot(
        range(-num_init + 1, len(objective_anneal) + 1), best_objectives, ":k"
    )
    plt.xlabel("Cycles")
    plt.ylabel("Objective value")
    plt.grid(True)
    plt.show()


plot_optimization_history(optimizer, num_init_data)
_images/61376664b443eaa8bd47f3a3c7c8db2c526d5c2a2b0cae14d53bb41102cbafc7.png