|
44 | 44 | mean_obj = {} |
45 | 45 | max_obj = {} |
46 | 46 | min_obj = {} |
| 47 | +y_opt = {} |
47 | 48 |
|
48 | | -retval = 1 |
49 | | -sys.exit(retval) |
| 49 | +retval = 0 |
50 | 50 | for prob_type in prob_type_l: |
51 | 51 | print() |
52 | 52 | if prob_type == "LpNorm": |
|
58 | 58 | mean_obj[prob_type] = {} |
59 | 59 | max_obj[prob_type] = {} |
60 | 60 | min_obj[prob_type] = {} |
| 61 | + y_opt[prob_type] = {} |
61 | 62 |
|
62 | 63 | for acq_type in acq_type_l: |
63 | 64 | if acq_type not in mean_obj[prob_type]: |
64 | 65 | mean_obj[prob_type][acq_type] = 0 |
65 | 66 | max_obj[prob_type][acq_type] = -np.inf |
66 | 67 | min_obj[prob_type][acq_type] = np.inf |
| 68 | + y_opt[prob_type][acq_type] = np.zeros(num_repeat) |
67 | 69 |
|
68 | 70 | print("Problem name: ", problem.name) |
69 | 71 | print("Acquisition type: ", acq_type) |
|
83 | 85 | bo.optimize(problem) |
84 | 86 |
|
85 | 87 | # Retrieve optimal objec |
86 | | - y_opt = bo.getOptimalObjective() |
| 88 | + y_opt[prob_type][acq_type][n_repeat] = bo.getOptimalObjective() |
87 | 89 |
|
88 | | - mean_obj[prob_type][acq_type] += y_opt |
89 | | - max_obj[prob_type][acq_type] = max(max_obj[prob_type][acq_type], y_opt) |
90 | | - min_obj[prob_type][acq_type] = min(min_obj[prob_type][acq_type], y_opt) |
| 90 | + mean_obj[prob_type][acq_type] += y_opt[prob_type][acq_type][n_repeat] |
| 91 | + max_obj[prob_type][acq_type] = max(max_obj[prob_type][acq_type], y_opt[prob_type][acq_type][n_repeat]) |
| 92 | + min_obj[prob_type][acq_type] = min(min_obj[prob_type][acq_type], y_opt[prob_type][acq_type][n_repeat]) |
91 | 93 |
|
92 | 94 | print("Summary:") |
93 | 95 | for prob_type in prob_type_l: |
94 | 96 | for acq_type in acq_type_l: |
| 97 | + allowed_error = max(1e-6, 0.01*(saved_max_obj[prob_type][acq_type]-saved_min_obj[prob_type][acq_type])) |
| 98 | + |
95 | 99 | mean_obj[prob_type][acq_type] /= num_repeat |
96 | 100 | 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], ")") |
97 | | - |
98 | | - #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])) |
99 | | - #print("Relative Error from Mean: ", r_error) |
100 | | - |
101 | | - 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 | + |
| 102 | + lb = saved_min_obj[prob_type][acq_type] - allowed_error |
| 103 | + ub = saved_max_obj[prob_type][acq_type] + allowed_error |
| 104 | + |
| 105 | + is_failed = (y_opt[prob_type][acq_type] < lb) | (y_opt[prob_type][acq_type] > ub) |
| 106 | + num_fail = np.sum(is_failed) |
| 107 | + |
| 108 | + if num_fail > 1: |
| 109 | + print(num_fail, "test(s) fail(s):", y_opt[prob_type][acq_type][is_failed]) |
102 | 110 | 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], ")") |
103 | 111 | retval = 1 |
104 | 112 |
|
|
0 commit comments