En matemáticas aplicadas , el problema de asignación generalizado máximo es un problema de optimización combinatoria . Este problema es una generalización del problema de asignación en el que tanto las tareas como los agentes tienen un tamaño. Además, el tamaño de cada tarea puede variar de un agente a otro.
Este problema en su forma más general es el siguiente: hay un número de agentes y un número de tareas. Cualquier agente puede ser asignado para realizar cualquier tarea, incurriendo en algún costo y beneficio que puede variar dependiendo de la asignación de agente-tarea. Además, cada agente tiene un presupuesto y la suma de los costos de las tareas que se le asignan no puede exceder este presupuesto. Se requiere encontrar una asignación en la que todos los agentes no excedan su presupuesto y el beneficio total de la asignación sea máximo.
En el caso especial en el que los presupuestos de todos los agentes y los costes de todas las tareas son iguales a 1, este problema se reduce al problema de asignación . Cuando los costes y beneficios de todas las tareas no varían entre los diferentes agentes, este problema se reduce al problema de la mochila múltiple. Si hay un solo agente, entonces, este problema se reduce al problema de la mochila .
A continuación, tenemos n tipos de artículos, a través de y m tipos de contenedores a través de . Cada contenedor está asociado con un presupuesto . Para un contenedor , cada artículo tiene una ganancia y un peso . Una solución es una asignación de artículos a contenedores. Una solución factible es una solución en la que para cada contenedor el peso total de los artículos asignados es como máximo . La ganancia de la solución es la suma de las ganancias para cada asignación de artículo a contenedor. El objetivo es encontrar una solución factible de máxima ganancia.
Matemáticamente, el problema de asignación generalizada se puede formular como un programa entero :
El problema de asignación generalizada es NP-duro . [1] Sin embargo, existen relajaciones de programación lineal que dan una aproximación. [2]
Para la variante del problema en la que no todos los elementos deben asignarse a un contenedor, existe una familia de algoritmos para resolver el GAP utilizando una traducción combinatoria de cualquier algoritmo para el problema de la mochila en un algoritmo de aproximación para el GAP. [3]
Utilizando cualquier algoritmo de aproximación ALG para el problema de la mochila , es posible construir una aproximación ( ) para el problema de asignación generalizada de una manera codiciosa utilizando un concepto de beneficio residual. El algoritmo construye un programa en iteraciones, donde durante la iteración se selecciona una selección tentativa de artículos para bin . La selección para bin puede cambiar a medida que los artículos pueden volver a seleccionarse en una iteración posterior para otros bins. El beneficio residual de un artículo para bin es si no se selecciona para ningún otro bin o – si se selecciona para bin .
Formalmente: utilizamos un vector para indicar el cronograma tentativo durante el algoritmo. Específicamente, significa que el artículo está programado en el contenedor y significa que el artículo no está programado. La ganancia residual en la iteración se denota por , donde si el artículo no está programado (es decir, ) y si el artículo está programado en el contenedor (es decir, ).
Formalmente: