Sunteți pe pagina 1din 20

Investigación de

operaciones
PROGRAMACIÓN ENTERA

Alma Rosa Vicente Montejo


INSTITUTO TECNOLÓGICO DE CIUDAD MADERO
CONTENIDO:
3.1 Introducción a la programación entera y casos de aplicación.
3.2 Definición y modelos de programación entera.
3.3 Método gráfico de programación entera.
3.4 Método de ramificación y acotación.
3.5 Método heurístico para problemas binarios.
3.6 Uso de software.
Investigación de operaciones I
Unidad 3 Programación entera

3.1 Introducción y casos de aplicación


Muchas aplicaciones no se pueden abordar con los métodos de solución de la
Programación Lineal porque tienen el principio de la "no divisibilidad", esto es,
algunas o todas las variables deben tomar valores enteros. Con frecuencia
deben construirse modelos para asignar personas, máquinas o vehículos a las
actividades, en cantidades enteras. Si el problema de exigir valores enteros es
la única diferencia que tiene un problema con su formulación en términos de
Programación Lineal, entonces se trata de un problema de Programación Lineal
Entera o simplemente de Programación Entera. Así que el modelo de
Programación Entera es simplemente un modelo matemático de Programación
Lineal que agrega la condición de que algunas o todas las variables deben ser
enteras.
Los problemas de programación lineal en que se requiere que algunas o todas
las variables tomen valores enteros, son de programación entera. La
programación entera ha llegado a ser un área muy especializada de la ciencia
de la administración.
En algunas situaciones que pueden representarse con modelos lineales nos
encontramos con que sólo tienen sentido aquellas soluciones de la región factible
que son enteras, así pueden representarse mediante modelos matemáticos
ligeramente diferentes a los de programación lineal. Si todas las variables son
enteras tenemos un problema de programación lineal entera, si sólo algunas
deben serlo se trata de un problema de programación lineal mixta. Programación
Entera es un término general para los modelos de programación matemática que
presentan condiciones de integridad (condiciones que estipulan que algunas o
todas las variables de decisión deben tener valores enteros).
Para resolver este tipo de problemas hay varios métodos: Ralph Gomory,
Ramificación y Acotamiento, Enumeración Exhaustiva o Enumeración Explícita,
Enumeración Implícita, Aditivo de Egon Balas y Algoritmos Heurísticos. El primer
algoritmo que se desarrollo fue el de Ralph Gomory en 1958.
El más famoso es el método de 'Ramificar y Acotar' o Branch and Bound por su
nombre en inglés, que fue propuesto por AH Tierra y Doig AG en 1960 para la
programación discreta. El método de Ramificar y Acotar parte de la adición de
nuevas restricciones para cada variable de decisión (acotar) que al ser evaluado
independientemente (ramificar) lleva al óptimo entero.
˃ En Programación Lineal Entera Pura algunos de los algoritmos de
solución que se emplean son: Método de Plano de Corte, Algoritmo
Fraccional de Gomory, Algoritmo Entero Puro de Gomory, Método de
Ramificación y Acotamiento y el Algoritmo de Land – Doig, entre otros.
˃ Para Programación Lineal Entera Binaria algunos de los utilizados son:
Método de Ramificación y Acotamiento, Método Aditivo de Egon Balas,
Método Lexicográfico, Método de Lemke y Spielberg, Distancia de
Hamming y Retículos y Método de Trubin.
˃ En Programación Lineal Entera Mixta se usan el Algoritmo Entero Mixto
de Gomory, el Algoritmo de Land – Doig, Método de Benders.
Egon Balas es una de las figuras científicas más destacadas en programación
matemática con especial énfasis en programación entera y discreta y
optimización combinatoria, incluye técnicas para el problema del transporte, el
problema del agente viajero, el problema de conjuntos de cubrimiento
y particionamiento, el problema de la mochila, planificación de
actividades, secuenciación y asignación, asignación de tráfico en
comunicaciones vía satélite, planificación y optimización de la gestión de
recursos forestales, etc.
3.2 Definición y modelos de programación entera
Un modelo de Programación Entera es aquel cuya solución óptima tiene
sentido solamente si una parte o todas las variables de decisión toman
valores restringidos a números enteros, permitiendo incorporar en el
modelamiento matemático algunos aspectos que quedan fuera del alcance de
los modelos de Programación Lineal.

