def proxima_entrega(objetivo): for x in arange(0, len(matrizEntregas) - 1): listaEntrega = [] if matrizEntregas[x][1] == objetivo[1]: listaEntrega = matrizEntregas[x + 1][0:] return listaEntrega listaEntrega = [-1] return listaEntrega
def busca( raiz, objetivo, ): q = PriorityQueue() custo = 0 tempo = objetivo[0] q.put((custo, raiz, [raiz])) while not q.empty(): listaCidade = [] listaCidade = q.get() cidade = listaCidade[1] if cidade == objetivo[1]: custoTotal = calcular_entrega(listaCidade[2]) print("Tempo :{} ".format(custoTotal * 2)) print("Caminho : {}".format(listaCidade[2])) print("Lucro : {}".format(objetivo[2])) listaTotal.append(int(objetivo[2])) listaEntrega = proxima_entrega(objetivo) for x in arange(len(matrizEntregas) - 1): if int(listaEntrega[0]) == -1: print("Lucro Total : {}".format(sum(listaTotal))) return if (custoTotal * 2) + int(objetivo[0]) <= int(listaEntrega[0]): return busca('A', listaEntrega) else: return busca('A', proxima_entrega(listaEntrega)) print("Lucro Total : {}".format(sum(listaTotal))) return cidades_ad = deliveryCidades[cidade] for cidade_ad, custoCidade in cidades_ad.items(): if listaCidade[2].count(cidade_ad): continue else: q.put((custoCidade, cidade_ad, listaCidade[2] + [cidade_ad])) custo = int(custoCidade) + custo
# numpy是python科学计算的基础包,存储其中的数据类型必须相同 # 切片功能和元组一样 import numpy from numpy.core._multiarray_umath import arange a = arange(5) print(a) # 一个数组,类似list print(a.shape) # a的长度 print(a.dtype) # a数组中元素的类型 a1 = numpy.array([numpy.arange(3), numpy.arange(5)]) # 生成一个长度为2,每行元素为array的二维数组 print(a1.shape) print(a1[0][1]) # 等同于a1[0,1] a2 = a.astype(numpy.float) # 将一个一维数组强行转换为其他类型,该类型为numpy自带类型,非python类型,只能转换一维数组 print(a2)
def from_shape(shape: Tuple[int,int], size: Tuple[int,int], step: Tuple[int,int])->Iterator[Tuple[Tuple[int,int], Tuple[int,int]]]: for i in arange(0, shape[0] - size[0], step[0]): for j in arange(0, shape[1] - size[1], step[1]): yield (i, j), size
def calcular_entrega(rota): valor_da_rota = 0 for x in arange(0, len(rota) - 1): valor_da_rota = int( deliveryCidades[rota[x]][rota[x + 1]]) + valor_da_rota return valor_da_rota