| @@ 21-89 (lines=69) @@ | ||
| 18 | n_iter = 1000 |
|
| 19 | ||
| 20 | ||
| 21 | def test_start_temp_0(): |
|
| 22 | n_initialize = 1 |
|
| 23 | ||
| 24 | start_temp_0 = 0 |
|
| 25 | start_temp_1 = 0.1 |
|
| 26 | start_temp_10 = 1 |
|
| 27 | start_temp_100 = 100 |
|
| 28 | start_temp_inf = np.inf |
|
| 29 | ||
| 30 | epsilon = 1 / np.inf |
|
| 31 | ||
| 32 | opt = SimulatedAnnealingOptimizer( |
|
| 33 | search_space, |
|
| 34 | start_temp=start_temp_0, |
|
| 35 | epsilon=epsilon, |
|
| 36 | initialize={"random": n_initialize}, |
|
| 37 | ) |
|
| 38 | opt.search(objective_function, n_iter=n_iter) |
|
| 39 | n_transitions_0 = opt.n_transitions |
|
| 40 | ||
| 41 | opt = SimulatedAnnealingOptimizer( |
|
| 42 | search_space, |
|
| 43 | start_temp=start_temp_1, |
|
| 44 | epsilon=epsilon, |
|
| 45 | initialize={"random": n_initialize}, |
|
| 46 | ) |
|
| 47 | opt.search(objective_function, n_iter=n_iter) |
|
| 48 | n_transitions_1 = opt.n_transitions |
|
| 49 | ||
| 50 | opt = SimulatedAnnealingOptimizer( |
|
| 51 | search_space, |
|
| 52 | start_temp=start_temp_10, |
|
| 53 | epsilon=epsilon, |
|
| 54 | initialize={"random": n_initialize}, |
|
| 55 | ) |
|
| 56 | opt.search(objective_function, n_iter=n_iter) |
|
| 57 | n_transitions_10 = opt.n_transitions |
|
| 58 | ||
| 59 | opt = SimulatedAnnealingOptimizer( |
|
| 60 | search_space, |
|
| 61 | start_temp=start_temp_100, |
|
| 62 | epsilon=epsilon, |
|
| 63 | initialize={"random": n_initialize}, |
|
| 64 | ) |
|
| 65 | opt.search(objective_function, n_iter=n_iter) |
|
| 66 | n_transitions_100 = opt.n_transitions |
|
| 67 | ||
| 68 | opt = SimulatedAnnealingOptimizer( |
|
| 69 | search_space, |
|
| 70 | start_temp=start_temp_inf, |
|
| 71 | epsilon=epsilon, |
|
| 72 | initialize={"random": n_initialize}, |
|
| 73 | ) |
|
| 74 | opt.search(objective_function, n_iter=n_iter) |
|
| 75 | n_transitions_inf = opt.n_transitions |
|
| 76 | ||
| 77 | print("\n n_transitions_0", n_transitions_0) |
|
| 78 | print("\n n_transitions_1", n_transitions_1) |
|
| 79 | print("\n n_transitions_10", n_transitions_10) |
|
| 80 | print("\n n_transitions_100", n_transitions_100) |
|
| 81 | print("\n n_transitions_inf", n_transitions_inf) |
|
| 82 | ||
| 83 | assert n_transitions_0 == start_temp_0 |
|
| 84 | assert ( |
|
| 85 | n_transitions_1 |
|
| 86 | == n_transitions_10 |
|
| 87 | == n_transitions_100 |
|
| 88 | == n_transitions_inf |
|
| 89 | == n_iter - n_initialize |
|
| 90 | ) |
|
| 91 | ||
| 92 | ||
| @@ 93-156 (lines=64) @@ | ||
| 90 | ) |
|
| 91 | ||
| 92 | ||
| 93 | def test_start_temp_1(): |
|
| 94 | n_initialize = 1 |
|
| 95 | ||
| 96 | start_temp_0 = 0 |
|
| 97 | start_temp_1 = 0.1 |
|
| 98 | start_temp_10 = 1 |
|
| 99 | start_temp_100 = 100 |
|
| 100 | start_temp_inf = np.inf |
|
| 101 | ||
| 102 | epsilon = 0.03 |
|
| 103 | ||
| 104 | opt = SimulatedAnnealingOptimizer( |
|
| 105 | search_space, |
|
| 106 | start_temp=start_temp_0, |
|
| 107 | epsilon=epsilon, |
|
| 108 | initialize={"random": n_initialize}, |
|
| 109 | ) |
|
| 110 | opt.search(objective_function, n_iter=n_iter) |
|
| 111 | n_transitions_0 = opt.n_transitions |
|
| 112 | ||
| 113 | opt = SimulatedAnnealingOptimizer( |
|
| 114 | search_space, |
|
| 115 | start_temp=start_temp_1, |
|
| 116 | epsilon=epsilon, |
|
| 117 | initialize={"random": n_initialize}, |
|
| 118 | ) |
|
| 119 | opt.search(objective_function, n_iter=n_iter) |
|
| 120 | n_transitions_1 = opt.n_transitions |
|
| 121 | ||
| 122 | opt = SimulatedAnnealingOptimizer( |
|
| 123 | search_space, |
|
| 124 | start_temp=start_temp_10, |
|
| 125 | epsilon=epsilon, |
|
| 126 | initialize={"random": n_initialize}, |
|
| 127 | ) |
|
| 128 | opt.search(objective_function, n_iter=n_iter) |
|
| 129 | n_transitions_10 = opt.n_transitions |
|
| 130 | ||
| 131 | opt = SimulatedAnnealingOptimizer( |
|
| 132 | search_space, |
|
| 133 | start_temp=start_temp_100, |
|
| 134 | epsilon=epsilon, |
|
| 135 | initialize={"random": n_initialize}, |
|
| 136 | ) |
|
| 137 | opt.search(objective_function, n_iter=n_iter) |
|
| 138 | n_transitions_100 = opt.n_transitions |
|
| 139 | ||
| 140 | opt = SimulatedAnnealingOptimizer( |
|
| 141 | search_space, |
|
| 142 | start_temp=start_temp_inf, |
|
| 143 | epsilon=epsilon, |
|
| 144 | initialize={"random": n_initialize}, |
|
| 145 | ) |
|
| 146 | opt.search(objective_function, n_iter=n_iter) |
|
| 147 | n_transitions_inf = opt.n_transitions |
|
| 148 | ||
| 149 | print("\n n_transitions_0", n_transitions_0) |
|
| 150 | print("\n n_transitions_1", n_transitions_1) |
|
| 151 | print("\n n_transitions_10", n_transitions_10) |
|
| 152 | print("\n n_transitions_100", n_transitions_100) |
|
| 153 | print("\n n_transitions_inf", n_transitions_inf) |
|
| 154 | ||
| 155 | assert n_transitions_0 == start_temp_0 |
|
| 156 | assert n_transitions_1 < n_transitions_10 < n_transitions_100 < n_transitions_inf |
|
| 157 | ||
| 158 | ||
| 159 | def test_annealing_rate_0(): |
|