Programación Entera Pura (PEP)


En esta categoría encontramos aquellos modelos de Programación Entera que
consideran exclusivamente variables de decisión que adoptan valores enteros o
binarios.
El conjunto de las soluciones factibles (o dominio de soluciones factibles)
es finito. Esto ocurrirá generalmente con los problemas de Programación Entera
(puros).
F.O Min 6x1 + 5x2 + 4x3
s.a. 108x1 + 92x2 + 58x3 >= 576
7x1 + 18x2 + 22x3 >= 83
x1, x2, x3 >=0 y enteros
Programación Entera Mixta (PEM)
A esta categoría pertenecen aquellos problemas de optimización que consideran
variables de decisión enteras o binarias pero no de forma exclusiva. De esta
forma un problema de PEM puede considerarse como un híbrido entre distintas
categorías de modelamiento, siendo un caso típico aquel que considera la
mezcla de variables enteras y variables continuas (estas últimas características
de los modelos de Programación Lineal).
Un problema en el que solo se requieren que algunas variables tengan valores
enteros mientras que otras pueden asumir cualquier número no negativo (es
decir, cualquier valor continuo) se llama programación entera mixta (PEM). Por
ejemplo, supóngase que en el problema anterior solo x1 y x2 deben ser enteros
y x3 no. El problema resultante es:
F.O Min 6x1 + 5x2 + 4x3
s.a. 108x1 + 92x2 + 58x3 >= 576
7x1 + 18x2 + 22x3 >= 83
x1, x2, x3 >=0 x1 y x2 enteros

Programación Entera Binaria (PEB)


En algunos problemas se restringe el valor de las variables a 0 o 1. Dichos
problemas se llaman binarios o programas lineales enteros 0-1. Son de particular
interés debido a que se pueden usar las variables 0-1 para representar
decisiones dicotómicas (sí o no). Diversos problemas de asignación, ubicación
de plantas, planes de producción y elaboración de cartera, son de programación
lineal entera 0-1.

3.3 Método gráfico de programación entera


Cada una de las ecuaciones que forman un sistema lineal de dos ecuaciones
con dos incógnitas es la de una función de primer grado, es decir, una recta.
El método gráfico para resolver este tipo de sistemas consiste, por tanto, en
representar en unos ejes cartesianos, o sistema de coordenadas, ambas rectas
y comprobar si se cortan y, si es así, dónde. Esta última afirmación contiene la
filosofía del proceso de discusión de un sistema por el método gráfico. Hay que
tener en cuenta, que, en el plano, dos rectas sólo pueden tener tres posiciones
relativas (entre sí): se cortan en un punto, son paralelas o son coincidentes (la
misma recta). Si las dos rectas se cortan en un punto, las coordenadas de éste
son el par (x, y) que conforman la única solución del sistema, ya que son los
únicos valores de ambas incógnitas que satisfacen las dos ecuaciones del
sistema, por lo tanto, el mismo es compatible determinado. Si las dos rectas
son paralelas, no tienen ningún punto en común, por lo que no hay ningún par
de números que representen a un punto que esté en ambas rectas, es decir, que
satisfaga las dos ecuaciones del sistema a la vez, por lo que éste
será incompatible, o sea sin solución. Por último, si ambas rectas son
coincidentes, hay infinitos puntos que pertenecen a ambas, lo cual nos indica
que hay infinitas soluciones del sistema (todos los puntos de las rectas), luego
éste será compatible indeterminado.

Tipo de Características del Modelo Tipo de


Planteamiento Modelo

Agente viajero Se asemeja al modelo de asignación con la Binario


diferencia de la no existencia de la variable xii
, red conexa, realiza una gira completa que
conecte a todos los nodos visitando sólo una vez
cada nodo, minimiza o maximiza la distancia
total

Asignación de Es un tipo de asignación de capital, al que se Binario


capital con agrega un determinado horizonte
horizonte

Asignación de Es igual que le problema tipo mochila, es un Binario


