Multi-objective BO: Perovskite light-intensity dependant JV and impedance fits with SIMsalabim (fake data)

This notebook is a demonstration of how to fit light-intensity dependent JV curves and impedance data (both capacitance and conductance) with drift-diffusion models using the SIMsalabim package.

[1]:
# Import necessary libraries
import warnings, os, sys, shutil
# remove warnings from the output
os.environ["PYTHONWARNINGS"] = "ignore"
warnings.filterwarnings(action='ignore', category=FutureWarning)
warnings.filterwarnings(action='ignore', category=UserWarning)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from numpy.random import default_rng
import torch, copy, uuid
import pySIMsalabim as sim
from pySIMsalabim.experiments.JV_steady_state import *
from pySIMsalabim.experiments.impedance import *
import ax, logging
from ax.utils.notebook.plotting import init_notebook_plotting, render
init_notebook_plotting() # for Jupyter notebooks

try:
    from optimpv import *
    from optimpv.axBOtorch.axUtils import *
except Exception as e:
    sys.path.append('../') # add the path to the optimpv module
    from optimpv import *
    from optimpv.axBOtorch.axUtils import *
[INFO 12-05 13:36:11] ax.utils.notebook.plotting: Injecting Plotly library into cell. Do not overwrite or delete cell.
[INFO 12-05 13:36:11] ax.utils.notebook.plotting: Please see
    (https://ax.dev/tutorials/visualizations.html#Fix-for-plots-that-are-not-rendering)
    if visualizations are not rendering.

Define the parameters for the simulation

[2]:
params = [] # list of parameters to be optimized

mun = FitParam(name = 'l2.mu_n', value = 6e-4, bounds = [1e-5,1e-3], values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$\mu_n$', unit='m$^2$ V$^{-1}$s$^{-1}$', axis_type = 'log', std = 0,encoding = None,force_log = True)
params.append(mun)

mup = FitParam(name = 'l2.mu_p', value = 4e-4, bounds = [1e-5,1e-3], values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$\mu_p$', unit=r'm$^2$ V$^{-1}$s$^{-1}$', axis_type = 'log', std = 0,encoding = None,force_log = True)
params.append(mup)

bulk_tr = FitParam(name = 'l2.N_t_bulk', value = 1e20, bounds = [1e19,1e21], values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$N_{T}$', unit=r'm$^{-3}$', axis_type = 'log', std = 0,encoding = None,force_log = False)
params.append(bulk_tr)

HTL_int_trap = FitParam(name = 'l1.N_t_int', value = 5e11, bounds = [1e11,1e13], values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$N_{T,int}^{HTL}$', unit='m$^{-2}$', axis_type = 'log', std = 0,encoding = None,force_log = False)
params.append(HTL_int_trap)

ETL_int_trap = FitParam(name = 'l2.N_t_int', value = 4e12, bounds = [1e11,1e13], values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$N_{T,int}^{ETL}$', unit='m$^{-2}$', axis_type = 'log', std = 0,encoding = None,force_log = False)
params.append(ETL_int_trap)

Nions = FitParam(name = 'l2.N_ions', value = 1e22, bounds = [1e20,5e22], type='range', values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$C_{ions}$', unit='m$^{-3}$', axis_type = 'log', std = 0,encoding = None,force_log = False)
params.append(Nions)

R_series = FitParam(name = 'R_series', value = 1e-4, bounds = [1e-5,1e-3], type='range', values = None, start_value = None, log_scale = True, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$R_{series}$', unit=r'$\Omega$ m$^2$', axis_type = 'log', std = 0,encoding = None,force_log = False)
params.append(R_series)

eps_r = FitParam(name = 'l2.eps_r', value = 35, bounds = [25,55], type='range', values = None, start_value = None, log_scale = False, value_type = 'float', fscale = None, rescale = False, stepsize = None, display_name=r'$\epsilon_r$', unit='', axis_type = 'linear', std = 0,encoding = None,force_log = False)
params.append(eps_r)

num_free_params = 0
for p in params:
    if p.type != 'fixed'    :
        num_free_params += 1
# save the original parameters for later
params_orig = copy.deepcopy(params)

Generate some fake data

Here we generate some fake data to fit. The data is generated using the same model as the one used for the fitting, so it is a good test of the fitting procedure. For more information on how to run SIMsalabim from python see the pySIMsalabim package.

[3]:
# First we do the JV simulation with the original parameters
# Set the session path for the simulation and the input files
session_path = os.path.join(os.path.join(os.path.abspath('../'),'SIMsalabim','SimSS'))
input_path = os.path.join(os.path.join(os.path.join(os.path.abspath('../'),'Data','simsalabim_test_inputs','fakePerovskite')))
simulation_setup_filename = 'simulation_setup_fakePerovskite.txt'
simulation_setup = os.path.join(session_path, simulation_setup_filename)
optical_files = ['nk_glass.txt','nk_ITO.txt','nk_PTAA.txt','nk_FACsPbIBr.txt','nk_C60_1.txt','nk_Au.txt']
# path to the layer files defined in the simulation_setup file
l1 = 'PTAA.txt'
l2 = 'fakePerovskite.txt'
l3 = 'C60.txt'
l1 = os.path.join(input_path, l1)
l2 = os.path.join(input_path, l2)
l3 = os.path.join(input_path, l3)

# copy this files to session_path
force_copy = True
if not os.path.exists(session_path):
    os.makedirs(session_path)
for file in [l1,l2,l3,simulation_setup_filename]:
    file = os.path.join(input_path, os.path.basename(file))
    if force_copy or not os.path.exists(os.path.join(session_path, os.path.basename(file))):
        shutil.copyfile(file, os.path.join(session_path, os.path.basename(file)))
    else:
        print('File already exists: ',file)
# copy the optical files to the session path
for file in optical_files:
    file = os.path.join(input_path, os.path.basename(file))
    if force_copy or not os.path.exists(os.path.join(session_path, os.path.basename(file))):
        shutil.copyfile(file, os.path.join(session_path, os.path.basename(file)))

# Show the device structure
fig = sim.plot_band_diagram(simulation_setup, session_path)

# reset simss
# Set the JV parameters
Gfracs = [0.1,0.5,1.0] # Fractions of the generation rate to simulate (None if you want only one light intensity as define in the simulation_setup file)
UUID = str(uuid.uuid4()) # random UUID to avoid overwriting files

cmd_pars = [] # see pySIMsalabim documentation for the command line parameters
# Add the parameters to the command line arguments
for param in params:
    if param.name == 'l2.N_ions':
        cmd_pars.append({'par':'l2.N_cation', 'val':str(param.value)})
        cmd_pars.append({'par':'l2.N_anion', 'val':str(param.value)})
    else:
        cmd_pars.append({'par':param.name, 'val':str(param.value)})

# Run the JV simulation
ret, mess = run_SS_JV(simulation_setup, session_path, JV_file_name = 'JV.dat', G_fracs = Gfracs, parallel = True, max_jobs = 3, UUID=UUID, cmd_pars=cmd_pars)

# save data for fitting
X,y = [],[]
X_orig,y_orig = [],[]
if Gfracs is None:
    data = pd.read_csv(os.path.join(session_path, 'JV_'+UUID+'.dat'), sep=r'\s+') # Load the data
    Vext = np.asarray(data['Vext'].values)
    Jext = np.asarray(data['Jext'].values)
    G = np.ones_like(Vext)
    rng = default_rng()#
    noise = rng.standard_normal(Jext.shape) * 0.01 * Jext
    Jext = Jext + noise
    X = Vext
    y = Jext

    plt.figure()
    plt.plot(X,y)
    plt.show()
else:
    for Gfrac in Gfracs:
        data = pd.read_csv(os.path.join(session_path, 'JV_Gfrac_'+str(Gfrac)+'_'+UUID+'.dat'), sep=r'\s+') # Load the data
        Vext = np.asarray(data['Vext'].values)
        Jext = np.asarray(data['Jext'].values)
        G = np.ones_like(Vext)*Gfrac
        rng = default_rng()#
        noise = rng.standard_normal(Jext.shape) * 0.005 * Jext

        if len(X) == 0:
            X = np.vstack((Vext,G)).T
            y = Jext + noise
            y_orig = Jext
        else:
            X = np.vstack((X,np.vstack((Vext,G)).T))
            y = np.hstack((y,Jext+ noise))
            y_orig = np.hstack((y_orig,Jext))

    # remove all the current where Jext is higher than a given value
    X = X[y<200]
    X_orig = copy.deepcopy(X)
    y_orig = y_orig[y<200]
    y = y[y<200]

    plt.figure()
    for Gfrac in Gfracs:
        plt.plot(X[X[:,1]==Gfrac,0],y[X[:,1]==Gfrac],label='Gfrac = '+str(Gfrac)) # we have an pin device, so we need to invert the sign of the current
    plt.xlabel('Voltage [V]')
    plt.ylabel('Current density [A m$^{-2}$]')
    plt.legend()
    plt.show()


../_images/examples_MO_JV_impedance_fakePerovskite_5_0.png
../_images/examples_MO_JV_impedance_fakePerovskite_5_1.png
[4]:
# Now we prepare the impedance simulation
# Set the session path for the simulation and the input files
session_path_zimt = os.path.join(os.path.join(os.path.abspath('../'),'SIMsalabim','ZimT'))
input_path_zimt = os.path.join(os.path.join(os.path.join(os.path.abspath('../'),'Data','simsalabim_test_inputs','fakePerovskite')))
simulation_setup_filename_zimt = 'simulation_setup_zimt_fakePerovskite.txt'
simulation_setup_zimt = os.path.join(session_path_zimt, simulation_setup_filename_zimt)
# copy this files to session_path
if not os.path.exists(session_path_zimt):
    os.makedirs(session_path_zimt)
for file in [l1,l2,l3,simulation_setup_filename_zimt]:
    file = os.path.join(input_path_zimt, os.path.basename(file))
    if force_copy or not os.path.exists(os.path.join(session_path_zimt, os.path.basename(file))):
        shutil.copyfile(file, os.path.join(session_path_zimt, os.path.basename(file)))
    else:
        print('File already exists: ',file)
# copy the optical files to the session path
for file in optical_files:
    file = os.path.join(input_path_zimt, os.path.basename(file))
    if force_copy or not os.path.exists(os.path.join(session_path_zimt, os.path.basename(file))):
        shutil.copyfile(file, os.path.join(session_path_zimt, os.path.basename(file)))

# Set the impedance parameters
f_min = 1e-1
f_max = 1e6
f_steps = 20
V_0 = 0
del_V = 0.01
G_frac = 0

# Set the command line parameters
cmd_pars_zimt = [] # see pySIMsalabim documentation for the command line parameters
# Add the parameters to the command line arguments
for param in params:
    if param.name == 'l2.N_ions':
        cmd_pars_zimt.append({'par':'l2.N_cation', 'val':str(param.value)})
        cmd_pars_zimt.append({'par':'l2.N_anion', 'val':str(param.value)})
    else:
        cmd_pars_zimt.append({'par':param.name, 'val':str(param.value)})

# Run the impedance simulation
ret,mess = run_impedance_simu(simulation_setup_zimt, session_path_zimt, f_min = f_min, f_max = f_max, f_steps = f_steps, V_0 = V_0, G_frac = G_frac, del_V = del_V, UUID=UUID, cmd_pars=cmd_pars, output_file = 'freqZ.dat')

# Load the data
data = pd.read_csv(os.path.join(session_path_zimt, 'freqZ_'+UUID+'.dat'), sep=r'\s+')

# Extract the data
freqs = np.asarray(data['freq'].values)
X_imp = np.asarray(data['freq'].values)
yimp = np.asarray(data['C'].values)
yimp2 = np.asarray(data['G'].values)
noise_level = 0.0025
rng = default_rng()
noise = rng.standard_normal(yimp.shape) * noise_level * yimp
yimp_noisy = yimp + noise
noise = rng.standard_normal(yimp2.shape) * noise_level * yimp2
yimp2_noisy = yimp2 + noise
# Plot the data
plt.figure()
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(freqs,yimp_noisy, 'g-')
ax2.plot(freqs,yimp2_noisy, 'b-')
ax1.set_xlabel('Frequency [Hz]')
ax1.set_ylabel('C [F m$^{-2}$]', color='g')
ax2.set_ylabel('G [S m$^{-2}$]', color='b')
ax1.set_xscale('log')
ax2.set_xscale('log')
plt.title('Impedance data')
plt.show()
<Figure size 640x480 with 0 Axes>
../_images/examples_MO_JV_impedance_fakePerovskite_6_1.png

Run the optimization

[5]:
# Define the Agent and the target metric/loss function
from optimpv.DDfits.JVAgent import JVAgent
from optimpv.DDfits.ImpedanceAgent import ImpedanceAgent

metric = 'nrmse' # can be 'nrmse', 'mse', 'mae'
loss = 'linear' # can be 'linear', 'huber', 'soft_l1'
threshold = 0.1 # need this to get a reference point for the hypervolume calculation

jv = JVAgent(params, X, y, session_path, simulation_setup, parallel = True, max_jobs = 3, metric = metric, loss = loss,threshold=threshold)

# Calulate the target metric for the original parameters
best_fit_possible = loss_function(calc_metric(y,y_orig, metric_name = metric),loss)
print('Best fit JV: ',best_fit_possible)


imp = ImpedanceAgent(params, [X_imp,X_imp], [yimp_noisy,yimp2_noisy], session_path_zimt, metric = [metric,metric], loss = [loss,loss], threshold=[threshold,threshold],minimize=[True,True],exp_format=['Cf','Gf'],f_min = f_min, f_max = f_max, f_steps = f_steps, V_0 = V_0, G_frac = G_frac, del_V = del_V, simulation_setup=simulation_setup_zimt)

# Calulate the target metric for the original parameters
best_fit_possible = loss_function(calc_metric(yimp_noisy,yimp, metric_name = metric),loss)
print('Best fit C-f: ',best_fit_possible)
best_fit_possible = loss_function(calc_metric(yimp2_noisy,yimp2, metric_name = metric),loss)
print('Best fit G-f: ',best_fit_possible)

Best fit JV:  0.0015492933038270386
Best fit C-f:  0.007247317017098025
Best fit G-f:  0.00024463613345715235
[ ]:
from optimpv.axBOtorch.axBOtorchOptimizer import axBOtorchOptimizer
from optimpv.axBOtorch.axUtils import get_VMLC_default_model_kwargs_list

optimizer = axBOtorchOptimizer(params = params, agents = [jv,imp], models = ['SOBOL','BOTORCH_MODULAR'],n_batches = [1,30], batch_size = [10,2], model_gen_kwargs_list = get_VMLC_default_model_kwargs_list(num_free_params,is_MOO=True))

[7]:
optimizer.optimize() # run the optimization with ax
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 0 with parameters: {'l2.mu_n': -4.797739384695888, 'l2.mu_p': -4.79222870990634, 'l2.N_t_bulk': 7.040646555475335e+19, 'l1.N_t_int': 1118098818297.1982, 'l2.N_t_int': 106589934927.13176, 'l2.N_ions': 1.0661619203763459e+22, 'R_series': 0.0008428052556334796, 'l2.eps_r': 30.260012988001108}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 1 with parameters: {'l2.mu_n': -3.346119709312916, 'l2.mu_p': -3.524919766932726, 'l2.N_t_bulk': 3.6172532249578406e+20, 'l1.N_t_int': 299814358658.455, 'l2.N_t_int': 1008900598061.6748, 'l2.N_ions': 5.3877450990100434e+20, 'R_series': 5.911882177577454e-05, 'l2.eps_r': 48.98056018166244}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 2 with parameters: {'l2.mu_n': -3.6001107208430767, 'l2.mu_p': -4.045112693682313, 'l2.N_t_bulk': 1.1877584161286169e+19, 'l1.N_t_int': 5799584240147.928, 'l2.N_t_int': 3526721972151.7485, 'l2.N_ions': 2.1914120306362443e+20, 'R_series': 0.00015051680429344763, 'l2.eps_r': 45.76124775223434}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 3 with parameters: {'l2.mu_n': -4.0508301127702, 'l2.mu_p': -3.277864756062627, 'l2.N_t_bulk': 1.8630647950709172e+20, 'l1.N_t_int': 509793343326.7251, 'l2.N_t_int': 351538103146.5846, 'l2.N_ions': 5.536928503964855e+21, 'R_series': 1.0368357576473188e-05, 'l2.eps_r': 34.540414456278086}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 4 with parameters: {'l2.mu_n': -4.392366608604789, 'l2.mu_p': -4.342509904876351, 'l2.N_t_bulk': 9.738279663740967e+20, 'l1.N_t_int': 760502045292.4177, 'l2.N_t_int': 693126471768.7356, 'l2.N_ions': 2.4664904033788892e+22, 'R_series': 0.00025549743972776146, 'l2.eps_r': 42.883211160078645}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 5 with parameters: {'l2.mu_n': -3.9407012313604355, 'l2.mu_p': -3.105470584705472, 'l2.N_t_bulk': 4.6558358305580835e+19, 'l1.N_t_int': 3922807565354.582, 'l2.N_t_int': 6544005318404.658, 'l2.N_ions': 1.2463906263324369e+21, 'R_series': 1.7979966467516658e-05, 'l2.eps_r': 39.16252437978983}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 6 with parameters: {'l2.mu_n': -3.194982383400202, 'l2.mu_p': -4.58956503495574, 'l2.N_t_bulk': 1.6373187128325017e+20, 'l1.N_t_int': 151987773934.5118, 'l2.N_t_int': 2288181514877.95, 'l2.N_ions': 1.0724922442377011e+20, 'R_series': 0.0004603514640593723, 'l2.eps_r': 25.62323037534952}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 7 with parameters: {'l2.mu_n': -4.645655954256654, 'l2.mu_p': -3.8525867201387882, 'l2.N_t_bulk': 2.389913127003914e+19, 'l1.N_t_int': 2225514005109.31, 'l2.N_t_int': 228530783448.28537, 'l2.N_ions': 2.709866664608296e+21, 'R_series': 3.182294814186402e-05, 'l2.eps_r': 51.84397437609732}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 8 with parameters: {'l2.mu_n': -4.511367540806532, 'l2.mu_p': -4.151778507977724, 'l2.N_t_bulk': 1.253874261783528e+20, 'l1.N_t_int': 5475739987321.153, 'l2.N_t_int': 1516501579982.8022, 'l2.N_ions': 9.43987304334732e+21, 'R_series': 0.00022483980136143213, 'l2.eps_r': 40.92251930385828}
[INFO 12-05 13:37:53] optimpv.axBOtorchOptimizer: Trial 9 with parameters: {'l2.mu_n': -3.0870830584317446, 'l2.mu_p': -3.4158373288810253, 'l2.N_t_bulk': 2.0382786493445104e+19, 'l1.N_t_int': 623286197312.175, 'l2.N_t_int': 145492466999.32516, 'l2.N_ions': 4.543839946638766e+20, 'R_series': 2.8236133485360608e-05, 'l2.eps_r': 37.14343854226172}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 0 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07614742968808946), 'Imp_Cf_nrmse_linear': np.float64(0.1396136983991205), 'Imp_Gf_nrmse_linear': np.float64(0.12359458899525094)} and parameters: {'l2.mu_n': -4.797739384695888, 'l2.mu_p': -4.79222870990634, 'l2.N_t_bulk': 7.040646555475335e+19, 'l1.N_t_int': 1118098818297.1982, 'l2.N_t_int': 106589934927.13176, 'l2.N_ions': 1.0661619203763459e+22, 'R_series': 0.0008428052556334796, 'l2.eps_r': 30.260012988001108}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 1 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02118954283417608), 'Imp_Cf_nrmse_linear': np.float64(0.33165849331206737), 'Imp_Gf_nrmse_linear': np.float64(0.022000229366063818)} and parameters: {'l2.mu_n': -3.346119709312916, 'l2.mu_p': -3.524919766932726, 'l2.N_t_bulk': 3.6172532249578406e+20, 'l1.N_t_int': 299814358658.455, 'l2.N_t_int': 1008900598061.6748, 'l2.N_ions': 5.3877450990100434e+20, 'R_series': 5.911882177577454e-05, 'l2.eps_r': 48.98056018166244}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 2 completed with results: {'JV_JV_nrmse_linear': np.float64(0.12388869912468121), 'Imp_Cf_nrmse_linear': np.float64(0.35758641658767887), 'Imp_Gf_nrmse_linear': np.float64(0.06408379456687763)} and parameters: {'l2.mu_n': -3.6001107208430767, 'l2.mu_p': -4.045112693682313, 'l2.N_t_bulk': 1.1877584161286169e+19, 'l1.N_t_int': 5799584240147.928, 'l2.N_t_int': 3526721972151.7485, 'l2.N_ions': 2.1914120306362443e+20, 'R_series': 0.00015051680429344763, 'l2.eps_r': 45.76124775223434}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 3 completed with results: {'JV_JV_nrmse_linear': np.float64(0.024045181278400735), 'Imp_Cf_nrmse_linear': np.float64(0.21916519098498666), 'Imp_Gf_nrmse_linear': np.float64(0.11773417713804205)} and parameters: {'l2.mu_n': -4.0508301127702, 'l2.mu_p': -3.277864756062627, 'l2.N_t_bulk': 1.8630647950709172e+20, 'l1.N_t_int': 509793343326.7251, 'l2.N_t_int': 351538103146.5846, 'l2.N_ions': 5.536928503964855e+21, 'R_series': 1.0368357576473188e-05, 'l2.eps_r': 34.540414456278086}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 4 completed with results: {'JV_JV_nrmse_linear': np.float64(0.06588313724609277), 'Imp_Cf_nrmse_linear': np.float64(0.34807733814797337), 'Imp_Gf_nrmse_linear': np.float64(0.0895846590756656)} and parameters: {'l2.mu_n': -4.392366608604789, 'l2.mu_p': -4.342509904876351, 'l2.N_t_bulk': 9.738279663740967e+20, 'l1.N_t_int': 760502045292.4177, 'l2.N_t_int': 693126471768.7356, 'l2.N_ions': 2.4664904033788892e+22, 'R_series': 0.00025549743972776146, 'l2.eps_r': 42.883211160078645}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 5 completed with results: {'JV_JV_nrmse_linear': np.float64(0.11157732926566681), 'Imp_Cf_nrmse_linear': np.float64(0.3761033500083812), 'Imp_Gf_nrmse_linear': np.float64(0.10454318691996323)} and parameters: {'l2.mu_n': -3.9407012313604355, 'l2.mu_p': -3.105470584705472, 'l2.N_t_bulk': 4.6558358305580835e+19, 'l1.N_t_int': 3922807565354.582, 'l2.N_t_int': 6544005318404.658, 'l2.N_ions': 1.2463906263324369e+21, 'R_series': 1.7979966467516658e-05, 'l2.eps_r': 39.16252437978983}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 6 completed with results: {'JV_JV_nrmse_linear': np.float64(0.06666003564274951), 'Imp_Cf_nrmse_linear': np.float64(0.41014290641663065), 'Imp_Gf_nrmse_linear': np.float64(0.09402157206610909)} and parameters: {'l2.mu_n': -3.194982383400202, 'l2.mu_p': -4.58956503495574, 'l2.N_t_bulk': 1.6373187128325017e+20, 'l1.N_t_int': 151987773934.5118, 'l2.N_t_int': 2288181514877.95, 'l2.N_ions': 1.0724922442377011e+20, 'R_series': 0.0004603514640593723, 'l2.eps_r': 25.62323037534952}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 7 completed with results: {'JV_JV_nrmse_linear': np.float64(0.06897360091599922), 'Imp_Cf_nrmse_linear': np.float64(0.2843454396146414), 'Imp_Gf_nrmse_linear': np.float64(0.07004922166550871)} and parameters: {'l2.mu_n': -4.645655954256654, 'l2.mu_p': -3.8525867201387882, 'l2.N_t_bulk': 2.389913127003914e+19, 'l1.N_t_int': 2225514005109.31, 'l2.N_t_int': 228530783448.28537, 'l2.N_ions': 2.709866664608296e+21, 'R_series': 3.182294814186402e-05, 'l2.eps_r': 51.84397437609732}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 8 completed with results: {'JV_JV_nrmse_linear': np.float64(0.0968061515248263), 'Imp_Cf_nrmse_linear': np.float64(0.12372827297763568), 'Imp_Gf_nrmse_linear': np.float64(0.08001884734196979)} and parameters: {'l2.mu_n': -4.511367540806532, 'l2.mu_p': -4.151778507977724, 'l2.N_t_bulk': 1.253874261783528e+20, 'l1.N_t_int': 5475739987321.153, 'l2.N_t_int': 1516501579982.8022, 'l2.N_ions': 9.43987304334732e+21, 'R_series': 0.00022483980136143213, 'l2.eps_r': 40.92251930385828}
[INFO 12-05 13:39:52] optimpv.axBOtorchOptimizer: Trial 9 completed with results: {'JV_JV_nrmse_linear': np.float64(0.0422948559110693), 'Imp_Cf_nrmse_linear': np.float64(0.4606816563335088), 'Imp_Gf_nrmse_linear': np.float64(0.09026691796096765)} and parameters: {'l2.mu_n': -3.0870830584317446, 'l2.mu_p': -3.4158373288810253, 'l2.N_t_bulk': 2.0382786493445104e+19, 'l1.N_t_int': 623286197312.175, 'l2.N_t_int': 145492466999.32516, 'l2.N_ions': 4.543839946638766e+20, 'R_series': 2.8236133485360608e-05, 'l2.eps_r': 37.14343854226172}
[INFO 12-05 13:39:54] optimpv.axBOtorchOptimizer: Trial 10 with parameters: {'l2.mu_n': -3.5280398123491676, 'l2.mu_p': -3.347101365910607, 'l2.N_t_bulk': 1e+21, 'l1.N_t_int': 188771824199.34988, 'l2.N_t_int': 926638682941.2893, 'l2.N_ions': 7.804910364041718e+20, 'R_series': 5.9584352645712494e-05, 'l2.eps_r': 54.95168525211055}
[INFO 12-05 13:39:54] optimpv.axBOtorchOptimizer: Trial 11 with parameters: {'l2.mu_n': -3.3857652389863677, 'l2.mu_p': -4.0404949644056485, 'l2.N_t_bulk': 5.589843878267905e+20, 'l1.N_t_int': 135540004292.58513, 'l2.N_t_int': 8907480225967.94, 'l2.N_ions': 1.6178986255996722e+21, 'R_series': 1.2146817724185316e-05, 'l2.eps_r': 46.86771206252709}
[INFO 12-05 13:41:42] optimpv.axBOtorchOptimizer: Trial 10 completed with results: {'JV_JV_nrmse_linear': np.float64(0.03703998661361955), 'Imp_Cf_nrmse_linear': np.float64(0.34355820540720555), 'Imp_Gf_nrmse_linear': np.float64(0.010156898569832217)} and parameters: {'l2.mu_n': -3.5280398123491676, 'l2.mu_p': -3.347101365910607, 'l2.N_t_bulk': 1e+21, 'l1.N_t_int': 188771824199.34988, 'l2.N_t_int': 926638682941.2893, 'l2.N_ions': 7.804910364041718e+20, 'R_series': 5.9584352645712494e-05, 'l2.eps_r': 54.95168525211055}
[INFO 12-05 13:41:42] optimpv.axBOtorchOptimizer: Trial 11 completed with results: {'JV_JV_nrmse_linear': np.float64(0.051768384283534544), 'Imp_Cf_nrmse_linear': np.float64(0.2877496868870586), 'Imp_Gf_nrmse_linear': np.float64(0.11021293114204078)} and parameters: {'l2.mu_n': -3.3857652389863677, 'l2.mu_p': -4.0404949644056485, 'l2.N_t_bulk': 5.589843878267905e+20, 'l1.N_t_int': 135540004292.58513, 'l2.N_t_int': 8907480225967.94, 'l2.N_ions': 1.6178986255996722e+21, 'R_series': 1.2146817724185316e-05, 'l2.eps_r': 46.86771206252709}
[INFO 12-05 13:41:44] optimpv.axBOtorchOptimizer: Trial 12 with parameters: {'l2.mu_n': -3.1488538628191964, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 7.243850001140005e+19, 'l1.N_t_int': 510914786314.6012, 'l2.N_t_int': 834030445718.017, 'l2.N_ions': 1.3718059689640355e+20, 'R_series': 4.7099259262484613e-05, 'l2.eps_r': 47.54444466084776}
[INFO 12-05 13:41:44] optimpv.axBOtorchOptimizer: Trial 13 with parameters: {'l2.mu_n': -3.6273787900728016, 'l2.mu_p': -3.409793027958127, 'l2.N_t_bulk': 6.179841559931085e+19, 'l1.N_t_int': 841750095795.5887, 'l2.N_t_int': 1140113669970.1958, 'l2.N_ions': 5.319709708389123e+20, 'R_series': 1.4433128355168496e-05, 'l2.eps_r': 43.974111617555195}
[INFO 12-05 13:43:27] optimpv.axBOtorchOptimizer: Trial 12 completed with results: {'JV_JV_nrmse_linear': np.float64(0.01582507454190084), 'Imp_Cf_nrmse_linear': np.float64(0.3587877388670155), 'Imp_Gf_nrmse_linear': np.float64(0.046559134198228096)} and parameters: {'l2.mu_n': -3.1488538628191964, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 7.243850001140005e+19, 'l1.N_t_int': 510914786314.6012, 'l2.N_t_int': 834030445718.017, 'l2.N_ions': 1.3718059689640355e+20, 'R_series': 4.7099259262484613e-05, 'l2.eps_r': 47.54444466084776}
[INFO 12-05 13:43:27] optimpv.axBOtorchOptimizer: Trial 13 completed with results: {'JV_JV_nrmse_linear': np.float64(0.05770724331201617), 'Imp_Cf_nrmse_linear': np.float64(0.36221915095842283), 'Imp_Gf_nrmse_linear': np.float64(0.10798505379846352)} and parameters: {'l2.mu_n': -3.6273787900728016, 'l2.mu_p': -3.409793027958127, 'l2.N_t_bulk': 6.179841559931085e+19, 'l1.N_t_int': 841750095795.5887, 'l2.N_t_int': 1140113669970.1958, 'l2.N_ions': 5.319709708389123e+20, 'R_series': 1.4433128355168496e-05, 'l2.eps_r': 43.974111617555195}
[INFO 12-05 13:43:29] optimpv.axBOtorchOptimizer: Trial 14 with parameters: {'l2.mu_n': -4.844390904102605, 'l2.mu_p': -3.210658176521059, 'l2.N_t_bulk': 4.5456597799824956e+20, 'l1.N_t_int': 252682835071.7622, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 1.7769937933880464e+22, 'R_series': 1.2083034764678936e-05, 'l2.eps_r': 40.88673635410461}
[INFO 12-05 13:43:29] optimpv.axBOtorchOptimizer: Trial 15 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.6048333002322357, 'l2.N_t_bulk': 6.046927024207162e+19, 'l1.N_t_int': 279674708738.74286, 'l2.N_t_int': 5523370197817.423, 'l2.N_ions': 1.9675953853363278e+21, 'R_series': 7.373386499480264e-05, 'l2.eps_r': 27.144430663314623}
[INFO 12-05 13:45:16] optimpv.axBOtorchOptimizer: Trial 14 completed with results: {'JV_JV_nrmse_linear': np.float64(0.050220958376477935), 'Imp_Cf_nrmse_linear': np.float64(0.30993069066593826), 'Imp_Gf_nrmse_linear': np.float64(0.10807303081530872)} and parameters: {'l2.mu_n': -4.844390904102605, 'l2.mu_p': -3.210658176521059, 'l2.N_t_bulk': 4.5456597799824956e+20, 'l1.N_t_int': 252682835071.7622, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 1.7769937933880464e+22, 'R_series': 1.2083034764678936e-05, 'l2.eps_r': 40.88673635410461}
[INFO 12-05 13:45:16] optimpv.axBOtorchOptimizer: Trial 15 completed with results: {'JV_JV_nrmse_linear': np.float64(0.011460190078149806), 'Imp_Cf_nrmse_linear': np.float64(0.5585067268722378), 'Imp_Gf_nrmse_linear': np.float64(0.051637016348528436)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.6048333002322357, 'l2.N_t_bulk': 6.046927024207162e+19, 'l1.N_t_int': 279674708738.74286, 'l2.N_t_int': 5523370197817.423, 'l2.N_ions': 1.9675953853363278e+21, 'R_series': 7.373386499480264e-05, 'l2.eps_r': 27.144430663314623}
[INFO 12-05 13:45:18] optimpv.axBOtorchOptimizer: Trial 16 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+21, 'l1.N_t_int': 321290968289.8967, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 1e+20, 'R_series': 6.596474955514314e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:45:18] optimpv.axBOtorchOptimizer: Trial 17 with parameters: {'l2.mu_n': -3.6774226415711078, 'l2.mu_p': -3.2431400277860227, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 461501334812.14886, 'l2.N_t_int': 685209258629.3419, 'l2.N_ions': 1e+20, 'R_series': 5.896888913839101e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:47:05] optimpv.axBOtorchOptimizer: Trial 16 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02099206145040228), 'Imp_Cf_nrmse_linear': np.float64(0.3586928408575347), 'Imp_Gf_nrmse_linear': np.float64(0.006144633390409971)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+21, 'l1.N_t_int': 321290968289.8967, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 1e+20, 'R_series': 6.596474955514314e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:47:05] optimpv.axBOtorchOptimizer: Trial 17 completed with results: {'JV_JV_nrmse_linear': np.float64(0.011964755892597358), 'Imp_Cf_nrmse_linear': np.float64(0.3531298361747577), 'Imp_Gf_nrmse_linear': np.float64(0.014284470153619864)} and parameters: {'l2.mu_n': -3.6774226415711078, 'l2.mu_p': -3.2431400277860227, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 461501334812.14886, 'l2.N_t_int': 685209258629.3419, 'l2.N_ions': 1e+20, 'R_series': 5.896888913839101e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:47:07] optimpv.axBOtorchOptimizer: Trial 18 with parameters: {'l2.mu_n': -4.804364490211757, 'l2.mu_p': -3.6536818589342395, 'l2.N_t_bulk': 9.43636742311091e+19, 'l1.N_t_int': 10000000000000.0, 'l2.N_t_int': 2753252502103.413, 'l2.N_ions': 4.130702084067904e+22, 'R_series': 0.00035325956410612523, 'l2.eps_r': 34.77532528141522}
[INFO 12-05 13:47:07] optimpv.axBOtorchOptimizer: Trial 19 with parameters: {'l2.mu_n': -3.134441700431083, 'l2.mu_p': -3.630121830150275, 'l2.N_t_bulk': 1.4854086986985672e+20, 'l1.N_t_int': 773933070338.9286, 'l2.N_t_int': 7252275425627.817, 'l2.N_ions': 5.848589727187591e+21, 'R_series': 6.188146393962478e-05, 'l2.eps_r': 50.53086217158719}
[INFO 12-05 13:48:51] optimpv.axBOtorchOptimizer: Trial 18 completed with results: {'JV_JV_nrmse_linear': np.float64(0.09059876282135922), 'Imp_Cf_nrmse_linear': np.float64(0.3046812994783561), 'Imp_Gf_nrmse_linear': np.float64(0.09296031870255982)} and parameters: {'l2.mu_n': -4.804364490211757, 'l2.mu_p': -3.6536818589342395, 'l2.N_t_bulk': 9.43636742311091e+19, 'l1.N_t_int': 10000000000000.0, 'l2.N_t_int': 2753252502103.413, 'l2.N_ions': 4.130702084067904e+22, 'R_series': 0.00035325956410612523, 'l2.eps_r': 34.77532528141522}
[INFO 12-05 13:48:51] optimpv.axBOtorchOptimizer: Trial 19 completed with results: {'JV_JV_nrmse_linear': np.float64(0.041809646802933385), 'Imp_Cf_nrmse_linear': np.float64(0.2706949746871604), 'Imp_Gf_nrmse_linear': np.float64(0.014578871494615031)} and parameters: {'l2.mu_n': -3.134441700431083, 'l2.mu_p': -3.630121830150275, 'l2.N_t_bulk': 1.4854086986985672e+20, 'l1.N_t_int': 773933070338.9286, 'l2.N_t_int': 7252275425627.817, 'l2.N_ions': 5.848589727187591e+21, 'R_series': 6.188146393962478e-05, 'l2.eps_r': 50.53086217158719}
[INFO 12-05 13:48:54] optimpv.axBOtorchOptimizer: Trial 20 with parameters: {'l2.mu_n': -4.804860732631436, 'l2.mu_p': -4.753771350700813, 'l2.N_t_bulk': 7.699040949183851e+20, 'l1.N_t_int': 1148833814932.6914, 'l2.N_t_int': 194866470814.12488, 'l2.N_ions': 2.40685618842584e+22, 'R_series': 5.353127319300505e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:48:54] optimpv.axBOtorchOptimizer: Trial 21 with parameters: {'l2.mu_n': -3.5220673310484174, 'l2.mu_p': -3.4535987147588623, 'l2.N_t_bulk': 1.4157882003268966e+19, 'l1.N_t_int': 481030651199.5878, 'l2.N_t_int': 433176524126.086, 'l2.N_ions': 1.466449294580547e+21, 'R_series': 6.947082769006144e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:50:40] optimpv.axBOtorchOptimizer: Trial 20 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07365259540048577), 'Imp_Cf_nrmse_linear': np.float64(0.4793942017828283), 'Imp_Gf_nrmse_linear': np.float64(0.017664725411299386)} and parameters: {'l2.mu_n': -4.804860732631436, 'l2.mu_p': -4.753771350700813, 'l2.N_t_bulk': 7.699040949183851e+20, 'l1.N_t_int': 1148833814932.6914, 'l2.N_t_int': 194866470814.12488, 'l2.N_ions': 2.40685618842584e+22, 'R_series': 5.353127319300505e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:50:40] optimpv.axBOtorchOptimizer: Trial 21 completed with results: {'JV_JV_nrmse_linear': np.float64(0.009994924760973696), 'Imp_Cf_nrmse_linear': np.float64(0.3215319879649103), 'Imp_Gf_nrmse_linear': np.float64(0.007772804230583624)} and parameters: {'l2.mu_n': -3.5220673310484174, 'l2.mu_p': -3.4535987147588623, 'l2.N_t_bulk': 1.4157882003268966e+19, 'l1.N_t_int': 481030651199.5878, 'l2.N_t_int': 433176524126.086, 'l2.N_ions': 1.466449294580547e+21, 'R_series': 6.947082769006144e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:50:44] optimpv.axBOtorchOptimizer: Trial 22 with parameters: {'l2.mu_n': -3.0585917785774255, 'l2.mu_p': -3.843757052036655, 'l2.N_t_bulk': 5.386937841080753e+20, 'l1.N_t_int': 574794994811.2911, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 5e+22, 'R_series': 7.24378396241458e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:50:44] optimpv.axBOtorchOptimizer: Trial 23 with parameters: {'l2.mu_n': -3.1930065628517963, 'l2.mu_p': -3.3177427010991343, 'l2.N_t_bulk': 1.3362177876457449e+20, 'l1.N_t_int': 702498850227.7783, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 8.199998906078322e+21, 'R_series': 9.51031020397855e-05, 'l2.eps_r': 53.52194993140358}
[INFO 12-05 13:52:31] optimpv.axBOtorchOptimizer: Trial 22 completed with results: {'JV_JV_nrmse_linear': np.float64(0.03140297148356026), 'Imp_Cf_nrmse_linear': np.float64(0.5539118382817516), 'Imp_Gf_nrmse_linear': np.float64(0.04126784439362292)} and parameters: {'l2.mu_n': -3.0585917785774255, 'l2.mu_p': -3.843757052036655, 'l2.N_t_bulk': 5.386937841080753e+20, 'l1.N_t_int': 574794994811.2911, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 5e+22, 'R_series': 7.24378396241458e-05, 'l2.eps_r': 55.0}
[INFO 12-05 13:52:31] optimpv.axBOtorchOptimizer: Trial 23 completed with results: {'JV_JV_nrmse_linear': np.float64(0.020299148034322013), 'Imp_Cf_nrmse_linear': np.float64(0.3251488168004892), 'Imp_Gf_nrmse_linear': np.float64(0.03814598291865832)} and parameters: {'l2.mu_n': -3.1930065628517963, 'l2.mu_p': -3.3177427010991343, 'l2.N_t_bulk': 1.3362177876457449e+20, 'l1.N_t_int': 702498850227.7783, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 8.199998906078322e+21, 'R_series': 9.51031020397855e-05, 'l2.eps_r': 53.52194993140358}
[INFO 12-05 13:52:34] optimpv.axBOtorchOptimizer: Trial 24 with parameters: {'l2.mu_n': -4.012251962883938, 'l2.mu_p': -3.5133729940443956, 'l2.N_t_bulk': 8.424031080209703e+19, 'l1.N_t_int': 1014407461165.6064, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.588993897082143e+21, 'R_series': 7.908932326025873e-05, 'l2.eps_r': 49.949182382361315}
[INFO 12-05 13:52:34] optimpv.axBOtorchOptimizer: Trial 25 with parameters: {'l2.mu_n': -4.292432685999236, 'l2.mu_p': -3.0119728914276998, 'l2.N_t_bulk': 2.394694104818316e+19, 'l1.N_t_int': 622529775401.1001, 'l2.N_t_int': 8860934458022.893, 'l2.N_ions': 2.065349952756857e+21, 'R_series': 8.550506589111074e-05, 'l2.eps_r': 50.629497692315866}
[INFO 12-05 13:54:19] optimpv.axBOtorchOptimizer: Trial 24 completed with results: {'JV_JV_nrmse_linear': np.float64(0.056400881412523016), 'Imp_Cf_nrmse_linear': np.float64(0.26524622961551814), 'Imp_Gf_nrmse_linear': np.float64(0.013718964577199289)} and parameters: {'l2.mu_n': -4.012251962883938, 'l2.mu_p': -3.5133729940443956, 'l2.N_t_bulk': 8.424031080209703e+19, 'l1.N_t_int': 1014407461165.6064, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.588993897082143e+21, 'R_series': 7.908932326025873e-05, 'l2.eps_r': 49.949182382361315}
[INFO 12-05 13:54:19] optimpv.axBOtorchOptimizer: Trial 25 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02133303311575631), 'Imp_Cf_nrmse_linear': np.float64(0.2795376514099286), 'Imp_Gf_nrmse_linear': np.float64(0.023103072205814562)} and parameters: {'l2.mu_n': -4.292432685999236, 'l2.mu_p': -3.0119728914276998, 'l2.N_t_bulk': 2.394694104818316e+19, 'l1.N_t_int': 622529775401.1001, 'l2.N_t_int': 8860934458022.893, 'l2.N_ions': 2.065349952756857e+21, 'R_series': 8.550506589111074e-05, 'l2.eps_r': 50.629497692315866}
[INFO 12-05 13:54:22] optimpv.axBOtorchOptimizer: Trial 26 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+21, 'l1.N_t_int': 731754457142.6367, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.771134500901669e+21, 'R_series': 5.648707884226141e-05, 'l2.eps_r': 50.255447201585454}
[INFO 12-05 13:54:22] optimpv.axBOtorchOptimizer: Trial 27 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 414251941734.84454, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 3.548994511110338e+21, 'R_series': 8.332358665032023e-05, 'l2.eps_r': 51.37876880558214}
[INFO 12-05 13:56:08] optimpv.axBOtorchOptimizer: Trial 26 completed with results: {'JV_JV_nrmse_linear': np.float64(0.05367675737595362), 'Imp_Cf_nrmse_linear': np.float64(0.27605525491956784), 'Imp_Gf_nrmse_linear': np.float64(0.02299876824595065)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+21, 'l1.N_t_int': 731754457142.6367, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.771134500901669e+21, 'R_series': 5.648707884226141e-05, 'l2.eps_r': 50.255447201585454}
[INFO 12-05 13:56:08] optimpv.axBOtorchOptimizer: Trial 27 completed with results: {'JV_JV_nrmse_linear': np.float64(0.011756741479736273), 'Imp_Cf_nrmse_linear': np.float64(0.2695146399166968), 'Imp_Gf_nrmse_linear': np.float64(0.021394092543803603)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 414251941734.84454, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 3.548994511110338e+21, 'R_series': 8.332358665032023e-05, 'l2.eps_r': 51.37876880558214}
[INFO 12-05 13:56:12] optimpv.axBOtorchOptimizer: Trial 28 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.1159422774563446, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 717740354782.6877, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 4.4888312222724286e+21, 'R_series': 6.969114927342596e-05, 'l2.eps_r': 48.39770297281855}
[INFO 12-05 13:56:12] optimpv.axBOtorchOptimizer: Trial 29 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -4.618986592308451, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 418593450706.48804, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.808650973267253e+21, 'R_series': 7.822486141497525e-05, 'l2.eps_r': 50.38956376221621}
[INFO 12-05 13:57:54] optimpv.axBOtorchOptimizer: Trial 28 completed with results: {'JV_JV_nrmse_linear': np.float64(0.033745611994770705), 'Imp_Cf_nrmse_linear': np.float64(0.23274015393791414), 'Imp_Gf_nrmse_linear': np.float64(0.005790499809674779)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.1159422774563446, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 717740354782.6877, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 4.4888312222724286e+21, 'R_series': 6.969114927342596e-05, 'l2.eps_r': 48.39770297281855}
[INFO 12-05 13:57:54] optimpv.axBOtorchOptimizer: Trial 29 completed with results: {'JV_JV_nrmse_linear': np.float64(0.04215504730941143), 'Imp_Cf_nrmse_linear': np.float64(0.26480234689347665), 'Imp_Gf_nrmse_linear': np.float64(0.013011625011323009)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -4.618986592308451, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 418593450706.48804, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.808650973267253e+21, 'R_series': 7.822486141497525e-05, 'l2.eps_r': 50.38956376221621}
[INFO 12-05 13:57:57] optimpv.axBOtorchOptimizer: Trial 30 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 1343308075511.2373, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 6.198832012033326e+21, 'R_series': 9.164176823246309e-05, 'l2.eps_r': 45.03005052388423}
[INFO 12-05 13:57:57] optimpv.axBOtorchOptimizer: Trial 31 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 427709165425.9576, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 2.6765434739137e+21, 'R_series': 8.863320680153106e-05, 'l2.eps_r': 54.5195256821419}
[INFO 12-05 13:59:39] optimpv.axBOtorchOptimizer: Trial 30 completed with results: {'JV_JV_nrmse_linear': np.float64(0.06440325792735409), 'Imp_Cf_nrmse_linear': np.float64(0.18610588707101727), 'Imp_Gf_nrmse_linear': np.float64(0.019255703586573473)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 1343308075511.2373, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 6.198832012033326e+21, 'R_series': 9.164176823246309e-05, 'l2.eps_r': 45.03005052388423}
[INFO 12-05 13:59:39] optimpv.axBOtorchOptimizer: Trial 31 completed with results: {'JV_JV_nrmse_linear': np.float64(0.022244958324472285), 'Imp_Cf_nrmse_linear': np.float64(0.30561356800181777), 'Imp_Gf_nrmse_linear': np.float64(0.03231293983941468)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 427709165425.9576, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 2.6765434739137e+21, 'R_series': 8.863320680153106e-05, 'l2.eps_r': 54.5195256821419}
[INFO 12-05 13:59:43] optimpv.axBOtorchOptimizer: Trial 32 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 464723456239.89355, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 5.787418826016937e+21, 'R_series': 7.339735442911793e-05, 'l2.eps_r': 45.399811793473866}
[INFO 12-05 13:59:43] optimpv.axBOtorchOptimizer: Trial 33 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 2050159459488.7744, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 6.681293221893911e+21, 'R_series': 0.00013327957309342787, 'l2.eps_r': 43.48229665427809}
[INFO 12-05 14:01:25] optimpv.axBOtorchOptimizer: Trial 32 completed with results: {'JV_JV_nrmse_linear': np.float64(0.0049578890379983675), 'Imp_Cf_nrmse_linear': np.float64(0.19103986792296396), 'Imp_Gf_nrmse_linear': np.float64(0.00603196590120341)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 464723456239.89355, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 5.787418826016937e+21, 'R_series': 7.339735442911793e-05, 'l2.eps_r': 45.399811793473866}
[INFO 12-05 14:01:25] optimpv.axBOtorchOptimizer: Trial 33 completed with results: {'JV_JV_nrmse_linear': np.float64(0.0778031724889213), 'Imp_Cf_nrmse_linear': np.float64(0.15607839665391923), 'Imp_Gf_nrmse_linear': np.float64(0.05050651390073965)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 2050159459488.7744, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 6.681293221893911e+21, 'R_series': 0.00013327957309342787, 'l2.eps_r': 43.48229665427809}
[INFO 12-05 14:01:28] optimpv.axBOtorchOptimizer: Trial 34 with parameters: {'l2.mu_n': -3.5959158826892144, 'l2.mu_p': -3.067569392000772, 'l2.N_t_bulk': 6.520927626720602e+20, 'l1.N_t_int': 154559278979.72345, 'l2.N_t_int': 774938567143.4108, 'l2.N_ions': 7.011351476336155e+21, 'R_series': 7.618251603282633e-05, 'l2.eps_r': 43.22398277393312}
[INFO 12-05 14:01:28] optimpv.axBOtorchOptimizer: Trial 35 with parameters: {'l2.mu_n': -4.0918205358299184, 'l2.mu_p': -3.300457951440658, 'l2.N_t_bulk': 9.524985685444141e+20, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 7522475667265.564, 'l2.N_ions': 7.797678783562104e+21, 'R_series': 6.609416770097128e-05, 'l2.eps_r': 38.35672774096799}
[INFO 12-05 14:03:15] optimpv.axBOtorchOptimizer: Trial 34 completed with results: {'JV_JV_nrmse_linear': np.float64(0.050339799253281525), 'Imp_Cf_nrmse_linear': np.float64(0.1698637594901906), 'Imp_Gf_nrmse_linear': np.float64(0.0052130611349050894)} and parameters: {'l2.mu_n': -3.5959158826892144, 'l2.mu_p': -3.067569392000772, 'l2.N_t_bulk': 6.520927626720602e+20, 'l1.N_t_int': 154559278979.72345, 'l2.N_t_int': 774938567143.4108, 'l2.N_ions': 7.011351476336155e+21, 'R_series': 7.618251603282633e-05, 'l2.eps_r': 43.22398277393312}
[INFO 12-05 14:03:15] optimpv.axBOtorchOptimizer: Trial 35 completed with results: {'JV_JV_nrmse_linear': np.float64(0.050633416298543704), 'Imp_Cf_nrmse_linear': np.float64(0.08295754821109039), 'Imp_Gf_nrmse_linear': np.float64(0.03211908615638073)} and parameters: {'l2.mu_n': -4.0918205358299184, 'l2.mu_p': -3.300457951440658, 'l2.N_t_bulk': 9.524985685444141e+20, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 7522475667265.564, 'l2.N_ions': 7.797678783562104e+21, 'R_series': 6.609416770097128e-05, 'l2.eps_r': 38.35672774096799}
[INFO 12-05 14:03:19] optimpv.axBOtorchOptimizer: Trial 36 with parameters: {'l2.mu_n': -4.065307886227586, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 5.8636774522000196e+19, 'l1.N_t_int': 419548860189.83545, 'l2.N_t_int': 2291471559793.966, 'l2.N_ions': 3.3633527561229527e+20, 'R_series': 7.149242939346329e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:03:19] optimpv.axBOtorchOptimizer: Trial 37 with parameters: {'l2.mu_n': -3.64096964061686, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 8.531134960090756e+19, 'l1.N_t_int': 376666626829.28906, 'l2.N_t_int': 710016831209.6674, 'l2.N_ions': 8.954117281565135e+21, 'R_series': 7.112125108616008e-05, 'l2.eps_r': 42.363915274769965}
[INFO 12-05 14:05:03] optimpv.axBOtorchOptimizer: Trial 36 completed with results: {'JV_JV_nrmse_linear': np.float64(0.049336508423559), 'Imp_Cf_nrmse_linear': np.float64(0.34509747031041704), 'Imp_Gf_nrmse_linear': np.float64(0.011190714734589609)} and parameters: {'l2.mu_n': -4.065307886227586, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 5.8636774522000196e+19, 'l1.N_t_int': 419548860189.83545, 'l2.N_t_int': 2291471559793.966, 'l2.N_ions': 3.3633527561229527e+20, 'R_series': 7.149242939346329e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:05:03] optimpv.axBOtorchOptimizer: Trial 37 completed with results: {'JV_JV_nrmse_linear': np.float64(0.0246645758918337), 'Imp_Cf_nrmse_linear': np.float64(0.17181545615441007), 'Imp_Gf_nrmse_linear': np.float64(0.016793614928634633)} and parameters: {'l2.mu_n': -3.64096964061686, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 8.531134960090756e+19, 'l1.N_t_int': 376666626829.28906, 'l2.N_t_int': 710016831209.6674, 'l2.N_ions': 8.954117281565135e+21, 'R_series': 7.112125108616008e-05, 'l2.eps_r': 42.363915274769965}
[INFO 12-05 14:05:05] optimpv.axBOtorchOptimizer: Trial 38 with parameters: {'l2.mu_n': -3.7866552735236563, 'l2.mu_p': -4.490667387910094, 'l2.N_t_bulk': 2.1752891732595454e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 983675553879.7917, 'l2.N_ions': 1.0303667146495346e+22, 'R_series': 5.5364236701722276e-05, 'l2.eps_r': 34.391109558832866}
[INFO 12-05 14:05:05] optimpv.axBOtorchOptimizer: Trial 39 with parameters: {'l2.mu_n': -4.13842424968819, 'l2.mu_p': -3.3105250714951673, 'l2.N_t_bulk': 8.231239366961963e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 4296844812989.367, 'l2.N_ions': 1e+20, 'R_series': 3.3960083514116894e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:06:52] optimpv.axBOtorchOptimizer: Trial 38 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07808256651087725), 'Imp_Cf_nrmse_linear': np.float64(0.016207560863464622), 'Imp_Gf_nrmse_linear': np.float64(0.0581623077543682)} and parameters: {'l2.mu_n': -3.7866552735236563, 'l2.mu_p': -4.490667387910094, 'l2.N_t_bulk': 2.1752891732595454e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 983675553879.7917, 'l2.N_ions': 1.0303667146495346e+22, 'R_series': 5.5364236701722276e-05, 'l2.eps_r': 34.391109558832866}
[INFO 12-05 14:06:52] optimpv.axBOtorchOptimizer: Trial 39 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07093957813747849), 'Imp_Cf_nrmse_linear': np.float64(0.35577027916160375), 'Imp_Gf_nrmse_linear': np.float64(0.06352910235343869)} and parameters: {'l2.mu_n': -4.13842424968819, 'l2.mu_p': -3.3105250714951673, 'l2.N_t_bulk': 8.231239366961963e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 4296844812989.367, 'l2.N_ions': 1e+20, 'R_series': 3.3960083514116894e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:06:56] optimpv.axBOtorchOptimizer: Trial 40 with parameters: {'l2.mu_n': -4.07131773344211, 'l2.mu_p': -3.0732589670889636, 'l2.N_t_bulk': 2.047548505963262e+19, 'l1.N_t_int': 260395473359.81165, 'l2.N_t_int': 266175228408.77365, 'l2.N_ions': 3.461501723410417e+21, 'R_series': 7.607803025173758e-05, 'l2.eps_r': 45.011674522945924}
[INFO 12-05 14:06:56] optimpv.axBOtorchOptimizer: Trial 41 with parameters: {'l2.mu_n': -4.02181771930756, 'l2.mu_p': -4.526312287747457, 'l2.N_t_bulk': 9.193694775463806e+20, 'l1.N_t_int': 313583375695.3464, 'l2.N_t_int': 7458154450574.553, 'l2.N_ions': 7.772525679909281e+21, 'R_series': 8.345235426694498e-05, 'l2.eps_r': 48.45675246928687}
[INFO 12-05 14:08:41] optimpv.axBOtorchOptimizer: Trial 40 completed with results: {'JV_JV_nrmse_linear': np.float64(0.050460498284833684), 'Imp_Cf_nrmse_linear': np.float64(0.2168498708246043), 'Imp_Gf_nrmse_linear': np.float64(0.003557648474208251)} and parameters: {'l2.mu_n': -4.07131773344211, 'l2.mu_p': -3.0732589670889636, 'l2.N_t_bulk': 2.047548505963262e+19, 'l1.N_t_int': 260395473359.81165, 'l2.N_t_int': 266175228408.77365, 'l2.N_ions': 3.461501723410417e+21, 'R_series': 7.607803025173758e-05, 'l2.eps_r': 45.011674522945924}
[INFO 12-05 14:08:41] optimpv.axBOtorchOptimizer: Trial 41 completed with results: {'JV_JV_nrmse_linear': np.float64(0.06971817103068485), 'Imp_Cf_nrmse_linear': np.float64(0.2687966235376011), 'Imp_Gf_nrmse_linear': np.float64(0.018224774785052845)} and parameters: {'l2.mu_n': -4.02181771930756, 'l2.mu_p': -4.526312287747457, 'l2.N_t_bulk': 9.193694775463806e+20, 'l1.N_t_int': 313583375695.3464, 'l2.N_t_int': 7458154450574.553, 'l2.N_ions': 7.772525679909281e+21, 'R_series': 8.345235426694498e-05, 'l2.eps_r': 48.45675246928687}
[INFO 12-05 14:08:44] optimpv.axBOtorchOptimizer: Trial 42 with parameters: {'l2.mu_n': -3.2180979421721005, 'l2.mu_p': -3.5258541496477243, 'l2.N_t_bulk': 1.4861895486123674e+19, 'l1.N_t_int': 7014287952414.156, 'l2.N_t_int': 423954615398.3225, 'l2.N_ions': 5.547245671751898e+21, 'R_series': 6.345645866307575e-05, 'l2.eps_r': 39.43575116995946}
[INFO 12-05 14:08:44] optimpv.axBOtorchOptimizer: Trial 43 with parameters: {'l2.mu_n': -4.2735160210110585, 'l2.mu_p': -4.006382859886044, 'l2.N_t_bulk': 2.8295817790018198e+20, 'l1.N_t_int': 874665953306.0405, 'l2.N_t_int': 3209002593419.7627, 'l2.N_ions': 1.2976999813329399e+22, 'R_series': 4.7111229165235437e-05, 'l2.eps_r': 26.176358142517167}
[INFO 12-05 14:10:30] optimpv.axBOtorchOptimizer: Trial 42 completed with results: {'JV_JV_nrmse_linear': np.float64(0.13027005159071942), 'Imp_Cf_nrmse_linear': np.float64(0.14262897269528466), 'Imp_Gf_nrmse_linear': np.float64(0.03491900278257232)} and parameters: {'l2.mu_n': -3.2180979421721005, 'l2.mu_p': -3.5258541496477243, 'l2.N_t_bulk': 1.4861895486123674e+19, 'l1.N_t_int': 7014287952414.156, 'l2.N_t_int': 423954615398.3225, 'l2.N_ions': 5.547245671751898e+21, 'R_series': 6.345645866307575e-05, 'l2.eps_r': 39.43575116995946}
[INFO 12-05 14:10:30] optimpv.axBOtorchOptimizer: Trial 43 completed with results: {'JV_JV_nrmse_linear': np.float64(0.053609360243318326), 'Imp_Cf_nrmse_linear': np.float64(0.23094316557731404), 'Imp_Gf_nrmse_linear': np.float64(0.08590795973677082)} and parameters: {'l2.mu_n': -4.2735160210110585, 'l2.mu_p': -4.006382859886044, 'l2.N_t_bulk': 2.8295817790018198e+20, 'l1.N_t_int': 874665953306.0405, 'l2.N_t_int': 3209002593419.7627, 'l2.N_ions': 1.2976999813329399e+22, 'R_series': 4.7111229165235437e-05, 'l2.eps_r': 26.176358142517167}
[INFO 12-05 14:10:33] optimpv.axBOtorchOptimizer: Trial 44 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 1.8423413755619303e+22, 'R_series': 5.306438369599094e-05, 'l2.eps_r': 35.97505871761312}
[INFO 12-05 14:10:33] optimpv.axBOtorchOptimizer: Trial 45 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.656333431867105e+21, 'R_series': 8.188822874673103e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:12:18] optimpv.axBOtorchOptimizer: Trial 44 completed with results: {'JV_JV_nrmse_linear': np.float64(0.09158463925513043), 'Imp_Cf_nrmse_linear': np.float64(0.23809285639513525), 'Imp_Gf_nrmse_linear': np.float64(0.057267020905277924)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 1.8423413755619303e+22, 'R_series': 5.306438369599094e-05, 'l2.eps_r': 35.97505871761312}
[INFO 12-05 14:12:18] optimpv.axBOtorchOptimizer: Trial 45 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07585590733564332), 'Imp_Cf_nrmse_linear': np.float64(0.31209420618678957), 'Imp_Gf_nrmse_linear': np.float64(0.025171843612410306)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 2.656333431867105e+21, 'R_series': 8.188822874673103e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:12:22] optimpv.axBOtorchOptimizer: Trial 46 with parameters: {'l2.mu_n': -4.06655867562832, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 6.946836765726268e+20, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 1675292827947.3303, 'l2.N_ions': 4.5810180723528764e+21, 'R_series': 7.287394095734209e-05, 'l2.eps_r': 46.47149549402364}
[INFO 12-05 14:12:22] optimpv.axBOtorchOptimizer: Trial 47 with parameters: {'l2.mu_n': -5.0, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 7.95038176769639e+21, 'R_series': 4.4276816661400195e-05, 'l2.eps_r': 34.67092543304249}
[INFO 12-05 14:14:07] optimpv.axBOtorchOptimizer: Trial 46 completed with results: {'JV_JV_nrmse_linear': np.float64(0.09016656778306179), 'Imp_Cf_nrmse_linear': np.float64(0.21465986107524834), 'Imp_Gf_nrmse_linear': np.float64(0.0030949106469269024)} and parameters: {'l2.mu_n': -4.06655867562832, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 6.946836765726268e+20, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 1675292827947.3303, 'l2.N_ions': 4.5810180723528764e+21, 'R_series': 7.287394095734209e-05, 'l2.eps_r': 46.47149549402364}
[INFO 12-05 14:14:07] optimpv.axBOtorchOptimizer: Trial 47 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07750436506702207), 'Imp_Cf_nrmse_linear': np.float64(0.1059042752039764), 'Imp_Gf_nrmse_linear': np.float64(0.07184202644719358)} and parameters: {'l2.mu_n': -5.0, 'l2.mu_p': -5.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 100000000000.0, 'l2.N_t_int': 100000000000.0, 'l2.N_ions': 7.95038176769639e+21, 'R_series': 4.4276816661400195e-05, 'l2.eps_r': 34.67092543304249}
[INFO 12-05 14:14:11] optimpv.axBOtorchOptimizer: Trial 48 with parameters: {'l2.mu_n': -3.268276026411994, 'l2.mu_p': -4.4375306842741145, 'l2.N_t_bulk': 1.1717814801407156e+19, 'l1.N_t_int': 332879616460.0473, 'l2.N_t_int': 138537760048.3353, 'l2.N_ions': 3.3441352037231514e+21, 'R_series': 8.197588194814317e-05, 'l2.eps_r': 43.23307690284909}
[INFO 12-05 14:14:11] optimpv.axBOtorchOptimizer: Trial 49 with parameters: {'l2.mu_n': -3.0497104286060486, 'l2.mu_p': -3.0755065977096567, 'l2.N_t_bulk': 1.8883163994160075e+19, 'l1.N_t_int': 401128629035.05066, 'l2.N_t_int': 177787139469.61588, 'l2.N_ions': 2.2877712022289128e+20, 'R_series': 9.427071693923468e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:15:52] optimpv.axBOtorchOptimizer: Trial 48 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02778907990296906), 'Imp_Cf_nrmse_linear': np.float64(0.2203454992433306), 'Imp_Gf_nrmse_linear': np.float64(0.004382402844896399)} and parameters: {'l2.mu_n': -3.268276026411994, 'l2.mu_p': -4.4375306842741145, 'l2.N_t_bulk': 1.1717814801407156e+19, 'l1.N_t_int': 332879616460.0473, 'l2.N_t_int': 138537760048.3353, 'l2.N_ions': 3.3441352037231514e+21, 'R_series': 8.197588194814317e-05, 'l2.eps_r': 43.23307690284909}
[INFO 12-05 14:15:52] optimpv.axBOtorchOptimizer: Trial 49 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02383043289429631), 'Imp_Cf_nrmse_linear': np.float64(0.3446444939733895), 'Imp_Gf_nrmse_linear': np.float64(0.03878953689814585)} and parameters: {'l2.mu_n': -3.0497104286060486, 'l2.mu_p': -3.0755065977096567, 'l2.N_t_bulk': 1.8883163994160075e+19, 'l1.N_t_int': 401128629035.05066, 'l2.N_t_int': 177787139469.61588, 'l2.N_ions': 2.2877712022289128e+20, 'R_series': 9.427071693923468e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:15:55] optimpv.axBOtorchOptimizer: Trial 50 with parameters: {'l2.mu_n': -3.5174811995436177, 'l2.mu_p': -4.554378554359657, 'l2.N_t_bulk': 4.206486962142614e+19, 'l1.N_t_int': 237006999554.6197, 'l2.N_t_int': 1293171610289.2158, 'l2.N_ions': 3.3974939384304454e+21, 'R_series': 6.906442465203715e-05, 'l2.eps_r': 45.59121382860215}
[INFO 12-05 14:15:55] optimpv.axBOtorchOptimizer: Trial 51 with parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 392210694840.3875, 'l2.N_t_int': 233977935157.07455, 'l2.N_ions': 5.965640825144178e+21, 'R_series': 7.940157495665684e-05, 'l2.eps_r': 41.49985799079198}
[INFO 12-05 14:17:39] optimpv.axBOtorchOptimizer: Trial 50 completed with results: {'JV_JV_nrmse_linear': np.float64(0.03426092407258772), 'Imp_Cf_nrmse_linear': np.float64(0.2214007792108096), 'Imp_Gf_nrmse_linear': np.float64(0.012446448420613338)} and parameters: {'l2.mu_n': -3.5174811995436177, 'l2.mu_p': -4.554378554359657, 'l2.N_t_bulk': 4.206486962142614e+19, 'l1.N_t_int': 237006999554.6197, 'l2.N_t_int': 1293171610289.2158, 'l2.N_ions': 3.3974939384304454e+21, 'R_series': 6.906442465203715e-05, 'l2.eps_r': 45.59121382860215}
[INFO 12-05 14:17:39] optimpv.axBOtorchOptimizer: Trial 51 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02396431056208887), 'Imp_Cf_nrmse_linear': np.float64(0.13303176833868036), 'Imp_Gf_nrmse_linear': np.float64(0.006383019063407508)} and parameters: {'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 392210694840.3875, 'l2.N_t_int': 233977935157.07455, 'l2.N_ions': 5.965640825144178e+21, 'R_series': 7.940157495665684e-05, 'l2.eps_r': 41.49985799079198}
[INFO 12-05 14:17:42] optimpv.axBOtorchOptimizer: Trial 52 with parameters: {'l2.mu_n': -4.261708547302584, 'l2.mu_p': -3.5752789702177705, 'l2.N_t_bulk': 1.5227874566516756e+19, 'l1.N_t_int': 327364687245.6153, 'l2.N_t_int': 606016880724.1722, 'l2.N_ions': 6.615591404198622e+21, 'R_series': 7.852581978205456e-05, 'l2.eps_r': 37.0356979594724}
[INFO 12-05 14:17:42] optimpv.axBOtorchOptimizer: Trial 53 with parameters: {'l2.mu_n': -3.1930662690375087, 'l2.mu_p': -4.880362748645685, 'l2.N_t_bulk': 7.66870030169185e+19, 'l1.N_t_int': 372258974303.7343, 'l2.N_t_int': 155942960727.61304, 'l2.N_ions': 4.563443193358832e+21, 'R_series': 8.224696898785486e-05, 'l2.eps_r': 42.476994166567636}
[INFO 12-05 14:19:26] optimpv.axBOtorchOptimizer: Trial 52 completed with results: {'JV_JV_nrmse_linear': np.float64(0.03415417812205444), 'Imp_Cf_nrmse_linear': np.float64(0.11751955403840164), 'Imp_Gf_nrmse_linear': np.float64(0.019933919749438415)} and parameters: {'l2.mu_n': -4.261708547302584, 'l2.mu_p': -3.5752789702177705, 'l2.N_t_bulk': 1.5227874566516756e+19, 'l1.N_t_int': 327364687245.6153, 'l2.N_t_int': 606016880724.1722, 'l2.N_ions': 6.615591404198622e+21, 'R_series': 7.852581978205456e-05, 'l2.eps_r': 37.0356979594724}
[INFO 12-05 14:19:26] optimpv.axBOtorchOptimizer: Trial 53 completed with results: {'JV_JV_nrmse_linear': np.float64(0.020594763347309388), 'Imp_Cf_nrmse_linear': np.float64(0.17332219864590073), 'Imp_Gf_nrmse_linear': np.float64(0.002819324129202971)} and parameters: {'l2.mu_n': -3.1930662690375087, 'l2.mu_p': -4.880362748645685, 'l2.N_t_bulk': 7.66870030169185e+19, 'l1.N_t_int': 372258974303.7343, 'l2.N_t_int': 155942960727.61304, 'l2.N_ions': 4.563443193358832e+21, 'R_series': 8.224696898785486e-05, 'l2.eps_r': 42.476994166567636}
[INFO 12-05 14:19:29] optimpv.axBOtorchOptimizer: Trial 54 with parameters: {'l2.mu_n': -3.348406966279908, 'l2.mu_p': -3.3612979586469622, 'l2.N_t_bulk': 1.5439693847460956e+19, 'l1.N_t_int': 579672913823.0293, 'l2.N_t_int': 3929657799305.277, 'l2.N_ions': 8.353604119636581e+20, 'R_series': 6.407044024329598e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:19:29] optimpv.axBOtorchOptimizer: Trial 55 with parameters: {'l2.mu_n': -3.7891256409930403, 'l2.mu_p': -3.133116778122312, 'l2.N_t_bulk': 1.9801431419331055e+20, 'l1.N_t_int': 321899160537.9967, 'l2.N_t_int': 154977690764.30063, 'l2.N_ions': 1e+20, 'R_series': 6.978711814728597e-05, 'l2.eps_r': 50.51365948960553}
[INFO 12-05 14:21:17] optimpv.axBOtorchOptimizer: Trial 54 completed with results: {'JV_JV_nrmse_linear': np.float64(0.021415429601169673), 'Imp_Cf_nrmse_linear': np.float64(0.3335163674725706), 'Imp_Gf_nrmse_linear': np.float64(0.005652043684754401)} and parameters: {'l2.mu_n': -3.348406966279908, 'l2.mu_p': -3.3612979586469622, 'l2.N_t_bulk': 1.5439693847460956e+19, 'l1.N_t_int': 579672913823.0293, 'l2.N_t_int': 3929657799305.277, 'l2.N_ions': 8.353604119636581e+20, 'R_series': 6.407044024329598e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:21:17] optimpv.axBOtorchOptimizer: Trial 55 completed with results: {'JV_JV_nrmse_linear': np.float64(0.028325973739260935), 'Imp_Cf_nrmse_linear': np.float64(0.34905008394105175), 'Imp_Gf_nrmse_linear': np.float64(0.004982495805648796)} and parameters: {'l2.mu_n': -3.7891256409930403, 'l2.mu_p': -3.133116778122312, 'l2.N_t_bulk': 1.9801431419331055e+20, 'l1.N_t_int': 321899160537.9967, 'l2.N_t_int': 154977690764.30063, 'l2.N_ions': 1e+20, 'R_series': 6.978711814728597e-05, 'l2.eps_r': 50.51365948960553}
[INFO 12-05 14:21:20] optimpv.axBOtorchOptimizer: Trial 56 with parameters: {'l2.mu_n': -3.096916670434047, 'l2.mu_p': -4.39056286771891, 'l2.N_t_bulk': 1.7339822761656136e+20, 'l1.N_t_int': 390221887388.7956, 'l2.N_t_int': 1744733845310.6575, 'l2.N_ions': 4.0446871105656644e+21, 'R_series': 8.025827938430875e-05, 'l2.eps_r': 37.704924614429586}
[INFO 12-05 14:21:20] optimpv.axBOtorchOptimizer: Trial 57 with parameters: {'l2.mu_n': -4.921364897506226, 'l2.mu_p': -3.3754367001613286, 'l2.N_t_bulk': 1.720095223259872e+20, 'l1.N_t_int': 179918320907.5727, 'l2.N_t_int': 349129577249.758, 'l2.N_ions': 4.59640038428428e+21, 'R_series': 8.625326700114814e-05, 'l2.eps_r': 42.75311612781093}
[INFO 12-05 14:23:05] optimpv.axBOtorchOptimizer: Trial 56 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02927885442360079), 'Imp_Cf_nrmse_linear': np.float64(0.23160552027256906), 'Imp_Gf_nrmse_linear': np.float64(0.014197399372484749)} and parameters: {'l2.mu_n': -3.096916670434047, 'l2.mu_p': -4.39056286771891, 'l2.N_t_bulk': 1.7339822761656136e+20, 'l1.N_t_int': 390221887388.7956, 'l2.N_t_int': 1744733845310.6575, 'l2.N_ions': 4.0446871105656644e+21, 'R_series': 8.025827938430875e-05, 'l2.eps_r': 37.704924614429586}
[INFO 12-05 14:23:05] optimpv.axBOtorchOptimizer: Trial 57 completed with results: {'JV_JV_nrmse_linear': np.float64(0.057637773870261005), 'Imp_Cf_nrmse_linear': np.float64(0.17172853707918942), 'Imp_Gf_nrmse_linear': np.float64(0.008408337258022841)} and parameters: {'l2.mu_n': -4.921364897506226, 'l2.mu_p': -3.3754367001613286, 'l2.N_t_bulk': 1.720095223259872e+20, 'l1.N_t_int': 179918320907.5727, 'l2.N_t_int': 349129577249.758, 'l2.N_ions': 4.59640038428428e+21, 'R_series': 8.625326700114814e-05, 'l2.eps_r': 42.75311612781093}
[INFO 12-05 14:23:08] optimpv.axBOtorchOptimizer: Trial 58 with parameters: {'l2.mu_n': -4.44227837243371, 'l2.mu_p': -4.167350413079377, 'l2.N_t_bulk': 1.2132739360132807e+19, 'l1.N_t_int': 525751187564.3114, 'l2.N_t_int': 4271277483171.3315, 'l2.N_ions': 4.220879487872253e+21, 'R_series': 7.720295231702306e-05, 'l2.eps_r': 43.49550733473737}
[INFO 12-05 14:23:08] optimpv.axBOtorchOptimizer: Trial 59 with parameters: {'l2.mu_n': -4.064231959183326, 'l2.mu_p': -4.617404671338091, 'l2.N_t_bulk': 1.621916939030084e+19, 'l1.N_t_int': 429753132141.3172, 'l2.N_t_int': 172837664098.29874, 'l2.N_ions': 1.020440038135024e+21, 'R_series': 7.542576436757054e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:24:51] optimpv.axBOtorchOptimizer: Trial 58 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02351063588569929), 'Imp_Cf_nrmse_linear': np.float64(0.18825735833965448), 'Imp_Gf_nrmse_linear': np.float64(0.004727467347111076)} and parameters: {'l2.mu_n': -4.44227837243371, 'l2.mu_p': -4.167350413079377, 'l2.N_t_bulk': 1.2132739360132807e+19, 'l1.N_t_int': 525751187564.3114, 'l2.N_t_int': 4271277483171.3315, 'l2.N_ions': 4.220879487872253e+21, 'R_series': 7.720295231702306e-05, 'l2.eps_r': 43.49550733473737}
[INFO 12-05 14:24:51] optimpv.axBOtorchOptimizer: Trial 59 completed with results: {'JV_JV_nrmse_linear': np.float64(0.015161929234229795), 'Imp_Cf_nrmse_linear': np.float64(0.3281946751874031), 'Imp_Gf_nrmse_linear': np.float64(0.01666636712638253)} and parameters: {'l2.mu_n': -4.064231959183326, 'l2.mu_p': -4.617404671338091, 'l2.N_t_bulk': 1.621916939030084e+19, 'l1.N_t_int': 429753132141.3172, 'l2.N_t_int': 172837664098.29874, 'l2.N_ions': 1.020440038135024e+21, 'R_series': 7.542576436757054e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:24:54] optimpv.axBOtorchOptimizer: Trial 60 with parameters: {'l2.mu_n': -4.718763344087174, 'l2.mu_p': -4.55189829153871, 'l2.N_t_bulk': 2.3910715149189536e+20, 'l1.N_t_int': 479896908960.3509, 'l2.N_t_int': 971613862360.2427, 'l2.N_ions': 1.0691459974658047e+21, 'R_series': 5.8512289469124416e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:24:54] optimpv.axBOtorchOptimizer: Trial 61 with parameters: {'l2.mu_n': -4.497533937838177, 'l2.mu_p': -4.820742117444095, 'l2.N_t_bulk': 2.120744639651973e+19, 'l1.N_t_int': 151800551641.9815, 'l2.N_t_int': 641081154178.1923, 'l2.N_ions': 1e+20, 'R_series': 7.460445685788585e-05, 'l2.eps_r': 51.09702284068352}
[INFO 12-05 14:26:42] optimpv.axBOtorchOptimizer: Trial 60 completed with results: {'JV_JV_nrmse_linear': np.float64(0.059625227346030006), 'Imp_Cf_nrmse_linear': np.float64(0.331388045334036), 'Imp_Gf_nrmse_linear': np.float64(0.014176645996570942)} and parameters: {'l2.mu_n': -4.718763344087174, 'l2.mu_p': -4.55189829153871, 'l2.N_t_bulk': 2.3910715149189536e+20, 'l1.N_t_int': 479896908960.3509, 'l2.N_t_int': 971613862360.2427, 'l2.N_ions': 1.0691459974658047e+21, 'R_series': 5.8512289469124416e-05, 'l2.eps_r': 55.0}
[INFO 12-05 14:26:42] optimpv.axBOtorchOptimizer: Trial 61 completed with results: {'JV_JV_nrmse_linear': np.float64(0.05585433731455354), 'Imp_Cf_nrmse_linear': np.float64(0.348280226092521), 'Imp_Gf_nrmse_linear': np.float64(0.009733737696812014)} and parameters: {'l2.mu_n': -4.497533937838177, 'l2.mu_p': -4.820742117444095, 'l2.N_t_bulk': 2.120744639651973e+19, 'l1.N_t_int': 151800551641.9815, 'l2.N_t_int': 641081154178.1923, 'l2.N_ions': 1e+20, 'R_series': 7.460445685788585e-05, 'l2.eps_r': 51.09702284068352}
[INFO 12-05 14:26:45] optimpv.axBOtorchOptimizer: Trial 62 with parameters: {'l2.mu_n': -3.565041919374186, 'l2.mu_p': -4.13549657459777, 'l2.N_t_bulk': 1.0876567284442343e+19, 'l1.N_t_int': 141660404140.60788, 'l2.N_t_int': 146787067259.54813, 'l2.N_ions': 2.877711320252161e+21, 'R_series': 8.800887539053585e-05, 'l2.eps_r': 42.548861107219835}
[INFO 12-05 14:26:45] optimpv.axBOtorchOptimizer: Trial 63 with parameters: {'l2.mu_n': -4.20316501332624, 'l2.mu_p': -3.2997608921042265, 'l2.N_t_bulk': 1.8997775964687966e+19, 'l1.N_t_int': 364344253500.8884, 'l2.N_t_int': 2332240973547.426, 'l2.N_ions': 7.057531777776455e+21, 'R_series': 8.669571568603837e-05, 'l2.eps_r': 37.89583230108302}
[INFO 12-05 14:28:26] optimpv.axBOtorchOptimizer: Trial 62 completed with results: {'JV_JV_nrmse_linear': np.float64(0.07522929267548825), 'Imp_Cf_nrmse_linear': np.float64(0.24427869760263618), 'Imp_Gf_nrmse_linear': np.float64(0.01060102189792326)} and parameters: {'l2.mu_n': -3.565041919374186, 'l2.mu_p': -4.13549657459777, 'l2.N_t_bulk': 1.0876567284442343e+19, 'l1.N_t_int': 141660404140.60788, 'l2.N_t_int': 146787067259.54813, 'l2.N_ions': 2.877711320252161e+21, 'R_series': 8.800887539053585e-05, 'l2.eps_r': 42.548861107219835}
[INFO 12-05 14:28:26] optimpv.axBOtorchOptimizer: Trial 63 completed with results: {'JV_JV_nrmse_linear': np.float64(0.026868231407254996), 'Imp_Cf_nrmse_linear': np.float64(0.08894476177276871), 'Imp_Gf_nrmse_linear': np.float64(0.006487415153176348)} and parameters: {'l2.mu_n': -4.20316501332624, 'l2.mu_p': -3.2997608921042265, 'l2.N_t_bulk': 1.8997775964687966e+19, 'l1.N_t_int': 364344253500.8884, 'l2.N_t_int': 2332240973547.426, 'l2.N_ions': 7.057531777776455e+21, 'R_series': 8.669571568603837e-05, 'l2.eps_r': 37.89583230108302}
[INFO 12-05 14:28:30] optimpv.axBOtorchOptimizer: Trial 64 with parameters: {'l2.mu_n': -4.320830392946195, 'l2.mu_p': -4.118883389443786, 'l2.N_t_bulk': 2.8930585342674017e+20, 'l1.N_t_int': 354018906306.9785, 'l2.N_t_int': 6008437526702.918, 'l2.N_ions': 8.850310574899853e+21, 'R_series': 9.734420853443807e-05, 'l2.eps_r': 36.40363083405272}
[INFO 12-05 14:28:30] optimpv.axBOtorchOptimizer: Trial 65 with parameters: {'l2.mu_n': -3.698712712987362, 'l2.mu_p': -3.7103970406803954, 'l2.N_t_bulk': 3.2032880076244906e+19, 'l1.N_t_int': 479053784585.60144, 'l2.N_t_int': 719960694436.948, 'l2.N_ions': 5.359830548716943e+21, 'R_series': 7.435136792476979e-05, 'l2.eps_r': 40.730727193782}
[INFO 12-05 14:30:19] optimpv.axBOtorchOptimizer: Trial 64 completed with results: {'JV_JV_nrmse_linear': np.float64(0.02819490905676877), 'Imp_Cf_nrmse_linear': np.float64(0.03219163745538315), 'Imp_Gf_nrmse_linear': np.float64(0.0027840256744632147)} and parameters: {'l2.mu_n': -4.320830392946195, 'l2.mu_p': -4.118883389443786, 'l2.N_t_bulk': 2.8930585342674017e+20, 'l1.N_t_int': 354018906306.9785, 'l2.N_t_int': 6008437526702.918, 'l2.N_ions': 8.850310574899853e+21, 'R_series': 9.734420853443807e-05, 'l2.eps_r': 36.40363083405272}
[INFO 12-05 14:30:19] optimpv.axBOtorchOptimizer: Trial 65 completed with results: {'JV_JV_nrmse_linear': np.float64(0.003710938287477806), 'Imp_Cf_nrmse_linear': np.float64(0.1455610909358793), 'Imp_Gf_nrmse_linear': np.float64(0.015607797919908172)} and parameters: {'l2.mu_n': -3.698712712987362, 'l2.mu_p': -3.7103970406803954, 'l2.N_t_bulk': 3.2032880076244906e+19, 'l1.N_t_int': 479053784585.60144, 'l2.N_t_int': 719960694436.948, 'l2.N_ions': 5.359830548716943e+21, 'R_series': 7.435136792476979e-05, 'l2.eps_r': 40.730727193782}
[INFO 12-05 14:30:23] optimpv.axBOtorchOptimizer: Trial 66 with parameters: {'l2.mu_n': -4.122911013328781, 'l2.mu_p': -3.7084495125577277, 'l2.N_t_bulk': 5.680093131182648e+19, 'l1.N_t_int': 358550478310.98474, 'l2.N_t_int': 7820017495951.824, 'l2.N_ions': 1.1239907657472264e+22, 'R_series': 0.00010520266923276351, 'l2.eps_r': 34.09732179379775}
[INFO 12-05 14:30:23] optimpv.axBOtorchOptimizer: Trial 67 with parameters: {'l2.mu_n': -3.003428306738865, 'l2.mu_p': -3.4304022854917373, 'l2.N_t_bulk': 5.019479681721189e+20, 'l1.N_t_int': 399247281888.37885, 'l2.N_t_int': 223660255463.77637, 'l2.N_ions': 6.972860696803956e+21, 'R_series': 0.00010223285701706973, 'l2.eps_r': 37.23819564718031}
[INFO 12-05 14:32:13] optimpv.axBOtorchOptimizer: Trial 66 completed with results: {'JV_JV_nrmse_linear': np.float64(0.021501873782726676), 'Imp_Cf_nrmse_linear': np.float64(0.030729824127744537), 'Imp_Gf_nrmse_linear': np.float64(0.0021574833127932587)} and parameters: {'l2.mu_n': -4.122911013328781, 'l2.mu_p': -3.7084495125577277, 'l2.N_t_bulk': 5.680093131182648e+19, 'l1.N_t_int': 358550478310.98474, 'l2.N_t_int': 7820017495951.824, 'l2.N_ions': 1.1239907657472264e+22, 'R_series': 0.00010520266923276351, 'l2.eps_r': 34.09732179379775}
[INFO 12-05 14:32:13] optimpv.axBOtorchOptimizer: Trial 67 completed with results: {'JV_JV_nrmse_linear': np.float64(0.01175950164469275), 'Imp_Cf_nrmse_linear': np.float64(0.08220953544070911), 'Imp_Gf_nrmse_linear': np.float64(0.012600140814966462)} and parameters: {'l2.mu_n': -3.003428306738865, 'l2.mu_p': -3.4304022854917373, 'l2.N_t_bulk': 5.019479681721189e+20, 'l1.N_t_int': 399247281888.37885, 'l2.N_t_int': 223660255463.77637, 'l2.N_ions': 6.972860696803956e+21, 'R_series': 0.00010223285701706973, 'l2.eps_r': 37.23819564718031}
[INFO 12-05 14:32:16] optimpv.axBOtorchOptimizer: Trial 68 with parameters: {'l2.mu_n': -4.3897730252031, 'l2.mu_p': -3.1743600870977935, 'l2.N_t_bulk': 1.321605705967513e+19, 'l1.N_t_int': 330568310401.92035, 'l2.N_t_int': 346766531586.25214, 'l2.N_ions': 1.2811621778634563e+22, 'R_series': 9.812686514155455e-05, 'l2.eps_r': 35.48769628480902}
[INFO 12-05 14:32:16] optimpv.axBOtorchOptimizer: Trial 69 with parameters: {'l2.mu_n': -3.207050915929985, 'l2.mu_p': -4.6510846785745725, 'l2.N_t_bulk': 7.197564700329884e+20, 'l1.N_t_int': 378368295179.65906, 'l2.N_t_int': 580022330914.6016, 'l2.N_ions': 9.905738976221458e+21, 'R_series': 9.932903368614588e-05, 'l2.eps_r': 30.12970174104362}
[INFO 12-05 14:34:04] optimpv.axBOtorchOptimizer: Trial 68 completed with results: {'JV_JV_nrmse_linear': np.float64(0.04184848473982725), 'Imp_Cf_nrmse_linear': np.float64(0.1102283160544338), 'Imp_Gf_nrmse_linear': np.float64(0.0022272495251586116)} and parameters: {'l2.mu_n': -4.3897730252031, 'l2.mu_p': -3.1743600870977935, 'l2.N_t_bulk': 1.321605705967513e+19, 'l1.N_t_int': 330568310401.92035, 'l2.N_t_int': 346766531586.25214, 'l2.N_ions': 1.2811621778634563e+22, 'R_series': 9.812686514155455e-05, 'l2.eps_r': 35.48769628480902}
[INFO 12-05 14:34:04] optimpv.axBOtorchOptimizer: Trial 69 completed with results: {'JV_JV_nrmse_linear': np.float64(0.06055452433989143), 'Imp_Cf_nrmse_linear': np.float64(0.15125344044144032), 'Imp_Gf_nrmse_linear': np.float64(0.01843885867703231)} and parameters: {'l2.mu_n': -3.207050915929985, 'l2.mu_p': -4.6510846785745725, 'l2.N_t_bulk': 7.197564700329884e+20, 'l1.N_t_int': 378368295179.65906, 'l2.N_t_int': 580022330914.6016, 'l2.N_ions': 9.905738976221458e+21, 'R_series': 9.932903368614588e-05, 'l2.eps_r': 30.12970174104362}
[8]:
# get the best parameters and update the params list in the optimizer and the agent
ax_client = optimizer.ax_client # get the ax client
optimizer.update_params_with_best_balance() # update the params list in the optimizer with the best parameters
jv.params = optimizer.params # update the params list in the agent with the best parameters
imp.params = optimizer.params # update the params list in the agent with the best parameters

