La PizarraMatemática.

Matemáticas para ingeniería

Optimización entera y combinatoria

Si decidimos qué objetos llevar, qué máquinas encender o cuántas unidades fabricar, una fracción puede no tener sentido. La integridad cambia el conjunto de planes posibles. Empezaremos con tres objetos que podemos comprobar a mano y después veremos cómo una tabla o un árbol evita repetir muchas decisiones sin perder la garantía del resultado.

1. Entero y binario son dominios de decisión, no maneras de redondear al final

Una variable entera puede contar unidades: x∈Z y x≥0. Una binaria vale cero o uno y suele representar no elegir o elegir un objeto concreto. No es una probabilidad en este modelo determinista. Una restricción y un objetivo se comprueban usando ese significado desde el inicio.

Un modelo mixto combina decisiones continuas y enteras. La cantidad de líquido puede ser divisible mientras encender una instalación es sí/no. Retirar integridad da una relajación, que puede servir como cota, pero no autoriza a interpretar sus fracciones como decisiones del problema original.

Cada objeto necesita su propia elección

Tres objetos A, B, C; cada uno se puede llevar como máximo una vez.

  1. Variables

    x_A, x_B, x_C∈{0,1}; uno significa llevar ese objeto completo.

  2. Leer un plan

    (1;0;1) selecciona A y C. (0;0;0) no selecciona ninguno.

  3. Leer una fracción

    x_C=1/4 no significa haber seleccionado C en el modelo binario; pertenece a una tarea fraccionaria distinta.

Resultado

El dominio forma parte de la factibilidad.

Lo comprobamos

Si hubiera varias copias de un tipo, habría que modelarlas o permitir un contador entero con sus límites.

Una parte del modelo puede seguir siendo continua

Producir x≥0 cuesta 2x; encender cuesta diez. Capacidad x≤6z, z∈{0,1}; se exige x≥4.

  1. Elegir estado

    z=0 obligaría x=0, incompatible con producir al menos cuatro.

    Debe ser z=1.
  2. Minimizar

    Con coste 10z+2x, el mínimo es x=4, z=1 y vale dieciocho.
  3. Relajar

    Si permitiéramos 0≤z≤1, x=4, z=2/3 sería factible y costaría 44/3, menor, pero no es un encendido binario.

Resultado

La variable de producción puede ser continua y el interruptor entero.

Lo comprobamos

El valor menor de la relajación no es una decisión física válida de este modelo.

2. En la mochila se compara valor después de comprobar el peso

Para objetos de pesos positivos wᵢ, valores no negativos vᵢ y capacidad W≥0, buscamos maximizar Σvᵢxᵢ con Σwᵢxᵢ≤W y xᵢ∈{0,1}. El peso consume capacidad y el valor es lo que queremos aumentar. El plan vacío está permitido salvo que añadamos otra condición.

La mejor proporción individual no garantiza la mejor combinación
Capacidad: 6 kgA2 kgValor 3B3 kgValor 4C4 kgValor 5ACPeso: 2+4=6 kgValor: 3+5=8A+B cabe, pero solo vale 7.
A pesa dos y vale tres; B pesa tres y vale cuatro; C pesa cuatro y vale cinco. El orden valor/peso empieza por A y luego B, con valor siete. Elegir A y C llena los seis kilos y alcanza ocho. La barra inferior representa pesos, con la misma escala por kilo.

El mayor valor individual no siempre produce la mejor combinación. Tampoco ordenar por valor/peso garantiza la mochila binaria: puede dejar un hueco que impida añadir otro objeto. Esa regla sí resuelve la versión clásica fraccionaria, donde podemos dividir objetos; intercambiar peso de menor proporción por peso disponible de mayor proporción no empeora su valor.

Comparar lo que cabe con lo que interesa llevar

Capacidad seis. Objetos (peso; valor): A=(2;3), B=(3;4), C=(4;5).

  1. Solos

    Los tres caben individualmente; el mejor valor individual es cinco con C.

  2. Parejas

    A+B pesa cinco y vale siete; A+C pesa seis y vale ocho; B+C pesa siete y no cabe.

  3. Tres a la vez

    Pesan nueve, así tampoco caben. Las comparaciones cubren todas las opciones, incluida la vacía de valor cero.

