def run_tsp(): response_object = {'status': 'success'} if request.method == 'GET': response_object['problems'] = TSP_PROBLEMS return response_object else: post_data = request.get_json() variables, problem = post_data['variables'], post_data['problem'] towns, optimum = problem['points'], problem['optimum'] tsp_problem = tsp.Travelling_Salesman(towns, optimum) if util.get_att("Algorithm", variables) == "genetic": df, _, gen = genetic_algo( tsp_problem, generation_ceiling=util.get_att("Generation ceiling", variables), population_size=util.get_att("Population size", variables), mutation_rate=util.get_att("Mutation rate", variables), select=util.get_att("Selection type", variables), elitism=util.get_att("Elitism", variables), out_path=False) else: df, _, gen = firefly_algo( tsp_problem, iteration_ceiling=util.get_att("Iteration ceiling", variables), population_size=util.get_att("Population size", variables), alpha=util.get_att("Alpha", variables), beta=util.get_att("Beta", variables), gamma=util.get_att("Gamma", variables), out_path=False) best_solution = util.get_min_overall(df) response_object['labels'] = [i + 1 for i in range(gen)] response_object['datasets'] = [{ 'data': util.get_max(df) }, { 'data': util.get_mean(df) }, { 'data': util.get_min(df) }] route = best_solution[1:-1] normalized_towns = util.normalize_coordinates(towns, (0, 10)) response_object['route'] = [{ 'x': normalized_towns[int(i) - 1][0], 'y': normalized_towns[int(i) - 1][1] } for i in route] + [{ 'x': normalized_towns[0][0], 'y': normalized_towns[0][1] }] response_object['best_solution'] = best_solution[-1] return jsonify(response_object)
def find_similar(sent, lst): dist = {} lst = lst + split_and_add(lst) for item in lst: item = util.normalize(item) sent = util.normalize(sent) d = jarow(item, sent) #print item , d if d > 0.75: dist[item] = d #print dist max_arr = util.get_max(dist) return max_arr
def correct_right(lc, rc, index, llc=None): lc = util.normalize(rc) dist = {} try: right_ctx = index[rc]["right"] for item in right_ctx: d = jarow(item, rc) #print item , (d * 1.0)/len(item) if d > 0.75: dist[item] = d max_arr = util.get_max(dist) #print dist return max_arr except: return None
def run_sat(): response_object = {'status': 'success'} if request.method == 'GET': response_object['problems'] = SAT_PROBLEMS return response_object else: post_data = request.get_json() minimize = False variables, problem = post_data['variables'], post_data['problem'] formula = util.get_sat_problem(problem) sat_problem = sat.Satisfiability(formula) df, data, gen = genetic_algo( sat_problem, generation_ceiling=util.get_att("Generation ceiling", variables), population_size=util.get_att("Population size", variables), mutation_rate=util.get_att("Mutation rate", variables), select=util.get_att("Selection type", variables), elitism=util.get_att("Elitism", variables), out_path=False) min_value = util.get_min_overall(df)[-1] max_value = util.get_max_overall(df)[-1] best_solution = min_value if minimize else max_value response_object['labels'] = [i + 1 for i in range(gen)] response_object['datasets'] = [{ 'data': util.get_max(df) }, { 'data': util.get_mean(df) }, { 'data': util.get_min(df) }] size = util.get_att("Population size", variables) # fitness distribution for each generation response_object['distribution'] = [] response_object['dist_labels'] = ["" for _ in range(50)] for i in range(gen): chunk = data[i * size:i * size + size] distribution = util.get_distribution(chunk, min_value, max_value) response_object['distribution'].append(distribution) response_object['best_solution'] = int(best_solution) response_object['clauses'] = formula.clauses response_object['satisfiable'] = True if int( best_solution) >= sat_problem.clause_count else False return jsonify(response_object)
def correct_left(rc, lc, index, rrc=None): rc = util.normalize(rc) dist = {} try: left_ctx = index[rc]["left"] for item in left_ctx: d = jarow(item, lc) #print item , (d * 1.0)/len(item) #print d if d > 0.75: dist[item] = d max_arr = util.get_max(dist) #print dist return max_arr except: return None
def run_fe(): response_object = {'status': 'success'} if request.method == 'GET': response_object['problems'] = FE_PROBLEMS return response_object else: post_data = request.get_json() variables, problem = post_data['variables'], post_data['problem'] minimize = util_fe.get_problem_att(problem, "minimize") fe_problem = fe.Function_Extreme(problem.lower(), 2, minimize=minimize) if util.get_att("Algorithm", variables) == "genetic": df, data, gen = genetic_algo( fe_problem, generation_ceiling=util.get_att("Generation ceiling", variables), population_size=util.get_att("Population size", variables), mutation_rate=util.get_att("Mutation rate", variables), select=util.get_att("Selection type", variables), elitism=util.get_att("Elitism", variables), out_path=False) else: df, data, gen = firefly_algo( fe_problem, iteration_ceiling=util.get_att("Iteration ceiling", variables), population_size=util.get_att("Population size", variables), alpha=util.get_att("Alpha", variables), beta=util.get_att("Beta", variables), gamma=util.get_att("Gamma", variables), delta=util.get_att("Delta", variables), out_path=False) min_value = util.get_min_overall(df)[-1] max_value = util.get_max_overall(df)[-1] best_solution = min_value if minimize else max_value response_object['labels'] = [i + 1 for i in range(gen)] response_object['datasets'] = [{ 'data': util.get_max(df) }, { 'data': util.get_mean(df) }, { 'data': util.get_min(df) }] size = util.get_att("Population size", variables) # point data for each individual response_object['points'] = [] for i in range(gen): response_object['points'].append([]) for j in range(size): response_object['points'][i].append({ 'x': data[i * size + j][1], 'y': data[i * size + j][2] }) # fitness distribution for each generation response_object['distribution'] = [] response_object['dist_labels'] = ["" for _ in range(50)] for i in range(gen): chunk = data[i * size:i * size + size] distribution = util.get_distribution(chunk) response_object['distribution'].append(distribution) response_object['best_solution'] = best_solution return jsonify(response_object)
import cases import sys from util import get_max # Latex font from matplotlib import rc rc('font', **{'family': 'sans-serif', 'sans-serif': ['Helvetica']}) rc('text', usetex=True) if len(sys.argv) > 1: name = sys.argv[1] if name == "load": filename = sys.argv[2] tuple = get_max(filename, sys.argv[3:]) print(sys.argv[3:], tuple) else: case = getattr(cases, "case_" + name) case() else: for name in dir(cases): if name.startswith("case_"): print(name[5:])