Está en la página 1de 11

GUIA PRACTICA3: Programación Entera casos especiales

Programación Binaria

Ejercicio1

Solución:
Ejercicio2

Problema de Asignación en Programación Entera


resuelto con Solver
Cuando necesitamos asignar recursos escasos a determinadas funciones y dichos
recursos no son fraccionables, la utilización de modelos de Programación
Entera resultan ser de utilidad para la toma de decisiones. En este contexto los
problemas de asignación de personal a determinadas tareas es una aplicación típica de la
Programación Entera que a continuación desarrollaremos a través de un ejemplo.
Problema de Asignación
Consideremos una empresa que dispone de 5 ingenieros que deben desarrollar 7
proyectos. La tabla a continuación resume el tiempo que demora cada ingeniero (en
horas) en completar un determinado proyecto. El problema consiste en determinar una
asignación óptima que permita realizar cada uno de los proyectos con la limitante que
por motivos estratégicos cada ingeniero debe desarrollar al menos un proyecto y en
ningún caso hacer más de 2 proyectos. Por supuesto se busca que el tiempo requerido
para realizar los 7 proyectos sea el menor posible.

Una alternativa sería buscar intuitivamente una asignación que cumpla con los requisitos
de la empresa y tenga un bajo tiempo asociado. Sin embargo, este tipo de estrategias de
resolución queda claramente acotada a problemas de tamaño menor y ni siquiera en ese
tipo de situaciones nos asegura la mejor solución posible. Por ello definiremos el
siguiente modelo de optimización de Programación Entera:

1. Variables de Decisión: Utilizamos las siguientes variables de decisión binarias

2. Función Objetivo: Minimizar el tiempo total requerido para completar los proyectos


Donde Tij (parámetros) es el tiempo (en horas) requerido por el ingeniero i en realizar el
proyecto j. Por ejemplo T(A,P5)=7.

3. Restricciones:
Cada proyecto debe ser realizado por un solo ingeniero:

Cada ingeniero debe ser al menos un proyecto y no puede hacer más de 2:

El siguiente tutorial muestra cómo resolver este problema de asignación con Solver de
Excel:

Se puede observar que para efectos de Solver, las variables de decisión binarias se
deben definir como una restricción adicional. También puede resultar que luego de
resolver Solver no encuentre inmediatamente la mejor solución posible. Para enfrentar
esta situación se puede “volver a resolver” sobre la solución que el programa nos haya
proporcionado hasta el momento para verificar si se puede lograr algo mejor. Esta
situación es la que sucedió en el tutorial y a continuación se muestra la solución óptima
(final) encontrada por Solver.

En total se requieren 56 horas para realizar los 7 proyectos. El ingeniero A realiza el P7,
el ingeniero B el P3 y P5, el ingeniero C el P6, el ingeniero D el P2 y P4 y el ingeniero E el
P1. Notar que cada proyecto es realizado por un ingeniero y cada ingeniero al menos
realiza un proyecto, pero no más de 2 proyectos.

https://www.youtube.com/watch?v=m-kxVx_jdmY
Ejercicio3

Problema de la Mochila en Programación Entera


resuelto con OpenSolver
El Problema de la Mochila (conocido también como Knapsack Problem o simplemente
KP) es un problema clásico de la Investigación de Operaciones y en particular de la
Programación Entera. Consiste en un excursionista que debe preparar su mochila, la cual
tiene una capacidad limitada y por tanto no le permite llevar todos los artículos que
quisiera tener en la excursión. Cada artículo que el excursionista puede incluir en la
mochila le reporta una determinada utilidad. Luego el problema consiste en seleccionar
un subconjunto de objetos de forma tal que se maximice la utilidad que el excursionista
obtiene, pero sin sobrepasar la capacidad de acarrear objetos.

En este contexto existen varias aplicaciones que guardan una similitud conceptual con el
Problema de la Mochila y en consecuencia nos podemos beneficiar de la formulación y
resolución de un modelo de optimización matemática para dicho propósito.
Consideremos el siguiente ejemplo:

Problema de la Mochila
Un armador tiene un carguero con capacidad de hasta 700 toneladas. El carguero
transporta contenedores de diferentes pesos para una determinada ruta. En la ruta
actual el carguero puede transportar algunos de los siguientes contenedores:

El analista de la empresa del armador desea determinar el envío (conjunto de


contenedores) que maximiza la carga transportada. Para ello se propone el siguiente
modelo de Programación Entera:
Variables de Decisión:
Función Objetivo: Consiste en maximizar la carga que transportará el carguero.