Resultado

La mejor selección es A+C, con valor ocho.

Lo comprobamos

Ningún valor alto compensa exceder la capacidad de seis.

La mejor proporción puede llevar a una combinación peor

Mismos objetos; aplicamos selección entera por orden valor/peso.

  1. Proporciones

    A tiene 3/2; B, 4/3; C, 5/4. El orden es A, B, C.

  2. Aplicar la regla

    Tomamos A y B: peso cinco, valor siete. Queda un kilo, insuficiente para C completo.

  3. Contrastar

    A+C era factible y valía ocho. La regla produjo un candidato útil, pero no el óptimo binario.

Resultado

Una heurística necesita un control adicional para certificar optimalidad.

Lo comprobamos

La comparación se hace sin dividir el último objeto: ese es el punto donde cambia la versión del problema.

3. La relajación da una cota; un plan entero da la otra

Sustituir xᵢ∈{0,1} por 0≤xᵢ≤1 amplía el conjunto.

En un máximo, el óptimo relajado es una cota superior y un plan entero factible da una inferior. En un mínimo se invierten las direcciones. Si una solución óptima relajada ya es entera, también resuelve el problema entero.

Para certificar una cota de mochila podemos usar un precio λ≥0 por unidad de peso: Σvᵢxᵢ≤λW+Σmax(0, vᵢ−λwᵢ) para 0≤xᵢ≤1. Se obtiene separando λΣwᵢxᵢ y acotando cada término restante según su signo. Esto produce una desigualdad para todos los planes relajados, no solo una predicción optimista.

Una selección fraccionaria y una cota coinciden

Mochila de seis con A=(2;3), B=(3;4), C=(4;5).

  1. Plan relajado

    Tomamos A y B completos y un cuarto de C.

    Peso 2+3+1=6 y valor 3+4+5/4=33/4.
  2. Precio de peso

    Con λ=5/4, λW=15/2; los extras positivos de A y B son 1/2 y 1/4, y el de C cero.

  3. Cota global

    15/2+1/2+1/4=33/4.

    Como el plan lo alcanza, ese es el óptimo relajado; el entero sigue siendo como máximo esa cota.

Resultado

La cota relajada es 8,25; el plan entero A+C alcanza ocho.

Lo comprobamos

Un cuarto de C no se entrega como solución binaria.

En minimización, la relajación queda por debajo

Minimizar x entero con x≥7/3.

  1. Continuo

    Sin integridad, el mínimo es 7/3.

  2. Enteros

    El menor entero permitido es tres; alcanza valor tres.

  3. Cotas

    7/3 es una cota inferior del mínimo entero; la decisión tres da una superior. Como el objetivo entero debe ser entero, la cota inferior puede elevarse a tres.

Resultado

El óptimo entero es tres y queda certificado.

Lo comprobamos

No se mantienen las direcciones de las cotas de un problema de máximo al cambiar a mínimo.

4. Redondear variables no conserva automáticamente las restricciones

Una capacidad superior puede romperse al redondear hacia arriba. Una obligación mínima o una igualdad puede romperse al hacerlo hacia abajo. Incluso si el resultado es factible, otra combinación puede tener mejor objetivo. Un candidato redondeado se verifica desde cero contra el modelo original.

La distinción es entre redondear una cota válida con información de integridad y redondear una decisión coordenada a coordenada. Lo primero puede conservar un certificado; lo segundo es una heurística y no una prueba general.

El redondeo más cercano puede superar la capacidad

Maximizar x entero con 2x≤7, x≥0.

  1. Relajación

    El máximo continuo es x=3,5.
  2. Redondear hacia arriba

    x=4 exigiría ocho unidades de recurso, más de siete.

  3. Candidato válido

    x=3 usa seis y es el mayor entero permitido.

    La cota x≤3,5 también permite certificar x≤3 por integridad.

Resultado

La decisión cuatro es infactible; tres sí es óptima.

Lo comprobamos

La verificación de capacidad es independiente de lo cerca que esté el redondeo del número fraccionario.

Una igualdad puede perderse en ambos sentidos de redondeo

