Las etapas necesarias para hacer la aplicación
import numpy as np
def vecino_mas_cercano(dist_matrix):
numero_locales=len(dist_matrix)
inicio=0
no_visitados=set(range(numero_locales))
no_visitados.remove(inicio)
actual=inicio
recorrido=[actual]
distancia_total=0
while no_visitados:
siguiente=min(no_visitados,clave=lambda nodo:dist_matrix[actual][nodo])
distancia_total+=dist_matrix[actual][siguiente]
actual=siguiente
recorrido.append(actual)
no_visitados.remove(actual)
distancia_total+=dist_matrix[actual][inicio]
recorrido.append(inicio)
return recorrido,distancia_total
def knapsack(pesos, valores, capacidad):
numero_paquetes=len(pesos)
K=[[0 for x in range(capacidad+1)] for x in range(numero_paquetes+1)]
for i in range(numero_paquetes+1):
for peso_restante in range(capacidad+1):
if i==0 or peso_restante==0:
K[i][peso_restante]=0
elif pesos[i-1]<=peso_restante:
K[i][peso_restante]=max(valores[i-1]+K[i-1][peso_restante-pesos[i-1]],K[i-1][peso_restante])
else:
K[i][peso_restante]=K[i-1][peso_restante]
resultado=K[numero_paquetes][capacidad]
peso_restante=capacidad
cajas_knapsack=[]
for i in range(numero_paquetes,0,-1):
if resultado<=0:
break
if resultado==K[i-1][peso_restante]:
continue
else:
cajas_knapsack.append(i-1)
resultado=resultado-valores[i-1]
peso_restante=peso_restante-pesos[i-1]
return K[numero_paquetes][capacidad],cajas_knapsack