Tengo un problema que se puede reducir a un problema de asignación. (En una pregunta anterior descubrí cómo hacerlo).
Lo que significa que tenemos un conjunto de agentes y un conjunto de tareas, así como una función de costo . Necesitamos encontrar una asignación para que el costo total sea mínimo.
El algoritmo húngaro puede encontrar una solución óptima en al menos . Lo que me suena bien.
Mi nuevo problema es: hay un número determinado de días. Tengo que resolver el problema de asignación para cada día para que cada tarea se realice todos los días y ningún agente realice la misma tarea dos veces .
Lo que he intentado: podríamos ejecutar el algoritmo húngaro por separado para cada día y limitar el número de combinaciones posibles en función del resultado del día anterior. Pero esto nos metería en problemas en algunos de los días posteriores, donde lo más probable es que sea imposible encontrar una solución factible.
Otra idea es integrar de alguna manera la búsqueda local para cambiar las decisiones tomadas en un día anterior. Pero creo que no podemos confiar en esto.
Las instancias problemáticas que debo enfrentar estarán en algún lugar alrededor de . La matriz de costos tendrá muchos valores iguales (por ejemplo, en su mayoría 1 o infinito, solo unos 2 o 3). Entonces, durante el algoritmo húngaro, hay mucho espacio para crear diferentes soluciones óptimas para un solo día.
Me alegraría escuchar algunas ideas o consejos sobre cómo encontrar una buena solución para el problema. Gracias por adelantado.