Maximizar x+y sujeto a x+y=1 y x, y binarios.

  1. Relajación

    (1/2;1/2) es factible y óptimo continuo, pues todos los factibles tienen objetivo uno.

  2. Dos fallos

    Redondear ambos hacia abajo da suma cero; ambos hacia arriba da suma dos. Ninguno cumple la igualdad.

  3. Planes enteros

    (1;0) y (0;1) sí cumplen y alcanzan uno.

Resultado

La decisión exige coordinar variables que comparten una condición.

Lo comprobamos

Un punto fraccionario óptimo no determina por redondeo independiente qué alternativa entera escoger.

5. Enumerar demuestra el óptimo si la lista cubre todas las decisiones relevantes

Con n decisiones binarias independientes hay 2ⁿ combinaciones antes de filtrar restricciones: dos opciones en cada posición. Para n pequeño podemos comprobarlas todas, descartar las infactibles y comparar objetivos. Si añadimos condiciones como elegir exactamente dos, podemos enumerar directamente las selecciones que las cumplen.

Cada nueva variable binaria duplica la lista. De diez a veinte variables se pasa de 1024 a 1048576 combinaciones; la enumeración completa puede dejar de ser práctica. Esto no significa que toda familia combinatoria sea igual de difícil: estructura, representación y cotas pueden evitar gran parte del trabajo.

Una tabla completa cierra la mochila de tres objetos

Usamos los ocho subconjuntos de A, B, C de la mochila de seis.

  1. Tabla de decisiones

    Peso y valor se suman solo para los objetos elegidos.

    SelecciónPesoValor¿Cabe?
    Ninguna00Sí
    A23Sí
    B34Sí
    C45Sí
    A+B57Sí
    A+C68Sí
    B+C79No
    A+B+C912No
  2. Filtrar

    Descartamos las dos últimas filas por superar seis.

  3. Comparar

    Entre los seis planes factibles, ocho es el mayor valor y corresponde a A+C.

Resultado

La tabla completa certifica el valor ocho.

Lo comprobamos

Hay ocho filas porque 2³=8; no se ha olvidado el plan vacío.

Una condición de tamaño reduce la lista sin perder casos

Elegir exactamente dos de A, B, C, D, con valores 1,4,2,3, sin otros límites.

  1. Lista sin repetición

    Las parejas son AB, AC, AD, BC, BD, CD: seis casos.

  2. Valores

    Suman respectivamente 5,3,4,6,7,5.

  3. Elegir

    BD alcanza siete, el máximo de la lista. El orden BD o DB no crea una selección diferente.

Resultado

La selección óptima es B y D.

Lo comprobamos

No usamos permutaciones cuando la decisión solo es qué objetos se llevan.

6. La programación dinámica recuerda la información suficiente para continuar

Con pesos enteros positivos y capacidad entera W≥0, V(i, w) es el mayor valor usando solo los primeros i objetos y capacidad como máximo w.

V(0, w)=0.

Si el objeto i cabe, comparamos V(i−1, w) con vᵢ+V(i−1, w−wᵢ); si no cabe, solo queda la primera opción. Usar i−1 en ambos casos evita reutilizarlo.

La tabla tiene (n+1)(W+1) celdas y un número constante de opciones por celda, aparte del coste aritmético de los valores; se resume como O(nW) para W≥1. Es pseudopolinómica: W escrito en binario necesita solo unas log₂W cifras, mientras la tabla depende de W. Una tabla unidimensional puede ahorrar memoria, pero el orden de actualización debe conservar la versión 0/1.

Leer la tabla como decisiones, no como números aislados

A=(2;3), B=(3;4), C=(4;5), capacidad seis.

  1. Capacidad por columnas

    Cada fila permite un objeto más; cada entrada usa como máximo la capacidad indicada.

    Objetos0123456
    Ninguno0000000
    A0033333
    A, B0034477
    A, B, C0034578
  2. Última comparación

    En V(3,6), no tomar C da siete.

    Tomarlo da cinco más V(2,2)=3, total ocho.
  3. Recuperar selección

    La mejora procede de C y del plan A en la capacidad restante dos: A+C.

Resultado

La tabla confirma ocho y explica cómo reconstruir el plan.

Lo comprobamos

La capacidad es un máximo permitido: no se exige llenarla exactamente en cada celda.

