Sei sulla pagina 1di 17

[Fecha] INVESTIGACION DE

OPERACIONES
UNIDAD IV
PROGRAMACION ENTERA.

PRESENTA:
ARMANDO DE JESUS LOPEZ RESENDIS
DEL 4° SEMSSTRE GRUPÓ Q

DOCENTE ENCARGADO:
ING. IRENE VALDIVIESO HERNANDEZ
INDICE

1. 4.1 introducción y casos de aplicación. ....................................................................................... 1


2. 4.2 Definición y modelos de programación entera y binaria. ..................................................... 4
3. 4.3 Método de Gomory. .............................................................................................................. 5
4. 4.4 Método de bifurcación y acotación. ..................................................................................... 8
5. 4.5 Uso del software ................................................................................................................. 14

1
Unidad 4.- programación lineal entera.

1. 4.1 introducción y casos de aplicación.


Con el termino Programación lineal entera, (PLE), nos referiremos al siguiente
tipo de problemas: problemas que formalmente son problemas de programación
lineal, max /mín Z = Ax = b, x ≥ 0 pero en los que algunas variables están
restringidas a tomar valores enteros.
Por ejemplo, x1 ≥ 0, x2 ≥ 0 y entera, X3 ∈ {0, 1}, x1 una variable como las que
hemos manejado hasta ahora, x2 una variable entera no negativa y x3 una
variable binaria, que toma únicamente dos valores, 0 ´o 1.
Como veremos en los apartado siguientes los problemas de programación lineal
entera nos van a permitir modelar muchas más situaciones que la programación
lineal, pero a cambio la resolución de los problemas ser mucho más costosa,
presentaran, en general, un costo computacional mucho más elevado que el de la
programación lineal.
La causa de este incremento de costo computacional se debe a que se pierde la
deseable propiedad existente en los problemas de programación lineal de que al
menos una solución óptima del problema se encuentra en un punto extremo. En
estos problemas los conjuntos ya no tienen que ser conexos (pueden estar
definidos a trozos) y mucho menos convexos con lo que la idea de punto extremo
tal y como la hemos definido desaparece. De todos modos, para su resolución aún
podremos utilizar técnicas basadas en el simplex.
Casos de aplicación
Las variables binarias xj ∈ {0, 1} pueden utilizarse para modelar situaciones en
las que se decide si una acción se realiza, xj = 1, o si no se realiza, xj = 0. Un
ejemplo típico de utilización de este tipo de variables es el problema de inversiones,
a continuación se muestra una de sus versiones más simplificadas.
Un inversor dispone de una cantidad b para invertir en n posibles
proyectos/acciones. Cada posible acción tiene un costo de aj unidades monetarias
y un beneficio posterior de cj unidades monetarias. El inversor debe decidir que
inversiones realizar con objeto de maximizar el beneficio total.
Para este problema se definen variables xj que toman valor 1 cuando se invierte
en el proyecto j y valor 0 cuando no se invierte, con estas variables el problema
queda en la forma siguiente:
max Z = c1 x1 + c2x2 + . . . + cnxn
s. a: a1 x1 + a2x2 + . . . + anxn ≤ b
xj ∈ {0, 1}, j = 1, . . . , n

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.

El método presentado de ramifica y acota tiene el inconveniente de que en


cada paso se tiene que resolver dos nuevos programas asociados. Esto hace
que el número de operaciones sea grande, aunque en ocasiones puede ser que uno
de los dos problemas no tenga solución. En el método que vamos a presentar a
continuación se reduce el tamaño de la región factible pero sin dividirla, para
esto, se va añadiendo una restricción en cada iteración. Estas iteraciones “ cortan”
la región factible, de tal manera que la nueva región debe contener la solución
entera óptima de nuestro modelo, si es que existe. El algoritmo del método
se presenta a continuación.

Paso 1. Se resuelve el modelo sin tomar en cuenta la restricción de que las variables
sean enteras.

Paso 2. Si la solución óptima cumple la condición de ser entera, ésta es la solución


del modelo. Si no, se toma uno de los renglones de la tabla símplex óptima con lado
derecho no entero. A este renglón le llamamos renglón fuente.

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.

Paso 5. Escribimos esta desigualdad en forma de igualdad al sumar la variable


de superávit y la añadimos a nuestra tabla símplex óptima. Resolvemos por el
método dual símplex. Regresamos al paso 2.

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.

1. Solver: Es sin duda la principal herramienta para resolver modelos de


optimización de tamaño reducido utilizado por los alumnos de cursos de ingeniería.
Este complemento de Excel se puede descargar desde el sitio web de Frontline en
su versión comercial (Premium Solver Pro) para implementar modelos de mayor
tamaño.

2. What’sBest!: Es la alternativa a Solver dado que funciona integrada en una


planilla de cálculo (Excel). La interfaz es intuitiva y seguramente quién domine
Solver no demorará mucho en aprender los elementos básicos de este programa.
What’sBest! ha sido desarrollado por la empresa de software Lindo.

3. AMPL: Es un lenguaje de programación matemática que permite abordar la


formulación y resolución de modelos de optimización de programación lineal,

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.

4. GAMS: Es una herramienta de formulación matemática alternativa a AMPL que


permite formular y resolver modelos de optimización de complejidad mayor.

5. NEOS Solvers: Es un portal que consolida una gran variedad de solvers


(algoritmos) que permiten resolver distintas categorías de modelos de optimización
formulados en un lenguaje matemático determinado (como AMPL y GAMS). El
procedimiento es el siguiente: se selecciona un solver que permita resolver nuestro
modelo (depende del lenguaje de programación matemática y el tipo de modelo),
se sube el archivo del modelos (y/o datos) y se obtienen los resultados online.

6. Geogebra: Es un excelente programa que nos ayuda a graficar distintas formas


geométricas y en particular resolver gráficamente modelos de optimizaciones
lineales o no lineales. Este programa se puede descargar gratuitamente e instalar
en nuestro computador o alternativamente utilizar su aplicación web directamente
sin necesidad de descargar el programa.

7. Método Simplex (ProgramacionLineal.net): Es una herramienta que permite


resolver modelos de programación lineal a través del método simplex, mostrando
paso a paso las respectivas iteraciones, solución óptima y valor óptimo.

15

Potrebbero piacerti anche