Ejemplo n.º 1
0
Archivo: app.py Proyecto: LoveIace/GASI
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
Archivo: app.py Proyecto: LoveIace/GASI
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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
Archivo: app.py Proyecto: LoveIace/GASI
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)
Ejemplo n.º 7
0
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:])