python deap_看完必会的 python DEAP遗传算法库讲解+实战(中级)

文章目录

TSP问题

之前用遗传算法解决了:多项式求极大值的问题。这个问题实在是太简单了,现在我们来处理一下更困难的问题——TSP旅行商问题

问题描述

TSP旅行商问题,traveling Salesman problem

-

f59e68d1207d9b027078d33dd38dc410.png

如果旅行商从A地到B地的花费与B地到A地的花费相等,我们称之为对称旅行商问题(Symmetric Travelinig Salesman Problem(STSP))

反之就是非对称旅行商问题ATSP

TSP问题的一个特殊性在于它必然存在可以找到的最优解(通过穷举法一定能在时间内找到该最优解),但是在计算复杂度方面它是一个经典的NP-hard问题。因而快速有效寻找TSP的最优解仍然是个有吸引力的问题。

在实际应用方面,它可以被视为物流调度,交通规划,芯片布线优化等等问题的抽象简化。

代码精讲

def genCity(n,LB=100,Ub=999):

np.random.seed(42)

return np.random.randint(low = Lb,high = Ub,size(n,2))

运行结果:

e7ee85fe61bcd891157731aed966b1be.png

def cityDistance(cities):

return distance.cdist(cities,cities,'euclidean')

运行结果:

fb60058aa1cb8fc47969d0df54a0ec3b.png

def completeRoute(individual):

return individual + [individual[0]]

这个completeRoute函数是用来表示:最后旅行商还要回到出发,也就是第一个城市的。

要记住给出来的这个方法,不是最优解,针对TSP问题,有很多很多种方法,之后我会专门写一个博文来讲解TSP问题

觉得博文有用的话,点个赞呗

整体代码(方便复制)

## 环境设置

import matplotlib.pyplot as plt

import numpy as np

%matplotlib inline

from scipy.spatial import distance

from deap import creator, base, tools, algorithms

import random

params = {

'font.family': 'serif',

'figure.figsize': [4.0, 3.0],

'figure.dpi': 300,

'savefig.dpi': 300,

'font.size': 12,

'legend.fontsize': 'small'

}

plt.rcParams.update(params)

#--------------------------------

## 定义TSP中的基本元素

# 用[n,2]的np.array存储城市坐标;每行存储一个城市

def genCity(n, Lb = 100 ,Ub = 999):

# 生成城市坐标

# 输入:n -- 需要生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值