Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Zunaira Khan

FA20-BCS-134
SEC-A
ASSIGNMENT:02

import pandas as pd
from sklearn.preprocessing import MinMaxScaler
pip install deap
import pandas as pd

import numpy as np

from deap import base, creator, tools, algorithms

import random

data = pd.read_csv("data.csv")

columns_to_normalize = ['Weight', 'Length', 'Sex', 'BMI', 'HTN', 'Current Smoker', 'Ex-


Smoker', 'FH', 'CVA', 'Airway Disease', 'Edema']

scaler = MinMaxScaler()

data[columns_to_normalize] = scaler.fit_transform(data[columns_to_normalize])

data.to_csv("normalized_data.csv", index=False)

print(data)

data = pd.read_csv("normalized_data.csv")

x_coords = data['x'].to_numpy()

y_coords = data['y'].to_numpy()
Zunaira Khan
FA20-BCS-134
SEC-A

cities = [(x, y) for x, y in zip(x_coords, y_coords)

creator.create("FitnessTSP", base.Fitness, weights=(-1.0,))

creator.create("Individual", list, fitness=creator.FitnessTSP)

def create_individual(cities):

return random.sample(cities, len(cities))

def create_population(size, cities):

return [create_individual(cities) for _ in range(size)]

def evaluate_tsp(individual):
return (total_distance(individual),)

def total_distance(individual):

dist = 0
for i in range(len(individual) - 1):
city1 = individual[i]

city2 = individual[i + 1]

dist += np.linalg.norm(np.array(city1) - np.array(city2))

return dist

toolbox = base.Toolbox()

toolbox.register("population", create_population, size=100, cities=cities)

toolbox.register("individual", create_individual, cities=cities)

toolbox.register("evaluate", evaluate_tsp)

toolbox.register("mate", tools.cxOrdered)
Zunaira Khan
FA20-BCS-134
SEC-A
toolbox.register("mutate", tools.mutShuffleIndexes, indpb=0.1)

toolbox.register("select", tools.selTournament, tournsize=3)

if __name__ == "__main__":

population = toolbox.population()

algorithms.eaMuPlusLambda(population, toolbox, mu=100, lambda_=200, cxpb=0.7,


mutpb=0.2, ngen=100, stats=None, halloffame=None, verbose=True)

best_individual = tools.selBest(population, k=1)[0]

print("Best Tour:", best_individual)


print("Minimum Distance:", evaluate_tsp(best_individual)[0])

You might also like