以下是一个使用遗传算法解决旅行商问题的Python代码示例:

import random

# 创建一个随机的城市列表
def create_city_list(num_cities):
    cities = []
    for i in range(num_cities):
        city = (random.random(), random.random())
        cities.append(city)
    return cities

# 计算两个城市之间的距离
def distance(city1, city2):
    return ((city1[0] - city2[0])**2 + (city1[1] - city2[1])**2)**0.5

# 计算路径的总距离
def total_distance(cities, path):
    total = 0
    for i in range(len(path)-1):
        total += distance(cities[path[i]], cities[path[i+1]])
    return total

# 创建一个随机的路径
def create_path(num_cities):
    path = list(range(num_cities))
    random.shuffle(path)
    return path

# 交叉操作
def crossover(path1, path2):
    point1 = random.randint(0, len(path1)-1)
    point2 = random.randint(0, len(path1)-1)
    if point1 > point2:
        point1, point2 = point2, point1
    new_path = path1[:point1] + path2[point1:point2+1] + path1[point2+1:]
    return new_path

# 变异操作
def mutate(path):
    point1 = random.randint(0, len(path)-1)
    point2 = random.randint(0, len(path)-1)
    path[point1], path[point2] = path[point2], path[point1]
    return path

# 选择操作
def selection(population, num_parents):
    parents = []
    for i in range(num_parents):
        parents.append(population[random.randint(0, len(population)-1)])
    return parents

# 创建初始种群
def create_population(num_cities, num_population):
    population = []
    for i in range(num_population):
        population.append(create_path(num_cities))
    return population

# 遗传算法主函数
def genetic_algorithm(num_cities, num_population, num_generations):
    cities = create_city_list(num_cities)
    population = create_population(num_cities, num_population)
    
    for _ in range(num_generations):
        new_population = []
        for _ in range(num_population):
            parents = selection(population, 2)
            child = crossover(parents[0], parents[1])
            child = mutate(child)
            new_population.append(child)
        population = new_population
    
    best_path = min(population, key=lambda path: total_distance(cities, path))
    return best_path

# 测试
num_cities = 10
num_population = 100
num_generations = 100

best_path = genetic_algorithm(num_cities, num_population, num_generations)
print("最短路径:", best_path)

这个代码使用遗传算法解决旅行商问题,其中包括创建随机城市列表、计算两个城市之间的距离、计算路径的总距离、创建随机路径、交叉操作、变异操作、选择操作、创建初始种群和遗传算法主函数等功能。在测试部分,代码使用了10个城市、100个种群和100代的参数进行测试,输出最短路径

遗传算法python代码

原文地址: http://www.cveoy.top/t/topic/iZmI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录