capital problema binario con una sola restricción

Asignación Busca resolver de manera más eficiente la Binario


asignación de una serie de tareas a sendas
máquinas u operarios, red dirigida conexa con
varios nodos iniciales y terminales

Asignación de La función objetivo Entero


horarios

Cargo fijo Si se elige la variable se asocia un cargo Binario


por elegirla

Cobertura de El objetivo es abarcar con el menor número de Binario


Conjuntos variables el mayor espacio posible

Dicotomía Son problemas con regiones no convexa, donde Mixto


lo que se busca es plantear un modelo general
para todas las regiones utilizando variables
binarias

Flujo a Red dirigida, conexa con varios nodos iniciales y Entero


costo mínimo varios nodos terminales, el objetivo es minimizar
el costo de distribución de un flujo dado

Flujo máximo Red dirigida conexa, con un sólo nodo inicial y un Entero
sólo nodo terminal, el objetivo es maximiza el
flujo total que pasa de un nodo llamado fuente a
otro llamado destino o sumidero
"O bien" Son problemas en donde se desea estar seguro Mixto
de que se cumpla por lo menos una restricción,
se agrega una variable binaria Y y M que es un
número suficientemente grande, Y controla de
que restricción se está hablando

Ruta más corta Red dirigida, conexa, puede tener varios nodos Binario
iniciales y terminales, minimiza el costo de una
ruta especifica

Si y entonces Las restricciones se cumplen en ambos sentidos Mixto

Si y solo si Las restricciones se cumplen en un solo sentido Entero

Tipo mochila Cada situación se asigna a una posibilidad de Binario


elección binaria, capacidad máxima, objetivo y
restricciones

Transbordo Red dirigida, conexa tiene varios nodos iniciales Entero


y terminales, minimiza el costo de distribución

Transporte Red dirigida conexa, tiene varios nodos iniciales Entero


y terminales, minimizando el costo de
transporte(distribución o el costo de distribución)

3.4 Método de ramificación y acotación


El método de Branch and Bound (o Ramificación y Acotamiento) es un
algoritmo diseñado para la resolución de modelos de Programación Entera. Su
operatoria consiste en linealizar el modelo de Programación Entera, es decir,
resolver éste como si fuese un modelo de Programación Lineal y luego generar
cotas en caso que al menos una variable de decisión (entera) adopte un valor
fraccionario.
El algoritmo genera en forma recursiva cotas (o restricciones adicionales) que
favorecen la obtención de valores enteros para las variables de decisión. En este
contexto resolver el modelo lineal asociado a un modelo de Programación
Entera se conoce frecuentemente como resolver la relajación continua del
modelo entero.
Consideremos el siguiente modelo de Programación Entera el cual resolveremos
con el algoritmo de Branch and Bound:
El paso inicial consiste en resolver este problema como si fuese un modelo
de Programación Lineal (relajación continua). Si la solución de dicho
problema llegara a respetar las condiciones de integralidad para las variables de
decisión, ésta ya sería la solución óptima del problema entero.
Si bien este procedimiento se puede extender a problemas de mayor dimensión,
utilizamos un modelo en 2 variables para poder representar los pasos del
algoritmo gráficamente. El gráfico a continuación muestra dicha resolución:

La solución óptima del problema lineal asociado (que llamaremos P0)


es X1=2,8 y X2=1,6 con valor óptimo V(P0)=20,8. Claramente esta
solución no cumple las condiciones de integralidad para las variables de
decisión por tanto es necesario generar cotas o restricciones adicionales de
modo de poder obtener soluciones enteras. Para ello debemos seleccionar una
de las 2 variables de decisión con valores fraccionarios para poder generar cotas.
En estricto rigor es indistinto cuál de ellas seleccionemos debido a que el
método nos debe llevar a conclusiones similares (aun cuando la cantidad de
pasos requeridos o rapidez de convergencia cambie).
En nuestro ejemplo generaremos cotas adicionales para la variable X1
aproximando su valor actual al entero inferior más cercano (P1) y entero superior
más cercano (P2).
La resolución gráfica del problema 1 (P1) nos da como solución
óptima X1=2 y X2=2 que es una solución entera. El valor óptimo del problema 1
es V(P1)=20. Notar que V(P1)<V(P0) lo cual es natural dado que el dominio de
soluciones factibles del P1 es menor (subconjunto) al dominio de soluciones
factibles de P0.
Análogamente la resolución gráfica (Método Gráfico) del problema 2 (P2)
determina que X1=3 y X2=4/3 con V(P2)=20 según se observa a continuación:

