def calculate_collect_(ind, context, x, y, terminals_and_constants_repr, gro_ter_con, dim_ter_con_list, dim_type, fuzzy, cv=1, refit=True, scoring=None, score_pen=(1, ), add_coef=True, filter_warning=True, inter_add=True, inner_add=False, vector_add=False, out_add=False, flat_add=False, np_maps=None, classification=False, dim_maps=None, cal_dim=True, score_object="y", details=False): expr01 = compile_context(ind, context, gro_ter_con) if cal_dim: dim, dim_score = calcualte_dim_score(expr01, terminals_and_constants_repr, dim_ter_con_list, dim_type, fuzzy, dim_maps=dim_maps) else: dim, dim_score = dless, 1 score, expr01, pre_y = calculate_cv_score(expr01, x, y, terminals_and_constants_repr, cv=cv, refit=refit, add_coef=add_coef, inter_add=inter_add, inner_add=inner_add, vector_add=vector_add, out_add=out_add, flat_add=flat_add, scoring=scoring, score_pen=score_pen, filter_warning=filter_warning, np_maps=np_maps, classification=classification, score_object=score_object, details=details) return score, dim, dim_score, expr01, pre_y
for si in s: if isinstance(si, sympy.Symbol): ss.append(si) else: ss.extend(si) target = (ss[0] + ss[1]) * (ss[2] - ss[3]) target = sympy.simplify(target) # a = time.time() random.seed(4) population = [ SymbolTree.genFull(pset, int(height - 1), int(height - 1) + 1) for _ in range(5000) ] for n, i in enumerate(population): i = compile_context(i, pset.context, pset.gro_ter_con, simplify=True) expr = general_expr_dict(i, pset.expr_init_map, pset.free_symbol, pset.gsym_map, simplifying=True) # print(expr) if expr == target: print(n) break ####GP pset = SymbolSet() pset.add_features(x, y) pset.add_operations(categories=("Add", "Mul", "Sub", "Div"))
x_u = [kg] * 13 y_u = kg c_u = [dless, dless, dless] x, x_dim = Dim.convert_x(x, x_u, target_units=None, unit_system="SI") y, y_dim = Dim.convert_xi(y, y_u) c, c_dim = Dim.convert_x(c, c_u) t = time.time() # symbolset pset0 = SymbolSet() pset0.add_features(x, y, x_dim=x_dim, y_dim=y_dim, x_group=[[1, 2], [3, 4, 5]]) pset0.add_constants(c, c_dim=c_dim, c_prob=None) pset0.add_operations(power_categories=(2, 3, 0.5), categories=("Add", "Mul", "Sub", "Div", "exp"), self_categories=None) random.seed(0) z = time.time() sl = [SymbolTree.genGrow(pset0, 3, 4) for _ in range(100)] a = time.time() sl = [compile_context(sli, pset0.context, pset0.gro_ter_con) for sli in sl] b = time.time() print(b - a, a - z)
dim_type=None, fuzzy=False, add_coef=False, inter_add=True, inner_add=False, n_jobs=1, batch_size=20, tq=True) from sys import getsizeof T100 = getsizeof(sl) psize = getsizeof(pset0) # print(T100,psize) for i in sl: b = time.time() i0 = compile_context(i, pset0.context, pset0.gro_ter_con) r2 = time.time() # pprint(i0,pset0) calculate_y(i0, pset0.data_x, pset0.y, pset0.terminals_and_constants_repr, add_coef=True, filter_warning=True, inter_add=True, inner_add=True, np_maps=np_map()) # i = pset0.calculate_detail(i) # j = simple(i.coef_expr, pset0.gro_ter_con) # print(i) # print(repr(i))
pset0 = CalculatePrecisionSet(pset0, scoring=None, score_pen=(1, ), filter_warning=True, cal_dim=False, dim_type=None, fuzzy=False, add_coef=False, inter_add=True, inner_add=False, n_jobs=1, batch_size=20, tq=True) sl = [SymbolTree.genGrow(pset0, 3, 4) for _ in range(50)] sll = [ compile_context(o, pset0.context, pset0.gro_ter_con, simplify=True) for o in sl ] slll = [ try_add_coef(i, pset0.data_x, pset0.y, pset0.terminals_and_constants_repr, filter_warning=True, inter_add=True, inner_add=False, vector_add=True, np_maps=np_map())[1] for i in sll ] sllll = [general_expr(o, pset0, simplifying=False) for o in slll]