Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
OPERACIONES
UNIDAD IV
PROGRAMACION ENTERA.
PRESENTA:
ARMANDO DE JESUS LOPEZ RESENDIS
DEL 4° SEMSSTRE GRUPÓ Q
DOCENTE ENCARGADO:
ING. IRENE VALDIVIESO HERNANDEZ
INDICE
1
Unidad 4.- programación lineal entera.
1
Este problema básico puede modificarse incorporando el hecho de que las
inversiones no sean de un solo periodo de tiempo sino que deban realizarse durante
varios periodos de tiempo, en cada uno de los cuales se dispone de una cantidad
bi de unidades monetarias. También puede modificarse mediante la incorporación
de condiciones y restricciones en las inversiones, por ejemplo:
Si invierto en el proyecto i entonces debo invertir en el proyecto j. Dicha
condición responde a la ecuación
xi ≤ xj
Puede observarse que si xi = 1 entonces queda 1 ≤ xj con lo que xj debe
tomar valor 1 y si xi = 0 entonces queda 0 ≤ xj con lo que xj no está
restringida y puede tomar cualquiera de los dos posibles valores 0 ´o 1.
Si invierto en el proyecto i y en el proyecto j entonces debo invertir en el
proyecto. Dicha condición responde a la ecuación
xi + xj ≤ 1 + xk
En este casi si xi = xj = 1 la ecuación queda 2 ≤ 1 + xk con lo que xk está
obligada a tomar valor 1 y en cualquier otro caso obtenemos 0 ≤ 1 + xk o 1
≤ 1 + xk que no restringen a xk .
Si invierto en el proyecto i o en el proyecto j entonces debo invertir en el
proyecto k. Dicha condición responde a la ecuación
xi + xj ≤ 2xk
En este casi si xi = 1 o xj = 1 la ecuación queda 1 ≤ 2xk que obliga a que
xk tome valor (xk ≥ 0,5 ⇒ xk = 1), si ambas toman valor 1 entonces queda
xk ≥ 1 y si ambas toman valor 0 xk queda libre pudiendo tomar valor 0 o 1.
A partir de estas tres situaciones se pueden generar muchas otras, por ejemplo:
si invierto en el proyecto i entonces no puedo invertir en el proyecto j. En términos
de las variables estamos diciendo que si xi = 1 entonces xj = 0 que podríamos
escribir que si
Xi = 1 entonces yj = 1 − xj = 1, es decir si invierto en el proyecto i entonces
invierto
En un nuevo proyecto j0. Esto ya lo sabemos escribir xi ≤ yj que sustituyendo
queda
xi ≤ 1 − xj .
Por tanto si en lugar de aparecer invertir aparece “no invertir” basta con buscar
la restricción que tiene la misma forma y cambiar en donde aparece la variable por
su valor complementario, 1 − x.
Veamos otro ejemplo, si invierto en i y no invierto en j entonces tengo que invertir
en k. En este caso tomaríamos como referencia la condición “si invierto en i y en j
entonces invierto en k” y en donde aparece la variable xj ponemos su
complementaria 1 − xj , quedando la ecuación:
2
xi + (1 − xj ) ≤ 1 + xk o xi − xj ≤ xk
Otras posibles modificaciones son que en lugar de ser una o varias las que obligan
a que ocurra algo sobre otra, es una sola la que obliga a que se haga algo con
otras, por ejemplo. Si invierto en xi entonces tengo que invertir en xj y en xk .
Esta situación puede reducirse a una de las anteriores sin más que tener en
cuenta que la proposición A =⇒ B es equivalente a la proposición N o B =⇒ N o A.
Es decir la proposición anterior es equivalente a “Si no invierto en j o no invierto en
k entonces no invierto en i”.
Para modelar esta última proposición tomamos la proposición “si invierto en j o en
k entonces invierto en i” (vista anteriormente) y realizamos la operación realizada
en el ejemplo anterior. En todas las expresiones que aparece “no invertir”
complementamos a 1 la variable, obteniendo:
(1 − xj ) + (1 − xk ) ≤ 2(1 − xi) o xj + xk ≥ xi
3
2. 4.2 Definición y modelos de programación entera y binaria.
La programación lineal entera es un conjunto de técnicas de la investigación
operativa que permite la solución a una variable para el programa lineal cuando las
variables de decisión no pueden tomar valores fraccionarios.
La programación entera es el método empleado para resolver problemas que tienen
variables de decisión enteras. Estos modelos se han considerado submodelos de la
programación lineal con las características de enteridad.
Principales modelos.
Las variables del modelo de programación lineal, tienen que ver con las condiciones
de los valores enteros que tienen que tomar algunas de las variables de decisión.
Los casos son los siguientes.
Modelo entero.
Es una variante del programa lineal, todas las variables de decisión son positivas y
solamente algunas de ellas deben ser enteras.
Por lo tanto el modelo matemático generalizado es:
Modelo binario.
Esta variante del programa lineal, suele utilizarse para modelar problemas con
actividades que deben o no ejecutarse. Por analogia con el sistema de los numeros
binarios, las variables de decisión toman un unico valor entre 0 y 1. Esto es, si la
actividad no se ejecuta la variable correspondiente toma el vaor 0, de lo contrario el
valor 1.
Por lo consiguiente el modelo generalizado es:
4
3. 4.3 Método de Gomory.
Gomory fue el primer creador del algoritmo para resolver métodos de programación
entera, el algoritmo de Gomory consiste en resolver el problema sin considerar las
restricciones del carácter entero de las variables y si la solución no es entera añade
restricciones que reduce el conjunto de soluciones del problema lineal continuo
asociado, sin excluir ninguna solución entera En matemática, y más en concreto en
optimización, el método de los planos de corte es un procedimiento para encontrar
soluciones enteras de un problema lineal. Fue introducido por Gomory. Funciona
resolviendo un programa lineal no entero, después comprobando silla optimización
encontrada es también una solución entera. Si no es así, es añadida una nueva
restricción que corta la solución no entera pero no corta ningún otro punto de la
región factible. Esto se repite hasta que se encuentra la solución entera óptima.
Interpretación geométrica, una restricción es equivalente a un hiperplano,
permitiendo solo soluciones en uno de los lados del plano.
Paso 1. Se resuelve el modelo sin tomar en cuenta la restricción de que las variables
sean enteras.
Paso 3. Escribimos los coeficientes del renglón fuente como una combinación
de un número entero y una parte fraccionaria positiva entre cero y uno.
Paso 4. Pasamos todos los coeficientes fraccionarios del lado izquierdo, los enteros
los pasamos al lado derecho. Ahora hacemos que el lado izquierdo sea mayor
o igual a cero.
5
Ejemplo.
6
7
4. 4.4 Método de bifurcación y acotación.
El método de ramificación y acotación o también llamado Branch and
Bound, resuelve el problema de tal forma que si la solución a este
verifica condiciones de integridad, entonces también es la solución
al problema entero, de lo contrario se comienza con la ramificación
del problema.
La ramificación consiste en dividir cada problema en
dos nuevos subproblemas, obtenidos mediante el uso de
restricciones excluyentes que dividen el conjunto de oportunidades
del problema original en dos partes, pero eliminando en ambas partes
la solución no entera del problema original.
Cuando en la solución al problema una variable que es entera
xi toma el valor xbi no entero, entonces se generan, a partir de dicho
valor, dos restricciones xi ≤ [xbi] y xi ≥ [xbi]+1 (siendo [xbi] la parte entera
por defecto de xbi).
Es una herramienta que emplea algoritmos para encontrar la solución óptima con
variables enteras. Al inicio, los problemas se deben resolver empleando la
programación lineal, a través de la cual se obtienen fracciones; es de gran ayuda
emplear el algoritmo de branch and bound.
Este método denominado en español ramificación y acotamiento forma parte de
la programación entera. Puede ser usado para dos o más variables
dependiendo del problema que se presente. Ramificación y acotamiento es una
estrategia de búsqueda sistemática que reduce mucho el número de
combinaciones que se deben examinar.
Comienza con la solución óptima del simplex en donde se ignoraron las
restricciones de variables enteras. Se selecciona después una variable con valor
no entero y se crean dos ramas mutuamente excluyentes. Esto da lugar a dos
nuevos problemas de programación lineal que se deben resolver. Si ninguna
solución es entera, se crean nuevas ramas y se resuelven nuevos problemas.En
cada paso, la solución que se encuentra proporciona una cota para esa rama en
el sentido de que ninguna otra solución puede ser mejor. Por ejemplo, se inicia el
proceso con una solución óptima no entera; se sabe que no existe ninguna otra
solución no entera que sea mejor.
Los algoritmos de ramificar y cortar sirven para encontrar la solución de problemas
cuyas variables de decisión son valores enteros, esto mediante un proceso
en el que se divide un conjunto de soluciones factibles en subconjuntos más
pequeños.
Este algoritmo consta de tres acciones necesarias para su desarrollo, las cuales
son:
Ramificación: Dividir el conjunto completo de soluciones factibles en
subconjuntos más pequeños.
8
Acotamiento: Obtener una rama que muestre el grado de precisión de la
solución factible, para cada subproblema.
Sondeo: Seleccionar la mejor solución en el subconjunto, así como
descartar los subconjuntos que tengan cotas indicando que no es posible
que contenga una solución óptima para el problema original.
Los pasos que incluye este algoritmo son los siguientes:
1. Resolver el problema por medio del método Simplex. Si la solución
solo contiene números enteros para las variables de decisión, la solución
obtenida es óptima.
2. Cuando los valores de las variables de decisión arrojados por el método
Simplex no son números enteros, se elige una variable de decisión
que, en la solución por el método Simplex, haya resultado un número
fraccionario.
3. Se generan dos nuevos problemas similares al problema original, pero:
-Uno de ellos tendrá una nueva restricción: Xj ≤ XBj.
-El segundo problema tendrá también una restricción adicional: Xj ≤ XBj +1
4. Se resuelven los dos problemas lineales desarrollados en el paso anterior.
Se selecciona el programa lineal con mejores resultados, ya sea con
valores fraccionarios o enteros, que cualquiera de las soluciones enteras
encontradas.
5. Se selecciona el programa lineal que contenga el mejor valor de la función
objetivo. Si las variables tienen valores enteros, entonces la solución
encontrada es óptima.
6. En caso de que no se cumpla con la condición de que las variables sean
enteros, es necesario volver al paso 2 considerando la estructura del
programa lineal que se ha resuelto en el paso 5.
9
Ejemplo:
10
11
12
13
5. 4.5 Uso del software
La implementación del uso de software en los casos prácticos de la investigación
de operaciones puede significar un mayor aprovechamiento del tiempo y una mayor
exactitud al realizar los ejercicios a continuación se listan algunos de los softwares
más utilizados para casos sencillos.
14
programación entera y programación no lineal (entre otros). Esta plataforma es
popular para modelos de mayor complejidad que requieren para su resolución de
algoritmos especializados.
15