# print the best parameters
print('Best parameters:')
for p,po in zip(optimizer.params, params_orig):
    if p.axis_type == 'log':
        print(p.name, 'fitted value:', '{:.2e}'.format(p.value), 'original value:', '{:.2e}'.format(po.value))
    else:
        print(p.name, 'fitted value:', p.value, 'original value:', po.value)

print('\nSimSS command line:')
print(jv.get_SIMsalabim_clean_cmd(jv.params)) # print the simss command line with the best parameters

Best parameters:
l2.mu_n fitted value: 7.54e-05 original value: 6.00e-04
l2.mu_p fitted value: 1.96e-04 original value: 4.00e-04
l2.N_t_bulk fitted value: 5.68e+19 original value: 1.00e+20
l1.N_t_int fitted value: 3.59e+11 original value: 5.00e+11
l2.N_t_int fitted value: 7.82e+12 original value: 4.00e+12
l2.N_ions fitted value: 1.12e+22 original value: 1.00e+22
R_series fitted value: 1.05e-04 original value: 1.00e-04
l2.eps_r fitted value: 34.09732179379775 original value: 35

SimSS command line:
./simss -l2.mu_n 7.535099416390515e-05 -l2.mu_p 0.0001956818238026415 -l2.N_t_bulk 5.680093131182648e+19 -l1.N_t_int 358550478310.98474 -l2.N_t_int 7820017495951.824 -l2.N_anion 1.1239907657472264e+22 -l2.N_cation 1.1239907657472264e+22 -R_series 0.00010520266923276351 -l2.eps_r 34.09732179379775
[9]:
# Plot optimization results
data = ax_client.summarize()
all_metrics = optimizer.all_metrics
plt.figure()
for i, metric in enumerate(all_metrics):
    plt.plot(np.minimum.accumulate(data[metric]), label=metric)

