def test_initialize_vertices(): initialize = {"vertices": 2} opt = RandomSearchOptimizer(search_space, initialize=initialize) opt.search(objective_function, n_iter=2) assert abs(opt.best_score) - 10000 < 0.001
def test_verbosity_4(): opt = RandomSearchOptimizer(search_space) opt.search( objective_function, n_iter=100, verbosity=["progress_bar", "print_results"], )
def test_attributes_iter_times_1(): c_time = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) diff_time = time.time() - c_time assert np.array(opt.iter_times).sum() < diff_time
def test_max_time_1(): c_time1 = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=1000000, max_time=1) diff_time1 = time.time() - c_time1 assert 0.3 < diff_time1 < 2
def test_attributes_results_5(): opt = RandomSearchOptimizer(search_space, initialize={"warm_start": [{ "x1": 10 }]}) opt.search(objective_function, n_iter=1) assert 10 in list(opt.results["x1"].values)
def test_attributes_results_4(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=1, initialize={}, warm_start=[{ "x1": 0 }]) assert 0 in list(opt.results["x1"].values)
def test_initialize_grid_0(): search_space = { "x1": np.arange(-1, 2, 1), } initialize = {"grid": 1} opt = RandomSearchOptimizer(search_space, initialize=initialize) opt.search(objective_function, n_iter=1) assert abs(opt.best_score) < 0.001
def test_function(): def objective_function(para): score = -para["x1"] * para["x1"] return score search_space = { "x1": np.arange(-100, 101, 1), } opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=30)
def test_obj_func_return_dictionary_0(): def objective_function(para): score = -para["x1"] * para["x1"] return score, {"_x1_": para["x1"]} search_space = { "x1": np.arange(-100, 101, 1), } opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=30) assert "_x1_" in list(opt.results.columns)
def test_initialize_warm_start_0(): init = { "x1": 0, } initialize = {"warm_start": [init]} opt = RandomSearchOptimizer(search_space, initialize=initialize) opt.search(objective_function, n_iter=1) # print("\nself.results \n", opt.results) assert abs(opt.best_score) < 0.001
def test_memory_timeSave_0(): data = load_breast_cancer() X, y = data.data, data.target def objective_function(para): dtc = DecisionTreeClassifier( min_samples_split=para["min_samples_split"]) scores = cross_val_score(dtc, X, y, cv=5) return scores.mean() search_space = { "min_samples_split": np.arange(2, 20), } c_time1 = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) diff_time1 = time.time() - c_time1 c_time2 = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100, memory=False) diff_time2 = time.time() - c_time2 assert diff_time1 < diff_time2 * 0.8
def test_initialize_warm_start_2(): search_space = { "x1": np.arange(-10, 10, 1), } init = { "x1": -10, } initialize = {"warm_start": [init], "random": 0, "vertices": 0, "grid": 0} opt = RandomSearchOptimizer(search_space, initialize=initialize) opt.search(objective_function, n_iter=1) assert opt.best_para == init
def test_memory_warm_start(): data = load_breast_cancer() X, y = data.data, data.target def objective_function(para): dtc = DecisionTreeClassifier( max_depth=para["max_depth"], min_samples_split=para["min_samples_split"], ) scores = cross_val_score(dtc, X, y, cv=5) return scores.mean() search_space = { "max_depth": np.arange(1, 10), "min_samples_split": np.arange(2, 20), } c_time1 = time.time() opt0 = RandomSearchOptimizer(search_space) opt0.search(objective_function, n_iter=300) diff_time1 = time.time() - c_time1 c_time2 = time.time() opt1 = RandomSearchOptimizer(search_space) opt1.search(objective_function, n_iter=300, memory_warm_start=opt0.results) diff_time2 = time.time() - c_time2 print("\n opt0.results \n", opt0.results) assert diff_time2 < diff_time1 * 0.5
def test_memory_warm_start_manual(): data = load_breast_cancer() X, y = data.data, data.target def objective_function(para): dtc = GradientBoostingClassifier(n_estimators=para["n_estimators"], ) scores = cross_val_score(dtc, X, y, cv=5) return scores.mean() search_space = { "n_estimators": np.arange(500, 502), } c_time_1 = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=1) diff_time_1 = time.time() - c_time_1 memory_warm_start = pd.DataFrame([[500, 0.9], [501, 0.91]], columns=["n_estimators", "score"]) c_time = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=10, memory_warm_start=memory_warm_start) diff_time = time.time() - c_time assert diff_time_1 > diff_time * 0.3
def test_no_random_state_0(): opt0 = RandomSearchOptimizer(search_space, initialize={"random": 1}) opt0.search(objective_function, n_iter=100) opt1 = RandomSearchOptimizer(search_space, initialize={"random": 1}) opt1.search(objective_function, n_iter=100) assert abs(opt0.best_score - opt1.best_score) > err
def test_initialize_warm_start_0(): init = { "x1": 0, } initialize = {"warm_start": [init]} opt = RandomSearchOptimizer(search_space) opt.search( objective_function, n_iter=1, initialize=initialize, ) assert abs(opt.best_score) < 0.001
def test_attributes_results_6(): def objective_function(para): score = -para["x1"] * para["x1"] return score search_space = { "x1": np.arange(0, 10, 1), } opt = RandomSearchOptimizer(search_space, initialize={"random": 1}) opt.search(objective_function, n_iter=20, memory=False) x1_results = list(opt.results["x1"].values) print("\n x1_results \n", x1_results) assert len(set(x1_results)) < len(x1_results)
def test_sklearn(): data = load_iris() X, y = data.data, data.target def model(para): knr = KNeighborsClassifier(n_neighbors=para["n_neighbors"]) scores = cross_val_score(knr, X, y, cv=5) score = scores.mean() return score search_space = { "n_neighbors": np.arange(1, 51, 1), } opt = RandomSearchOptimizer(search_space) opt.search(model, n_iter=30)
def test_initialize_warm_start_1(): search_space = { "x1": np.arange(-10, 10, 1), } init = { "x1": -10, } initialize = {"warm_start": [init]} opt = RandomSearchOptimizer(search_space) opt.search( objective_function, n_iter=1, initialize=initialize, ) assert opt.best_para == init
def test_memory_timeSave_1(): data = load_breast_cancer() X, y = data.data, data.target def objective_function(para): dtc = DecisionTreeClassifier(max_depth=para["max_depth"]) scores = cross_val_score(dtc, X, y, cv=5) return scores.mean() search_space = { "max_depth": np.arange(1, 101), } results = pd.DataFrame(np.arange(1, 101), columns=["max_depth"]) results["score"] = 0 c_time1 = time.time() opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=300, memory_warm_start=results) diff_time1 = time.time() - c_time1 assert diff_time1 < 1
return np.inf search_space_ = {"x1": np.arange(0, 20, 1)} def objective_function(para): score = -para["x1"] * para["x1"] return score search_space = {"x1": np.arange(-10, 11, 1)} search_space2 = {"x1": np.arange(-10, 51, 1)} search_space3 = {"x1": np.arange(-50, 11, 1)} opt1 = RandomSearchOptimizer(search_space) opt2 = RandomSearchOptimizer(search_space2) opt3 = RandomSearchOptimizer(search_space3) opt4 = RandomSearchOptimizer(search_space_) opt5 = RandomSearchOptimizer(search_space_) opt6 = RandomSearchOptimizer(search_space_) opt1.search(objective_function, n_iter=30) opt2.search(objective_function, n_iter=30) opt3.search(objective_function, n_iter=30) opt4.search(objective_function_nan, n_iter=30) opt5.search(objective_function_m_inf, n_iter=30) opt6.search(objective_function_inf, n_iter=30) search_data1 = opt1.results search_data2 = opt2.results
def test_attributes_best_score_0(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert np.inf > opt.best_score > -np.inf
def test_attributes_best_para_0(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert isinstance(opt.best_para, dict)
def test_attributes_best_para_1(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert list(opt.best_para.keys()) == list(search_space.keys())
def test_attributes_iter_times_0(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert isinstance(opt.iter_times, list)
def test_attributes_results_3(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert "score" in list(opt.results.columns)
def test_attributes_results_1(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert set(search_space.keys()) < set(opt.results.columns)
def test_attributes_results_0(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100) assert isinstance(opt.results, pd.DataFrame)
import numpy as np from gradient_free_optimizers import RandomSearchOptimizer def ackley_function(pos_new): x = pos_new["x1"] y = pos_new["x2"] a1 = -20 * np.exp(-0.2 * np.sqrt(0.5 * (x * x + y * y))) a2 = -np.exp(0.5 * (np.cos(2 * np.pi * x) + np.cos(2 * np.pi * y))) score = a1 + a2 + 20 return -score search_space = { "x1": np.arange(-100, 101, 0.1), "x2": np.arange(-100, 101, 0.1), } opt = RandomSearchOptimizer(search_space) opt.search(ackley_function, n_iter=30000)
def test_verbosity_5(): opt = RandomSearchOptimizer(search_space) opt.search(objective_function, n_iter=100, verbosity=[])