关于遗传算法的介绍与研究已经不算新鲜,但每年物流工程相关专业都会产生相当数量路径相关学位论文,无论优劣。
希望我的系列笔记可以帮助像我一样,已经接触优化理论而计算机编程薄弱的朋友。
基于TSP路径绘图的笔记,用于理解python。原完整代码👇👇👇👇👇👇👇👇👇👇👇
https://blog.csdn.net/lovetaozibaby/article/details/88671377
route1里的参数(N_begin, N_end)与range()里的参数(N_begin, N_end)有什么区别?
def route1(x0, y0, x, y, N_begin, N_end,color):
for i in range(N_begin, N_end):
if i == N_begin:
x_begin,y_begin = x0, y0
x_end, y_end = x[i], y[i]
plt_arrow(x_begin, y_begin, x_end, y_end, color)
if i < N_end - 1: #尾巴加1
x_begin, y_begin = x[i], y[i]
x_end, y_end = x[i+1], y[i+1]
if i == N_end - 1: #尾巴赋值回家
x_begin, y_begin = x[i], y[i]
x_end, y_end = x0, y0
plt_arrow(x_begin, y_begin, x_end, y_end, color )在这里插入代码片
前者的参数用于声明变量,比如N_begin∈{0,3,6}, N_end={3,6,9}
后者的参数是范围,不知道是不是引用?range(N_begin, N_end) → range(0,9)(9取不到)
二、连接配送点的判定问题:i 为什么与 end-1 比较?
def DrawPointMap(): #这是主函数
plt.figure()
x0 = 5
y0 = 5
x = np.random.rand(9) * 10 #产生9个随机数,每个数乘10
y = np.random.rand(9) * 10
print(x,'\n',y)
plt.scatter(x, y, color = 'k', marker = '+' # 要标记的点的坐标、大小及颜色
,label = 'Location')
# annotate an important value
plt.scatter(x0, y0, s = 200, color = 'r',
marker='.',label = 'Center') # 中心点的坐标、大小及颜色
route1(x0, y0, x, y, 0, 3, 'orange')
route1(x0, y0, x, y, 3, 6, 'blue')
route1(x0, y0, x, y, 6, 9, 'green')在这里插入代码片
# 配送路线
def route1(x0, y0, x, y, N_begin, N_end,color): #这里的N_begin是0,3,6 N_end是3,6,9
for i in range(N_begin, N_end): #对于这个集合每个元素i∈[0,8],range右边的9取不到
if i == N_begin:
x_begin,y_begin = x0, y0
x_end, y_end = x[i], y[i]
plt_arrow(x_begin, y_begin, x_end, y_end, color)
if i < N_end - 1: #尾巴加1
x_begin, y_begin = x[i], y[i]
x_end, y_end = x[i+1], y[i+1]
if i == N_end - 1: #尾巴赋值回家
x_begin, y_begin = x[i], y[i]
x_end, y_end = x0, y0
plt_arrow(x_begin, y_begin, x_end, y_end, color )
首先,i 代表 range(N_begin, N_end) 里面所有元素,一共9个。
在主函数里面,也就是传值的时候:每3个元素依次组成一组,取每组最末尾一个元素的序号{3,6,9}为N_end,取第一个元素的序号{0,3,6}为N_begin。
例如:第一组数为{0,1,2} ,即 i=(0,1,2),其N_begin、N_end不变,分别为0、3。那么 i=0 触发第一个if ,i=1 触发第二个if,i=2时,触发第3个if。第二、三组同理。
但执行顺序是第一个if,第2个if ,第3个if。
三、函数问题:这是个啥?
if __name__=='__main__':
DrawPointMap()在这里插入代码片
魔法函数,调用自己。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)