plt.yscale("log")
plt.xlabel("Iteration")
plt.ylabel("Target")
plt.legend()
plt.title("Best value seen so far")

plt.show()
../_images/examples_MO_JV_impedance_fakePerovskite_12_0.png
[10]:
import matplotlib
# import itertools
from itertools import combinations
comb = list(combinations(optimizer.all_metrics, 2))
threshold_list = []
for i in range(len(optimizer.agents)):
    for j in range(len(optimizer.agents[i].threshold)):
        threshold_list.append(optimizer.agents[i].threshold[j])
threshold_comb = list(combinations(threshold_list, 2))
pareto = ax_client.get_pareto_frontier(use_model_predictions=False)
print('Pareto frontier:', pareto)
cm = matplotlib.colormaps.get_cmap('viridis')
df = get_df_from_ax(params, optimizer)
# create pareto df
dum_dic = {}
for eto in pareto:
    print(eto[1])
    for metr in optimizer.all_metrics:
        if metr not in dum_dic.keys():
            dum_dic[metr] = []
        dum_dic[metr].append(eto[1][metr][0])
df_pareto = pd.DataFrame(dum_dic)

for c,t_c in zip(comb,threshold_comb):
    plt.figure(figsize=(10, 10))
    plt.scatter(df[c[0]],df[c[1]],c=df.index, cmap=cm, marker='o', s=100) # plot the points with color according to the iteration
    cbar = plt.colorbar()
    cbar.set_label('Iteration')
    sorted_df = df_pareto.sort_values(by=c[0])
    plt.plot(sorted_df[c[0]],sorted_df[c[1]],'r')
    plt.scatter(t_c[0],t_c[1],c='r', marker='x', s=100) # plot the threshold
    plt.xlabel(c[0])
    plt.ylabel(c[1])
    plt.xscale('log')
    plt.yscale('log')


    plt.show()