Luego no sería del todo necesario seguir desarrollando el algoritmo dado que si
generamos cotas para la variable X2 del P2 en ningún caso podríamos obtener
una solución entera con valor óptimo superior a 20 (valor que reporta en la
función objetivo la actual solución entera de P1) y por tanto podríamos concluir
que X1=2 y X2=2 es la solución óptima del problema entero. No obstante el
siguiente diagrama muestra los pasos adicionales en caso que quisiera agregar
cotas adicionales a partir del P2.
Un argumento similar al expuesto previamente en este caso explicaría la no
necesidad de seguir ramificando el P21. Se propone al lector verificar que se
obtiene la misma solución óptima si luego del P0 ramificamos a través de X2
agregando las restricciones X2<=1 y X2>=2.

3.5 Método heurístico para problemas binaros


Reciben el nombre de algoritmos heurísticos, metaheurísticos o sencillamente
heurísticos. Este término deriva de la palabra griega heuriskein que significa
encontrar o descubrir y se usa en el ámbito de la optimización para describir una
clase de algoritmos de resolución de problemas. En el lenguaje coloquial,
optimizar significa poco más que mejorar; sin embargo, en el contexto científico
la optimización es el proceso de tratar de encontrar la mejor solución posible
para un determinado problema. En un problema de optimización existen
diferentes soluciones, un criterio para discriminar entre ellas y el objetivo es
encontrar la mejor. De forma más precisa, estos problemas se pueden expresar
como encontrar el valor de unas variables de decisión para los que una
determinada función objetivo alcanza su valor máximo o mínimo. El valor de las
variables en ocasiones está sujeto a unas restricciones. Podemos encontrar una
gran cantidad de problemas de optimización, tanto en la industria como en la
ciencia. Desde los clásicos problemas de diseño de redes de telecomunicación
u organización de la producción hasta los más actuales en ingeniería y re-
íngeniería de software, existe una infinidad de problemas teóricos y prácticos
que involucran a la optimización. Algunas clases de problemas de optimización
son relativamente fáciles de resolver. Este es el caso, por ejemplo, de los
problemas lineales, en los que tanto la función objetivo como las restricciones
son expresiones lineales. Estos problemas pueden ser resueltos con el conocido
método Simplex; sin embargo, muchos otros tipos de problemas de optimización
son muy difíciles de resolver. De hecho, la mayor parte de los que podemos
encontrar en la práctica entran dentro de esta categoría. La idea intuitiva de
problema “difícil de resolver” queda reflejada en el término científico NP-hard
utilizado en el contexto de la complejidad algorítmica. En términos coloquiales
podemos decir que un problema de optimización difícil es aquel para el que no
podemos garantizar el encontrar la mejor solución posible en un tiempo
razonable. La existencia de una gran cantidad y variedad de problemas difíciles,
que aparecen en la práctica y que necesitan ser resueltos de forma eficiente,
impulsó el desarrollo de procedimientos eficientes para encontrar buenas
soluciones aunque no fueran óptimas. Estos métodos, en los que la rapidez del
proceso es tan importante como la calidad de la solución obtenida, se denominan
heurísticos o aproximados.
“Un método heurístico es un procedimiento para resolver un problema de
optimización bien definido mediante una aproximación intuitiva, en la que
la estructura del problema se utiliza de forma inteligente para obtener una
buena solución.”
En contraposición a los métodos exactos que proporcionan una solución óptima
del problema, los métodos heurísticos se limitan a proporcionar una buena
solución del problema no necesariamente óptima. Lógicamente, el tiempo
invertido por un método exacto para encontrar la solución óptima de un problema
difícil, si es que existe tal método, es de un orden de magnitud muy superior al
del heurístico (pudiendo llegar a ser tan grande en muchos casos, que sea
inaplicable).
Aunque hemos mencionado el caso de la resolución de un problema difícil,
existen otras razones para utilizar métodos heurísticos, entre las que podemos
destacar:
• El problema es de una naturaleza tal que no se conoce ningún método exacto
para su resolución.
• Aunque existe un método exacto para resolver el problema, su uso es
computacionalmente muy costoso.
• El método heurístico es más flexible que un método exacto, permitiendo, por
ejemplo, la incorporación de condiciones de difícil modelización.
• El método heurístico se utiliza como parte de un procedimiento global que
garantiza el óptimo de un problema. Existen dos posibilidades:
- El método heurístico proporciona una buena solución inicial de partida.
- El método heurístico participa en un paso intermedio del procedimiento, como
por ejemplo las reglas de selección de la variable a entrar en la base en el método
Simplex.
Existen muchos métodos heurísticos de naturaleza muy diferente, por lo que es
complicado dar una clasificación completa. Además, muchos de ellos han sido
diseñados para un problema específico sin posibilidad de generalización o
aplicación a otros problemas similares. El siguiente esquema trata de dar unas
categorías amplias, no excluyentes, en donde ubicar a los heurísticos más
conocidos:
Métodos de Descomposición: El problema original se descompone en
subproblemas más sencillos de resolver, teniendo en cuenta, aunque sea de
manera general, que ambos pertenecen al mismo problema. Métodos Inductivos
La idea de estos métodos es generalizar de versiones pequeñas o más sencillas
al caso completo. Propiedades o técnicas identificadas en estos casos más
fáciles de analizar pueden ser aplicadas al problema completo.
Métodos de Reducción: Consiste en identificar propiedades que se cumplen
mayoritariamente por las buenas soluciones e introducirlas como restricciones
del problema. El objeto es restringir el espacio de soluciones simplificando el
problema. El riesgo obvio es dejar fuera las soluciones óptimas del problema
original.
Métodos Constructivos: Consisten en construir literalmente paso a paso una
solución del problema. Usualmente son métodos deterministas y suelen estar
basados en la mejor elección en cada iteración. Estos métodos han sido muy
utilizados en problemas clásicos como el del viajante. Métodos de Búsqueda
Local A diferencia de los métodos anteriores, los procedimientos de búsqueda o
mejora local comienzan con una solución del problema y la mejoran
progresivamente. El procedimiento realiza en cada paso un movimiento de una
solución a otra con mejor valor. El método finaliza cuando, para una solución, no
existe ninguna solución accesible que la mejore.
3.6 Uso de software
Resolviendo con Tora
TORA es una herramienta computacional que nos sirve para resolver problemas
de Optimización, como paquete cuenta con diversas aplicaciones de las técnicas
de la Investigación de Operaciones. En esta ocasión nos interesa cómo es que
resolvemos nuestros problemas de Programación Entera.
Una vez instalado el programa, al iniciar nos aparece la siguiente pantalla:
Damos Click en "Click Here" y aparece un menú de lo que hace este paquete,
nosotros damos Click en "Integer Programing", es decir Programación Entera.

