-
Notifications
You must be signed in to change notification settings - Fork 0
Problema
sebaignacioo edited this page Jun 23, 2021
·
3 revisions
Este archivo contiene el código relacionado con la instancia del problema y sus soluciones.
Este archivo contiene 3 clases.
class Puesto:
def __init__(self, largo: int, id: int):
"""
Objeto Puesto. Contiene los datos de cada puesto de la feria.
@type largo: int
@param largo: Largo del puesto
@type id: int
@param id: ID del puesto (números correlativos)
"""Descripcion
- Objeto Puesto. Contiene los datos de cada puesto de la feria.
Constructor
- El método constructor requiere lo siguiente:
- Parámetros:
- largo (int): Largo del puesto
- id (int): ID del puesto (números correlativos)
- Parámetros:
Mètodos
- Esta clase no posee métodos.
class SolucionProblema:
def __init__(self, solucion, e: float):
"""
Objeto que representa una solución del problema.
@type solucion: list[Puesto]
@param solucion: Lista de puestos en el órden de la solución.
@type e: float
@param e: Esfuerzo calculado para la solución
"""Descripcion
- Objeto que representa la solución del problema.
Constructor
- El método constructor requiere lo siguiente:
- Parámetros:
- solucion (list[Puesto]): Lista de puestos en el órden de la solución.
- Parámetros:
Mètodos
-
Esta clase posee 1 método.
-
Método hacer_swap
def hacer_swap(self): """ Función encargada de realizar un swap desde la solución original, intercambiando 2 posiciones aleatorias. @return: Nueva solución, realizando un swap aleatorio desde la solución actual @rtype: list[Puesto] """
- Descripcion: Función encargada de realizar un swap desde la solución original, intercambiando 2 posiciones aleatorias.
-
Parámetros
- Este método no recibe parámetros
-
Retorno
- (SolucionProblema): Nueva solución, realizando un swap aleatorio desde la solución actual
-
def __init__(self, datos_archivo: dict, datos_iniciales: dict, ps: PS):
"""
Objeto que representa la instancia del problema.
@type datos_archivo: dict
@param datos_archivo: Diccionario que contiene los datos extraídos desde el archivo que contiene los datos de la instancia.
@type datos_iniciales: dict
@param datos_iniciales: Diccionario que contiene los parámetros iniciales (establecidos en el programa principal)
@type ps: PrintService
@param ps: Librería para hacer impresiones por pantalla
"""Descripcion
- Objeto que representa la instancia del problema.
Constructor
- El método constructor requiere lo siguiente:
- Parámetros:
- datos_archivo (dict): Diccionario que contiene los datos extraídos desde el archivo que contiene los datos de la instancia.
- datos_iniciales (dict): Diccionario que contiene los parámetros iniciales (establecidos en el programa principal)
- ps (PrintService): Librería para hacer impresiones por pantalla
- Parámetros:
Mètodos
- Esta clase posee 7 métodos.
-
Método generar_datos_iniciales
def generar_datos_iniciales(self, datos_archivo: dict, datos_iniciales: dict) -> dict: """ Función que se encarga de generar un diccionario con los datos de la instancia del problema. Estos datos son entregados como parámetros de la función, tanto los extraídos desde el archivo, como los establecidos en el programa principal. @type datos_archivo: dict @param datos_archivo: Diccionario que contiene los datos extraídos desde el archivo que contiene los datos de la instancia. @type datos_iniciales: dict @param datos_iniciales: Diccionario que contiene los parámetros iniciales (establecidos en el programa principal) @rtype: dict @return: Diccionario con los datos iniciales: 'n' (int): Numero de puestos, 'w' (list[list[int]]): Cantidad de personas que irán del puesto i al j, 'puestos' (list[Puesto]): Puestos de la feria. 't_inicial' (float): Temperatura inicial del SimAn. 't_min' (float): Temperatura mínima del SimAn. 'alpha' (float): Valor de alpha de SimAn. """
- Descripcion: Función que se encarga de generar un diccionario con los datos de la instancia del problema. Estos datos son entregados como parámetros de la función, tanto los extraídos desde el archivo, como los establecidos en el programa principal.
-
Parámetros
- datos_archivo (dict): Diccionario que contiene los datos extraídos desde el archivo que contiene los datos de la instancia.
- datos_iniciales (dict): Diccionario que contiene los parámetros iniciales (establecidos en el programa principal)
-
Retorno
- (dict): Diccionario con los datos iniciales: 'n' (int): Numero de puestos, 'w' (list[list[int]]): Cantidad de personas que irán del puesto i al j, 'puestos' (list[Puesto]): Puestos de la feria. 't_inicial' (float): Temperatura inicial del SimAn. 't_min' (float): Temperatura mínima del SimAn. 'alpha' (float): Valor de alpha de SimAn.
-
Método calcular_distancia
def calcular_distancia(self, i: int, j: int, puestos) -> float: """ Función que se encarga de calcular la distancia total entre el puesto en las posiciones i y j. Toma en cuenta el largo de ambos puestos, y los largos de todos los puestos que están entre medio. @type i: int @param i: Posición o índice (parte desde 1) del origen. @type j: int @param j: Posición o índice (parte desde 1) del destino. @type puestos: list[Puesto] @param puestos: Lista de puestos de la solución. @rtype: float @return: Distancia total entre el puesto i y el puesto j """
- Descripcion: Función que se encarga de calcular la distancia total entre el puesto en las posiciones i y j. Toma en cuenta el largo de ambos puestos, y los largos de todos los puestos que están entre medio.
-
Parámetros
- i (int): Posición o índice (parte desde 1) del origen.
- j (int): Posición o índice (parte desde 1) del destino.
- puestos (list[Puesto]): Lista de puestos de la solución.
-
Retorno
- (float): Distancia total entre el puesto i y el puesto j
-
Método calcular_esfuerzo
def calcular_esfuerzo(self, sol) -> float: """ Función que se encarga de calcular el esfuerzo requerido según la solución entregada @type sol: list[Puesto] @param sol: Lista de puestos que contiene los datos de la solución a la que se desea calcular el esfuerzo. @rtype: float @return: Esfuerzo total calculado para la solución """
- Descripcion: Función que se encarga de calcular el esfuerzo requerido según la solución entregada
-
Parámetros
- sol (list[Puesto]): Objeto Solucion_Problema que contiene los datos de la solución a la que se desea calcular el esfuerzo.
-
Retorno
- (float): Esfuerzo total calculado para la solución
-
Método generar_solucion_inicial
def generar_solucion_inicial(self) -> None: """ Función que se encarga de generar la solución inicial del problema. Utiliza números random para generar una solución aleatoria de puestos. """
- Descripcion: Función que se encarga de generar la solución inicial del problema. Utiliza números random para generar una solución aleatoria de puestos.
-
Parámetros
- Este método no posee parámetros.
-
Retorno
- Este método no retorna nada.
-
Método generar_nueva_solucion
def generar_nueva_solucion(self) -> None: """ Función encargada de generar una nueva solución, a partir de una solución de origen. La solución se genera a partir de lo que indique el índice de solución actual, y la genera haciendo swap (intercambio) entre dos puestos aleatorios. """
- Descripcion: Función encargada de generar una nueva solución, a partir de una solución de origen. La solución se genera a partir de lo que indique el índice de solución actual, y la genera haciendo swap (intercambio) entre dos puestos aleatorios.
-
Parámetros
- Este método no posee parámetros.
-
Retorno
- Este método no retorna nada.
-
Método aceptar_solucion
def aceptar_solucion(self) -> None: """ Función que se encarga de aceptar la solución generada. Agrega la solución a la lista de soluciones, y actualiza el valor del índice de la solución actual. """
- Descripcion: Función que se encarga de aceptar la solución generada. Agrega la solución a la lista de soluciones, y actualiza el valor del índice de la solución actual.
-
Parámetros
- Este método no posee parámetros.
-
Retorno
- Este método no retorna nada.
-
Método reiniciar_soluciones
def reiniciar_soluciones(self) -> None: """ Función encargada de reiniciar la instancia del problema para permitir la ejecución de un nuevo ciclo de Simulated Annealing. """
- Descripcion: Función encargada de reiniciar la instancia del problema para permitir la ejecución de un nuevo ciclo de Simulated Annealing.
-
Parámetros
- Este método no posee parámetros.
-
Retorno
- Este método no retorna nada.
-
Este archivo no contiene funciones.
Inicio / Ejecución / Descripción código / Archivos solución
Escuela de Ingeniería Informática - PUCV
Valparaíso, Chile | 1er semestre - 2021
Inicio
Descripción del problema
Primeros pasos
Código