Pareto frontier: [({'l2.mu_n': -4.122911013328781, 'l2.mu_p': -3.7084495125577277, 'l2.N_t_bulk': 5.680093131182648e+19, 'l1.N_t_int': 358550478310.98474, 'l2.N_t_int': 7820017495951.824, 'l2.N_ions': 1.1239907657472264e+22, 'R_series': 0.00010520266923276351, 'l2.eps_r': 34.09732179379775}, {'Imp_Cf_nrmse_linear': (np.float64(0.030729824127744537), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.0021574833127932587), nan), 'JV_JV_nrmse_linear': (np.float64(0.021501873782726676), nan)}, 66, '66_0'), ({'l2.mu_n': -3.003428306738865, 'l2.mu_p': -3.4304022854917373, 'l2.N_t_bulk': 5.019479681721189e+20, 'l1.N_t_int': 399247281888.37885, 'l2.N_t_int': 223660255463.77637, 'l2.N_ions': 6.972860696803956e+21, 'R_series': 0.00010223285701706973, 'l2.eps_r': 37.23819564718031}, {'Imp_Cf_nrmse_linear': (np.float64(0.08220953544070911), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.012600140814966462), nan), 'JV_JV_nrmse_linear': (np.float64(0.01175950164469275), nan)}, 67, '67_0'), ({'l2.mu_n': -3.698712712987362, 'l2.mu_p': -3.7103970406803954, 'l2.N_t_bulk': 3.2032880076244906e+19, 'l1.N_t_int': 479053784585.60144, 'l2.N_t_int': 719960694436.948, 'l2.N_ions': 5.359830548716943e+21, 'R_series': 7.435136792476979e-05, 'l2.eps_r': 40.730727193782}, {'Imp_Cf_nrmse_linear': (np.float64(0.1455610909358793), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.015607797919908172), nan), 'JV_JV_nrmse_linear': (np.float64(0.003710938287477806), nan)}, 65, '65_0'), ({'l2.mu_n': -3.0, 'l2.mu_p': -3.0, 'l2.N_t_bulk': 1e+19, 'l1.N_t_int': 464723456239.89355, 'l2.N_t_int': 10000000000000.0, 'l2.N_ions': 5.787418826016937e+21, 'R_series': 7.339735442911793e-05, 'l2.eps_r': 45.399811793473866}, {'Imp_Cf_nrmse_linear': (np.float64(0.19103986792296396), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.00603196590120341), nan), 'JV_JV_nrmse_linear': (np.float64(0.0049578890379983675), nan)}, 32, '32_0'), ({'l2.mu_n': -3.1930662690375087, 'l2.mu_p': -4.880362748645685, 'l2.N_t_bulk': 7.66870030169185e+19, 'l1.N_t_int': 372258974303.7343, 'l2.N_t_int': 155942960727.61304, 'l2.N_ions': 4.563443193358832e+21, 'R_series': 8.224696898785486e-05, 'l2.eps_r': 42.476994166567636}, {'Imp_Cf_nrmse_linear': (np.float64(0.17332219864590073), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.002819324129202971), nan), 'JV_JV_nrmse_linear': (np.float64(0.020594763347309388), nan)}, 53, '53_0')]
{'Imp_Cf_nrmse_linear': (np.float64(0.030729824127744537), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.0021574833127932587), nan), 'JV_JV_nrmse_linear': (np.float64(0.021501873782726676), nan)}
{'Imp_Cf_nrmse_linear': (np.float64(0.08220953544070911), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.012600140814966462), nan), 'JV_JV_nrmse_linear': (np.float64(0.01175950164469275), nan)}
{'Imp_Cf_nrmse_linear': (np.float64(0.1455610909358793), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.015607797919908172), nan), 'JV_JV_nrmse_linear': (np.float64(0.003710938287477806), nan)}
{'Imp_Cf_nrmse_linear': (np.float64(0.19103986792296396), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.00603196590120341), nan), 'JV_JV_nrmse_linear': (np.float64(0.0049578890379983675), nan)}
{'Imp_Cf_nrmse_linear': (np.float64(0.17332219864590073), nan), 'Imp_Gf_nrmse_linear': (np.float64(0.002819324129202971), nan), 'JV_JV_nrmse_linear': (np.float64(0.020594763347309388), nan)}
../_images/examples_MO_JV_impedance_fakePerovskite_13_1.png
../_images/examples_MO_JV_impedance_fakePerovskite_13_2.png
../_images/examples_MO_JV_impedance_fakePerovskite_13_3.png
[12]:
# Plot the density of the exploration of the parameters
# this gives a nice visualization of where the optimizer focused its exploration and may show some correlation between the parameters
plot_dens = True
if plot_dens:
    from optimpv.posterior.exploration_density import *
    params_orig_dict, best_parameters = {}, {}
    for p in params_orig:
        params_orig_dict[p.name] = p.value
    for p in optimizer.params:
        best_parameters[p.name] = p.value

    fig_dens, ax_dens = plot_density_exploration(params, optimizer = optimizer, best_parameters = best_parameters, params_orig = params_orig_dict, optimizer_type = 'ax')

../_images/examples_MO_JV_impedance_fakePerovskite_14_0.png
[13]:
# rerun the simulation with the best parameters
yfit = jv.run(parameters={}) # run the simulation with the best parameters

viridis = plt.get_cmap('viridis', len(Gfracs))
plt.figure(figsize=(10,10))
linewidth = 2
for idx, Gfrac in enumerate(Gfracs[::-1]):
    plt.plot(X[X[:,1]==Gfrac,0],y[X[:,1]==Gfrac],label='Gfrac = '+str(Gfrac),color=viridis(idx),alpha=0.5,linewidth=linewidth)
    plt.plot(X[X[:,1]==Gfrac,0],yfit[X[:,1]==Gfrac],label='Gfrac = '+str(Gfrac)+' fit',linestyle='--',color=viridis(idx),linewidth=linewidth)
plt.xlabel('Voltage [V]')
plt.ylabel('Current density [A m$^{-2}$]')
plt.legend()
plt.show()


../_images/examples_MO_JV_impedance_fakePerovskite_15_0.png
[14]:
# rerun the impedance simulation with the best parameters
# Cf
yfit = imp.run({},X_imp,exp_format='Cf')
# Gf
yfit2 = imp.run({},X_imp,exp_format='Gf')
# Plot the impedance data
plt.figure(figsize=(10,10))
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(freqs,yimp_noisy, 'g-',alpha=0.5,label= 'C data')
ax2.plot(freqs,yimp2_noisy, 'b-',alpha=0.5,label= 'G data')
ax1.plot(freqs,yfit, 'g--',label= 'C fit')
ax2.plot(freqs,yfit2, 'b--',label= 'G fit')
ax1.set_xlabel('Frequency [Hz]')
ax1.set_ylabel('C [F m$^{-2}$]', color='g')
ax2.set_ylabel('G [S m$^{-2}$]', color='b')
ax1.set_xscale('log')
ax2.set_xscale('log')
# ax1.set_yscale('log')
# ax2.set_yscale('log')
plt.title('Impedance data')
plt.show()
<Figure size 1000x1000 with 0 Axes>
../_images/examples_MO_JV_impedance_fakePerovskite_16_1.png
[15]:
# Clean up the output files (comment out if you want to keep the output files)
sim.clean_all_output(session_path)
sim.delete_folders('tmp',session_path)
# uncomment the following lines to delete specific files
sim.clean_up_output('PTAA',session_path)
sim.clean_up_output('fakePerovskite',session_path)
sim.clean_up_output('C60',session_path)
sim.clean_up_output('simulation_setup_fakePerovskite',session_path)
for file in optical_files:
    sim.clean_up_output(file,session_path)
# same for zimt
sim.clean_all_output(session_path_zimt)
sim.delete_folders('tmp',session_path_zimt)
# uncomment the following lines to delete specific files
sim.clean_up_output('PTAA',session_path_zimt)
sim.clean_up_output('fakePerovskite',session_path_zimt)
sim.clean_up_output('C60',session_path_zimt)
sim.clean_up_output('simulation_setup_zimt_fakePerovskite',session_path_zimt)
sim.clean_up_output('freqZ',session_path_zimt)
# same for the input files
for file in optical_files:
    sim.clean_up_output(file,session_path_zimt)