BO4CO (Bayesian Optimization for Configuration Optimization)

BO4CO is a Configuration Optimization Tool for Big Data Systems.

This script uses synthetic functions as response instead of experimental measurements, this is only for demonstration of the underlying machine learning method, more details: https://arxiv.org/abs/1606.06543

When referring to the dataset or code please cite the paper:

P. Jamshidi, G. Casale, "An Uncertainty-Aware Approach to Optimal Configuration of Stream Processing Systems", MASCOTS 2016.

@inproceedings{jamshidi2016bo4co,

title={An Uncertainty-Aware Approach to Optimal Configuration of Stream Processing Systems.},

author={Jamshidi, Pooyan and Casale, Giuliano},

booktitle={MASCOTS},

year={2016}

}

Authors: Pooyan Jamshidi (pooyan.jamshidi@gmail.com)

The code is released under the FreeBSD License.

Copyright (C) 2016 Imperial College London

Home: https://github.com/pooyanjamshidi

Complementary materials

Initilizations

close all;

clear variables;

clc;

warning off;

global nMinGridPoints istestfun

nMinGridPoints=1e4; % regular grid size

istestfun=1; % is it a synthetic function?

maxExp=1; % only 1 experiment

visualize=1;

maxIter=20;

nInit=4; % Initial samples from the Latin Hypercube design

Fmotion = @(x) alpha(max(min(x,1),0)); % for transparent fill and fun!

The synthetic function we want to find it's optimum (a wrapper for the response function)

if istestfun

[f, domain, trueMinLoc] = testFunctionFactory('e4'); %f11 e4

else

[f, domain, trueMinLoc] = testConfigurationFactory('cass20-109'); %f11 e4

end

d = size(domain, 1) % dimension of the space

d = 1

Initialize the prior

choose the covariance function as you wish 11 is the MaternARD and 8 is SE-ARD, 1 is SE-iso and 2,3,4 are Matern-iso 1-3-5 respectively see some descriptions about the kernels here: http://www.cs.toronto.edu/~duvenaud/cookbook/index.html some more details in https://arxiv.org/abs/1606.06543

gps = covarianceKernelFactory(11, d)

gps =
        meanfunc: @meanConst
             hyp: [1×1 struct]
    hypgridRange: [1×1 struct]
         covfunc: {@covCaching  {1×2 cell}}
         likfunc: @likGauss
         hypgrid: [1×72 struct]

Bayesian Optimization loop (iterative design of experiments)

The result figures shows the estimation of the response function (the synthetic function we chose above) using Gaussian Process models. Here we boLCB choose the next point based on LCB criteria to evaluate the function. In each iteration, we gain some knowledge about the true function and as the figure shows GP models provide a better estimations of the underlying function. As we have shown in the paper, GP models provide more accurate prediction of the underlying response function comparing with other machine learning regression models, see https://arxiv.org/abs/1606.06543.

maxIter=maxIter-nInit;

% choose the initial design algorithm, e.g., lhd, uniform, etc

%obsX = lhsdesign(d, nInit)';

obsX = lhsdesign4grid(d, nInit, domain);

%obsX = unirnddesign4grid(d, nInit, domain);

obsY = zeros(size(obsX, 1), 1);

for k = 1:size(obsX, 1)

obsY(k) = f(obsX(k, :));

end

echo off

% Bayesian optimization loop (for locating minimizer)

for k = 1:maxIter

% criterial to evaluate in order to find where to sample next, this

% can be replaced with other selection criteria (such as MPI, EI)

[nextX, dummy1, xTest, m, s, z, ef, h, et] = boLCB(domain, obsX, obsY, gps);

% evaluate at the suggested point

nextY = f(nextX);

% save the measurement pair and CIs

obsX = [obsX; nextX];

obsY = [obsY; nextY];

% visualize and update

if visualize==1

% 1D

if d==1

% visualize true function 1D

y=f(xTest);

h1=figure;

plot(xTest,y,'LineWidth',2);

hold on; plot(trueMinLoc,f(trueMinLoc),'+');

% observations

fu = [m+2*s; flip(m-2*s,1)];

for kk=2:10

fu1(:,kk)=[m+2*s/(10-kk+1); flip(m+2*s/(10-kk+2),1)];

fu1(:,kk+10)=[m-2*s/(10-kk+2); flip(m-2*s/(10-kk+1),1)];

end

fu1(:,1)=[m+2*s/10; flip(m,1)];

fu1(:,11)=[m; flip(m-2*s/10,1)];

for kk=1:10

fu2(:,kk)=[m+2*kk*s/10; flip(m+2*(kk-1)*s/10,1)];

fu2(:,kk+10)=[m-2*(kk-1)*s/10; flip(m-2*kk*s/10,1)];

end

for kk=1:10

hold on; h2=fill([xTest; flip(xTest,1)], fu2(:,kk), [7 7 7]/8,'FaceColor','r','FaceAlpha',10/(10*kk)); % [7 7 7]/8

h3=fill([xTest; flip(xTest,1)], fu2(:,kk+10), [7 7 7]/8,'FaceColor','r','FaceAlpha',10/(10*kk));

%set(gcf,'windowbuttonmotionfcn','Fmotion( ([1 0]*get(gca,''currentp'')*[0;1;0] - min(ylim)) / diff(ylim) )');

set(h2,'Linestyle','none')

set(h3,'Linestyle','none')

end

hold on; plot(xTest, m); plot(obsX, obsY, '*');

% current estimate

hold on; plot(nextX, nextY,'o');