Actualizar capacidades en orden creciente reutilizaría el mismo objeto

Solo A, peso dos y valor tres, capacidad cuatro; tabla unidimensional inicial cero.

  1. Orden decreciente

    Al calcular capacidad cuatro primero, la capacidad dos anterior vale cero: se obtiene tres. Después se calcula la capacidad dos, también tres.

  2. Orden creciente

    Si calculamos primero capacidad dos, queda tres. Al llegar a cuatro, sumar tres a ese valor recién cambiado daría seis.

  3. Interpretar el fallo

    Ese seis cuenta dos veces el único A, prohibido en mochila 0/1. El orden creciente corresponde a otra posibilidad de reutilización.

Resultado

Para esta actualización 0/1 se recorren las capacidades de mayor a menor.

Lo comprobamos

La tabla bidimensional original ya separaba explícitamente i de i−1.

7. Ramificar cubre todos los enteros; acotar permite cerrar ramas

En un nodo resolvemos una relajación. Si es infactible, el nodo no contiene planes enteros. Si su solución óptima ya es entera, aporta un candidato y resuelve ese nodo. Si xⱼ=t es fraccionario, dividimos entre xⱼ≤⌊t⌋ y xⱼ≥⌈t⌉: todo entero del nodo pertenece a una de las dos ramas.

Cada rama necesita una cota y una razón para cerrarse
Relajación: U=33/4Mejor entero conocido: 7C: fracción 1/4Sin CU=7Con CU=8Sin C: no mejora el siete.Con C: A+C da ocho, entero.Las dos ramas quedan cerradas.
La relajación fraccionaria de la mochila de seis kilos da 33/4 y toma un cuarto del objeto C. Se ramifica entre no tomar C y tomarlo entero. Sin C, la cota siete no mejora el plan conocido; con C, A+C da valor ocho y ya es entero. Al cerrar ambos casos queda certificado el ocho.

En maximización, una relajación con cota superior U≤B no puede mejorar el valor B de un plan entero conocido, así se poda. B debe venir de un plan realmente factible y U de una cota válida. Una aproximación optimista sin control no autoriza eliminar soluciones posibles.

Dos ramas cierran la mochila sin recorrer todo el árbol

Mochila de seis; partimos del candidato A+B de valor siete.

  1. Raíz

    La relajación toma A, B y un cuarto de C, con U=33/4.

    Ramificamos por no tomar C o tomarlo entero.

  2. Sin C

    A+B es óptimo incluso relajado, de valor siete; no mejora el candidato y se poda.

  3. Con C

    Quedan dos kilos. A cabe entero y da valor total ocho; la relajación de esa rama ya es entera.

  4. Cerrar

    Las dos ramas cubrían todas las decisiones sobre C. El nuevo mejor valor ocho queda certificado.

Resultado

No hizo falta conservar abierta una brecha fraccionaria en la raíz después de cerrar todos sus descendientes.

Lo comprobamos

La rama con C sigue exigiendo que los otros objetos respeten sus límites de una copia.

Una variable entera general también se divide en dos regiones

Maximizar 3x con x entero no negativo y 2x≤5.

  1. Relajación

    x=2,5 da cota 7,5; x=2 es factible y vale seis.
  2. Rama x≤2

    Su objetivo continuo es como máximo seis, así no puede mejorar.

  3. Rama x≥3

    Contradice 2x≤5; es infactible.

    Ambos casos cubren todos los enteros, de modo que el óptimo es seis.

Resultado

Las regiones entre dos enteros consecutivos no contienen una decisión entera perdida.

Lo comprobamos

No se ramifica en x≤2,5 y x≥2,5 dejando la misma fracción en ambas ramas.

8. La brecha global informa de lo que todavía podría mejorar

Si el mejor plan entero de un máximo vale B y los nodos abiertos tienen cotas U₁,…, Uₖ, una cota global es max(B, U₁,…, Uₖ). No se suman: los nodos representan planes alternativos. Si todos se cierran o sus cotas quedan por debajo de B, el valor está certificado.

Con objetivo entero, una cota superior puede redondearse hacia abajo manteniendo validez.