A continuación nos aparecerá una pantalla para Seleccionar el modo de entrada,


como somos nuevos y no tenemos guardado ningún problema, lo dejamos en
"Enter New Problem" (Ingresar nuevo problema) y para el formato de entrada en
“Decimal Notation" (Notación Decimal) está bien.
Ahora nos aparecerá la siguiente pantalla e ingresamos los siguientes datos:

Y nos aparece lo siguiente:

Llenamos estos recuadros con los coeficientes correspondientes a cada variable,


además del signo de cada restricción y su Bi, como ejemplo nosotros llenamos
el problema de Aplicación. Al terminar damos click en SOLVE MENU y aparece:
Enseguida aparece una pantalla y damos:

A menos que se quiera modificar la entrada o volver a verla, damos click abajo.
Cuando damos "Solve Problem" nos aparece algo similar a la pantalla de
entrada:
Y entonces nos aparece una pestaña para escoger, entre el la solución
automática o guiada por el usuario, para facilitarlo seleccionamos "Automated
B&B"

Entonces nos aparece la solución de la siguiente manera:

Para cualquier aclaración B&B significa Branch and Bound, es decir, para
resolver problemas enteros Tora utiliza el algoritmo de Ramificación y
Acotamiento. Si la solución no llegase a ser factible también aparece el mensaje
en pantalla.
Otros software:

Programa Características Tipo de modelo

-Paquete de herramientas muy versátil que permite el


análisis.
-Mixto
– Resolución de modelos matemáticos, problemas
administrativos, de producción, proyectos, -Entero
inventarios, transporte, entre muchos otros.
puro
– Ofrece una interfaz básica pero amigable, -
-Binario
Resolución de sus modelos de programación lineal,
WINQSB continua o entera.

-Herramienta que forma parte de una serie de


comandos a veces denominados de “análisis Y si”.
-Con Solver, puede buscarse el valor óptimo para una
fórmula de celda, denominada celda objetivo, en una
hoja de cálculo.
-Solver funciona en un grupo de celdas que estén
relacionadas, directa o indirectamente, con la fórmula
-Entero puro
de la celda objetivo.
-Binario
– herramienta adecuada para solucionar problemas de
SOLVER programación lineal, y programación lineal entera. -Mixto

Herramienta simple para formular problemas lineales


y no lineales, programación entera, resolverlos y
analizar su solución.
-El resultado que LINGO nos proporciona es la
optimización
-Uno de los rasgos más poderosos de LINGO es su
aplicación en el lenguaje de modelo matemático. -Mixto

– Otro aspecto es la sección de los datos, que le -Entero


permite aislar los datos de la formulación del modelo.
puro
De hecho LINGO puede leer datos incluso de una hoja
LINGO de cálculo separada, base de datos, o archivo de texto
Herramienta computacional de optimización es un
programa basado en Windows
-Aplicación muy simple, con una interfaz gráfica de
baja calidad.
-Mixto
-Se puede utilizarse en procesadores de 32 y 64 bits
-Entero
-La configuración de pantalla para adecuarse a sus
puro
ajustes de presentación de 800 x 600 y 1024 x 768
TORA pixeles.

-Se presenta una herramienta para resolver modelos


de programación lineal entera. -función objetivo
para variables de decisión
enteras. -Es una
función llamada nbintprog (non binary integer
programming) creada por los autores en el asistente
matemático MATLAB. – Nbintprog tiene como base
matemática una técnica de ramificación y acotación -Mixto
(branch and bound) que junto a estrategias de
-Entero
programación utilizadas presenta características
favorables para la solución de dichos modelo. puro
MATLAB

-Solucionador mediante programación matemática de


alto rendimiento
IBM ILOG
CPLEX Soluciona problemas de programación lineal,
Optimizer programación entera mixta y programación cuadrática -Mixtos

LINDO es un intuitivo programa para resolver


problemas de optimización matemática
Programaciones lineales (continuas, enteras y
binarias).
-Entero puro
-300 variables continuas, 30 variables discretas
Lindo (enteras o binarias) y 150 restricciones. -Binario
BIBLIOGRAFÍAS:
https://sites.google.com/site/programacioentera1501/2-tipos-de-modelos

http://www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi
1. Introducción a la investigación de operaciones - Hillier y Lieberman - Ed. McGraw-
Hill - 1993 - 5ª edición
2. Toma de decisiones por medio de investigación de operaciones
- Thierauf, Robert - Limusa Noriega Editores - 1993
https://www.gestiondeoperaciones.net/programacion-entera/que-es-la-programacion-
entera/

https://www.gestiondeoperaciones.net/programacion-entera/ejemplo-del-algoritmo-de-
branch-and-bound-ramificacion-y-acotamiento/

https://sites.google.com/site/programacionenteranag1011/anexos/resolviendo-con-tora

http://yalma.fime.uanl.mx/~roger/work/teaching/mecbs5122/1-Introduction/Intro-by-
Rafa%20Marti.pdf

https://optimizacinii.wordpress.com/2016/05/08/herramientas-para-programacion-entera/

https://sites.google.com/site/programacionentera/introduccion

ELABORÓ: Alma Rosa Vicente Montejo