end

% 2D

if d==2

h1=figure;

plot(obsX(:,1),obsX(:,2), 'r+');

for idx=1:size(obsX,1)

text(obsX(idx,1)+0.2,obsX(idx,2)+0.2, num2str(idx),...

'FontWeight', 'bold',...

'FontSize',8,...

'HorizontalAlignment','center');

end

hold on; plot(trueMinLoc(:,1),trueMinLoc(:,2),'d');

hold on; plot(nextX(:,1),nextX(:,2),'o');

hold on; contour(unique(xTest(:,1)),unique(xTest(:,2)),reshape(f(xTest),size(unique(xTest(:,1)),1),size(unique(xTest(:,2)),1)));

set(h1,'ShowText','on','TextStep',get(h,'LevelStep'))

% true function 2D

%h2=figure(2);surf(unique(xTest(:,1)),unique(xTest(:,2)),reshape(y,size(unique(xTest(:,1)),1),size(unique(xTest(:,2)),1)));

h2=figure;surfc(unique(xTest(:,1)),unique(xTest(:,2)),reshape(m,size(unique(xTest(:,1)),1),size(unique(xTest(:,2)),1)));

shading interp

end

end

end

Grid point is better than previous hyperparameter
Function evaluation      0;  Value 1.035445e+00
Function evaluation      3;  Value 4.471087e-01
Function evaluation      6;  Value 1.023460e-01
Function evaluation      9;  Value -2.029189e-02
Function evaluation     12;  Value -4.597972e-02
Function evaluation     14;  Value -4.928822e-02
Function evaluation     16;  Value -5.438659e-02
Function evaluation     19;  Value -5.456468e-02
Function evaluation     21;  Value -5.481666e-02
Function evaluation     24;  Value -5.483386e-02
Function evaluation     29;  Value -5.536287e-02
Function evaluation     31;  Value -5.580068e-02
Function evaluation     33;  Value -5.655155e-02
Function evaluation     35;  Value -5.670422e-02
Function evaluation     37;  Value -5.693083e-02
Function evaluation     39;  Value -5.703721e-02
Function evaluation     41;  Value -5.705292e-02
Function evaluation     42;  Value -5.705472e-02
Function evaluation     44;  Value -5.705690e-02
Function evaluation     46;  Value -5.706022e-02
Function evaluation     49;  Value -5.706054e-02
Function evaluation     50;  Value -5.706060e-02
Function evaluation     52;  Value -5.706061e-02
Function evaluation     54;  Value -5.706061e-02
Function evaluation     56;  Value -5.706061e-02
Function evaluation     58;  Value -5.706061e-02
Function evaluation     60;  Value -5.706061e-02
Function evaluation     62;  Value -5.706061e-02
Function evaluation     64;  Value -5.706061e-02
Function evaluation     69;  Value -5.706061e-02
Function evaluation     71;  Value -5.706061e-02
Function evaluation     77;  Value -5.706062e-02
Function evaluation     79;  Value -5.706063e-02
Function evaluation     85;  Value -5.706080e-02
Function evaluation     87;  Value -5.706083e-02
Function evaluation     89;  Value -5.706087e-02
Function evaluation     92;  Value -5.706087e-02
Function evaluation     94;  Value -5.706087e-02
Function evaluation     97;  Value -5.706087e-02
Function evaluation     99;  Value -5.706087e-02
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 3.427736e-01
Function evaluation      3;  Value -4.088478e-01
Function evaluation      5;  Value -9.857576e-01
Function evaluation      8;  Value -1.173839e+00
Function evaluation     10;  Value -1.204787e+00
Function evaluation     12;  Value -1.218632e+00
Function evaluation     14;  Value -1.267334e+00
Function evaluation     17;  Value -1.270221e+00
Function evaluation     20;  Value -1.280822e+00
Function evaluation     22;  Value -1.282010e+00
Function evaluation     25;  Value -1.287962e+00
Function evaluation     27;  Value -1.290273e+00
Function evaluation     30;  Value -1.300027e+00
Function evaluation     32;  Value -1.305928e+00
Function evaluation     35;  Value -1.325483e+00
Function evaluation     37;  Value -1.335475e+00
Function evaluation     39;  Value -1.365141e+00
Function evaluation     41;  Value -1.374874e+00
Function evaluation     43;  Value -1.379886e+00
Function evaluation     46;  Value -1.380205e+00
Function evaluation     47;  Value -1.380518e+00
Function evaluation     50;  Value -1.380519e+00
Function evaluation     53;  Value -1.380519e+00
Function evaluation     55;  Value -1.380520e+00
Function evaluation     56;  Value -1.380520e+00
Function evaluation     58;  Value -1.380520e+00
Function evaluation     60;  Value -1.380520e+00
Function evaluation     62;  Value -1.380520e+00
Function evaluation     65;  Value -1.380520e+00
Function evaluation     67;  Value -1.380520e+00
Function evaluation     70;  Value -1.380520e+00
Function evaluation     72;  Value -1.380520e+00
Function evaluation     75;  Value -1.380520e+00
Function evaluation     76;  Value -1.380521e+00
Function evaluation     79;  Value -1.380523e+00
Function evaluation     83;  Value -1.380551e+00
Function evaluation     84;  Value -1.380576e+00
Function evaluation     86;  Value -1.380589e+00
Function evaluation     88;  Value -1.380593e+00
Function evaluation     90;  Value -1.380599e+00
Function evaluation     92;  Value -1.380610e+00
Function evaluation     94;  Value -1.380611e+00
Function evaluation     96;  Value -1.380612e+00
Function evaluation     99;  Value -1.380612e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 2.711153e-01
Function evaluation      3;  Value -5.019104e-01
Function evaluation      4;  Value -1.293674e+00
Function evaluation      8;  Value -1.459930e+00
Function evaluation     10;  Value -1.475121e+00
Function evaluation     12;  Value -1.499170e+00
Function evaluation     14;  Value -1.552147e+00
Function evaluation     17;  Value -1.554849e+00
Function evaluation     19;  Value -1.559207e+00
Function evaluation     21;  Value -1.560113e+00
Function evaluation     24;  Value -1.563337e+00
Function evaluation     26;  Value -1.564527e+00
Function evaluation     28;  Value -1.568155e+00
Function evaluation     30;  Value -1.569458e+00
Function evaluation     32;  Value -1.573643e+00
Function evaluation     33;  Value -1.577777e+00
Function evaluation     36;  Value -1.602678e+00
Function evaluation     38;  Value -1.607257e+00
Function evaluation     41;  Value -1.624523e+00
Function evaluation     43;  Value -1.641078e+00
Function evaluation     45;  Value -1.653061e+00
Function evaluation     47;  Value -1.654999e+00
Function evaluation     49;  Value -1.656209e+00
Function evaluation     51;  Value -1.656397e+00
Function evaluation     52;  Value -1.656604e+00
Function evaluation     54;  Value -1.656916e+00
Function evaluation     56;  Value -1.656959e+00
Function evaluation     58;  Value -1.656988e+00
Function evaluation     60;  Value -1.656988e+00
Function evaluation     62;  Value -1.656988e+00
Function evaluation     64;  Value -1.656988e+00
Function evaluation     66;  Value -1.656988e+00
Function evaluation     68;  Value -1.656988e+00
Function evaluation     70;  Value -1.656988e+00
Function evaluation     73;  Value -1.656988e+00
Function evaluation     75;  Value -1.656988e+00
Function evaluation     78;  Value -1.656988e+00
Function evaluation     82;  Value -1.656988e+00
Function evaluation     83;  Value -1.656988e+00
Function evaluation     85;  Value -1.656988e+00
Function evaluation     87;  Value -1.656988e+00
Function evaluation     90;  Value -1.656988e+00
Function evaluation     92;  Value -1.656988e+00
Function evaluation     94;  Value -1.656988e+00
Function evaluation     96;  Value -1.656988e+00
Function evaluation    100;  Value -1.656989e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 3.167876e-01
Function evaluation      3;  Value -6.860249e-01
Function evaluation      4;  Value -1.763996e+00
Function evaluation      7;  Value -2.099791e+00
Function evaluation     10;  Value -2.140495e+00
Function evaluation     12;  Value -2.175328e+00
Function evaluation     14;  Value -2.202204e+00
Function evaluation     16;  Value -2.204105e+00
Function evaluation     18;  Value -2.206269e+00
Function evaluation     19;  Value -2.208335e+00
Function evaluation     21;  Value -2.210266e+00
Function evaluation     23;  Value -2.211633e+00
Function evaluation     24;  Value -2.212973e+00
Function evaluation     26;  Value -2.216517e+00
Function evaluation     28;  Value -2.219375e+00
Function evaluation     30;  Value -2.224149e+00
Function evaluation     32;  Value -2.225558e+00
Function evaluation     35;  Value -2.231220e+00
Function evaluation     37;  Value -2.234343e+00
Function evaluation     42;  Value -2.267482e+00
Function evaluation     44;  Value -2.279592e+00
Function evaluation     46;  Value -2.296106e+00
Function evaluation     49;  Value -2.296497e+00
Function evaluation     51;  Value -2.297595e+00
Function evaluation     53;  Value -2.297806e+00
Function evaluation     54;  Value -2.298034e+00
Function evaluation     56;  Value -2.298058e+00
Function evaluation     58;  Value -2.298072e+00
Function evaluation     59;  Value -2.298085e+00
Function evaluation     61;  Value -2.298095e+00
Function evaluation     63;  Value -2.298121e+00
Function evaluation     65;  Value -2.298125e+00
Function evaluation     67;  Value -2.298128e+00
Function evaluation     70;  Value -2.298128e+00
Function evaluation     72;  Value -2.298128e+00
Function evaluation     74;  Value -2.298129e+00
Function evaluation     77;  Value -2.298129e+00
Function evaluation     79;  Value -2.298129e+00
Function evaluation     80;  Value -2.298130e+00
Function evaluation     82;  Value -2.298130e+00
Function evaluation     84;  Value -2.298130e+00
Function evaluation     87;  Value -2.298130e+00
Function evaluation     90;  Value -2.298131e+00
Function evaluation     92;  Value -2.298133e+00
Function evaluation     96;  Value -2.298166e+00
Function evaluation     98;  Value -2.298253e+00
Function evaluation    100;  Value -2.298305e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 2.522477e-01
Function evaluation      3;  Value -9.137982e-01
Function evaluation      5;  Value -2.317104e+00
Function evaluation      8;  Value -2.736654e+00
Function evaluation     10;  Value -2.747745e+00
Function evaluation     12;  Value -2.749390e+00
Function evaluation     15;  Value -2.764143e+00
Function evaluation     17;  Value -2.769907e+00
Function evaluation     20;  Value -2.825620e+00
Function evaluation     22;  Value -2.857284e+00
Function evaluation     25;  Value -2.859507e+00
Function evaluation     29;  Value -2.891645e+00
Function evaluation     32;  Value -2.892168e+00
Function evaluation     35;  Value -2.895408e+00
Function evaluation     37;  Value -2.900235e+00
Function evaluation     40;  Value -2.918734e+00
Function evaluation     43;  Value -2.919449e+00
Function evaluation     45;  Value -2.920591e+00
Function evaluation     47;  Value -2.921402e+00
Function evaluation     48;  Value -2.922155e+00
Function evaluation     50;  Value -2.922308e+00
Function evaluation     52;  Value -2.922384e+00
Function evaluation     54;  Value -2.922526e+00
Function evaluation     55;  Value -2.922671e+00
Function evaluation     58;  Value -2.923354e+00
Function evaluation     60;  Value -2.924376e+00
Function evaluation     62;  Value -2.927148e+00
Function evaluation     64;  Value -2.929552e+00
Function evaluation     65;  Value -2.931898e+00
Function evaluation     67;  Value -2.932758e+00
Function evaluation     68;  Value -2.933600e+00
Function evaluation     70;  Value -2.934676e+00
Function evaluation     72;  Value -2.937035e+00
Function evaluation     74;  Value -2.941111e+00
Function evaluation     76;  Value -2.944699e+00
Function evaluation     78;  Value -2.946428e+00
Function evaluation     80;  Value -2.947099e+00
Function evaluation     82;  Value -2.947358e+00
Function evaluation     84;  Value -2.947514e+00
Function evaluation     86;  Value -2.947644e+00
Function evaluation     88;  Value -2.947915e+00
Function evaluation     89;  Value -2.948182e+00
Function evaluation     91;  Value -2.948489e+00
Function evaluation     93;  Value -2.948593e+00
Function evaluation     95;  Value -2.948658e+00
Function evaluation     97;  Value -2.948672e+00
Function evaluation     99;  Value -2.948683e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 1.447925e-01
Function evaluation      3;  Value -1.241617e+00
Function evaluation      5;  Value -2.982138e+00
Function evaluation      8;  Value -3.493088e+00
Function evaluation     10;  Value -3.521756e+00
Function evaluation     12;  Value -3.527536e+00
Function evaluation     16;  Value -3.601102e+00
Function evaluation     18;  Value -3.641836e+00
Function evaluation     20;  Value -3.695192e+00
Function evaluation     21;  Value -3.741712e+00
Function evaluation     23;  Value -3.750012e+00
Function evaluation     27;  Value -3.805827e+00
Function evaluation     30;  Value -3.807945e+00
Function evaluation     33;  Value -3.816276e+00
Function evaluation     35;  Value -3.830702e+00
Function evaluation     37;  Value -3.835893e+00
Function evaluation     42;  Value -3.848669e+00
Function evaluation     45;  Value -3.849732e+00
Function evaluation     47;  Value -3.851752e+00
Function evaluation     49;  Value -3.852383e+00
Function evaluation     51;  Value -3.853722e+00
Function evaluation     53;  Value -3.854836e+00
Function evaluation     55;  Value -3.855338e+00
Function evaluation     57;  Value -3.855563e+00
Function evaluation     59;  Value -3.855639e+00
Function evaluation     61;  Value -3.855765e+00
Function evaluation     62;  Value -3.855894e+00
Function evaluation     64;  Value -3.856246e+00
Function evaluation     66;  Value -3.856386e+00
Function evaluation     68;  Value -3.856477e+00
Function evaluation     70;  Value -3.856500e+00
Function evaluation     71;  Value -3.856523e+00
Function evaluation     72;  Value -3.856545e+00
Function evaluation     74;  Value -3.856597e+00
Function evaluation     76;  Value -3.856671e+00
Function evaluation     78;  Value -3.856691e+00
Function evaluation     80;  Value -3.856698e+00
Function evaluation     82;  Value -3.856700e+00
Function evaluation     86;  Value -3.856724e+00
Function evaluation     88;  Value -3.856729e+00
Function evaluation     90;  Value -3.856737e+00
Function evaluation     92;  Value -3.856741e+00
Function evaluation     94;  Value -3.856752e+00
Function evaluation     97;  Value -3.856809e+00
Function evaluation     99;  Value -3.856825e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 3.039652e-01
Function evaluation      3;  Value -9.481038e-01
Function evaluation      5;  Value -2.331942e+00
Function evaluation      7;  Value -2.448098e+00
Function evaluation      9;  Value -2.484710e+00
Function evaluation     11;  Value -2.489095e+00
Function evaluation     14;  Value -2.513976e+00
Function evaluation     17;  Value -2.515318e+00
Function evaluation     20;  Value -2.526050e+00
Function evaluation     23;  Value -2.526757e+00
Function evaluation     26;  Value -2.529251e+00
Function evaluation     28;  Value -2.530789e+00
Function evaluation     31;  Value -2.544877e+00
Function evaluation     33;  Value -2.572873e+00
Function evaluation     35;  Value -2.607619e+00
Function evaluation     37;  Value -2.611103e+00
Function evaluation     39;  Value -2.612378e+00
Function evaluation     41;  Value -2.613405e+00
Function evaluation     43;  Value -2.614054e+00
Function evaluation     45;  Value -2.614259e+00
Function evaluation     47;  Value -2.614426e+00
Function evaluation     48;  Value -2.614586e+00
Function evaluation     50;  Value -2.614942e+00
Function evaluation     52;  Value -2.615472e+00
Function evaluation     53;  Value -2.616027e+00
Function evaluation     55;  Value -2.616196e+00
Function evaluation     57;  Value -2.616265e+00
Function evaluation     59;  Value -2.616297e+00
Function evaluation     61;  Value -2.616319e+00
Function evaluation     64;  Value -2.616420e+00
Function evaluation     66;  Value -2.616438e+00
Function evaluation     68;  Value -2.616461e+00
Function evaluation     71;  Value -2.616462e+00
Function evaluation     73;  Value -2.616464e+00
Function evaluation     75;  Value -2.616465e+00
Function evaluation     78;  Value -2.616471e+00
Function evaluation     80;  Value -2.616473e+00
Function evaluation     82;  Value -2.616474e+00
Function evaluation     84;  Value -2.616474e+00
Function evaluation     86;  Value -2.616474e+00
Function evaluation     89;  Value -2.616475e+00
Function evaluation     91;  Value -2.616476e+00
Function evaluation     93;  Value -2.616477e+00
Function evaluation     95;  Value -2.616478e+00
Function evaluation     98;  Value -2.616478e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 2.398718e-01
Function evaluation      3;  Value -1.240372e+00
Function evaluation      4;  Value -2.751542e+00
Function evaluation      6;  Value -2.885539e+00
Function evaluation      8;  Value -2.990964e+00
Function evaluation     10;  Value -3.004980e+00
Function evaluation     13;  Value -3.059923e+00
Function evaluation     16;  Value -3.061556e+00
Function evaluation     20;  Value -3.080413e+00
Function evaluation     23;  Value -3.080797e+00
Function evaluation     26;  Value -3.082789e+00
Function evaluation     28;  Value -3.084170e+00
Function evaluation     32;  Value -3.114664e+00
Function evaluation     34;  Value -3.121964e+00
Function evaluation     36;  Value -3.139722e+00
Function evaluation     39;  Value -3.140743e+00
Function evaluation     42;  Value -3.148153e+00
Function evaluation     44;  Value -3.152282e+00
Function evaluation     45;  Value -3.156691e+00
Function evaluation     47;  Value -3.157142e+00
Function evaluation     49;  Value -3.157464e+00
Function evaluation     51;  Value -3.157544e+00
Function evaluation     54;  Value -3.157987e+00
Function evaluation     56;  Value -3.158055e+00
Function evaluation     58;  Value -3.158089e+00
Function evaluation     60;  Value -3.158092e+00
Function evaluation     62;  Value -3.158092e+00
Function evaluation     64;  Value -3.158093e+00
Function evaluation     66;  Value -3.158093e+00
Function evaluation     69;  Value -3.158094e+00
Function evaluation     71;  Value -3.158095e+00
Function evaluation     75;  Value -3.158096e+00
Function evaluation     77;  Value -3.158097e+00
Function evaluation     82;  Value -3.158106e+00
Function evaluation     84;  Value -3.158109e+00
Function evaluation     89;  Value -3.158223e+00
Function evaluation     91;  Value -3.158248e+00
Function evaluation     95;  Value -3.158521e+00
Function evaluation     97;  Value -3.158551e+00
Function evaluation    100;  Value -3.158655e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 1.995756e+00
Function evaluation      2;  Value 1.437154e+00
Function evaluation      4;  Value 9.557495e-01
Function evaluation      6;  Value 7.726918e-01
Function evaluation      8;  Value 7.165585e-01
Function evaluation     10;  Value 6.719881e-01
Function evaluation     13;  Value 6.706582e-01
Function evaluation     15;  Value 6.701407e-01
Function evaluation     17;  Value 6.699657e-01
Function evaluation     20;  Value 6.687879e-01
Function evaluation     22;  Value 6.680574e-01
Function evaluation     24;  Value 6.674346e-01
Function evaluation     26;  Value 6.667144e-01
Function evaluation     28;  Value 6.657801e-01
Function evaluation     31;  Value 6.572032e-01
Function evaluation     33;  Value 6.550113e-01
Function evaluation     34;  Value 6.527078e-01
Function evaluation     36;  Value 6.495804e-01
Function evaluation     37;  Value 6.467298e-01
Function evaluation     39;  Value 6.465485e-01
Function evaluation     41;  Value 6.464734e-01
Function evaluation     45;  Value 6.455442e-01
Function evaluation     48;  Value 6.455015e-01
Function evaluation     51;  Value 6.452744e-01
Function evaluation     53;  Value 6.445372e-01
Function evaluation     55;  Value 6.442931e-01
Function evaluation     59;  Value 6.424310e-01
Function evaluation     61;  Value 6.420591e-01
Function evaluation     64;  Value 6.399696e-01
Function evaluation     65;  Value 6.378063e-01
Function evaluation     68;  Value 6.376613e-01
Function evaluation     70;  Value 6.375926e-01
Function evaluation     72;  Value 6.375715e-01
Function evaluation     75;  Value 6.374435e-01
Function evaluation     78;  Value 6.374366e-01
Function evaluation     81;  Value 6.374111e-01
Function evaluation     83;  Value 6.374023e-01
Function evaluation     86;  Value 6.373548e-01
Function evaluation     88;  Value 6.373495e-01
Function evaluation     90;  Value 6.373403e-01
Function evaluation     91;  Value 6.373316e-01
Function evaluation     93;  Value 6.373153e-01
Function evaluation     95;  Value 6.373100e-01
Function evaluation     97;  Value 6.373058e-01
Function evaluation     99;  Value 6.373044e-01
Function evaluation    100;  Value 6.373030e-01
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 3.695977e+00
Function evaluation      3;  Value 2.765659e+00
Function evaluation      7;  Value 2.660050e+00
Function evaluation      9;  Value 2.610606e+00
Function evaluation     11;  Value 2.604120e+00
Function evaluation     13;  Value 2.601268e+00
Function evaluation     15;  Value 2.600829e+00
Function evaluation     18;  Value 2.600800e+00
Function evaluation     21;  Value 2.600559e+00
Function evaluation     23;  Value 2.599895e+00
Function evaluation     25;  Value 2.599625e+00
Function evaluation     28;  Value 2.597858e+00
Function evaluation     30;  Value 2.596674e+00
Function evaluation     33;  Value 2.591266e+00
Function evaluation     35;  Value 2.589932e+00
Function evaluation     37;  Value 2.587989e+00
Function evaluation     39;  Value 2.586932e+00
Function evaluation     41;  Value 2.586341e+00
Function evaluation     43;  Value 2.586131e+00
Function evaluation     45;  Value 2.586086e+00
Function evaluation     47;  Value 2.586076e+00
Function evaluation     49;  Value 2.586074e+00
Function evaluation     51;  Value 2.586071e+00
Function evaluation     53;  Value 2.586069e+00
Function evaluation     57;  Value 2.586035e+00
Function evaluation     59;  Value 2.586013e+00
Function evaluation     63;  Value 2.585653e+00
Function evaluation     65;  Value 2.585546e+00
Function evaluation     68;  Value 2.585169e+00
Function evaluation     70;  Value 2.585117e+00
Function evaluation     73;  Value 2.584889e+00
Function evaluation     75;  Value 2.584825e+00
Function evaluation     77;  Value 2.584633e+00
Function evaluation     79;  Value 2.584610e+00
Function evaluation     81;  Value 2.584578e+00
Function evaluation     83;  Value 2.584576e+00
Function evaluation     85;  Value 2.584572e+00
Function evaluation     87;  Value 2.584571e+00
Function evaluation     89;  Value 2.584568e+00
Function evaluation     91;  Value 2.584567e+00
Function evaluation     92;  Value 2.584566e+00
Function evaluation     94;  Value 2.584566e+00
Function evaluation     96;  Value 2.584565e+00
Function evaluation     98;  Value 2.584565e+00
Function evaluation    100;  Value 2.584564e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 3.193340e+00
Function evaluation      3;  Value 2.477462e+00
Function evaluation      7;  Value 2.374620e+00
Function evaluation      9;  Value 2.214852e+00
Function evaluation     12;  Value 2.210342e+00
Function evaluation     14;  Value 2.208880e+00
Function evaluation     17;  Value 2.208790e+00
Function evaluation     20;  Value 2.208255e+00
Function evaluation     22;  Value 2.207802e+00
Function evaluation     24;  Value 2.207085e+00
Function evaluation     26;  Value 2.204942e+00
Function evaluation     28;  Value 2.203685e+00
Function evaluation     31;  Value 2.192683e+00
Function evaluation     33;  Value 2.191008e+00
Function evaluation     35;  Value 2.187247e+00
Function evaluation     37;  Value 2.186548e+00
Function evaluation     39;  Value 2.185654e+00
Function evaluation     41;  Value 2.185567e+00
Function evaluation     43;  Value 2.185292e+00
Function evaluation     45;  Value 2.185256e+00
Function evaluation     47;  Value 2.185225e+00
Function evaluation     49;  Value 2.185215e+00
Function evaluation     51;  Value 2.185204e+00
Function evaluation     53;  Value 2.185169e+00
Function evaluation     55;  Value 2.185162e+00
Function evaluation     59;  Value 2.185062e+00
Function evaluation     60;  Value 2.184958e+00
Function evaluation     64;  Value 2.183568e+00
Function evaluation     66;  Value 2.182723e+00
Function evaluation     68;  Value 2.181669e+00
Function evaluation     70;  Value 2.181379e+00
Function evaluation     72;  Value 2.180840e+00
Function evaluation     74;  Value 2.180600e+00
Function evaluation     76;  Value 2.180554e+00
Function evaluation     78;  Value 2.180551e+00
Function evaluation     80;  Value 2.180549e+00
Function evaluation     82;  Value 2.180542e+00
Function evaluation     84;  Value 2.180540e+00
Function evaluation     86;  Value 2.180538e+00
Function evaluation     88;  Value 2.180538e+00
Function evaluation     90;  Value 2.180538e+00
Function evaluation     93;  Value 2.180538e+00
Function evaluation     96;  Value 2.180538e+00
Function evaluation     98;  Value 2.180538e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 3.132902e+00
Function evaluation      3;  Value 2.517663e+00
Function evaluation      6;  Value 2.249709e+00
Function evaluation      8;  Value 1.950354e+00
Function evaluation     11;  Value 1.944793e+00
Function evaluation     13;  Value 1.944298e+00
Function evaluation     15;  Value 1.943601e+00
Function evaluation     17;  Value 1.943416e+00
Function evaluation     21;  Value 1.940978e+00
Function evaluation     23;  Value 1.939150e+00
Function evaluation     26;  Value 1.931383e+00
Function evaluation     28;  Value 1.928685e+00
Function evaluation     30;  Value 1.923140e+00
Function evaluation     32;  Value 1.920347e+00
Function evaluation     33;  Value 1.917347e+00
Function evaluation     35;  Value 1.917205e+00
Function evaluation     37;  Value 1.917182e+00
Function evaluation     39;  Value 1.917171e+00
Function evaluation     41;  Value 1.917167e+00
Function evaluation     43;  Value 1.917165e+00
Function evaluation     45;  Value 1.917165e+00
Function evaluation     47;  Value 1.917164e+00
Function evaluation     50;  Value 1.917164e+00
Function evaluation     54;  Value 1.917164e+00
Function evaluation     56;  Value 1.917164e+00
Function evaluation     58;  Value 1.917164e+00
Function evaluation     64;  Value 1.917163e+00
Function evaluation     65;  Value 1.917162e+00
Function evaluation     68;  Value 1.917155e+00
Function evaluation     70;  Value 1.917152e+00
Function evaluation     74;  Value 1.917097e+00
Function evaluation     76;  Value 1.917089e+00
Function evaluation     78;  Value 1.917061e+00
Function evaluation     80;  Value 1.917018e+00
Function evaluation     82;  Value 1.917001e+00
Function evaluation     84;  Value 1.917000e+00
Function evaluation     86;  Value 1.917000e+00
Function evaluation     88;  Value 1.916999e+00
Function evaluation     90;  Value 1.916999e+00
Function evaluation     92;  Value 1.916999e+00
Function evaluation     95;  Value 1.916999e+00
Function evaluation     98;  Value 1.916999e+00
Function evaluation    100;  Value 1.916999e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 2.886808e+00
Function evaluation      3;  Value 2.261157e+00
Function evaluation      6;  Value 2.033701e+00
Function evaluation      8;  Value 1.653231e+00
Function evaluation     11;  Value 1.629568e+00
Function evaluation     13;  Value 1.614337e+00
Function evaluation     16;  Value 1.614102e+00
Function evaluation     18;  Value 1.613722e+00
Function evaluation     19;  Value 1.613377e+00
Function evaluation     22;  Value 1.611961e+00
Function evaluation     24;  Value 1.611732e+00
Function evaluation     26;  Value 1.611168e+00
Function evaluation     28;  Value 1.610716e+00
Function evaluation     30;  Value 1.610522e+00
Function evaluation     32;  Value 1.610231e+00
Function evaluation     34;  Value 1.609971e+00
Function evaluation     37;  Value 1.607830e+00
Function evaluation     39;  Value 1.607445e+00
Function evaluation     43;  Value 1.601356e+00
Function evaluation     45;  Value 1.597524e+00
Function evaluation     47;  Value 1.588046e+00
Function evaluation     49;  Value 1.586304e+00
Function evaluation     51;  Value 1.583227e+00
Function evaluation     53;  Value 1.582957e+00
Function evaluation     56;  Value 1.582949e+00
Function evaluation     58;  Value 1.582931e+00
Function evaluation     61;  Value 1.582931e+00
Function evaluation     63;  Value 1.582931e+00
Function evaluation     65;  Value 1.582930e+00
Function evaluation     67;  Value 1.582930e+00
Function evaluation     69;  Value 1.582930e+00
Function evaluation     72;  Value 1.582929e+00
Function evaluation     76;  Value 1.582917e+00
Function evaluation     78;  Value 1.582912e+00
Function evaluation     80;  Value 1.582896e+00
Function evaluation     82;  Value 1.582892e+00
Function evaluation     85;  Value 1.582864e+00
Function evaluation     87;  Value 1.582857e+00
Function evaluation     89;  Value 1.582841e+00
Function evaluation     92;  Value 1.582840e+00
Function evaluation     94;  Value 1.582839e+00
Function evaluation     96;  Value 1.582838e+00
Function evaluation     98;  Value 1.582838e+00
Function evaluation    100;  Value 1.582837e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 5.648945e+00
Function evaluation      3;  Value 5.390691e+00
Function evaluation      5;  Value 5.156150e+00
Function evaluation      8;  Value 5.053703e+00
Function evaluation     10;  Value 5.053301e+00
Function evaluation     12;  Value 5.053118e+00
Function evaluation     14;  Value 5.052896e+00
Function evaluation     17;  Value 5.051887e+00
Function evaluation     19;  Value 5.051723e+00
Function evaluation     22;  Value 5.050236e+00
Function evaluation     25;  Value 5.042779e+00
Function evaluation     27;  Value 5.032532e+00
Function evaluation     29;  Value 5.028505e+00
Function evaluation     31;  Value 5.026815e+00
Function evaluation     33;  Value 5.026295e+00
Function evaluation     36;  Value 5.026251e+00
Function evaluation     38;  Value 5.026211e+00
Function evaluation     40;  Value 5.026203e+00
Function evaluation     43;  Value 5.026168e+00
Function evaluation     45;  Value 5.026165e+00
Function evaluation     47;  Value 5.026163e+00
Function evaluation     49;  Value 5.026163e+00
Function evaluation     51;  Value 5.026162e+00
Function evaluation     53;  Value 5.026162e+00
Function evaluation     56;  Value 5.026162e+00
Function evaluation     58;  Value 5.026162e+00
Function evaluation     63;  Value 5.026162e+00
Function evaluation     67;  Value 5.026154e+00
Function evaluation     69;  Value 5.026149e+00
Function evaluation     71;  Value 5.026144e+00
Function evaluation     75;  Value 5.026025e+00
Function evaluation     78;  Value 5.026021e+00
Function evaluation     80;  Value 5.026018e+00
Function evaluation     82;  Value 5.026016e+00
Function evaluation     84;  Value 5.026012e+00
Function evaluation     86;  Value 5.026011e+00
Function evaluation     88;  Value 5.026010e+00
Function evaluation     90;  Value 5.026010e+00
Function evaluation     92;  Value 5.026009e+00
Function evaluation     94;  Value 5.026009e+00
Function evaluation     96;  Value 5.026009e+00
Function evaluation     98;  Value 5.026009e+00
Function evaluation    100;  Value 5.026009e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 5.732766e+00
Function evaluation      3;  Value 5.592961e+00
Function evaluation      5;  Value 5.355844e+00
Function evaluation      9;  Value 5.294699e+00
Function evaluation     11;  Value 5.291781e+00
Function evaluation     13;  Value 5.291344e+00
Function evaluation     14;  Value 5.290949e+00
Function evaluation     16;  Value 5.289844e+00
Function evaluation     18;  Value 5.289234e+00
Function evaluation     20;  Value 5.288951e+00
Function evaluation     23;  Value 5.287387e+00
Function evaluation     25;  Value 5.283263e+00
Function evaluation     27;  Value 5.275427e+00
Function evaluation     29;  Value 5.274608e+00
Function evaluation     33;  Value 5.265831e+00
Function evaluation     35;  Value 5.262345e+00
Function evaluation     37;  Value 5.260846e+00
Function evaluation     39;  Value 5.260354e+00
Function evaluation     41;  Value 5.260250e+00
Function evaluation     43;  Value 5.260248e+00
Function evaluation     46;  Value 5.260241e+00
Function evaluation     48;  Value 5.260234e+00
Function evaluation     55;  Value 5.257821e+00
Function evaluation     59;  Value 5.257788e+00
Function evaluation     61;  Value 5.257782e+00
Function evaluation     62;  Value 5.257781e+00
Function evaluation     64;  Value 5.257780e+00
Function evaluation     66;  Value 5.257780e+00
Function evaluation     68;  Value 5.257780e+00
Function evaluation     70;  Value 5.257780e+00
Function evaluation     72;  Value 5.257780e+00
Function evaluation     74;  Value 5.257780e+00
Function evaluation     77;  Value 5.257780e+00
Function evaluation     78;  Value 5.257780e+00
Function evaluation     81;  Value 5.257780e+00
Function evaluation     83;  Value 5.257779e+00
Function evaluation     85;  Value 5.257778e+00
Function evaluation     88;  Value 5.257773e+00
Function evaluation     90;  Value 5.257769e+00
Function evaluation     92;  Value 5.257761e+00
Function evaluation     94;  Value 5.257740e+00
Function evaluation     96;  Value 5.257731e+00
Function evaluation     98;  Value 5.257723e+00
Grid point is better than previous hyperparameter
Function evaluation      0;  Value 5.290207e+00
Function evaluation      5;  Value 5.210543e+00
Function evaluation      7;  Value 4.997780e+00
Function evaluation     10;  Value 4.993002e+00
Function evaluation     12;  Value 4.991811e+00
Function evaluation     14;  Value 4.990437e+00
Function evaluation     16;  Value 4.987827e+00
Function evaluation     19;  Value 4.976041e+00
Function evaluation     21;  Value 4.972617e+00
Function evaluation     24;  Value 4.960342e+00
Function evaluation     26;  Value 4.951771e+00
Function evaluation     29;  Value 4.951493e+00
Function evaluation     32;  Value 4.950148e+00
Function evaluation     34;  Value 4.949179e+00
Function evaluation     36;  Value 4.947869e+00
Function evaluation     38;  Value 4.947795e+00
Function evaluation     40;  Value 4.947656e+00
Function evaluation     42;  Value 4.947457e+00
Function evaluation     44;  Value 4.947301e+00
Function evaluation     46;  Value 4.947256e+00
Function evaluation     48;  Value 4.947241e+00
Function evaluation     50;  Value 4.947232e+00
Function evaluation     52;  Value 4.947226e+00
Function evaluation     55;  Value 4.947203e+00
Function evaluation     57;  Value 4.947195e+00
Function evaluation     59;  Value 4.947183e+00
Function evaluation     61;  Value 4.947178e+00
Function evaluation     64;  Value 4.947145e+00
Function evaluation     65;  Value 4.947110e+00
Function evaluation     68;  Value 4.946955e+00
Function evaluation     70;  Value 4.946772e+00
Function evaluation     72;  Value 4.946685e+00
Function evaluation     75;  Value 4.945973e+00
Function evaluation     77;  Value 4.945388e+00
Function evaluation     79;  Value 4.944980e+00
Function evaluation     81;  Value 4.944945e+00
Function evaluation     83;  Value 4.944923e+00
Function evaluation     85;  Value 4.944889e+00
Function evaluation     87;  Value 4.944865e+00
Function evaluation     89;  Value 4.944834e+00
Function evaluation     91;  Value 4.944826e+00
Function evaluation     93;  Value 4.944821e+00
Function evaluation     95;  Value 4.944820e+00
Function evaluation     97;  Value 4.944817e+00
Function evaluation     99;  Value 4.944816e+00

Report what has been found

note the distance of the true minimum and the one BO4CO found after only maxIter observations!

echo on

[mv, mloc] = min(obsY);

fprintf('Minimum value: %f found at:\n', mv);

Minimum value: -0.636814 found at:

disp(obsX(mloc, :));

    1.0125

fprintf('True minimum value: %f at:\n', f(trueMinLoc));

True minimum value: -0.636816 at:

disp(trueMinLoc)

   -1.0127    1.0127