Algunas formulaciones de redes tienen vértices integrales con datos adecuados y admiten un óptimo entero mediante su relajación. Eso no significa que todo punto factible o todo óptimo de esa relajación sea entero. Tampoco se extiende la propiedad a cualquier matriz de restricciones. Las tolerancias de un solucionador deben distinguirse de un certificado matemático exacto.

Actualizar un candidato no cierra automáticamente todas las ramas

Máximo con plan conocido B=9 y dos nodos abiertos de cotas diez y doce.

  1. Cota global

    El óptimo está entre nueve y doce, no entre nueve y veintidós.

  2. Nuevo plan

    Encontramos un plan entero factible de valor once. Se poda el nodo de cota diez.

  3. Lo que queda

    La otra cota sigue en doce: la brecha absoluta es uno y todavía no hay igualdad certificada.

Resultado

Un buen plan y un plan demostrado óptimo son resultados distintos.

Lo comprobamos

No se anuncia once como óptimo mientras quede una región que podría alcanzar más.

Una estructura integral puede admitir también soluciones fraccionarias óptimas

Asignación de dos agentes y dos tareas; cada coste vale uno.

  1. Punto fraccionario

    La matriz con sus cuatro entradas 1/2 tiene suma uno en cada fila y columna; su coste es dos.

  2. Planes enteros

    La identidad y la asignación cruzada también tienen coste dos.

  3. Geometría

    El punto fraccionario es el promedio de esos dos planes. Existe un óptimo entero, pero no todos los óptimos son enteros.

Resultado

La garantía de un vértice entero no convierte en enteros todos los puntos de la región.

Lo comprobamos

La lección de redes explicará por qué la exclusividad de filas y columnas es una estructura especial.

Ahora lo resolvemos de principio a fin.

EJEMPLO RESUELTO 1

Una mochila pequeña

Capacidad 5. Objetos (peso,valor): A=(3,5), B=(2,4), C=(4,7). Elige sin repetir.

  1. Datos

    Capacidad cinco; A pesa tres y vale cinco, B pesa dos y vale cuatro, C pesa cuatro y vale siete. Cada uno se elige como máximo una vez.

  2. Selecciones individuales

    Vacía: peso cero, valor cero. A: peso tres, valor cinco. B: peso dos, valor cuatro. C: peso cuatro, valor siete.

  3. Parejas

    A+B pesa cinco y vale nueve. A+C pesa siete y B+C seis: no caben.

  4. Tres objetos

    A+B+C pesa nueve, superior a cinco; se descarta.

  5. Comparación completa

    Las ocho selecciones están cubiertas; el mayor valor factible es nueve.

  6. Respuesta

    Seleccionar A y B llena la capacidad y alcanza el máximo nueve.

Resultado

Selecciona A y B: valor máximo 9.

Lo comprobamos

Se han comparado todas las combinaciones factibles de tres objetos.

EJEMPLO RESUELTO 2

Redondear puede fallar

Maximiza x entero con 2x≤3, x≥0.

  1. Relajación

    Sin integridad, 2x≤3 permite hasta x=3/2.
  2. Dominio original

    x debe ser entero y no negativo.

  3. Cota entera

    x≤3/2 implica x≤1 para un entero.
  4. Alcanzar

    x=1 cumple 2·1≤3.
  5. Siguiente entero

    x=2 exigiría cuatro, superior a tres; es infactible.
  6. Conclusión

    El óptimo entero es uno. Redondear la fracción hacia dos no habría preservado la capacidad.

Resultado

El óptimo entero es x=1.

Lo comprobamos

2·1≤3 y el siguiente entero 2 es infactible.

Los símbolos que hemos usado

Variable entera
Decisión restringida a Z, con los límites adicionales del modelo.
Variable binaria
Decisión que solo vale cero o uno.
Relajación
Problema que permite más decisiones al retirar alguna restricción.
Incumbente B
Valor de la mejor solución entera factible conocida en una maximización.
Cota superior U
Valor que ninguna solución de una región puede superar.
Poda
Descarte de una región que no puede aportar una mejora necesaria.
Programación dinámica
Resolución mediante subproblemas con estados que resumen la información relevante.

Ahora te toca a ti.

Tienes cinco ejercicios. Inténtalos; las pistas te ayudan si te atascas.

Practicar este tema →

Para ampliar