|
5 | 5 | 2) define a Kriging-based Gaussian-process (smt backend) |
6 | 6 | trained on said data |
7 | 7 | 3) determine the minimizer via BOAlgorithm |
| 8 | +
|
| 9 | +Authors: Tucker Hartland <hartland1@llnl.gov> |
| 10 | + Nai-Yuan Chiang <chiang7@llnl.gov> |
8 | 11 | """ |
9 | 12 |
|
10 | 13 | import sys |
|
30 | 33 | nx = 2 # dimension of the problem |
31 | 34 | xlimits = np.array([[-5, 5], [-5, 5]]) # bounds on optimization variable |
32 | 35 |
|
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}} |
35 | 40 |
|
36 | 41 | prob_type_l = ["LpNorm", "Branin"] |
37 | 42 | acq_type_l = ["LCB", "EI"] |
38 | 43 |
|
39 | 44 | mean_obj = {} |
| 45 | +max_obj = {} |
| 46 | +min_obj = {} |
40 | 47 |
|
41 | 48 | retval = 0 |
42 | 49 | for prob_type in prob_type_l: |
|
48 | 55 |
|
49 | 56 | if prob_type not in mean_obj: |
50 | 57 | mean_obj[prob_type] = {} |
| 58 | + max_obj[prob_type] = {} |
| 59 | + min_obj[prob_type] = {} |
51 | 60 |
|
52 | 61 | for acq_type in acq_type_l: |
53 | 62 | if acq_type not in mean_obj[prob_type]: |
54 | 63 | 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 |
55 | 66 |
|
56 | 67 | print("Problem name: ", problem.name) |
57 | 68 | print("Acquisition type: ", acq_type) |
|
74 | 85 | y_opt = bo.getOptimalObjective() |
75 | 86 |
|
76 | 87 | 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) |
77 | 90 |
|
| 91 | +print("Summary:") |
78 | 92 | for prob_type in prob_type_l: |
79 | 93 | for acq_type in acq_type_l: |
80 | 94 | 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) |
82 | 99 |
|
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], ")") |
87 | 102 | retval = 1 |
88 | 103 |
|
89 | 104 | sys.exit(retval) |
|
0 commit comments