[C.v] Elaborar un plan lógico:

Las etapas necesarias para hacer la aplicación

Tasks

Implementación del Algoritmo de TSP (Vecino Más Cercano en Python)

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

Implementación del Algoritmo de KP (Programación Dinámica en Python)

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