Skip to content

Commit 0bbf840

Browse files
committed
address Cosmin's comments
1 parent 15ed6d8 commit 0bbf840

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/Drivers/hiopbbpy/BODriver.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
2) define a Kriging-based Gaussian-process (smt backend)
66
trained on said data
77
3) determine the minimizer via BOAlgorithm
8+
9+
Authors: Tucker Hartland <hartland1@llnl.gov>
10+
Nai-Yuan Chiang <chiang7@llnl.gov>
811
"""
912

1013
import sys
@@ -30,13 +33,17 @@
3033
nx = 2 # dimension of the problem
3134
xlimits = np.array([[-5, 5], [-5, 5]]) # bounds on optimization variable
3235

33-
### saved solutions
34-
saved_sol = {"LpNorm": {"LCB": 0.04618462, "EI": 0.44954611}, "Branin": {"LCB": 0.62655919, "EI": 1.9838798}}
36+
### saved solutions --- from 1000 repetitions
37+
saved_mean_obj = {"LpNorm": {"LCB": 0.01913481, "EI": 0.19634178}, "Branin": {"LCB": 0.51033727, "EI": 1.3722849}}
38+
saved_min_obj = {"LpNorm": {"LCB": 0.00014948, "EI": 0.01305073}, "Branin": {"LCB": 0.39810948, "EI": 0.40188902}}
39+
saved_max_obj = {"LpNorm": {"LCB": 0.10684082, "EI": 0.93578515}, "Branin": {"LCB": 1.4407172, "EI": 4.6802864}}
3540

3641
prob_type_l = ["LpNorm", "Branin"]
3742
acq_type_l = ["LCB", "EI"]
3843

3944
mean_obj = {}
45+
max_obj = {}
46+
min_obj = {}
4047

4148
retval = 0
4249
for prob_type in prob_type_l:
@@ -48,10 +55,14 @@
4855

4956
if prob_type not in mean_obj:
5057
mean_obj[prob_type] = {}
58+
max_obj[prob_type] = {}
59+
min_obj[prob_type] = {}
5160

5261
for acq_type in acq_type_l:
5362
if acq_type not in mean_obj[prob_type]:
5463
mean_obj[prob_type][acq_type] = 0
64+
max_obj[prob_type][acq_type] = -np.inf
65+
min_obj[prob_type][acq_type] = np.inf
5566

5667
print("Problem name: ", problem.name)
5768
print("Acquisition type: ", acq_type)
@@ -74,16 +85,20 @@
7485
y_opt = bo.getOptimalObjective()
7586

7687
mean_obj[prob_type][acq_type] += y_opt
88+
max_obj[prob_type][acq_type] = max(max_obj[prob_type][acq_type], y_opt)
89+
min_obj[prob_type][acq_type] = min(min_obj[prob_type][acq_type], y_opt)
7790

91+
print("Summary:")
7892
for prob_type in prob_type_l:
7993
for acq_type in acq_type_l:
8094
mean_obj[prob_type][acq_type] /= num_repeat
81-
print("Mean Opt.Obj for ", prob_type, "-", acq_type, mean_obj[prob_type][acq_type])
95+
print("(Min,Mean,Max) Opt.Obj for", prob_type, "-", acq_type, ":\t(", min_obj[prob_type][acq_type], ",",mean_obj[prob_type][acq_type], ",", max_obj[prob_type][acq_type], ")")
96+
97+
#r_error = np.abs((mean_obj[prob_type][acq_type] - saved_mean_obj[prob_type][acq_type])/(1+saved_mean_obj[prob_type][acq_type]))
98+
#print("Relative Error from Mean: ", r_error)
8299

83-
r_error = np.abs((mean_obj[prob_type][acq_type] - saved_sol[prob_type][acq_type])/saved_sol[prob_type][acq_type])
84-
if r_error > 0.5:
85-
print("Relative Error > 0.5: ", r_error)
86-
print("Recorded Solution:", saved_sol[prob_type][acq_type])
100+
if max_obj[prob_type][acq_type] > saved_max_obj[prob_type][acq_type] or min_obj[prob_type][acq_type] < saved_min_obj[prob_type][acq_type]:
101+
print("Recorded (min, mean, max): (", saved_min_obj[prob_type][acq_type], ",", saved_mean_obj[prob_type][acq_type], ",", saved_max_obj[prob_type][acq_type], ")")
87102
retval = 1
88103

89104
sys.exit(retval)

0 commit comments

Comments
 (0)