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

ここでは、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


# 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.
    """
    return (
        10 * len(x)
        + (np.array(x) ** 2 - 10 * np.cos(2 * np.pi * np.array(x))).sum()
    )


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

# 実数決定変数リストの作成
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 を使って最適化サイクルを実行します。

from amplify import FixstarsClient
from amplify_bbopt import KMTrainer, Optimizer

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

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

# 初期学習データの作成 (最適化クラスのメソッド利用)
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

[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 1/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 2/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 3/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 4/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 5/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 6/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 7/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 8/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 9/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] Random data sample: 10/10
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] === Iteration: 1/100 ===
[2025-07-23 15:10:02] [amplify_bbopt] [INFO] model corrcoefs: <=10%: nan, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2025-07-23 15:10:05] [amplify_bbopt] [INFO]    objective: 5.418e+01
[2025-07-23 15:10:05] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:05] [amplify_bbopt] [INFO] === Iteration: 2/100 ===
[2025-07-23 15:10:05] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 1.000
[2025-07-23 15:10:08] [amplify_bbopt] [INFO]    objective: 4.500e+01
[2025-07-23 15:10:08] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:08] [amplify_bbopt] [INFO] === Iteration: 3/100 ===
[2025-07-23 15:10:08] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.424, <=50%: 0.472, all: 0.802
[2025-07-23 15:10:10] [amplify_bbopt] [INFO]    objective: 4.535e+01
[2025-07-23 15:10:10] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:10] [amplify_bbopt] [INFO] === Iteration: 4/100 ===
[2025-07-23 15:10:10] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.429, <=50%: 0.477, all: 0.815
[2025-07-23 15:10:13] [amplify_bbopt] [INFO]    objective: 3.865e+01
[2025-07-23 15:10:13] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:13] [amplify_bbopt] [INFO] === Iteration: 5/100 ===
[2025-07-23 15:10:13] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.487, <=50%: 0.238, all: 0.807
[2025-07-23 15:10:16] [amplify_bbopt] [INFO]    objective: 3.871e+01
[2025-07-23 15:10:16] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:16] [amplify_bbopt] [INFO] === Iteration: 6/100 ===
[2025-07-23 15:10:16] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.193, all: 0.803
2025-07-23 15:10:17 [amplify:WARNING] Connection timeout, retrying after sleep 1 second (1/3)
[2025-07-23 15:10:21] [amplify_bbopt] [INFO]    objective: 4.000e+01
[2025-07-23 15:10:21] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:21] [amplify_bbopt] [INFO] === Iteration: 7/100 ===
[2025-07-23 15:10:21] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.270, all: 0.800
[2025-07-23 15:10:24] [amplify_bbopt] [INFO]    objective: 5.299e+01
[2025-07-23 15:10:24] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:24] [amplify_bbopt] [INFO] === Iteration: 8/100 ===
[2025-07-23 15:10:24] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.124, all: 0.799
[2025-07-23 15:10:26] [amplify_bbopt] [INFO]    objective: 4.500e+01
[2025-07-23 15:10:26] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:26] [amplify_bbopt] [INFO] === Iteration: 9/100 ===
[2025-07-23 15:10:27] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.180, all: 0.797
[2025-07-23 15:10:29] [amplify_bbopt] [INFO]    objective: 4.500e+01
[2025-07-23 15:10:29] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:29] [amplify_bbopt] [INFO] === Iteration: 10/100 ===
[2025-07-23 15:10:29] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.116, all: 0.795
[2025-07-23 15:10:32] [amplify_bbopt] [INFO]    objective: 4.500e+01
[2025-07-23 15:10:32] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:32] [amplify_bbopt] [INFO] === Iteration: 11/100 ===
[2025-07-23 15:10:32] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.181, all: 0.793
[2025-07-23 15:10:35] [amplify_bbopt] [INFO]    objective: 4.535e+01
[2025-07-23 15:10:35] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:35] [amplify_bbopt] [INFO] === Iteration: 12/100 ===
[2025-07-23 15:10:35] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.093, <=50%: -0.242, all: 0.786
[2025-07-23 15:10:38] [amplify_bbopt] [INFO]    objective: 5.171e+01
[2025-07-23 15:10:38] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:38] [amplify_bbopt] [INFO] === Iteration: 13/100 ===
[2025-07-23 15:10:38] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.093, <=50%: -0.242, all: 0.785
[2025-07-23 15:10:41] [amplify_bbopt] [INFO]    objective: 4.535e+01
[2025-07-23 15:10:41] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:41] [amplify_bbopt] [INFO] === Iteration: 14/100 ===
[2025-07-23 15:10:41] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.093, <=50%: -0.286, all: 0.780
[2025-07-23 15:10:43] [amplify_bbopt] [INFO]    objective: 3.991e+01
[2025-07-23 15:10:43] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:43] [amplify_bbopt] [INFO] === Iteration: 15/100 ===
[2025-07-23 15:10:43] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.308, all: 0.776
[2025-07-23 15:10:46] [amplify_bbopt] [INFO]    objective: 9.386e+01
[2025-07-23 15:10:46] [amplify_bbopt] [INFO] current best: 3.649e+01
[2025-07-23 15:10:46] [amplify_bbopt] [INFO] === Iteration: 16/100 ===
[2025-07-23 15:10:46] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: -0.104, <=50%: -0.307, all: 0.832
[2025-07-23 15:10:49] [amplify_bbopt] [INFO]    objective: 2.921e+01
[2025-07-23 15:10:49] [amplify_bbopt] [INFO] current best: 2.921e+01
[2025-07-23 15:10:49] [amplify_bbopt] [INFO] === Iteration: 17/100 ===
[2025-07-23 15:10:49] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.129, all: 0.835
[2025-07-23 15:10:52] [amplify_bbopt] [INFO]    objective: 3.712e+01
[2025-07-23 15:10:52] [amplify_bbopt] [INFO] current best: 2.921e+01
[2025-07-23 15:10:52] [amplify_bbopt] [INFO] === Iteration: 18/100 ===
[2025-07-23 15:10:52] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.143, all: 0.834
[2025-07-23 15:10:55] [amplify_bbopt] [INFO]    objective: 3.459e+01
[2025-07-23 15:10:55] [amplify_bbopt] [INFO] current best: 2.921e+01
[2025-07-23 15:10:55] [amplify_bbopt] [INFO] === Iteration: 19/100 ===
[2025-07-23 15:10:55] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.140, all: 0.835
[2025-07-23 15:10:58] [amplify_bbopt] [INFO]    objective: 3.651e+01
[2025-07-23 15:10:58] [amplify_bbopt] [INFO] current best: 2.921e+01
[2025-07-23 15:10:58] [amplify_bbopt] [INFO] === Iteration: 20/100 ===
[2025-07-23 15:10:58] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: -0.148, all: 0.835
[2025-07-23 15:11:00] [amplify_bbopt] [INFO]    objective: 2.827e+01
[2025-07-23 15:11:00] [amplify_bbopt] [INFO] current best: 2.827e+01
[2025-07-23 15:11:00] [amplify_bbopt] [INFO] === Iteration: 21/100 ===
[2025-07-23 15:11:00] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.170, all: 0.839
[2025-07-23 15:11:03] [amplify_bbopt] [INFO]    objective: 3.825e+01
[2025-07-23 15:11:03] [amplify_bbopt] [INFO] current best: 2.827e+01
[2025-07-23 15:11:03] [amplify_bbopt] [INFO] === Iteration: 22/100 ===
[2025-07-23 15:11:03] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.168, all: 0.838
[2025-07-23 15:11:06] [amplify_bbopt] [INFO]    objective: 3.732e+01
[2025-07-23 15:11:06] [amplify_bbopt] [INFO] current best: 2.827e+01
[2025-07-23 15:11:06] [amplify_bbopt] [INFO] === Iteration: 23/100 ===
[2025-07-23 15:11:06] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.165, all: 0.838
[2025-07-23 15:11:09] [amplify_bbopt] [INFO]    objective: 2.311e+01
[2025-07-23 15:11:09] [amplify_bbopt] [INFO] current best: 2.311e+01
[2025-07-23 15:11:09] [amplify_bbopt] [INFO] === Iteration: 24/100 ===
[2025-07-23 15:11:09] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.299, all: 0.845
[2025-07-23 15:11:12] [amplify_bbopt] [INFO]    objective: 4.133e+01
[2025-07-23 15:11:12] [amplify_bbopt] [INFO] current best: 2.311e+01
[2025-07-23 15:11:12] [amplify_bbopt] [INFO] === Iteration: 25/100 ===
[2025-07-23 15:11:12] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.310, all: 0.844
[2025-07-23 15:11:15] [amplify_bbopt] [INFO]    objective: 2.199e+01
[2025-07-23 15:11:15] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:15] [amplify_bbopt] [INFO] === Iteration: 26/100 ===
[2025-07-23 15:11:15] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.404, all: 0.850
[2025-07-23 15:11:18] [amplify_bbopt] [INFO]    objective: 2.199e+01
[2025-07-23 15:11:18] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:18] [amplify_bbopt] [INFO] === Iteration: 27/100 ===
[2025-07-23 15:11:18] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.467, all: 0.856
2025-07-23 15:11:19 [amplify:WARNING] Connection timeout, retrying after sleep 1 second (1/3)
[2025-07-23 15:11:23] [amplify_bbopt] [INFO]    objective: 2.559e+01
[2025-07-23 15:11:23] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:23] [amplify_bbopt] [INFO] === Iteration: 28/100 ===
[2025-07-23 15:11:23] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 0.491, all: 0.859
[2025-07-23 15:11:26] [amplify_bbopt] [INFO]    objective: 3.712e+01
[2025-07-23 15:11:26] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:26] [amplify_bbopt] [INFO] === Iteration: 29/100 ===
[2025-07-23 15:11:26] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.859
[2025-07-23 15:11:29] [amplify_bbopt] [INFO]    objective: 4.232e+01
[2025-07-23 15:11:29] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:29] [amplify_bbopt] [INFO] === Iteration: 30/100 ===
[2025-07-23 15:11:29] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.859
[2025-07-23 15:11:32] [amplify_bbopt] [INFO]    objective: 5.299e+01
[2025-07-23 15:11:32] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:32] [amplify_bbopt] [INFO] === Iteration: 31/100 ===
[2025-07-23 15:11:32] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.860
[2025-07-23 15:11:35] [amplify_bbopt] [INFO]    objective: 3.758e+01
[2025-07-23 15:11:35] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:35] [amplify_bbopt] [INFO] === Iteration: 32/100 ===
[2025-07-23 15:11:35] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.860
[2025-07-23 15:11:37] [amplify_bbopt] [INFO]    objective: 2.671e+01
[2025-07-23 15:11:37] [amplify_bbopt] [INFO] current best: 2.199e+01
[2025-07-23 15:11:37] [amplify_bbopt] [INFO] === Iteration: 33/100 ===
[2025-07-23 15:11:37] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.862
[2025-07-23 15:11:40] [amplify_bbopt] [INFO]    objective: 1.699e+01
[2025-07-23 15:11:40] [amplify_bbopt] [INFO] current best: 1.699e+01
[2025-07-23 15:11:40] [amplify_bbopt] [INFO] === Iteration: 34/100 ===
[2025-07-23 15:11:40] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.869
[2025-07-23 15:11:43] [amplify_bbopt] [INFO]    objective: 4.535e+01
[2025-07-23 15:11:43] [amplify_bbopt] [INFO] current best: 1.699e+01
[2025-07-23 15:11:43] [amplify_bbopt] [INFO] === Iteration: 35/100 ===
[2025-07-23 15:11:43] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.856
[2025-07-23 15:11:46] [amplify_bbopt] [INFO]    objective: 1.792e+01
[2025-07-23 15:11:46] [amplify_bbopt] [INFO] current best: 1.699e+01
[2025-07-23 15:11:46] [amplify_bbopt] [INFO] === Iteration: 36/100 ===
[2025-07-23 15:11:46] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.861
[2025-07-23 15:11:49] [amplify_bbopt] [INFO]    objective: 1.551e+01
[2025-07-23 15:11:49] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:11:49] [amplify_bbopt] [INFO] === Iteration: 37/100 ===
[2025-07-23 15:11:49] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.867
[2025-07-23 15:11:53] [amplify_bbopt] [INFO]    objective: 1.621e+01
[2025-07-23 15:11:53] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:11:53] [amplify_bbopt] [INFO] === Iteration: 38/100 ===
[2025-07-23 15:11:53] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.872
[2025-07-23 15:11:56] [amplify_bbopt] [INFO]    objective: 1.643e+01
[2025-07-23 15:11:56] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:11:56] [amplify_bbopt] [INFO] === Iteration: 39/100 ===
[2025-07-23 15:11:56] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.877
[2025-07-23 15:11:59] [amplify_bbopt] [INFO]    objective: 1.889e+01
[2025-07-23 15:11:59] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:11:59] [amplify_bbopt] [INFO] === Iteration: 40/100 ===
[2025-07-23 15:11:59] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.880
[2025-07-23 15:12:02] [amplify_bbopt] [INFO]    objective: 4.500e+01
[2025-07-23 15:12:02] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:12:02] [amplify_bbopt] [INFO] === Iteration: 41/100 ===
[2025-07-23 15:12:02] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.880
[2025-07-23 15:12:05] [amplify_bbopt] [INFO]    objective: 1.598e+01
[2025-07-23 15:12:05] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:12:05] [amplify_bbopt] [INFO] === Iteration: 42/100 ===
[2025-07-23 15:12:05] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.884
[2025-07-23 15:12:08] [amplify_bbopt] [INFO]    objective: 4.535e+01
[2025-07-23 15:12:08] [amplify_bbopt] [INFO] current best: 1.551e+01
[2025-07-23 15:12:08] [amplify_bbopt] [INFO] === Iteration: 43/100 ===
[2025-07-23 15:12:08] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.873
[2025-07-23 15:12:11] [amplify_bbopt] [INFO]    objective: 1.288e+01
[2025-07-23 15:12:11] [amplify_bbopt] [INFO] current best: 1.288e+01
[2025-07-23 15:12:11] [amplify_bbopt] [INFO] === Iteration: 44/100 ===
[2025-07-23 15:12:11] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.877
[2025-07-23 15:12:13] [amplify_bbopt] [INFO]    objective: 1.359e+01
[2025-07-23 15:12:13] [amplify_bbopt] [INFO] current best: 1.288e+01
[2025-07-23 15:12:13] [amplify_bbopt] [INFO] === Iteration: 45/100 ===
[2025-07-23 15:12:13] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.881
[2025-07-23 15:12:16] [amplify_bbopt] [INFO]    objective: 1.630e+01
[2025-07-23 15:12:16] [amplify_bbopt] [INFO] current best: 1.288e+01
[2025-07-23 15:12:16] [amplify_bbopt] [INFO] === Iteration: 46/100 ===
[2025-07-23 15:12:16] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.884
[2025-07-23 15:12:19] [amplify_bbopt] [INFO]    objective: 1.036e+01
[2025-07-23 15:12:19] [amplify_bbopt] [INFO] current best: 1.036e+01
[2025-07-23 15:12:19] [amplify_bbopt] [INFO] === Iteration: 47/100 ===
[2025-07-23 15:12:19] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.889
[2025-07-23 15:12:22] [amplify_bbopt] [INFO]    objective: 1.083e+01
[2025-07-23 15:12:22] [amplify_bbopt] [INFO] current best: 1.036e+01
[2025-07-23 15:12:22] [amplify_bbopt] [INFO] === Iteration: 48/100 ===
[2025-07-23 15:12:22] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.892
[2025-07-23 15:12:25] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:12:25] [amplify_bbopt] [INFO]    objective: 7.989e+01
[2025-07-23 15:12:25] [amplify_bbopt] [INFO] current best: 1.036e+01
[2025-07-23 15:12:25] [amplify_bbopt] [INFO] === Iteration: 49/100 ===
[2025-07-23 15:12:25] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.901
[2025-07-23 15:12:28] [amplify_bbopt] [INFO]    objective: 1.024e+01
[2025-07-23 15:12:28] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:28] [amplify_bbopt] [INFO] === Iteration: 50/100 ===
[2025-07-23 15:12:28] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.905
[2025-07-23 15:12:30] [amplify_bbopt] [INFO]    objective: 1.276e+01
[2025-07-23 15:12:30] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:30] [amplify_bbopt] [INFO] === Iteration: 51/100 ===
[2025-07-23 15:12:31] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.907
[2025-07-23 15:12:33] [amplify_bbopt] [INFO]    objective: 4.500e+01
[2025-07-23 15:12:33] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:33] [amplify_bbopt] [INFO] === Iteration: 52/100 ===
[2025-07-23 15:12:33] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.907
[2025-07-23 15:12:37] [amplify_bbopt] [INFO]    objective: 1.117e+01
[2025-07-23 15:12:37] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:37] [amplify_bbopt] [INFO] === Iteration: 53/100 ===
[2025-07-23 15:12:37] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.909
[2025-07-23 15:12:39] [amplify_bbopt] [INFO]    objective: 1.095e+01
[2025-07-23 15:12:39] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:39] [amplify_bbopt] [INFO] === Iteration: 54/100 ===
[2025-07-23 15:12:39] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.912
[2025-07-23 15:12:42] [amplify_bbopt] [INFO]    objective: 1.095e+01
[2025-07-23 15:12:42] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:42] [amplify_bbopt] [INFO] === Iteration: 55/100 ===
[2025-07-23 15:12:42] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.914
[2025-07-23 15:12:47] [amplify_bbopt] [INFO]    objective: 1.072e+01
[2025-07-23 15:12:47] [amplify_bbopt] [INFO] current best: 1.024e+01
[2025-07-23 15:12:47] [amplify_bbopt] [INFO] === Iteration: 56/100 ===
[2025-07-23 15:12:47] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.916
[2025-07-23 15:12:50] [amplify_bbopt] [INFO]    objective: 8.958e+00
[2025-07-23 15:12:50] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:12:50] [amplify_bbopt] [INFO] === Iteration: 57/100 ===
[2025-07-23 15:12:50] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.918
[2025-07-23 15:12:53] [amplify_bbopt] [INFO]    objective: 9.663e+00
[2025-07-23 15:12:53] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:12:53] [amplify_bbopt] [INFO] === Iteration: 58/100 ===
[2025-07-23 15:12:53] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.920
[2025-07-23 15:12:56] [amplify_bbopt] [INFO]    objective: 9.434e+00
[2025-07-23 15:12:56] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:12:56] [amplify_bbopt] [INFO] === Iteration: 59/100 ===
[2025-07-23 15:12:56] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.922
[2025-07-23 15:12:59] [amplify_bbopt] [INFO]    objective: 9.663e+00
[2025-07-23 15:12:59] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:12:59] [amplify_bbopt] [INFO] === Iteration: 60/100 ===
[2025-07-23 15:12:59] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.923
[2025-07-23 15:13:02] [amplify_bbopt] [INFO]    objective: 9.882e+00
[2025-07-23 15:13:02] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:13:02] [amplify_bbopt] [INFO] === Iteration: 61/100 ===
[2025-07-23 15:13:02] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.925
[2025-07-23 15:13:05] [amplify_bbopt] [INFO]    objective: 9.074e+00
[2025-07-23 15:13:05] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:13:05] [amplify_bbopt] [INFO] === Iteration: 62/100 ===
[2025-07-23 15:13:05] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.926
[2025-07-23 15:13:07] [amplify_bbopt] [INFO]    objective: 9.074e+00
[2025-07-23 15:13:07] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:13:07] [amplify_bbopt] [INFO] === Iteration: 63/100 ===
[2025-07-23 15:13:07] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.927
[2025-07-23 15:13:10] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:10] [amplify_bbopt] [INFO]    objective: 4.962e+01
[2025-07-23 15:13:10] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:13:10] [amplify_bbopt] [INFO] === Iteration: 64/100 ===
[2025-07-23 15:13:10] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.928
[2025-07-23 15:13:13] [amplify_bbopt] [INFO]    objective: 1.684e+01
[2025-07-23 15:13:13] [amplify_bbopt] [INFO] current best: 8.958e+00
[2025-07-23 15:13:13] [amplify_bbopt] [INFO] === Iteration: 65/100 ===
[2025-07-23 15:13:13] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.929
[2025-07-23 15:13:16] [amplify_bbopt] [INFO]    objective: 7.474e+00
[2025-07-23 15:13:16] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:16] [amplify_bbopt] [INFO] === Iteration: 66/100 ===
[2025-07-23 15:13:16] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.930
[2025-07-23 15:13:19] [amplify_bbopt] [INFO]    objective: 7.590e+00
[2025-07-23 15:13:19] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:19] [amplify_bbopt] [INFO] === Iteration: 67/100 ===
[2025-07-23 15:13:19] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.931
[2025-07-23 15:13:21] [amplify_bbopt] [INFO]    objective: 8.758e+00
[2025-07-23 15:13:21] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:21] [amplify_bbopt] [INFO] === Iteration: 68/100 ===
[2025-07-23 15:13:22] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.932
[2025-07-23 15:13:24] [amplify_bbopt] [INFO]    objective: 8.758e+00
[2025-07-23 15:13:24] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:24] [amplify_bbopt] [INFO] === Iteration: 69/100 ===
[2025-07-23 15:13:24] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.934
[2025-07-23 15:13:27] [amplify_bbopt] [INFO]    objective: 8.179e+00
[2025-07-23 15:13:27] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:27] [amplify_bbopt] [INFO] === Iteration: 70/100 ===
[2025-07-23 15:13:27] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.935
[2025-07-23 15:13:30] [amplify_bbopt] [INFO]    objective: 7.950e+00
[2025-07-23 15:13:30] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:30] [amplify_bbopt] [INFO] === Iteration: 71/100 ===
[2025-07-23 15:13:30] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.936
[2025-07-23 15:13:33] [amplify_bbopt] [INFO]    objective: 8.179e+00
[2025-07-23 15:13:33] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:33] [amplify_bbopt] [INFO] === Iteration: 72/100 ===
[2025-07-23 15:13:33] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.937
[2025-07-23 15:13:36] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:36] [amplify_bbopt] [INFO]    objective: 5.645e+01
[2025-07-23 15:13:36] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:36] [amplify_bbopt] [INFO] === Iteration: 73/100 ===
[2025-07-23 15:13:36] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.938
[2025-07-23 15:13:38] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:38] [amplify_bbopt] [INFO]    objective: 9.679e+01
[2025-07-23 15:13:38] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:38] [amplify_bbopt] [INFO] === Iteration: 74/100 ===
[2025-07-23 15:13:38] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.944
[2025-07-23 15:13:41] [amplify_bbopt] [INFO]    objective: 7.590e+00
[2025-07-23 15:13:41] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:41] [amplify_bbopt] [INFO] === Iteration: 75/100 ===
[2025-07-23 15:13:41] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.945
[2025-07-23 15:13:44] [amplify_bbopt] [INFO]    objective: 8.398e+00
[2025-07-23 15:13:44] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:44] [amplify_bbopt] [INFO] === Iteration: 76/100 ===
[2025-07-23 15:13:44] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.946
[2025-07-23 15:13:47] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:47] [amplify_bbopt] [INFO]    objective: 6.956e+01
[2025-07-23 15:13:47] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:47] [amplify_bbopt] [INFO] === Iteration: 77/100 ===
[2025-07-23 15:13:47] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.948
[2025-07-23 15:13:50] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:50] [amplify_bbopt] [INFO]    objective: 8.708e+01
[2025-07-23 15:13:50] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:50] [amplify_bbopt] [INFO] === Iteration: 78/100 ===
[2025-07-23 15:13:50] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.951
[2025-07-23 15:13:53] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:53] [amplify_bbopt] [INFO]    objective: 6.639e+01
[2025-07-23 15:13:53] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:53] [amplify_bbopt] [INFO] === Iteration: 79/100 ===
[2025-07-23 15:13:53] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.953
[2025-07-23 15:13:56] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:56] [amplify_bbopt] [INFO]    objective: 4.723e+01
[2025-07-23 15:13:56] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:56] [amplify_bbopt] [INFO] === Iteration: 80/100 ===
[2025-07-23 15:13:56] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.953
[2025-07-23 15:13:58] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:13:58] [amplify_bbopt] [INFO]    objective: 8.373e+01
[2025-07-23 15:13:58] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:13:58] [amplify_bbopt] [INFO] === Iteration: 81/100 ===
[2025-07-23 15:13:58] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.955
2025-07-23 15:14:00 [amplify:WARNING] Connection timeout, retrying after sleep 1 second (1/3)
[2025-07-23 15:14:03] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:14:03] [amplify_bbopt] [INFO]    objective: 6.585e+01
[2025-07-23 15:14:03] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:14:03] [amplify_bbopt] [INFO] === Iteration: 82/100 ===
[2025-07-23 15:14:03] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.956
[2025-07-23 15:14:06] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:14:06] [amplify_bbopt] [INFO]    objective: 9.127e+01
[2025-07-23 15:14:06] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:14:06] [amplify_bbopt] [INFO] === Iteration: 83/100 ===
[2025-07-23 15:14:06] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.959
[2025-07-23 15:14:09] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:14:09] [amplify_bbopt] [INFO]    objective: 6.763e+01
[2025-07-23 15:14:09] [amplify_bbopt] [INFO] current best: 7.474e+00
[2025-07-23 15:14:09] [amplify_bbopt] [INFO] === Iteration: 84/100 ===
[2025-07-23 15:14:09] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.960
[2025-07-23 15:14:12] [amplify_bbopt] [INFO]    objective: 7.357e+00
[2025-07-23 15:14:12] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:12] [amplify_bbopt] [INFO] === Iteration: 85/100 ===
[2025-07-23 15:14:12] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.960
[2025-07-23 15:14:15] [amplify_bbopt] [INFO]    objective: 1.221e+01
[2025-07-23 15:14:15] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:15] [amplify_bbopt] [INFO] === Iteration: 86/100 ===
[2025-07-23 15:14:15] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.960
[2025-07-23 15:14:18] [amplify_bbopt] [INFO]    objective: 8.063e+00
[2025-07-23 15:14:18] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:18] [amplify_bbopt] [INFO] === Iteration: 87/100 ===
[2025-07-23 15:14:18] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.961
[2025-07-23 15:14:21] [amplify_bbopt] [INFO]    objective: 8.281e+00
[2025-07-23 15:14:21] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:21] [amplify_bbopt] [INFO] === Iteration: 88/100 ===
[2025-07-23 15:14:21] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.961
[2025-07-23 15:14:23] [amplify_bbopt] [INFO]    objective: 2.053e+01
[2025-07-23 15:14:23] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:23] [amplify_bbopt] [INFO] === Iteration: 89/100 ===
[2025-07-23 15:14:23] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.961
[2025-07-23 15:14:27] [amplify_bbopt] [INFO]    objective: 7.474e+00
[2025-07-23 15:14:27] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:27] [amplify_bbopt] [INFO] === Iteration: 90/100 ===
[2025-07-23 15:14:27] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.962
[2025-07-23 15:14:30] [amplify_bbopt] [INFO]    objective: 7.474e+00
[2025-07-23 15:14:30] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:30] [amplify_bbopt] [INFO] === Iteration: 91/100 ===
[2025-07-23 15:14:30] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.962
[2025-07-23 15:14:33] [amplify_bbopt] [INFO]    objective: 8.063e+00
[2025-07-23 15:14:33] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:33] [amplify_bbopt] [INFO] === Iteration: 92/100 ===
[2025-07-23 15:14:33] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.963
[2025-07-23 15:14:35] [amplify_bbopt] [INFO]    objective: 7.834e+00
[2025-07-23 15:14:35] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:35] [amplify_bbopt] [INFO] === Iteration: 93/100 ===
[2025-07-23 15:14:35] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.963
[2025-07-23 15:14:38] [amplify_bbopt] [INFO]    objective: 8.641e+00
[2025-07-23 15:14:38] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:38] [amplify_bbopt] [INFO] === Iteration: 94/100 ===
[2025-07-23 15:14:38] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.963
[2025-07-23 15:14:41] [amplify_bbopt] [WARN] No mutated solution was found in fallback
[2025-07-23 15:14:41] [amplify_bbopt] [INFO]    objective: 1.031e+02
[2025-07-23 15:14:41] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:41] [amplify_bbopt] [INFO] === Iteration: 95/100 ===
[2025-07-23 15:14:41] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.966
[2025-07-23 15:14:44] [amplify_bbopt] [INFO]    objective: 8.641e+00
[2025-07-23 15:14:44] [amplify_bbopt] [INFO] current best: 7.357e+00
[2025-07-23 15:14:44] [amplify_bbopt] [INFO] === Iteration: 96/100 ===
[2025-07-23 15:14:44] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.967
[2025-07-23 15:14:47] [amplify_bbopt] [INFO]    objective: 4.180e+00
[2025-07-23 15:14:47] [amplify_bbopt] [INFO] current best: 4.180e+00
[2025-07-23 15:14:47] [amplify_bbopt] [INFO] === Iteration: 97/100 ===
[2025-07-23 15:14:47] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.967
[2025-07-23 15:14:50] [amplify_bbopt] [INFO]    objective: 5.664e+00
[2025-07-23 15:14:50] [amplify_bbopt] [INFO] current best: 4.180e+00
[2025-07-23 15:14:50] [amplify_bbopt] [INFO] === Iteration: 98/100 ===
[2025-07-23 15:14:50] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.967
[2025-07-23 15:14:53] [amplify_bbopt] [INFO]    objective: 4.297e+00
[2025-07-23 15:14:53] [amplify_bbopt] [INFO] current best: 4.180e+00
[2025-07-23 15:14:53] [amplify_bbopt] [INFO] === Iteration: 99/100 ===
[2025-07-23 15:14:53] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.968
[2025-07-23 15:14:55] [amplify_bbopt] [INFO]    objective: 9.497e+00
[2025-07-23 15:14:55] [amplify_bbopt] [INFO] current best: 4.180e+00
[2025-07-23 15:14:55] [amplify_bbopt] [INFO] === Iteration: 100/100 ===
[2025-07-23 15:14:55] [amplify_bbopt] [INFO] model corrcoefs: <=10%: 1.000, <=25%: 1.000, <=50%: 1.000, all: 0.968
[2025-07-23 15:14:58] [amplify_bbopt] [INFO]    objective: 6.199e+00
[2025-07-23 15:14:58] [amplify_bbopt] [INFO] current best: 4.180e+00
optimizer.best.values={'input_x': [0.96, 1.0199999999999996, 0.0, 0.06000000000000005, -1.0199999999999996]}
optimizer.best.objective=4.180109503541608

結果の可視化

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

import matplotlib.pyplot as plt

# 初期学習データの履歴
objective_init = optimizer.training_data.y[:num_init_data]

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

plt.plot(range(-num_init_data + 1, 1), objective_init, "blue")
plt.plot(range(1, len(objective_anneal) + 1), objective_anneal, "-r")
plt.xlabel("Cycles")
plt.ylabel("Objective value")
plt.grid(True)
_images/3e82e88431ef4ec8aa9c65d7ce19ed4d37776b49ae1891595382eb619937f04c.png