Restricciones: El peso de la carga transportada no puede exceder la capacidad máxima


del carguero.

Al implementar computacionalmente el problema anterior haciendo uso


de OpenSolver se alcanzan los siguientes resultados:

La solución óptima consiste en transportar los contenedores C1, C2, C3, C4, C8, C9 y
C10, con un valor óptimo de 700 (toneladas), es decir, se utiliza la capacidad completa
del carguero. Notar que otra solución óptima consiste en transportar los contenedores
C1, C3, C4, C5, C6, C7, C8 y C9 lo que reporta un similar valor en la función objetivo.

Ejercicio4

Una empresa de automóviles dispone de tres factorías, A, B y C y de dos centros de distribución, D1 y D2.
Las capacidades de producción de las 3 factorías durante un año son 1000, 1500 y 1200 vehículos,
respectivamente. Las demandas en los centros de producción son de 2300 y 1400 vehículos
respectivamente. El coste de transporte en tren es de 10 pesetas por kilómetro y vehículo. Si la matriz de
distancias entre las factorías y los centros de distribución vienen dada por la siguiente tabla, ¿cuantos
vehículos deben fabricarse en cada factoría para que el transporte desde cada una de las factorías a cada
uno de los centros de distribución sea mínimo?
Programación Mixta

Ejercicio1

Problema de Inclusión de Costos Fijos en


Programación Entera
por GEO Tutoriales el 03/07/2015 en Programación Entera 0

La estructura de cobro utilizadas en general por las compañías de servicios donde el


cliente debe pagar un valor fijo sólo por su utilización (independiente del nivel de
consumo y/o eventualmente acotado a un máximo permitido) y un valor
variable proporcional al consumo, son una práctica común en el esquema de fijación de
precios. Esto suele ser el caso de las compañías de luz, agua, gas, teléfono, entre otras,
donde el sólo hecho de tener una red operativa genera costos para la empresa los cuales
son traspasados en parte o en su totalidad a los usuarios en un cargo fijo o de
mantención más un cargo variable por consumo.
El artículo que presentamos a continuación busca, desde la perspectiva del cliente,
minimizar el pago asociado a una cuenta telefónica mensual a través de un modelo
de Programación Entera, lo que constituye un problema de inclusión de costos fijos.
Cabe destacar que la complejidad del problema es menor y dado los datos se podría
resolver por simple inspección, no obstante, nuestro interés es mostrar un marco de
análisis pertinente a este tipo de problemas.
Ejemplo Inclusión de Costos Fijos en Programación
Entera
Tres empresas telefónicas pidieron que me suscribiera a su servicio de larga distancia
dentro del país. MaBell cobra US$16 fijos por mes, más US$0,25 por minuto. PaBell
cobra US$25 por mes, pero el costo por minuto se reduce a US$0,21. Y con PhoneBell, la
tarifa fija es de US$18 y el costo por minuto de US$0,22. Suelo hacer un promedio de
200 minutos de llamadas de larga distancia al mes. Suponiendo que no pague el cargo
fijo si no hago llamadas y que puedo repartir a voluntad mis llamadas entre las tres
empresas, ¿Cómo debo repartir las llamadas entre las tres empresas para
minimizar la cuenta telefónica mensual?.
Variables de Decisión:

Función Objetivo:

Donde   representa el costo fijo mensual asociado a la compañía i y   el costo variable
por minuto de larga distancia nacional correspondiente a la compañía i. Para mayor
claridad se ha marcado con color amarillo y verde los elementos de costos fijos y
variables (respectivamente) en la función objetivo.

Restricciones:

Donde (1) garantiza que se satisfaga el consumo mensual de llamadas, (2) que se
realizan llamadas sólo a través de la(s) compañía(s) donde se asume el cargo fijo
mensual y (3) impone las condiciones de no negatividad para las variables continuas  .

A continuación se muestra los resultados de la implementación computacional


en Solver para el problema de telefonía que considera la inclusión de costos fijos.
La solución óptima consiste en  ,  ,  ,  ,  ,  , es
decir, se utiliza exclusivamente la compañía 3 (PhoneBell) y se cursan los 200 minutos
mensuales de llamadas de larga distancia a través de dicha compañía. El valor
óptimo es de US$62 que representa el costo mínimo de la cuenta telefónica mensual
(US$18+200*US$0,22).
1. Problema de asignación

2. Problema de asignación
3. Problema de asignación

https://www.youtube.com/watch?v=BNxO-ExwEpk

4. Programación entera mixta


Se pide: seleccionar los centros de depósito a construir y la política de transporte de basura que
minimiza los costos totales.

También podría gustarte