Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Proyecto Haz lo que hicimos en el AULA

Muy buenas noches
Me base de la clase anterior, la puse a correr y agregue mas productos, revise el archivo y trate de comprender el fundamentos y base de este algoritmo
Adjunto codigo

import heapq

==================== CLASE PRODUCTO ====================

class Producto:
def init(self, nombre, categoria, probabilidad_conversion):
self.nombre = nombre
self.categoria = categoria
self.probabilidad_conversion = probabilidad_conversion

def __repr__(self):
    return f"{self.nombre} ({self.categoria})"

class AStarRecommendation:
def init(self, productos, heuristica):
self.productos = productos
self.heuristica = heuristica # Función que evalúa la calidad del producto
self.grafo = self.crear_grafo()

def crear_grafo(self):
    grafo = {}
    for producto in self.productos:
        # Conectamos cada producto con todos los demás (excepto consigo mismo)
        grafo[producto] = [p for p in self.productos if p != producto]
    return grafo

def a_star(self, inicio, objetivo):
    cola_prioridad = []
    heapq.heappush(cola_prioridad, (0 + self.heuristica(inicio), 0, inicio))
    visitados = set()
    caminos = {}
    
    while cola_prioridad:
        _, g, actual = heapq.heappop(cola_prioridad)

        if actual in visitados:
            continue

        visitados.add(actual)
        if actual == objetivo:
            break
        for vecino in self.grafo[actual]:
            if vecino not in visitados:
                h = self.heuristica(vecino)
                
                heapq.heappush(cola_prioridad, (g + 1 + h, g + 1, vecino))
                
                caminos[vecino] = actual

    camino = []
    producto = objetivo

    while producto in caminos:
        camino.insert(0, producto)
        producto = caminos[producto]
    
    return camino

def heuristica(producto):
return -producto.probabilidad_conversion

if name == "main":
productos = [
Producto("Caneta preto", "Escola", 0.5),
Producto("Vermelho", "Cor", 0.2),
Producto("Roxo", "Cor", 0.9),
Producto("Talher", "Lugar", 0.4),
Producto("Boné", "Roupa", 0.5),
Producto("Chapeu", "Roupa", 0.6),
]

recomendador = AStarRecommendation(productos, heuristica)

inicio = productos[0]          # Producto Caneta
objetivo = productos[4]        # Producto Boné

camino_recomendado = recomendador.a_star(inicio, objetivo)

print("Camino recomendado:")
for p in camino_recomendado:
    print(p)

Me quedan algunos conceptos que no comprendo de todo, pero continuo en el camino del aprendizaje y poniendole bonito al estudio
Muchas gracias

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad