Está en la página 1de 73

Programación Lineal - Introducción 1

“Los que mandan generalmente mueven las manos y dicen


‘He considerado todas las alternativas’. Pero eso es casi
siempre basura. Lo más probable es que no pudiesen
estudiar todas las combinaciones”.

George B. Dantzig, el creador de la programación lineal en una


entrevista publicada en The College Mathematical Journal, marzo
de 1986.

Ingeniería de Procesos
(Carrera de Ingeniería en Alimentos)
Investigación Operativa
(Carrera de Ingeniería Industrial)
Investigación Operativa
(Carrera de Sistemas de Información)
Universidad Nacional de Luján
2003

Contenido:

I. A modo de Introducción
II. Introducción a modelos y planteo de problemas.
III. Programación Lineal por Modelo Gráfico
Gráfica de Restricciones
Casos Especiales
Análisis de Sensibilidad Gráfico
Análisis de Sensibilidad de los Coeficientes del Funcional
Análisis de Sensibilidad de los valores del lado derecho
Análisis Paramétrico de los valores del lado derecho
IV. Programación Lineal por Algoritmo Simplex
Otras Conversiones
Conversión de algoritmo en forma geométrica a forma
algebraica
V. Programación Lineal. Enfoque Formal
Modelo General
Terminología
Primer modelo: solución Gráfica
Segundo Modelo: Método Simplex
Interpretación de los modelos
Análisis de sensibilidad o análisis post óptimo
Límites de variación de los términos independientes
Límites de variación de coeficientes del funcional
Dualidad
VI. Programación Lineal en PC
WinQSB
LINDO
EXCEL
Introducción.
Solver (1era. Parte)
Programación Lineal - Introducción 2

Considere el problema de asignar 70 hombres a 70 empleos. Una en su concepto, llevarían a la meta. Esto distaba mucho de lo que sería
“actividad” consiste en asignar el i-ésimo hombre al j-ésimo empleo. Las honestamente estudiar todas las combinaciones alternativas de las
restricciones son dos: en primer lugar hay 70 hombres, cada uno de los acciones a seguir para elegir la mejor combinación. Los que mandan
cuales debe asignarse a un puesto, y en segundo lugar, cada uno de generalmente mueven las manos y dicen “He considerado todas las
los 70 puestos existentes debe estar ocupado. El nivel de una actividad alternativas”. Pero eso es casi siempre basura. Lo más probable es que
puede ser 1, lo cual indica que está siendo usada, o 0, lo cual significa no pudiesen estudiar todas las combinaciones. Antes de 1947 era
que no. En consecuencia hay 2 x 70 = 140 restricciones y 70 x 70 = inconcebible pensar en la existencia de una herramienta como la
4900 actividades con 4900 variables correspondientes de decisión uno- programación lineal que permitiese examinar millones de
cero. Por desgracia también hay factorial de 70 permutaciones o formas combinaciones. No había algoritmo ni herramienta computacional que
de hacer las asignaciones. El problema consiste en comparar estas pudiera hacer eso.
factorial de 70 formas y elegir la que sea óptima o “mejor” según algún No descubrí el modelo de la programación lineal en un
criterio previamente establecido. instante, sino que tuvo un proceso de evolución. Se dedicó casi un año
En el ejemplo anterior, factorial de 70 es un número muy completo a la tarea de decidir si mi modelo podría ser utilizado en la
grande. A fin de tener una idea de que tan grande es, supóngase que se formulación de problemas prácticos de distribución de tiempos. Como
hubiese tenido una computadora IBM del tipo main-frame en el instante Ud. sabe, la planeación y la distribución de tiempos se llevaron a una
en que ocurrió el Big-Bang hace quince millones de años. ¿Habría escala inmensa durante la guerra. El funcionamiento de la Fuerza Aérea
podido, entre ese entonces y ahora, examinar todas las soluciones fue equivalente al funcionamiento de la economía de toda una nación.
posibles? ¡No! No obstante, supóngase que se hubiese tenido una En el proceso intervinieron cientos de miles de personas. La logística
computadora aún más poderosa, una que pudiese examinar mil millones tuvo una magnitud difícil de entender para alguien que no haya estado
de asignaciones por segundo. La respuesta seguiría siendo negativa. allí. Mi colega Marshall Wood y yo revisamos miles de situaciones
Aún si la tierra se llenase con computadoras cuyas rapideces fueran de tomadas de nuestra experiencia durante la guerra.
nanosegundos, todas ellas trabajando en paralelo, la respuesta aun Las reglas básicas empleadas en la planeación se
sería no. Sin embargo, si existiesen diez tierras, todas ellas con expresaban en un formato completamente distinto del que se emplea en
computadoras del tipo mencionado, todas programadas en paralelo la actualidad para formular un programa lineal. Lo que hicimos fue
desde el instante del Big-Bang hasta que el sol fuese una esfera fría, revisar estas reglas una por una y demostrar que casi todas ellas
entonces quizá la respuesta podría ser sí. Lo notable es que el método podían reformularse aceptablemente en un formato de programación
Simplex, con la ayuda de una computadora moderna, puede resolver lineal. Pero no todas. En algunos casos era necesario tomar en cuenta
este problema en una fracción de segundo. el carácter discreto de las variables y las no convexidades.
Cuando el problema de la planeación (SIC) fue formulado Cuando formulé por primera vez mi modelo de
inicialmente para la Fuerza Aérea, no existía la noción exacta de una programación lineal, lo hice sin una función objetivo. Estuve luchando
función objetivo, la idea de una meta claramente definida. Por supuesto, por algún tiempo con la adición de reglas básicas para elegir de entre
teníamos sólo un falso respeto hacia el concepto de objetivo. En el las soluciones factibles la que en algún sentido fuese “óptima”. Pero
discurso de los militares escuché a menudo decir, “nuestro objetivo es pronto abandoné esta idea y la sustituí por la de una función objetivo a
ganar la guerra”. En el mundo de los negocios se escucharía quizás ser maximizada. El modelo que formulé no estaba hecho
“nuestro objetivo es obtener ganancias”. Sin embargo era imposible específicamente para fines militares. Podía aplicarse a toda clase de
hallar alguna relación directa entre la meta establecida y las acciones problemas de planeación; todo lo que tenía que hacerse era cambiar los
emprendidas para tal fin. nombres de las columnas y los renglones, y entonces era aplicable a un
Si se estudiaba con cuidado el paso siguiente, se podía problema de planeación económica lo mismo que a un problema de
ver que algún líder había promulgado un montón de reglas básicas que, planeación industrial.

I - Introducción
Tanto el acápite como el texto precedente, fue obtenido de la página Web de George Dantzig, creador del método que
se desarrolla en nuestro apunte. La dirección de tal página es
http://members.tripod.com/operativa/dantzig/Dantzig.html
como en todos los demás casos, el equipo docente de estas asignaturas recomienda el uso del siguiente software:
Storm, WinQSB (los que se adaptan a la terminología y estructura de lo dictado en clase y que figura en estos apuntes
-incluyendo los de transporte, asignación, inventarios, proyectos-), Microsoft Excel, Microsoft Project (únicamente para
proyectos) y LINDO.
El contenido de la presente edición se adapta a los programas vigentes. Sin embargo hay temas que están
desarrollados con una amplitud mayor que la exigida por el programa de la asignatura. Por ejemplo, el capítulo de
Administración y Proyectos comienza con una parte dedicada a los fundamentos de los métodos PERT y CPM,
cubriendo así los contenidos programados para Investigación Operativa, pero excediendo los de Ingeniería de
Procesos, cuyos alumnos estarán interesados en la segunda parte (técnicas de choque y uso de software)
Para el uso correcto del CD Rom aconsejamos leer detenidamente el archivo léame.

Gustavo Chijani. Alejandro Roberti. 2003.

NOTA
El reportaje fue reproducido literalmente, por lo tanto se respetó la palabra “planeación” por “planeamiento”, debido a
que así está escrita en la Web.
Programación Lineal - Índice General 3

ÍNDICE GENERAL DEL CAPÍTULO


I. A modo de Introducción 1 A.2 De lados derechos negativos a lados derechos positivos 29
II. Introducción a Modelos y Planteo de Problemas 4 A.3 De desigualdad a igualdad 29
A. Definiciones 4 A.4 De variables negativas y/o irrestrictas a no negativas 30
A.1. Sistema, Modelo 4 A.5 El modelo convertido 30
B. Pasos para formular un modelo 5 B. Conversión del algoritmo: forma geométrica a forma algebraica 30
B.1 Definición del Problema 5 V - Programación lineal. Enfoque formal 34
B.2 Desarrollo de un modelo - recolección de datos 6 A. Modelo general 34
B.3 Resolución del modelo matemático 6 B. Terminología 34
B.4 Comprobación de la validez de la solución hallada 7 C. Ejemplo con Solución Gráfica 35
B. 5 Modificación del modelo 7 D. Método Simplex 36
C. Usos de los modelos 8 D.1 Algunas consideraciones a tener en cuenta 38
D. Técnicas para construir modelos matemáticos 8 E. Interpretación de los modelos 39
D.1 1era etapa: Identificación de las variables de decisión 8 F. Análisis de sensibilidad o análisis post óptimo 41
D.2 2da etapa: Identificación de datos del problema 9 F.1 Límites de variación de los términos independientes 41
D.3 3ra etapa: Formulación de la función objetivo 9 F.1.a) La variable slack está en la solución 41
D.4 4ta etapa: Identificación de las restricciones 10 F.1.b) La variable slack no está en la solución 41
E. Formulación matemática del problema 10 F.2 Límites de variación de coeficientes del funcional 42
F. Problemas de Redes 10 G. Dualidad 42
F.1 Identificación de las variables de decisión 11 G.1 Pasos para convertir un primal en un dual 42
F.2 Identificación de la función Objetivo 12 VI - Programación lineal en PC 45
F.3 Identificación de las restricciones 12 A. WinQSB 45
G. Problemas con variables binarias 13 A.1 Cambios en un parámetro (Análisis de sensibilidad ) 52
G.1 Identificación de las variables de decisión 13 Análisis Paramétrico 54
G.2 Identificación de la función Objetivo 13 B. LINDO 54
G.3 Identificación de las restricciones 14 C. EXCEL. Introducción - Uso de Microsoft Excel 57
G.4 Planteo del modelo completo 14 C.1 Funciones disponibles 59
III - Programación lineal. Modelo gráfico 15 C.2 Ejercicios 61
A. Gráfica de Restricciones 15 C.3 Arrastre y copia de celdas 61
B. Casos especiales 18 C.4 SOLVER 62
C. Análisis de sensibilidad gráfico 19 B.4.a). Planteo del problema 62
C.1 Análisis de sensibilidad de los coeficientes del funcional 19 B.4.b) Planteo de las restricciones 63
C.2 Análisis de sensibilidad para los valores del lado derecho 21 C.5 El problema de QA en Excel 67
C.3 Análisis paramétrico de los valores del lado derecho 24 Anexo: Funciones extra en Excel 73
IV - Programación lineal. Fundamentos del algoritmo Simplex 27
A. Otras conversiones 29 D. Complemento sobre LINDO 71
A.1 De minimizante a maximizante 29

ÍNDICE DE FIGURAS E ILUSTRACIONES


III - Programación Lineal. Modelo Gráfico WinQSB (Continuación)
1. Gráfica de Restricciones 15 35 Solución paso a paso 48
2. Área permitida por la restricción 1 16 36 Iteraciones del SIMPLEX 49
3. Área de soluciones factibles 17 37 Informe Combinado 49
4. Trazado de la función objetivo 17 38 Controles de formato de tabla 49
5. Función objetivo: igualdad de pendientes... 18 39 Otras presentaciones de resultados 50
6. Determinación de vértices del área factible 18 40 Informe sumario 50
7. Nueva restricción que anula las anteriores 19 41 Pantalla de selección análisis paramétrico 51
8. Área factible y recta que pasa por el punto C... 20 42 Análisis Paramétrico restricción 1 51
9. Cambio de x1 20 43 Gráfico transaccional 51
10. ¿Hasta donde pueden cambiarse los coef... ? 21 44 Análisis de resultados 52
11. Como varía gráficamente la restricción 1 si... 22 45 Forma normal 52
12. Punto de máximo desplazamiento de la rest.1 22 46 Dual 52
13 Punto inferior de máximo desplazamiento... 23 47 Análisis de sensibilidad de los coeficientes 53
14 Sensibilidad de la restricción 1 23 48 Análisis de sensibilidad vector disponibilidades 53
15 Restricciones originales 24 49 Selección de restricciones 53
16 Restricción 1 desplazada por debajo de 140 25 50 Repetición de la figura 42 53
17 Restricción 1 desplazada por debajo de 120 25 51 Análisis paramétrico restricción 2 53
18 Diagrama transaccional para la restricción 1 26 52 Análisis paramétrico restricción 3 53
19 Diagrama transaccional para la restricción 2 27 LINDO
53 Edición en pantalla de datos 55
IV - Programación lineal. Fundamentos del Algoritmo Simplex 54 Análisis de sensibilidad 55
20 Modelo gráfico del problema del café 27 55 Estado de la optimización 55
21 Diagrama de flujo del algoritmo de búsqueda... 28 Excel
22 Coordenadas de los vértices. 31 56 Pantalla principal de Microsoft Excel 56
23 Coordenadas de vértices. Cambio de básicas 32 57 Guardar como... 56
58 Nuevo nombre de libro 57
59 Operación directa de suma 57
V - Programación lineal. Enfoque formal 60 Sumatoria y asistente para funciones 57
24 Gráfica de restricciones 35 61 Asistente para funciones, paso 1 59
25 Punto pivote 38 62 Asistente para funciones, paso 2 59
26 Nueva restricción 38 63 Suma de rangos 59
64 Arrastre de celdas 61
65 Planteo del problema en SOLVER 62
66 Llamado de la macro 62
VI - Programación lineal en PC 67 Parámetros de Solver 63
WinQSB 68 a Agregar restricción 63
27 Menú principal 45 68 b Sentido de la desigualdad 63
28 Ingreso de datos: manual o desde un archivo 46 69 Problema completo 64
29 Pantalla de especificación del problema 46 70 Opciones de Solver 64
30 Carga de datos 46 71 Resultados 64
31 Cambio de datos 47 72 Informe de respuestas 66
32 Resolver el problema 47 73 Informe de sensibilidad 66
33 Selección de límites 48 74 Informe de límites 66
34 Solución gráfica problema alcoholes 48 75 Carga de l problema de QA en Excel 67
76 Función de la restricción 1 67
77 Función de la restricción 2 67
78 Parámetros del Solver 69
79 Resultados en la hoja de cálculo 69
80 Informe de límites QA 69
81 Informe de sensibilidad QA 69
82 Informe de respuestas QA 69
Anexo. Complementos 70
Programación Lineal. 4

II. Modelos y Planteo de Problemas

Investigación Operativa
Ciertos problemas de índole compleja han dado origen a la Investigación de Operaciones o a la Investigación
Operativa. Por ejemplo: una empresa con múltiples líneas de producción y posibilidad de obtener diversos productos
finales que busca maximizar sus ganancias o minimizar sus costos. Inversión de capital en distintas posibilidades o
fondos, de manera tal que el riesgo y la ganancia conjunta sea aceptable, programas de inversión en mantenimiento
preventivo que buscan bajar los costos operativos, operaciones complejas como la construcción de una represa,
formulación de productos optimizando las disponibilidades de materias primas, etc.

La naturaleza brinda la información necesaria para resolver estos problemas. Si dicha información se conoce con
certeza, entonces el problema a resolver es determinístico, caso contrario – la información no se conoce o no se
conoce con certeza – es estocástico. En el desarrollo del curso se formulan propuestas para resolver ambos tipos de
problemas.

La historia de esta disciplina comienza muy poco antes de la Segunda Guerra Mundial, en la década del 30, y se
desarrolla durante y después del conflicto.

A. Definiciones

A1 Sistema
Se puede definir sistema como un conjunto de objetos que reconoce relaciones entre ellos.
• Cada objeto relacionado se denomina Componente.
• Se denomina límites a la definición del conjunto de componentes e interrelaciones.

Por ejemplo, puede definirse el sistema brazo-reloj pues hay relaciones entre los dos objetos. Sin embargo puede
haber relaciones con más objetos (los ojos del usuario que quiere consultar la hora, la tetera de porcelana si al
consultar la hora se corre el riesgo de golpearla, el planeta tierra por el efecto que sobre su órbita puede causar el
ademán de consulta de hora) Es evidente que el límite puede colocarse en cualquier punto, y se lo hace en
función de analizar solamente aquellas relaciones (o interrelaciones) que interesan o que son significativas (casi
siempre es despreciable el efecto de consultar la hora sobre la estabilidad de la órbita terrestre)
• Obviamente, al colocarle al sistema límites arbitrarios aparecen las relaciones ínter y extra sistémicas, que son
aquellas que se manifiestan entre los objetos pertenecientes al sistema y entre éste y el entorno, respectivamente.
Existen varias tipologías de sistemas: los Sistemas abiertos son aquellos con intercambios activos con el entorno: si
llega un estimulo del entorno se produce la señal de salida correspondiente (respuesta) Los Sistemas cerrados son
aquellos en que las señales de estímulo y de respuesta entre el sistema y el entorno no existen o han sido suprimidas
del análisis.

Un caso particular de sistema abierto es el de los Sistemas con retroalimentación, donde la característica es que la
señal de respuesta al estímulo recibido por el entorno afecta al mismo entorno que lo produjo.

A2 Modelo
Mediante la utilización de modelos es posible representar un sistema, resaltando los elementos componentes y las
relaciones entre ellos.

Hay que tener en cuenta que un modelo es un sistema en sí mismo, y que generalmente se caracteriza por poseer
menos interrelaciones y elementos que el sistema que representa.

Existen varios tipos de modelos:


• el plano, o lay out, de una planta es un Modelo icónico.
• Los modelos analógicos son aquellos que explican las relaciones mediante la aplicación de lo conocido con
fenómenos comparables: el modelo de la resistencia eléctrica de Ohm se utiliza para los fenómenos de
transporte de energía térmica, los economistas hablan de flujo de dinero, en analogía con un modelo
hidráulico: taponamiento, drenaje de capitales, suba de nivel de tasas, etc.
• Los modelos matemáticos, son capaces de presentar mediante números abstractos todo lo ocurrido durante
el mes en los ingresos y egresos de la siempre en cero cuenta de caja de ahorro.
• Los modelos simbólicos representan ciertas relaciones sistémicas mediante símbolos, como el que utilizan
los químicos, que a un fenómeno tan complejo como la reacción de ionización de la sal gema en agua lo
representan con
Programación Lineal. 5

ClNa + H2O ↔ Cl + Na + HO + H ,
- + - +

• Los modelos deterministas son aquellos en los cuales los componentes están relacionados entre sí por
funciones conocidas y perfectamente predecibles.
• Los modelos estacionarios son los que describen sistemas y sus comportamientos independientemente de
los fenómenos que ocurren en el inicio o en el fin de las relaciones (por ejemplo, el modelo de universo
heliocéntrico describe a la tierra girando alrededor del sol, sin tener en cuenta el resto del universo ni lo
que ocurrió cuando éste comenzó, su evolución – como llegó el sol a ese estado – y su futuro)
• Por último se mencionan los modelos dinámicos, que son aquellos cuyo propio comportamiento se
modifica a medida que es utilizado como representación, ya que recibe y emite información desde y al
sistema que representa a fin de adaptarse a la realidad. Generalmente se van resolviendo secuencialmente.

El uso de modelos simbólicos y matemáticos es el más difundido, pues se trata de elementos baratos y simples de
adaptar.

Sin embargo, en cualquier caso, el modelo será una simplificación, por lo tanto contendrá solamente algunas
variables y jamás todas (si las tuviera a todas sería la realidad y no un modelo). Decidir que variables se usan y cuales
se descartan implica el uso de hipótesis y de un modelo de control.

B. Pasos para formular un modelo:


i) Estudiar el problema, identificar las variables de control y las no controlables. Identificar los
parámetros. Evitar los prejuicios.
ii) Tratar de expresar el problema matemáticamente. (Símbolos)
iii) Definir el campo de aplicación y tratar de aislarlo de las interacciones.
iv) Verificar si el problema tiene una solución y si el modelo puede usarse en otros problemas.
v) Probar la solución: verificar el grado de descripción de la realidad.
vi) Ajustar el modelo y volver a empezar.

Definición del
problema

Desarrollo de un Resolución del


modelo modelo
matemático y matemático SOLUCIÓN
recolección de
datos

Algoritmo de
reformulación del Comprobación de
modelo la validez de la
solución hallada

Implementación
B1. Definición del Problema
Consiste en la identificación y la capacidad de describir con precisión el problema enfrentado. Implica conocer el
objetivo global, las limitaciones fundamentales y las limitaciones convenientes a introducir. Muchas veces no se tiene
conocimiento de estos elementos, lo cual requiere de un profundo análisis y -generalmente- negociaciones con los
miembros del equipo de trabajo.

La definición del objetivo suele ser un punto de conflicto. Puede haber objetivos que sean antagónicos y es difícil
elegir uno sobre otro: el objetivo de minimizar los costos de producción suele ser antagónico con el objetivo de
maximizar la calidad del producto terminado. ¿Cuál es el objetivo global? Si hay una decisión política o empresarial
sobre los costos de producción, entonces habrá que establecer una restricción de nivel de calidad. Y en todo caso
¿cuales serán las unidades de medida?.
Programación Lineal. 6

B.2 Desarrollo de un modelo matemático y recolección de datos.


Mediante el desarrollo de un caso, se seguirán, uno a uno, los pasos para formular un modelo correcto según fueran
enunciados precedentemente.

CASO:
El Departamento de beneficios de una empresa desea determinar que fracción del dinero disponible
debe invertirse, para lo cual tiene 2 posibilidades: invertir en fondos de acciones o en bonos.
Se dispone de la siguiente información:
a. La tasa anual de crecimiento promedio para las acciones es del 10%
b. La tasa anual de crecimiento para los bonos es del 6%
c. Ninguno de los dos fondos puede tener más del 75% de la inversión total, por razones de seguridad.
d. La cantidad invertida en acciones no debe exceder del doble que lo que se invierte en bonos.
Se pide calcular
¿Cuántas posibilidades de inversión hay?
¿Cuál sería el modelo que permite tomar decisiones?
¿Cuál sería la mejor combinación de inversiones?

B.2.1. Variables de decisión y función objetivo


Para llevar este problema a una forma matemática se debe comenzar por definir que es aquello sobre lo cual se puede
decidir. En la terminología que se utiliza a partir de acá, esta definición será
IDENTIFICAR LAS VARIABLES DE DECISIÓN:
En este caso, las variables de decisión serán dos, a las que se les asignó un símbolo arbitrario:
S= fracción del capital a invertir en acciones,
B= fracción del capital a invertir en bonos1
El enunciado del problema obliga a encontrar valores para S y para B que hagan una retribución máxima anual y que
cumplan con todos los requisitos del problema.
Esos valores serán hallados para cumplir un objetivo: maximizar la retribución anual esperada satisfaciendo las
restricciones impuestas.
¿Cómo puede plantearse el problema en forma de modelo?
Se espera que cada peso invertido en acciones tenga un rendimiento de 10 centavos y de 6 centavos en bonos. Si S es
la fracción del capital a invertir en acciones, entonces la retribución anual de ese capital será 0,10S. Por ello la
expresión matemática que demuestra el objetivo de este modelo deberá tener en cuenta la contribución de cada una
de las posibilidades: 0,10.S y 0,06.B. Con estos elementos se podrá expresar el objetivo global, que, en la
terminología que estamos presentando, será la
función objetivo
Maximizar 0,10S + 0,06B
Como puede verse, la función consta de dos partes: la intención (maximizar) y la función operativa que
tiene coeficientes y variables de decisión asociadas a ellos.

B.2.2. Restricciones
Pero esto solo no alcanza para definir el problema como un modelo matemático: existen las limitaciones o
restricciones:

a) Ninguna inversión puede superar el 75%, lo que se escribe así:


S ≤ 0,75
B ≤ 0,75
ambas desigualdades representan los límites superiores de inversión en acciones y bonos, respectivamente.

b) La inversión en acciones no debe superar el doble de la inversión en bonos, lo que se representa así:
S ≤ 2B
o también así
S − 2B ≤ 0

c) No pueden haber inversiones negativas, lo que representa el límite inferior de inversión en cada alternativa (cero es
no invertir)
S≥0
B≥0
El modelo, ahora completo, se escribe uniendo todas estas partes:

1
La existencia de variables de decisión o de control permite suponer desde ahora que puede haber variables no controlables
Programación Lineal. 7

Maximizar 0,10S + 0,06B


Sujeto a: S ≤ 0,75
B ≤ 0,75
S− 2B ≤ 0
S ≥0
B ≥0
En este caso existen: una función objetivo y restricciones escritas en función de variables de decisión (cuánto se
habrá de invertir en cada una) y de otras informaciones conocidas (datos): cuánto rinden cada uno de los fondos y
cuánto como máximo y como mínimo se permite invertir en cada uno de ellos: estas son variables y/o parámetros sin
control.
En la práctica es difícil encontrar un problema como éste. Generalmente hay que estimar los datos. Y el modelo va a
ser tan bueno como la estimación de los datos, nunca mejor.

B.2.3. Resolución del modelo matemático.


En este caso significa hallar los mejores valores para S y para B. Hay dos tipos de técnicas a utilizar:
a) Optimización: se encuentran los mejores valores para las variables, que hagan máximo el objetivo y satisfagan
simultáneamente todas las limitaciones
b) Heurísticas: Producen valores aceptables para la función objetivo y satisfacen las restricciones.
Una solución posible para este problema, (se verá más adelante que efectivamente lo es) es:
S = 0,75
B = 0,75
que reemplazado en la función objetivo da
0,10 x 0,75 + 0,06 x 0,75 = 0,12
o sea que cada peso da una utilidad de doce centavos.

B.2.4. Comprobación de la validez de la solución hallada.


Siempre debe realizarse este paso, porque el modelo puede haber sido imperfectamente planteado y no fueron
previstas todas las restricciones, ya que se pudo haber omitido o simplificado algún parámetro importante, los datos
pueden estar mal estimados o mal cargados.

Un ejemplo es la solución recién hallada: no se puede invertir simultáneamente el 75% en S y el 75% en B.


¿Que ocurrió?. Faltó explicitar una restricción muy importante, que parece tan obvia que es muy fácil olvidarla. Es
esta:
S +B = 1
Significa que la inversión en acciones más la que se realiza en bonos no puede ser ni mayor ni menor que el capital
disponible. Podría haberse escrito S + B ≤ 1, igual o menor que lo disponible, pero ¿está en el enunciado?
Si el modelo no funciona hay que revisarlo, incluir nuevas restricciones, eliminar restricciones o replantear con más
exactitud las limitaciones reales. A veces es necesario usar la experiencia para adaptar las soluciones dadas por el
modelo. Otras veces, aun estando todo bien y con resultados válidos, las soluciones son impracticables. Es difícil, por
ejemplo, incluir en un modelo datos que tienen que ver con conductas. Otra fuente de disturbios son los datos que
cambian con el transcurso del tiempo: las acciones pueden caer en el futuro, no dejando de ser válido el dato de su
evolución anterior.

B.5. Modificación del modelo


Hay varias formas de proceder a modificar un modelo con el objetivo de corregir falencias, conocidas o no. Puede
haber algoritmos de incorporación de variables y parámetros. En el caso visto, el nuevo modelo, reformulado será:
Maximizar 0,10S + 0,06B
Sujeto a: S ≤ 0,75
B ≤ 0,75
S − 2B ≤ 0
S + B=1
S ≥0
B≥0
Cuya solución es
S = 0,6667
B = 0,3333

que significa
que por cada peso invertido habrá una ganancia de 0,6667 x 0,10 + 0,3333 x 0,06 = 0,08667
Programación Lineal. 8

C. Usos de los modelos


Los modelos ayudan a tomar dos tipos de decisiones:
a) Estratégicas: son decisiones de única vez, afectan intervalos de tiempo largos. Son del tipo:
¿Se debe abrir una nueva línea de producción? ¿Debería hacer inventarios en períodos regulares o solo cuando caigan
los niveles?
Este tipo de decisiones implican impactos grandes, por lo cual se justifica invertir esfuerzo y tiempo en sus modelos y
resoluciones.
b) Operacionales: afectan procesos en curso y períodos más cortos de tiempo. ¿Cómo reprogramar el trabajo de la
semana cada semana? Sobre los tres productos de la fábrica, en estas condiciones de mercado y con estos recursos de
materias primas, ¿cual es la producción a realizar este mes?
Estos modelos se usan repetidamente, por lo cual también se justifica invertir en ellos. Las ventajas de los modelos,
en general, son:
1. Lograr objetivos con recursos escasos
2. Evaluar el impacto y costo de un cambio sin necesidad de gastar en producirlo previamente.
3. Se puede evaluar la fortaleza de los resultados propuestos mediante el análisis de sensibilidad: ¿que sucedería
si...?. Por ejemplo ¿que pasaría si el fondo de acciones diera el 8% en vez del 10%?

D. Técnicas para construir modelos matemáticos


Se expondrán los pasos a seguir y algunas técnicas a emplear para formular modelos determinísticos. No
se pretende exhibir un método único. Simplemente es una propuesta metodológica básica.

Sea el siguiente caso:


Planeamiento de la producción en Química Argentina (QA).
QA produce dos alcoholes, QA1 y QA2, en su planta San Nicolás. El sector de producción opera 40
horas semanales empleando a cinco trabajadores de tiempo completo y a dos que trabajan quince horas
semanales. Se dispone de una línea de siete máquinas, operadas por cualquiera de ellos y, una vez
terminado el producto, éste pasa al sector de rectificado, que tiene siete equipos operados por seis
empleados de tiempo completo y uno de 10 horas semanales.
QA no tiene problemas de materias primas para ambos productos. Puede vender todo lo que quiera de
QA1 pero tiene una demanda limitada a 120000 litros semanales de QA2.
¿Que cantidad de cada producto debe producir QA para maximizar las ganancias si se sabe que QA1
deja una ganancia neta de 0,30 $ por litro y que QA2 de 0,50$?.

Lo que corresponde es formular el mismo problema en forma matemática, lo cual puede hacerse siguiendo
cuatro etapas a fin de obtener una metodología para el desarrollo de cualquier modelo:

D.1. 1era. etapa: Identificación de las variables de decisión


¿Que información hay que presentar al personal de producción y al de rectificación para indicar lo que
deben hacer?

La respuesta es: el número de litros/semana a producir de QA1 y de QA2. Las variables deberían adoptar
un nombre simbólico fácil de identificar, por ejemplo, P por Producción. Así sería:
P1: produccón de miles de litros semanales de QA1
P2 producción de miles de litros semanales de QA2.

Estas variables deben ser precisas, no dejar ambigüedades: P1 será la producción de QA1 expresada en
mil litros/semana y no en otra unidad.

Para identificar las variables de decisión se deben poder identificar:


a) los elementos que afectan los costos, las ganancias o lo que represente el objetivo global del
problema.
b) los elementos que se pueden elegir y/o controlar con libertad.
c) las decisiones a tomar
d) la información que deberá disponer quien quiere llevar adelante la solución propuesta cuando se
solucione el problema.

D.2. 2da. etapa: Identificación de datos del problema


Para determinar las cantidades reales de los productos a producir a efectos de maximizar las ganancias se
necesita saber:
Programación Lineal. 9

• Número de horas-hombre de trabajo disponibles en el sector de elaboración.


• Número de horas-hombre disponibles en el sector de rectificación.
• Ganancias por la venta de cada uno de los productos.
Como este es un problema determinístico, es necesario obtener estos datos o acceder a ellos en el
momento de formular el problema. Tales datos son:
• Elaboración: 5 hombres x 40 hs/hombre = 200 hs/hombre
2 hombres x 15 hs/hombre = 30 hs/hombre
Total 230 hs/hombre en elaboración.
• Refinación: 6 hombres x 40 hs/hombre = 240 hs/hombre
1 hombre x 10 hs/hombre = 10 hs/hombre
Total 250 hs/hombre
• El margen de ganancia es de $ 0,30/litro QA1 y de $ 0,50/litro de QA2. En términos de las variables,
los márgenes son
300 $/1000 litros de QA1
500 $/1000 litros de QA2
Como se puede ver, la diferencia entre las variables y los datos, es que el operador no puede controlar los
valores de los datos. No se podría cambiar la capacidad de trabajo de un hombre o de una máquina, pero
sí se podría afectar a más o menos hombres o máquinas. Debería prestarse atención a este detalle, se
volverá sobre él. También ocurre que, cuando se avanza en el planteo del problema, puede ser necesario
ampliar datos, obtener valores más completos u otros que no parecían ser necesarios al principio e,
incluso, descartar información que no es pertinente.

D.3. 3ra. Etapa: Formulación de la función objetivo.


Es el planteo del problema en forma matemática. Así como para determinar las variables de decisión se
preguntaba que había que informar al jefe de producción, para formular la función objetivo deberá
plantearse la pregunta ¿qué se espera obtener con este modelo? Es la información que se dará al escalón
jerárquico superior y se relaciona con el objetivo global. Debe notarse que se han planteado dos reportes:
el primero dirigido al nivel operativo: cuánto se fabricará; el otro al nivel superior: cuánto se va a ganar.

Para formular el objetivo generalmente se requiere recorrer tres etapas:


1. Establecer el objetivo en forma verbal, que en este caso es:
Maximizar la ganancia semanal del total de la producción de QA1 y de QA2, determinando
las cantidades a producir de cada uno de los alcoholes..
2. Si es posible, descomponer el objetivo en operaciones aritméticas básicas (suma, resta o producto) de
cantidades individuales:
Maximizar = (Ganancia por producir QA1)x(cantidad a producir de QA1) + (Ganancia por
producir QA2)x(cantidad a producir de QA2)
3. Expresar las cantidades individuales usando las variables y los datos del problema.

Para poder efectuar esta tercera etapa es útil elegir algunos valores específicos y así poder saber como
usar la función objetivo. Esta técnica puede ser denominada trabajo con un ejemplo específico (o
especificación del modelo). Se elige un valor cualquiera -razonable- para comenzar:
En el caso, puede suponerse una producción de 10 mil litros de QA1 y de 20 mil de QA2:
Ganancia de QA1 x Producción de QA1 = 300 x 10 = $ 3000
Ganancia de QA2 x Producción de QA2 = 500 x 20 = $ 10000
Ganancia total 13000
esto no es resolver el problema sino mostrar como plantearlo, ahora es sencillo transformarlo:
Ganancia de QA1 x Producción de QA1 → 300P1
Ganancia de QA2 x Producción de QA2 → 500P2
Ganancia total = 300P1 + 500P2
por tanto, la función objetivo será
Maximizar 300P1 + 500P2

D.4. 4ta. etapa: Identificación de las restricciones.


Es evidente que los problemas de este tipo no tienen solución si no se plantean las restricciones o límites.
Estas restricciones surgen, en general, de:
• Limitaciones físicas. (horas de trabajo, capacidad de producción, etc.)
Programación Lineal. 10

• Limitaciones de ventas (por ejemplo compromisos con un cliente, políticas de ventas, etc.)
• Limitaciones externas (por ejemplo la imposibilidad de colocar en el mercado por encima de cierta
cantidad)
• Relaciones entre variables (por ejemplo la imposibilidad que la suma de variables sea superior a un
número fijo, lo que vale en porcentajes, tantos por uno o partes de una unidad productiva)
• Restricciones lógicas (por ejemplo no puede producirse –1000 litros de alcohol o no pueden fabricarse
6,35 pianos)

Se consideran a continuación las restricciones del ejemplo:


1. Limitación física: límite de horas/hombre disponibles para elaboración
En forma verbal: las horas totales en elaboración no pueden superar las 230.
Descomposición: las horas usadas para QA1 + las horas usadas para QA2 no pueden superar las 230
Matemática: Es evidente que aquí falta conocer cuanto tiempo se emplea en la elaboración de cada
producto. Supóngase que se obtienen los siguientes datos buscando en la planta:

Horas/hombre por 1000 litros


QA1 QA2
Elaboración 2 1
Rectificación 1 2
Es fácil calcular las horas usando un ejemplo específico:
Horas para 15 mil litros de QA1 = 2 x 15 = 30
Horas para 10 mil litros de QA2 = 1 x 10 = 10
Total de horas para elaboración = 2 x 15 + 1 x 10 = 40
Con este pequeño ejemplo se podrá escribir la restricción en forma genérica, para cualquier valor de
las variables establecidas al principio:
2 P1 + 1P2 ≤ 230
2. Limitación física: límite de horas/hombre disponibles para rectificación
1 P1 + 2P2 ≤ 250
3. Limitación externa: restricción de límite de producción.
No pueden venderse más de 120 mil litros de QA2:
P2 ≤ 120
4. Limitaciones lógicas: restricción de no negatividad
P1 ≥0
P2 ≥0

E. Formulación matemática del problema:


Maximizar 300P1 + 500P2 Ganancias
Sujeto a:
2P1 + 1P2 ≤ 230 elaboración
1P1 + 2P2 ≤ 250 rectificación
P2 ≤ 120 limitación de QA2
P1 ≥ 0 no negatividad
P2 ≥ 0 no negatividad.

El resultado del problema, como se verá posteriormente, es:


P1 = 70
P2 = 90
O sea que 70000 litros de QA1, 90000 de QA2 dan una ganancia de $ 66000 semanales.

F. Problemas de redes
Como un caso concreto de redes se puede mostrar un tipo generalizado de problemas que se identifican
con los problemas de transporte: la distribución de productos terminados desde las plantas a los almacenes
o mercados. Generalmente se busca disminuir los costos, y a todos ellos se los denominan genéricamente
problemas de transporte.

Resulta necesario conocer ciertos datos del problema:


1. demandas de cada centro destino (cliente, mercado, etc.)
Programación Lineal. 11

2. capacidad de elaboración de cada centro de producción (planta, fábrica)


3. costo de transporte de cada fábrica a cada destino

XW Motor tiene tres plantas de montaje de un modelo determinado en Estados Unidos, Japón y Norte de África. La
planta de Japón produce 2000 unidades/mes, en cambio cada una de las otras dos solo puede producir un máximo de
1700 en ese lapso. Los vehículos se venden en cuatro centros de distribución: Asia, Sud América, Norte América y
Sud África-Oceanía, que demandan 1700, 1000, 1500 y 1200 unidades/mes. La tabla muestra los costos de embarque
cada unidad de una planta a un centro:

DISTRIBUIDORES
PLANTAS Asia Sudamer NorthAm Oceaní
EE UU 5 3 2 6
Japón 4 7 8 10
Euro 6 5 3 8

Este problema permite formular, antes de expresarlo matemáticamente, un diagrama de redes. Cada
elemento de salida o llegada (planta o centro de distribución es un nodo, y se representa con un círculo.
Cada línea indica la posibilidad de llevar un vehículo entre esos dos nodos. Junto a cada nodo se coloca la
oferta o demanda, según sea emisor o receptor y en cada línea (llamada arco) se indica el costo de
transporte.

F.1. Identificación de las variables de decisión

Nuevamente, hay que identificar:


a) los elementos que afectas los costos, las ganancias o lo que represente el objetivo global del problema.
b) los elementos que puede elegir y/o controlar con libertad.
c) las decisiones que tiene que tomar
d) la información que deberá disponer quien quiere llevar adelante la solución propuesta cuando se
solucione el problema.

Al identificar estos elementos, se verá que se establece que hay doce variables de decisión: el número de
autos a embarcar desde cada centro a cada distribuidor. Estas variables se pueden identificar de cualquier
manera: x1, x2, ... o bien x11, x12, x13, x14, x21,.... o bien más explícitamente xUA, ,....

La siguiente es una tabla de identificación de variables de decisión:


DISTRIBUIDORES
PLANTAS Asia Sud Am. Norteam. Oceanía
(A) (S) (N) (O)
EE.UU. (U) xUA xUS xUN xUO
Japón (J) xJA xJS xJN xJO
Europa (E) xEA xES xEN xEO
luego el diagrama de redes se completa como sigue
Programación Lineal. 12

Estas variables se pueden expresar

En forma verbal: Minimizar los costos de transporte desde todas las plantas a todos los distribuidores.

Descomposición: Minimizar costo de transporte desde EE.UU. hasta Asia, hasta Sud América, hasta
Norteamérica. y hasta Oceanía, más el costo de transporte desde Japón hasta Asia, hasta..., más el costo de
transporte desde Europa hasta... Entendiendo costo de transporte como el costo de transportar una unidad
entre un origen y un destino multiplicado por el número de unidades transportadas entre esos extremos.
Si se hace el ejemplo específico y se pasa a una expresión matemática, queda:

Minimizar (5xUA + 3xUS + 2xUN + 6xUO) +


(4xJA + 7xJS + 8xJN + 10xJO) +
(6xEA + 5xES + 3xEN + 8xEO)

F.3. Identificación de restricciones.

Se analiza averiguando que elementos son los que impiden elegir cualquier valor. Por ejemplo, para
minimizar costos de transporte, lo ideal es no transportar. ¿Se puede elegir el cero?.

Las restricciones surgen de considerar:


a) el embarque de cada planta no debe exceder lo que la planta produce
b) el recibo de cada centro debe ser lo que necesita para satisfacer la demanda. Pero hay que averiguar si
no se puede enviar mas que lo que demanda. Parece que este no es el caso, pero no puede haber
ambigüedades.
c) el envío debe ser de números positivos enteros, (no es posible enviar 0,345 vehículos).

Todas estas restricciones deberán ser convertidas a expresiones matemáticas, para hacerlo es necesario
tener en cuenta que en cada nodo de salida no se puede superar la capacidad de producción de la planta:
desde EE.UU., por ejemplo, el número total de unidades despachadas será igual a la suma de las unidades
despachadas a Asia, más las enviadas a Sud América., más las que fueron a Norteamérica más las que
fueron a Oceanía. Pero hay una restricción: esa suma no puede ser superior a 1700.

xUA + xUS + xUN + xUO ≤ 1700

Lo mismo para cada una de las otras dos terminales.

Luego hay que observar las restricciones de demanda: cada distribuidor recibirá lo que necesita (lo que
solicitó en firme): Las unidades recibidas en Asia serán la suma de las despachadas desde EE.UU. más las
de Japón más las de Europa, y debe ser igual a su demanda (1700)
xUA + xJA + xEA = 1700
y así para los otros tres distribuidores.
Programación Lineal. 13

Finalmente hay que considerar las restricciones de no negatividad y de enteros. El resultado final será:

Minimizar (5xUA + 3xUS + 2xUN + 6xUO) +


(4xJA + 7xJS + 8xJN + 10xJO) +
(6xEA + 5xES + 3xEN + 8xEO)
Sujeto a:
xUA + xUS + xUN + xUO = 1700 Capacidad EE.UU.
xJA + xJS + xJN + xJO = 2000 Capacidad Japón
xEA + xES + xEN+ xEO = 1700 Capacidad Europa
xUA + xJA + xEA = 1700 Demanda Asia
xUS + xJS + xES = 1000 Demanda Sud Am.
xUN + xJN + xEN = 1500 Demanda Norteam.
xUO + xJO + xEO = 1200 Demanda Oceanía
xij ≥ 0 y entero para i=U, J, E; j= A, S, N, O

La solución del problema es:


DISTRIBUIDORES
PLANTAS Asia Sud Am. Norteam. Ocean.
EE.UU. 0 800 0 900
Japón 1700 0 0 300
Europa 0 200 1500 0

G. Problemas con variables binarias.

En ingeniería muchas veces aparecen problemas de toma de decisión que implican estrategias definidas
por acciones binarias tales como se hace o no: Compra de una planta, realizar un proyecto, renovar un
equipo. Generalmente estas decisiones se codifican con 0-1, que representan una variable entera
restringida a esos valores.
La compañía de inversores EXC recibe cuatro propuestas de inversión las cuales fueron analizadas y por
ello se sabe que tienen un rendimiento alto con un riesgo aceptable. También hay una buena estimación
del retorno esperado en un horizonte de 4 años. Los proyectos requieren de un programa de inversiones
pautado en esos cuatro años. La compañía EXC dispone de fondos a invertir y de un cronograma de
desembolsos para cubrir esos cuatro años de los proyectos. Por otro lado, la inversión en
telecomunicaciones y en electrónica comprende algunos aspectos tecnológicos que se superponen, por
lo tanto se ha decidido invertir en uno u otro rubro pero no en ambos.
Los fondos que no se usen un año no están disponibles en el año siguiente, se destinan a otros fines.
Todos los datos mencionados se sintetizan en la siguiente tabla:
PROYECTO AÑO AÑO 2 AÑO 3 AÑO 4 RETORNO
1
FARMACÉUTICO 60 10 10 10 250
TELECOMUNICACIONES. 35 35 35 35 375
ELECTRÓNICA 10 50 50 10 275
SUPERMERCADOS 15 10 10 40 140
FONDOS DISPONIBLES 90 80 80 50

G.1. Identificación de las variables de decisión


La pregunta es ¿que se puede controlar libremente en este problema?, y la respuesta es: puede aceptarse
o rechazarse la posibilidad de invertir en cada una de las propuestas:
F → inversión en farmacia, F= 1, se invierte, F = 0 no se invierte
T → inversión en telecomunicaciones, T = 1, se invierte, T = 0, no se invierte
y así E y S las otras variables. Nótese que 0 y 1 pueden haber sido 1 y 0, −1 y 1 o cualquier otro valor
arbitrario. Estas variables de decisión son diferentes a las anteriores en tanto que el valor que pueden
asumir ahora está restringido fuertemente a dos números enteros positivos, mientras que antes eran
positivos (miles de litros de alcohol) o positivos enteros (autos a transportar).

G.2. Identificación de la función objetivo


Como el rendimiento total será la suma de los rendimientos en cada una de las cuatro compañías, debe
formularse la siguiente pregunta: ¿Cuánto rendirá lo invertido en -por ejemplo- farmacia?. El rendimiento
será el retorno esperado por unidad monetaria multiplicado por la decisión de invertir:
Programación Lineal. 14

Rendimiento en farmacia = 250 F


(si la decisión, F, vale 1 el retorno es 250, caso contrario es cero)
Entonces el rendimiento total será
Rendimiento total = 250 F + 375 T + 275 E + 140 C
G.3. Identificación de las restricciones
Se pueden identificar los siguientes grupos de restricciones:
1) disponibilidad financiera anual.
2) Imposibilidad de invertir simultáneamente en electrónica y comunicaciones.
3) Restricciones lógicas.
1) La disponibilidad monetaria anual.
La limitación de fondos por año impide seleccionar los cuatro proyectos a la vez. Como la cifra es
variable, se necesita una restricción de este tipo por año:

Los fondos totales a invertir en cada proyecto seleccionado en el primer año deberán ser, como máximo,
de 90

Y por otro lado, cada proyecto aporta acumulativamente al total:

Los fondos totales a invertir en el primer año = invertido en farmacia + invertido en electrónica +
invertido en telecomunicaciones + invertido en supermercado.

Si esto se pasa a símbolos matemáticos para el primer año, se tiene que la suma de lo que necesita cada
proyecto por la variable de decisión (cuyo valor será 0 o 1) dará la inversión total:
60F + 35T + 10E + 15S ≤ 90 (año 1)
y usando los datos de la tabla, se completan los demás años:
10F + 35T + 50E + 10S ≤ 80 (año 2)
10F + 35T + 50E + 10S ≤ 80 (año 3)
10F + 35T + 10E + 40S ≤ 50 (año 4)

2) Imposibilidad de invertir simultáneamente en electrónica y en telecomunicaciones:


Se puede plantear como T E = 0
o como T + E ≤ 1
3) Restricciones lógicas
F, T, E y S son 0 o 1 y enteros.

G.4. Planteo del modelo completo:


Maximizar:
Rendimiento total = 250 F + 375 T + 275 E + 140 C
Sujeto a:
60F + 35T + 10E + 15S ≤ 90 (año 1)
10F + 35T + 50E + 10S ≤ 80 (año 2)
10F + 35T + 50E + 10S ≤ 80 (año 3)
10F + 35T + 10E + 40S ≤ 50 (año 4)
T+E≤1
F, T, E y S son 0 o 1 y enteros.
Programación Lineal. 15

III - Programación Lineal. Modelo gráfico


En este apartado se comenzará a desarrollar el método de resolución de algunos de los modelos
planteados. El conjunto de métodos básicos será denominado Programación Lineal. Para hacerlo en
forma comprensiva se seguirá un caso particular, el problema de Química Argentina utilizado en el
planteo general de modelos, a fin de disponer un método de resolución de los modelos que se han visto
hasta ahora. El que se sigue es el planteo completo del problema:

Planeamiento de la producción en Química Argentina.


QA produce dos alcoholes, QA1 y QA2, en su planta San Nicolás. La planta tiene dos secciones: producción y rectificado. En
producción se opera 40 horas semanales empleando a cinco trabajadores de tiempo completo y a dos que trabajan quince horas
semanales. Se dispone de una línea de siete máquinas, operadas por cualquiera de ellos, disponiéndose así de hasta 230 horas de
trabajo, y, una vez terminado el producto, éste pasa al sector de rectificado, que tiene siete equipos operados por seis empleados de
tiempo completo y uno de 10 horas semanales, proporcionando así una disponibilidad de hasta 250 horas de trabajo.
Las horas requeridas en los dos sectores para producir mil litros de cada alcohol son:

QA1 QA2
Producción 2 1
Rectificado 1 2
Ganancias ($/l) 0,30 0,50

En el cuadro anterior también se muestran los márgenes de ganancias para cada producto.
QA no tiene problemas de materias primas para ambos productos. Puede vender todo lo que quiera de QA1 pero tiene una demanda
limitada a 120000 litros semanales de QA2.

¿Que cantidad semanal de cada producto debe producir QA para maximizar las ganancias?.

Siendo x1 el número de miles de litros de QA1 a producir y x2 el de QA2, y estableciendo que los
coeficientes se expresan en cientos de pesos, el problema se plantea:

Maximizar: Z = 3x1 + 5x2


Sujeto a: 2x1 + x2 ≤ 230 restricción 1, de producción
x1 + 2x2 ≤ 250 restricción 2, de purificación
x2 ≤ 120 restricción 3, de demanda
x1 ≥ 0 restricción 4, de no negatividad
x2 ≥ 0 restricción 5, de no negatividad

A. Gráfica de restricciones

Se considerará una restricción por vez. Para graficar cada restricción se comenzará ignorando el signo de
la desigualdad y tratando la función como si fuera una igualdad. Luego se considerará la desigualdad.

Las últimas dos restricciones coinciden con los ejes de coordenadas y, si se tiene en cuenta el sentido de la
desigualdad, determinan como espacio factible solamente al primer cuadrante.

Si se grafican todas las restricciones como igualdades se obtiene:


Programación Lineal. 16

Fig. 1 - Gráfica de Restricciones

El siguiente paso es determinar, para cada restricción, cuáles son los valores factibles: aquellos valores
permitidos por la inecuación. Para la primera restricción son aquellos que cumplen con 2x1 + 2x2 ≤ 230,
lo cual significa que la recta graficada (2x1 + 2x2 = 230), es uno de los valores factibles, pero también los
son todos los puntos ubicados a la izquierda de dicha recta, que se muestran en la siguiente figura como
un área sombreada:

Fig. 2. Área permitida por la restricción 1

Una vez que fueron consideradas todas las restricciones queda determinada un área factible que es la
intersección de las áreas determinadas por cada restricción:
Programación Lineal. 17

Fig. 3. Área de soluciones factibles

Ese polígono encierra ahora un área que contempla exactamente todas las restricciones: el eje x2 a la
derecha es la última restricción, el eje x1 hacia arriba es la anteúltima y así sucesivamente. Significa que
cualquier solución al problema debe ubicarse forzosamente dentro del área sombreada o en sus límites, ya
que este conjunto determina lo admitido por las restricciones.

Fig. 4. Trazado de la Función Objetivo

En el gráfico de la figura 4 se ha agregado la función objetivo dibujada arbitrariamente en un valor de


x2 = 30 y de x1 = 20. Resulta evidente que pueden graficarse para cada valor de x1 y de x2 una curva 3x1
+ 5x2. La que se muestra está igualada a 210, pero hay un manojo de esas curvas que caen dentro del
espacio de soluciones factibles:
Programación Lineal. 18

Obviamente será la solución óptima


aquella que pase por alguno de los puntos
extremos del área sombreada, que
conforma un polígono. Los puntos
extremos son los vértices de ese polígono
y se designan con las letras A, B, C, D y E
en la Fig. 6:

Fig. 5. Función Objetivo: Igualdad de pendientes


para múltiples soluciones

Fig. 6. Determinación de vértices del área factible

Los valores de estos vértices para las coordenadas x1 y x2, y el valor de la función objetivo son:
Vértice x1 x2 Función Objetivo
(Z)
A 0 0 0
B 115 0 345
C 70 90 660
D 10 120 630
E 0 120 600
Como el problema es maximizante se seleccionará aquel vértice que corresponde al mayor valor de la
función objetivo. El vértice C presenta una respuesta máxima de la función objetivo de 660 (66000),
indica, por tanto, asignar una producción de 70 y 90 mil litros de QA1 y QA2 respectivamente.
La solución analítica de este problema se encuentra resolviendo el sistema de ecuaciones que corresponde
a las dos restricciones involucradas en cada vértice, con lo que se obtienen las coordenadas del mismo.
Particularmente en el caso del C:
 x1 + x 2 = 230

 x1 + 2 x 2 = 250
Finalmente, la expresión del resultado del modelo es:
Producción semanal de QA1: 70000 litros
Producción semanal de QA2: 90000 litros
Ganancia semanal : Z = 0,3x70000 + 0,5x90000 = 300x70 + 500x90 = $ 66000
Programación Lineal. 19

B. Casos especiales
Pueden presentarse los siguientes casos:
a) Programa lineal con una solución no factible: es un programa con una solución incapaz de satisfacer
simultáneamente todas las restricciones. Como ejemplo, si se agrega una nueva restricción al problema
anterior, sea x1 ≥ 220 (Se solicita producir no menos de 220000 litros de QA1) y luego se grafica el
área factible de soluciones, se verá que no hay espacio de soluciones posibles.
b) Modelos sin límites. Ocurre cuando por defecto de restricciones el área de soluciones factibles es
ilimitada. Para ejemplificar, debería cambiarse una restricción al problema original: que la restricción
x2 ≤ 120 pase a ser x2 ≥ 120. Este cambio provoca un área abierta e ilimitada. Sin embargo debe
observarse que un área de este tipo no siempre significa que el problema no tenga solución. Un área
abierta a la derecha en un problema de minimización puede tener solución óptima satisfactoria para
todas las restricciones.
c) Modelos con restricciones redundantes. Se trata de una restricción que -esté o no presente- no afecta el
área de factibilidad. Por ejemplo, la restricción
x1 + x2 ≤ 300
en el problema original, no altera el área de soluciones.

Fig. 7. Nueva restricción que anula las anteriores


d) Soluciones óptimas conjuntas: se encuentran dos vértices consecutivos como soluciones óptimas.
Significa que el segmento que une esos vértices tiene la misma pendiente del funcional, por lo tanto
cualquier punto de ese segmento (inclusive los vértices) es una solución alternativa del problema y hay
una restricción paralela a la función objetivo

C. Análisis de sensibilidad gráfico


Una vez resuelto el modelo es posible que se planteen ciertas preguntas, como por ejemplo
• ¿qué sucede con la solución hallada si se decide bajar el precio de QA1 en $25 por cada 1000 litros?
Implica cambiar el coeficiente del funcional de 300 por mil litros a 275 por mil litros ¿cómo afecta
esto al plan de producción?
• ¿Qué sucede en la solución óptima y en la función objetivo si se modifica un valor del lado derecho de
las restricciones? Por ejemplo, que los empleados trabajan en producción 10 horas en vez de 15, lo
que disminuye la disponibilidad de horas de 230 a 220.

C.1. Análisis de sensibilidad de los coeficientes del funcional


Se determinará qué ocurre con la solución óptima y con la función objetivo cuando se modifica un
coeficiente de ella. Un caso es cuando se hacen estimaciones con un cierto porcentaje de error: ¿que
ocurre cuando se sitúa en los extremos de ese porcentaje?. Por ejemplo una ganancia de 10$ con 5% de
error se calcula sobre la base de 10$, pero ¿qué pasa si en realidad es 9,5$? ¿y si es 10,5?
Programación Lineal. 20

Fig. 8. Área factible y recta que pasa por el punto C que corresponde a Z=660

En el problema demostrativo de los alcoholes, la fábrica produce 70 mil litros de QA1 y 90 mil de QA2,
pero se intentará reducir el precio de venta de QA1 en $25 por cada mil litros ante la eventualidad de una
importación de un producto similar.
Se recuerda la solución óptima anteriormente hallada:

Vértice x1 x2 Funcional
A 0 0 0
B 115 0 345
C 70 90 660 ← Es el vértice que corresponde al máximo
D 10 120 630
E 0 120 600

La disminución de $25 en el precio de venta de 1000 litros de QA1 provoca la disminución del margen de
ganancia de $300 a 275, por lo tanto ¿qué pasa con la solución óptima −70 mil y 90 mil− cuando el
coeficiente de x1 pasa de 3 a 2,75 (cientos de pesos)?
Una forma de averiguar es hacer todo de nuevo con el nuevo coeficiente, pero se puede responder sin
necesidad de rehacer el problema.
En primer lugar se examinará como cambia la función objetivo (ver Fig. 9) cuando se cambian los valores
del coeficiente de x1:
Fig. 9. Cambio de coeficientes
de las variables de decisión x1

Evidentemente lo que
cambia es la pendiente de
la función. Si estas
funciones se trasladan al
gráfico completo se
observa que hay
pendientes que se escapan de las restricciones (valores altos del coeficiente de x1 impiden encontrar una
solución para la primera restricción)
Se escribe la función objetivo reemplazando el coeficiente que se analiza por una variable b
bx1 + 5x2
se obtiene que la pendiente de Z es −(b/5), y dado que la pendiente de la primera restricción es −(2/1), el
límite se encontrará cuando ambas pendientes sean iguales, por tanto
−(b/5) = − (2/1)
b = 10
lo que quiere decir que mientras el coeficiente de x1 que, inicialmente es 3, no supere el valor de 10, la
solución actual sigue siendo la óptima, aunque el valor del funcional es diferente. Por ejemplo, cambiar de
3 a 4 el coeficiente de x1 la solución 70/90 sigue siendo óptima, pero el valor del funcional (z) pasa
de 3x1 + 5x2 = 660
a 4x1 + 5x2 = 730.
Programación Lineal. 21

En cambio, cuando disminuye se observa que la pendiente de Z se acerca a la de la restricción 2 (ver Fig.
10). El cálculo a realizar será entonces
−(b/5) = −(1/2)
b = 2,5
significa que mientras no se disminuya el coeficiente de x1 a menos de 2,5 la solución será óptima y el
valor del funcional cambiará.
En síntesis:
Para mantener la solución óptima hallada (x1 =70; x2 =90), el coeficiente de x1 podrá variar desde 2,50
hasta 10.

Fig. 10. ¿Hasta donde pueden cambiarse los coeficientes de x1 cuando Z=Zopt?

La respuesta formal, entonces, es que la disminución de ganancias para QA1 se puede hacer sin alterar el
plan de producción, aunque disminuirán las ganancias totales.

C.2. Análisis de sensibilidad para los valores del lado derecho


Se sigue con el problema de estudio de caso

Una vez encontrada la solución y presentado el informe que indica elaborar 70 y 90 respectivamente de
cada alcohol, es posible que se formulen preguntas como las que siguen:
• ¿Que pasaría con las ganancias si cada uno de los empleados de tiempo parcial de producción
trabajara 10 horas en lugar de 15?
• Debido a que el recurso mano de obra se utiliza por completo ¿aumenta la ganancia si uno de
los empleados de tiempo parcial pasa a trabajar tiempo completo y se prescinde del otro?
• ¿Que pasaría si se contrata otro empleado de tiempo completo en rectificado?
Estas preguntas modifican, al plantearse, la estructura del problema. Así, la primera restricción que fijaba
el límite de recurso disponible en horas hombre en 230 cambia a un valor de 220. Se podría expresar así:
¿que ocurre con el funcional cuando la restricción 1 cambia su límite a 220?
La segunda, entonces, sería: ¿Que ocurre con la función objetivo cuando la restricción 1 pasa a tener
una disponibilidad de 240?
La tercera: ¿Que ocurre con el funcional cuando la restricción 2 pasa a valer en el lado derecho 290 en
lugar de 250 hh?
Se analizará gráficamente la incidencia de cambio en una restricción. La primera restricción,
originalmente fijada como ≤ 230 se puede graficar para valores distintos como 100, 200, 300 siguiendo el
criterio de reemplazar la desigualdad por una igualdad:
Programación Lineal. 22

300
250
200
150
b=100
100

x2
b=200
50
0 b=300
-50 0 20 40 60 80 100 120
-100
-150

x1

Fig. 11. Como varía gráficamente la restricción 1 si se cambian las disponibilidades de horas hombre.

Para determinar entonces hasta que punto puede moverse la restricción se convierte el límite derecho en
una variable:
2x1 + x2 = b
tal como se hizo para graficar. Esta recta puede incrementarse moviéndola hacia la derecha hasta que pase
por el punto H, cuyas coordenadas son x1 = 250 y x2 = 0. En ese lugar el valor de b se calcula
reemplazando x1 y x2 por sus valores como coordenadas del punto H:

2 x 250 + 0 = 500

Fig. 12. Punto de


máximo
desplazamiento de la
restricción 1

Esto se hace
porque la
solución primitiva es la intersección de las dos restricciones y este punto es el última posible de
intersección dentro del primer cuadrante. Entonces la restricción 1 puede desplazarse paralelamente a sí
misma hasta x1 = 250 como máximo para que la respuesta original siga siendo válida.
Para calcular el limite inferior del desplazamiento, o sea, hasta donde puede moverse sin que la solución
sea la intersección de las restricciones 1 y 3, se procede igual:
2x1 + x2 = a
Las coordenadas del límite inferior serán x1 = 10 y x2 = 120:
2 x 10 + 120 = 140
que es el límite de desplazamiento inferior de la restricción 1.
Programación Lineal. 23

Todo el conjunto significa que estos


serán los extremos de variabilidad de
la restricción 1, si no cambian los
otros datos del problema. El óptimo
sigue siendo la intersección de las
restricciones 1 y 2. Pero los valores
que asumen las variables cambian.

Fig. 13. Punto inferior de máximo


desplazamiento de la restricción 1.

Valor del lado derecho Valor de las variables en el óptimo Valor del funcional en el
de la restricción 1 óptimo (Z)
X1 x2
140 10 120 630
200 50 100 650
230 70 90 660
300 116,7 66,7 683,6
500 250 0 750
Como este cambio en el funcional sigue un incremento lineal, se puede calcular la pendiente del cambio,
por ejemplo:
Pendiente = (Ganancia cuando la restricción vale 500 − ganancia cuando la restricción vale 140)/(500−140)= 0,333

Lo que significa que por cada hora


adicional de mano de obra disponible
por encima del valor de 230 y hasta 500
el margen de ganancias se incrementará
en 0,33 $: este valor es el precio
sombra del recurso.
De idéntica manera podría calcularse el
precio sombra asociado con la
restricción 2:

Fig. 14. Sensibilidad de la restricción 1


Programación Lineal. 24

Valor del lado derecho Valor de las variables en el óptimo Valor del funcional en el
de la restricción 2 óptimo (Z)
x1 x2
115 115 0 345
200 86,7 56,7 543,33
250 70 90 660
275 61,7 106,7 718,33
295 55 120 765

Pendiente = 2,33
Lo que significa que por cada hora adicional del recurso mano de obra en rectificado, por encima del
valor de 250 y hasta 295 horas, el margen de ganancias se incrementa en $ 233,33 o que por cada hora de
recorte desde 250 hasta 115 se pierde $233,33

Calcular el margen de ganancias de QA si cada uno de los empleados de tiempo parcial de producción trabaja 10
horas en lugar de 15.
Rta.: El valor de la restricción 1 pasa de 230 a 220. Este cambio cae dentro del intervalo 140−500:
Nueva ganancia = vieja ganancia − precio sombra x incremento hs mano de obra=
Nueva ganancia = 660 − 0,33 x 10 = 656,667 → 65666,70

Calcular el margen de ganancias de QA si uno de los empleados tiempo parcial de producción pasa a tiempo completo
y se prescinde del otro.
Rta.: El valor de la restricción 1 se incrementa a 240, aun dentro del intervalo.
Nueva ganancia = vieja ganancia + precio sombra x incremento hs mano de obra
Nueva ganancia = 660 + 0,33 x 10 = 663,33 → 66333

Calcular el margen de ganancia si se contrata un obrero más de tiempo completo en rectificado.


Rta.: El valor de la restricción 2 pasa de 250 a 290 en un intervalo permisible de 115-295:
Nueva ganancia = vieja ganancia + precio sombra x incremento hs. mano de obra
Nueva ganancia = 660 + 2,33 x 40 = 753,2 → 75320

C.3. Análisis paramétrico de los valores del lado derecho


El análisis anterior brinda respuestas ante posibles cambios mientras los coeficientes se mantengan dentro
del intervalo de sensibilidad. Ahora se tratará de evaluar lo que ocurre fuera de ese intervalo. Por ejemplo,
puede plantearse la posibilidad de reducir el personal de elaboración a dos obreros de tiempo completo y
uno de 30 horas semanales. Es como plantear el problema en los siguientes términos: Averigüe lo que
sucede con el margen de ganancias óptimo, si el valor del lado derecho de la restricción 1 pasa de 230 a
110 (dos de 40hs más uno de 30hs).
Debe observarse que el valor nuevo está fuera del intervalo de sensibilidad 140-500 calculado para la
restricción 1. El análisis paramétrico permite evaluar cualquier cambio en una restricción particular.

Fig. 15. Restricciones originales


Programación Lineal. 25

Si se examinan nuevamente las restricciones originales (Fig. 15), se verá que mientras la restricción 1 no
disminuya debajo de 140, la solución será la intersección de las restricciones 1 y 2, pero cuando cae
debajo de 140 (Fig. 16) la solución pasa a ser la intersección de las restricciones 1 y 3, por lo que el
precio sombra cambia en el punto 140

Fig. 16. Restricción 1 desplazada por debajo de 140

Así, el nuevo precio sombra para el intervalo 120-140 será 1,5 y la ganancia nueva será:
Ganancia nueva = ganancia en 140 hs − precio sombra x número de horas debajo de 140.
Si la restricción se reduce por debajo de 120, pero arriba de cero, la solución será la intersección de las
restricciones 1 y 4 (Fig. 17)

Fig. 17. Restricción 1 desplazada por debajo de 120


Programación Lineal. 26

A partir de ese punto la ganancia será


la ganancia con las 120 hs – precio
sombra por número de horas debajo de
120.
Con toda esta información es simple
construir un diagrama que indique
como varía cada restricción: este
diagrama denominado transaccional se
muestra en la Fig. 18 para la restricción
1 y en la 19 para la 2.

Obsérvese que disponer de más de 500


horas en elaboración no reporta más
ganancias.

Fig. 18. Diagrama transaccional para la restricción 1

Fig. 19. Diagrama transaccional para la restricción 2


Programación Lineal. 27

IV - Fundamentos del Algoritmo Simplex


Supermercados “CD” elabora dos tipos de café para vender en los locales de su cadena: Fuerte y Suave. En un mes
determinado se disponen de 200 toneladas de grano de café y se disponen hasta 300 horas de horno para tostado.
El café Fuerte insume una tonelada de grano por tonelada producida y 1 h de horno. La ganancia que produce es de $
3 mil por tonelada. A este tipo de café se lo codifica x1.
El café suave insume una tonelada de grano por tonelada producida y 2 h de horno. La ganancia que produce es de $
5 mil por tonelada. Se lo codifica x2.
El problema se modeliza:
Maximizar 3x1 + 5x2 (maximizar la ganancia neta)
Sujeto a x1 + x2 ≤ 200 (restricción de cantidad en inventario)
x1 + 2x2 ≤ 300 (restricción de tiempo de horno disponible)
x1 y x2 ≥ 0
La solución gráfica del problema es:

Punto x1 x2 Z
A 0 0 0
B 200 0 600
C 100 100 800 ←Optimo
D 0 150 750

Fig. 20. Modelo gráfico del problema del café

Se recuerda como se encontró esta solución óptima, para lo que existen dos alternativas, a saber:
• trazando sucesivas rectas que representen el funcional hasta dar con la que pasa por un punto extremo
y brinda el máximo valor (en la Fig. 20 se representó una de estas rectas:
la recta 3x1 + 5x2 = 500). Esta alternativa no podría realizarse si se tuvieran más de tres variables.
• Enumerando los puntos extremos del área de soluciones factibles encontrando el valor de x1 y de x2
para cada uno de ellos, calculando luego el valor de la función objetivo en cada punto y seleccionando
el valor máximo encontrado (Tabla que acompaña la Fig. 20)
Esta última alternativa, sin embargo, puede escribirse de manera genérica pensándola como un algoritmo
que permita examinar cada uno de los puntos extremos (vértices) del área de soluciones factibles:
1. Determinar un punto inicial para el análisis.
2. Calcular del valor del funcional en ese punto.
3. Examinar los puntos vecinos inmediatos y calcular el funcional en cada uno de ellos.
4. ¿Existe un valor mejor en alguno de ellos? Si la respuesta es SI, reemplazar ese punto por el actual e ir
al paso 3. Si la respuesta es NO el punto actual es la solución óptima. (Ver diagrama de flujo)
Programación Lineal. 28

Fig. 21. Diagrama de flujo del algoritmo de búsqueda de vértices óptimos.

Debe observarse que este algoritmo se presenta para un caso particular en que el problema es
maximizante y en el que las restricciones se plantean en su condición de igualdad. Puede generalizarse
diciendo que esa es la forma normal de presentación del algoritmo:
• La función objetivo debe maximizarse
• Los valores del lado derecho de las restricciones son no
negativos
• Las restricciones son igualdades
• Las variables son no negativas

Los problemas que se presenten podrán, entonces ser convertidos a la forma normal equivalente, teniendo
en cuenta que todo lo que pueda pertenecer a una forma pertenecerá a la forma equivalente (solución,
factibilidad, cotas, etc.)

Para mostrar como se realiza la conversión de una forma a la otra, se sigue con el caso del café, cuyo
modelo original es:
Maximizar 3x1 + 5x2
Sujeto a x1 + x2 ≤ 200
x1 + 2x2 ≤ 300
x1 y x2 ≥ 0
se pasará a la forma normalizada. Para ello se analiza cada uno de los componentes del modelo:
• La función objetivo es maximizante, por lo cual cumple con la condición normal.
• Las variables son no negativas, cumplen con la condición normal.
• Los valores del lado derecho son no negativos, cumpliendo también con las condiciones.
• Lo que escapa a las condiciones son las dos restricciones de desigualdad, por lo que hay que
convertirlas.
Conversión de la primera de esas restricciones:
x1 + x2 ≤ 200
que puede ser explicitada así
toneladas de café usado para fuerte + toneladas de café usado para suave ≤ 200 (toneladas disponibles).
para que esta restricción sea una igualdad y sea equivalente, podrá reescribirse así
ton de café usado para fuerte + ton de café usado para suave + ton de café sobrante = 200 (toneladas disponibles).
con lo cual se agregó un nuevo término (toneladas sobrantes) que depende del valor de x1 y de x2, que
debe ser no negativo y que puede ser considerado como una variable que no afecta a la ganancia neta, por
lo que su coeficiente en el funcional será cero. A esta nueva variable se la denomina s1.
La restricción ahora se escribe:
x1 + x2 + s1 = 200
Programación Lineal. 29

s1 ≥ 0
Si se opera igual con la segunda restricción se tiene un nuevo modelo equivalente al primero pero que
cumple con los requisitos del modo normal establecido:

Maximizar 3x1 + 5x2 + 0s1 + 0s2


Sujeto a x1 + x2 + s1 = 200
x1 + 2x2 + s2 = 300
x1 , x2 , s1 y s2 ≥ 0
Con lo cual se ha convertido un modelo determinado en el modelo normal.

A. Otras conversiones
Sin embargo es posible que sea necesario tener que hacer otras conversiones para pasar a la forma
normalizada. Para examinar otras posibilidades se supondrá el siguiente modelo que incorpora otras
posibilidades:
Minimizar −2x1 + x2 − 3x3
Sujeto a x1 − x2 + x3 = 10 restricción 1
−3x1 − 2x2 − 2x3 ≥ −15 restricción 2
x1 ≥ 3 restricción 3
x1 ≥ 0 restricción 4
x2 ≤ 0 restricción 5

A.1. De minimizante a maximizante


Dado un conjunto de valores (por ejemplo −2, 0, 5, −1), encontrar el elemento más pequeño es
equivalente a:
1. Multiplicar cada elemento del conjunto por −1 (2, 0, −5, 1)
2. Encontrar el elemento más grande (2)
3. Multiplicar el elemento encontrado por −1 (−2)
4. Informar que el elemento más pequeño es el resultado del paso 3.
Por ello, la función minimizante se convierte en maximizante multiplicando cada elemento de la función
por −1:
Minimizar −2x1 + x2 − 3x3
se convierte en:
Maximizar 2x1 − x2 + 3x3

A.2. De lados derechos negativos a lados derechos positivos


La restricción 2 presenta un valor −15 que no encaja en los supuestos de la forma normal. En estos casos
se multiplican ambos lados de la inecuación por −1 e invirtiendo el sentido de la inecuación, así:
−3x1 − 2x2 − 2x3 ≥ −15
se convierte en
3x1 + 2x2 + 2x3 ≤ 15

A.3. De desigualdad a igualdad


La restricción 1 es una restricción de igualdad, por lo que no se convierte.
La restricción 2 es del tipo de la ya vista: se agrega una variable adicional, llamada variable floja y se
convierte en igualdad:
3x1 + 2x2 + 2x3 ≤ 15
pasa a
3x1 + 2x2 + 2x3 + s1 = 15
La restricción 3 plantea que el lado izquierdo debe ser mayor o igual que el derecho, por lo cual será
necesario restar una variable de exceso para convertirla a igualdad:
x1 ≥ 3
pasa a
x1 − s2 ≥ 3
s2 ≥ 0

Por tanto, y hasta aquí, el modelo queda

Maximizar 2x1 − x2 + 3x3


Sujeto a x1 − x2 + x3 = 10 restricción 1
Programación Lineal. 30

3x1 + 2x2 + 2x3 + s1 = 15 restricción 2


x1 − s2 = 3 restricción 3
x1 , s1 y s2 ≥ 0 restricción 4
x2 ≤ 0 restricción 5

A.4. De variables negativas y/o irrestrictas a no negativas


La variable x3 no está restringida, significa que puede ser x3 ≤≥ 0.
Para convertir esta variable se sustituye por la diferencia de dos variables artificiales positivas:
x3 = x3+ − x3-
Si las variables son no positivas, por ejemplo S2 arriba, se convierten haciendo
xn = − x’n
x’n ≥ 0
Ejemplo, si x3 = 5, entonces x3+ = 5 y x3- = 0 → x3 = x3+ − x3- = 5 − 0
si x3 = −7 entonces x3+ = 0 y x3- = 7 → x3 = x3+ − x3- = 0 − 7

A.5. El modelo convertido


El modelo original no normal
Minimizar −2x1 + x2 − 3x3
Sujeto a x1 − x2 + x3 = 10 restricción 1
−3x1 − 2x2 − 2x3 ≥ −15 restricción 2
x1 ≥ 3 restricción 3
x1 ≥ 0 restricción 4
x2 ≤ 0 restricción 5
queda convertido a:
Maximizar 2x1 + x’2 + 3x3+ − 3x3-
Sujeto a x1 + x’2 + x3+ − x3- = 10 restricción 1
3x1 − 2x’2 + 2x3+ − 2x3- + s1 = 15 restricción 2
x1 − s2 = 3 restricción 3
x1 , x’2 , x3+ , x3- , s1 y s2 ≥ 0 restricción 4
Si se acepta que la solución del modelo es
x1 = 3
x’2 = 2
x3+ = 5
x3- = 0
s1 = 0
s2 = 0
se calculará cada valor convertido para poder brindar el reporte de resultados:
x1 = 3
x2 = − x’2 = − 2
x3 = x3+ − x3- = 5 − 0 = 5
s1 = 0
s2 = 0

B. Conversión del algoritmo en forma geométrica a forma algebraica


El primer paso del desarrollo consiste en establecer cada vértice (concepto geométrico) del área factible
(concepto geométrico) en conceptos algebraicos. El concepto algebraico equivalente del vértice se
denominará solución factible básica (sfb)
Se retoma el problema inicial del café, en sus formas original y normalizada:
Programa lineal original
Maximizar 3x1 + 5x2 (maximizar la ganancia neta)
Sujeto a x1 + x2 ≤ 200 (restricción de cantidad en inventario)
x1 + 2x2 ≤ 300 (restricción de tiempo de horno disponible)
x1 y x2 ≥ 0
Forma normalizada
Maximizar 3x1 + 5x2 + 0s1 + 0s2
Sujeto a x1 + x2 + s1 = 200
x1 + 2x2 + s2 = 300
x1 , x2 , s1 y s2 ≥ 0
El área de soluciones factibles y los vértices se mostraron en la Fig.20. Debe recordarse que se acepta que,
de los infinitos puntos factibles, la solución se debería encontrar en un vértice, por lo tanto estos vértices
son puntos especiales.
Programación Lineal. 31

Para identificar una sfb se comenzará observando que en el planteo hay más variables que ecuaciones: hay
un número infinito de soluciones porque puede elegirse cualquier valor arbitrario para cualquier par de
variables: hay dos ecuaciones: restricción 1 y restricción 2. Hay cuatro variables: x1 , x2 , s1 y s2 . La
diferencia entre ecuaciones y variables es 2, de ahí que se puede asignar un valor arbitrario a dos
variables, por ejemplo, si se asigna un valor cualquiera, x1 = 20 y x2 = 40 se tiene
20 + 40 + s1 = 200 corresponde s1 = 140
20 + 80 + s2 = 300 corresponde s2 = 200
Generalizando: si un programa lineal normalizado tiene n variables y m ecuaciones con n>m se podrá
construir una solución eligiendo valores arbitrarios para n − m de las variables y utilizando las m
ecuaciones para encontrar los valores de las restantes variables.
Para construir una sfb se comienza por elegir n − m variables, en este caso 2 (nº de variables − nº de
ecuaciones), la que se conocen como variables no básicas asignándoles el valor inicial de cero,
resolviéndose el sistema de ecuaciones remanente para hallar el valor de las restantes variables, a las que
llamaremos variables básicas: por ejemplo, si se toman s1 y s2 igual a cero, el sistema pasa a ser
x1 + x2 = 200
x1 + 2x2 = 300
de donde resulta x1 = 100 y x2 = 100.
Como hay varias alternativas para seleccionar variables básicas y no básicas, se muestran todas en la
siguiente tabla, indicando además bajo SFB si el par hallado corresponde o no al área de soluciones
factibles:
Variables No Básicas Variables Básicas SFB
1 x1 = 0 x2 = 0 s1 = 200 s2 = 300 si
2 x1 = 0 s1 = 0 x2 = 200 s2 = −100
3 x1 = 0 s2 = 0 x2 = 150 s1 = 50 si
4 x2 = 0 s1 = 0 x1 = 200 s2 = 100 Si
5 x2 = 0 s2 = 0 x1 = 300 s1 = −100
6 s1 = 0 s2 = 0 x1 = 100 x2 = 100 Si
Como puede verse cada solución factible básica corresponde a uno de los vértices de la solución gráfica

Fig. 22. Coordenadas de los vértices. Las variables recuadradas son las básicas

Ahora bien, este enfoque requiere examinar todas las soluciones factibles básicas hasta encontrar la mejor,
de la misma manera que en el modo gráfico había que examinar cada uno de los vértices, lo cual es muy
complicado en caso de problemas con varias variables y restricciones. Si en un problema existen m
restricciones de igualdad y n variables, para generar una solución básica hay que elegir n − m variables no
básicas cuyos valores se toman como cero, quedando la cantidad m representando a las variables básicas
cuyos valores se encuentran resolviendo m ecuaciones con m incógnitas.
Programación Lineal. 32

Por ejemplo, si se tienen m = 10 restricciones y n = 20 variables


las variables básicas a elegir serán n − m = 20 − 10 = 10
y quedarán 10 ecuaciones con 10 incógnitas a resolver.
El número de soluciones básicas será
n! 20!
= = 184756.
(n − m)! m! 10!× 10!
Puede verse que el número de soluciones a analizar puede ser grande, aunque finito.

El algoritmo geométrico para examinar esas soluciones finitas es el siguiente:


1. INICIO. Determinar el vértice inicial
2. COMPROBACIÓN DE ÓPTIMO: Dado el vértice actual examinar todos los vértices vecinos a
fin de determinar si alguno de ellos tiene un valor mejor para el funcional.
Si NO hay un vértice con mayor valor para el funcional, el vértice actual es la solución al
problema. IR AL PASO 4.
3. CAMBIO DE VÉRTICE. Seleccionar cualquier vértice que tenga mejor valor del funcional
encontrado en el paso 2 y considerarlo como vértice actual.
IR AL PASO 2.
4. FIN. Presentar las coordenadas del vértice actual como los valores de la solución del
problema
La conversión a algoritmo algebraico es la siguiente:
1. INICIO
2. COMPROBACIÓN DE ÓPTIMO
Volviendo a la Fig. 22 se tomará cualquier vértice y se tratará de efectuar un traslado a un vértice vecino:

Fig. 23. Coordenadas de los


vértices

Por ejemplo para ir del


vértice A al D, hubo que
cambiar una variable básica
(s2) por una no básica (x2)
Para ir de A a B salió s1 de
las básicas e ingresó en su
lugar x1.

Para ir de D a C, sale s1 e
ingresa a la base x1.
Cerrando el ciclo, de C a B
sale x2 e ingresa s2.

Como se ve, si se considera la situación desde un vértice dado cualquiera, vértice actual, examinar
vértices adyacentes implica cambiar una variable. En cada vértice todas las variables no básicas valen
cero, para convertir esa variable en básica debe cambiarse el cero por un valor positivo.

Sin embargo resulta muy costoso examinar cada uno de los vértices adyacentes, ya que si hay m
restricciones y n variables van a existir n − m vértices factibles adyacentes para cada vértice con solución
factible (que es el número de variables no básicas). Para examinar estos vértices hay que cambiar el valor
de una básica dejando las demás variables fijas, registrar el valor y examinar otra, hasta encontrar aquella
que cumple el requisito.

Como alternativa menos costosa se dispone de un método para examinar los vértices adyacentes.
Así es posible definir un costo de cambio o costo reducido o costo de oportunidad:
es el cambio en el valor de la función objetivo por unidad de aumento de la variable no básica2

2
La experiencia de los autores en el dictado de estos temas indica que hay una tendencia a confundir el costo de oportunidad o
costo reducido con el precio sombra. Debe tenerse en cuenta que si bien ambos indican variación del funcional por unidad de
cambio de lo que se examina, son conceptualmente diferentes: el precio sombra es la variación del funcional cuando varía en una
unidad el recurso (valor del lado derecho), mientras que el costo de oportunidad es la variación del funcional cuando varía en una
unidad la variable básica. Mientras el primero es últil al final del cálculo (análisis de sensibilidad), el segundo es una medida de
Programación Lineal. 33

de esta manera, si el costo reducido es positivo, significa que la función objetivo será mayor cuando la
variable no básica pase a la base. Un costo reducido negativo indicará un valor para el funcional menor en
las mismas circunstancias.
Con estos conceptos se replantea el paso 2 del algoritmo, agregando estos dos puntos
• 2.1-Calcular el costo reducido de cada variables no básica
• 2.2-Si todos los costos reducidos son ≤ 0 entonces el vértice actual es el óptimo. Caso contrario ir al
paso 3.
3. CAMBIO DE VÉRTICE
Si bien es cierto que puede elegirse cualquier variable no básica con costo reducido positivo, en general se
utiliza aquella que tiene el costo reducido más grande (pendiente mayor).
• 3.1-Con la regla de la pendiente mayor, seleccionar la variable a ingresar a la base.
• 3.2-Identificar la variable que sale de la base
• 3.3-Crear una nueva solución factible intercambiando las variables seleccionadas y recalculando el
valor de todas las variables.
• 3.4-Ir al paso 2

En resumen el algoritmo queda enunciado así:


1. INICIO
2. COMPROBACIÓN DE ÓPTIMO
• 2.1-Calcular el costo reducido o de oportunidad de cada variables no básica
• 2.2-Si todos los costos reducidos son ≤ 0 entonces el vértice actual es el óptimo, ir al paso 4.
Caso contrario ir al paso 3.
3. CAMBIO DE VÉRTICE
• 3.1-Con la regla de la pendiente mayor, seleccionar la variable a ingresar a la base.
• 3.2-Identificar la variable que sale de la base
• 3.3-Crear una nueva solución factible intercambiando las variables seleccionadas y
recalculando el valor de todas las variables.
• 3.4-Ir al paso 2
4. FIN. Presentar las coordenadas del vértice actual como los valores de la solución del
problema

avance del cálculo: comprobar si hay soluciones mejores que la actual (aunque también brinda información marginal sobre la
actual).
Programación Lineal. 34

V - Enfoque formal.
Esta sección ahonda en los mecanismos internos del algoritmo Simplex desde una presentación formal.
Muchos conceptos serán repetidos, lo cual es necesario para adaptarlos al enfoque propuesto. Sin
embargo debe tenerse en cuenta que los fundamentos matemáticos del método deben buscarse en textos
que escapan a los alcances de esta publicación. Particularmente interesante es conocer el método de
Gauss-Jordan para resolver matrices.

A. Modelo general
La expresión generalizada del modelo es
Optimizar
Z = c1x1 + c2x2 + ...+ cnxn
Sujeto a:
a11x1 + a12x2 + ... a1nxn ≤=≥ b1
a21x1 + a22x2 + ... a2nxn ≤=≥ b2
...
am1x1 + am2x2 + ... amnxn ≤=≥ bm

Con xj ≥ 0 ∀j ≠ 0 j = 1, 2, ..., n
O alternativamente
Optimizar
n
Z = ∑ cjxj
j =1
Sujeto a:
m n

∑∑ a
i =1 j =1
ij x j ≤≥ bi

i = 1,2,..., m
j = 1,2,..., n
O, en forma matricial
optimizar z = cx
Sujeto a Ax = b para x ≥ 0, donde A es una matriz de m x n

B. Compendio de la Terminología utilizada


Variable de decisión: Conjunto de variables de entrada cuya magnitud se desea determinar (xj)
Restricciones: Conjunto de desigualdades limitantes de los valores de xj
Función Objetivo. Funcional. (Z) es la función matemática que expresa la relación de variables a optimizar.
Condición de linealidad: Se expresa para las funciones matemáticas que intervienen en el problema.
Tipo de restricción. Desigualdades o igualdades limitantes: (≤, ≥ o =.)
Condición de no negatividad: todas las variables de decisión deben ser no negativas (xj ≥ 0)
Vector de coeficientes del funcional: es el vector construido con el renglón cj . [c1 , c2 ,...,cn ]
Vector de disponibilidades (recursos): es el vector columna b, bi . También se llama vector de términos
independientes, o vector de valores del lado derecho.
 b1 
b 
b = bi =  2 
 ... 
 
bm 
Matriz de coeficientes tecnológicos: es la matriz de los términos aij :
Programación Lineal. 35

 a11 ... a1n 


a ... a 2 n 
A = a ij =
21

 ... ... ... 


 
a m1 ... a mn 
Solución Factible: valores de las variables de decisión que satisfacen todas las restricciones

Solución óptima: Solución factible que optimiza el funcional.

C. Ejemplo, con su solución gráfica


Un molino produce dos tipos de harina: ACCIÓN
y BUENAVENTURA, cuyos procesos de
fabricación están constituidos por dos etapas:
Producción, para la cual la planta dispone de
1560 horas/hombre mensuales y Envasado,
para la cual dispone de 600 h/hombre
mensuales.
La fabricación de ACCIÓN consume 2,6 h/h de
producción y 0,8 h/h de envasado, mientras que
BUENAVENTURA insume 2 h/h y 1 h/h
respectivamente.
El beneficio de venta de ACCIÓN es de 2,8
$/unidad de venta, y el de BUENAVENTURA es
de 1 $/u
Se sabe que el mercado no absorbe más de 500
unidades de venta por mes de ACCIÓN.
Calcular el plan de producción para maximizar
los beneficios.
x1 es la cantidad de unidades de venta
producidas por el producto ACCIÓN
x2 es la cantidad de unidades de venta
producidas por el producto
BUENAVENTURA
Los beneficios serán
(Beneficio por unidad de venta de ACCIÓN por cantidad producida)
más
(Beneficio por unidad de venta de BUENAVENTURA por cantidad producida) = Z ≡ MAX
Z = 2,8 x1 + 1x2 ≡ MAX
Luego deben expresarse las distribuciones por recursos:
Horas hombre de producción:
2,6 x1 + 2 x2 ≤ 1560
Horas hombre en envasado
0,8 x1 + x2 ≤ 600
Demanda de x1
x1 + 0 x2 ≤ 500
No negatividad:
xj ≥ 0
Finalmente el modelo completo será:
Z = 2,8 x1 + 1x2 ≡ MAX
Sujeto a:
2,6 x1 + 2 x2 ≤ 1560
0,8 x1 + x2 ≤ 600
x1 + 0 x2 ≤ 500
xj ≥ 0
Se establece un marco de referencia para las variables de decisión, y se grafica sobre un plano x2 vs. x1:
Donde la región marcada representa el espacio de soluciones del modelo, dentro del cual deberá
encontrarse aquel, o aquellos, valores que satisfagan el funcional.
El funcional será un conjunto de rectas. Una de ellas, la que pasa por la solución trivial, es
2,8 x1 + x2 = 0 Por tanto la pendiente de todas es x2 = − 2,8 x1, (110º)
Programación Lineal. 36

Con esta pendiente se obtiene el barrido de todo el espacio de soluciones (se indica en el gráfico en gris o
amarillo) Se muestran solamente la primera y la última de las rectas. Se busca aquella que esté lo más
alejada del origen y dentro del espacio de soluciones. Determina un punto, que, en el ejemplo, tiene
coordenadas:
x1 = 500 unidades
x2 = 130 unidades
Z = 1530 $
Como el espacio de soluciones es convexo, todo máximo local será también un máximo global. Se
demuestra que si existe la solución óptima, ésta se encuentra en un vértice. Si está en dos vértices es que
existen múltiples soluciones óptimas.
El resultado obtenido para este ejemplo deberá abarcar el sistema de limitaciones de recursos:
0,8 x 500 + 130 = 530 ≤ 600 hay una diferencia de 70 para llegar al límite de 600
2,6 x 500 + 2 x 130 = 1560 ≤ 1560 hay una diferencia de 0 para llegar al límite de 1560
500 + 0 x 130 = 500 ≤ 500 hay una diferencia de 0 para llegar al límite de 500.

D. Método Simplex
Si se tienen en cuenta estas diferencias es posible generar ecuaciones incorporando un conjunto de
variables que completen o ajusten las desigualdades hasta conformarlas como igualdades:
0,8 x1 + x2 + x3 = 600
2,6 x1 + 2 x2 + + x4 = 1560
x1 + 0 x2 + x5 = 500
donde x3 = 70, x4 = 0 y x5 = 0

A x3 , x4 , x5 se las denominan variables slacks, o de ajuste. Son variables asociadas a cada restricción y
representan la utilización del recurso, siendo su valor la diferencia respecto a la cota numérica bj.
Incorporando las variables slacks se alcanza a satisfacer la igualdad, siendo este procedimiento la base de
un método analítico denominado Simplex, el cual explora los vértices del hiper poliedro en forma iterativa
hasta detenerse en el óptimo y partiendo de una primera solución que se denomina trivial.
La solución trivial de este ejemplo es:
x 1 = x2 = 0
x3 = 600
x4 = 1560
x5 = 500
Z=0

Las restricciones del tipo ≤ incorporan las variables slacks sumándolas. Las del tipo ≥ las incorporan
restándolas. Luego de comenzar en la solución trivial, deberán buscarse soluciones mejores. Se conoce
que por cada unidad de ACCIÓN fabricada se obtiene un beneficio de 2,8 y por cada una de
BUENAVENTURA un beneficio de 1. Es lo mismo que decir que por cada unidad no fabricada de una u
otra se pierden esas cantidades. La solución óptima, entonces deberá ser, en referencia a la trivial (la que
está arriba), del siguiente tipo:
x1 > 0
x2 > 0
x3 < 600
x4 < 1560
x5 < 500
Significa que se utilizan los recursos transformándolos en unidades de uno u otro producto.
Si se comparan las dos soluciones, llamando a la solución trivial solución anterior puede ocurrir que
≥ 0 mejor la nueva
Nueva − Anterior = = 0 indiferente
≤ 0 mejor la anterior

este análisis puede hacerse cada vez que se encuentra una solución comparando con la anterior. La
diferencia es el costo reducido o de oportunidad y cuando esa diferencia resulta negativa significa que se
logró un óptimo.

El planteo general del problema sería, entonces:


Programación Lineal. 37

Optimizar:
Z = 2,8 x1 + 1x2 + 0x3 + 0x4 + 0x5 ≡ MAX
Sujeto a
0,8 x1 + x2 + x3 = 600
2,6 x1 + 2 x2 + + x4 = 1560
x1 + 0 x2 + x5 = 500
Con todas las variables no negativas.

Con este modelo se construye la matriz del Simplex, que toma como punto de partida la solución trivial:

cj → 2,8 1 0 0 0
ck xk B x1 x2 x3 x4 x5 Φk
0 x3 600 0,8 1 1 0 0
0 x4 1560 2,6 2 0 1 0
0 x5 500 1 0 0 0 1
Zj 0
cj — Zj 2,8–0=2,8 1 – 0 =1 0 – 0=0 0 – 0=0 0 – 0=0 0 – 0=0
donde:
xk son las variables básicas, es decir, aquellas diferentes de cero
B es el valor de xk en la solución
cj es el coeficiente de las variables en el funcional
ck es el coeficiente de las variables básicas xk en el funcional
Zj es la representación de la solución anterior
cj – Zj es la representación de la solución nueva menos la anterior
cj – Zj es el costo de oportunidad equivalente a (Σck ajk) – cj.

Como cj – Zj resultó mayor que cero para x1 y para x2 habrá que elegir una dirección de avance en las
iteraciones: se toma aquella diferencia que presenta el mayor valor (2,8), en este caso x1.
La nueva base, que es el vector xk, deberá incluir ahora a x1 y ser distinto de cero. Ahora bien, si entra una
variable a ese vector deberá salir otra, debido a que el número de variables que componen la base deberá
ser constante e igual al número de restricciones del modelo.
Para definir el criterio de elección de la variable que sale, se realiza el siguiente razonamiento: si
avanzamos proponiendo la producción de x1 (variable que entra), es evidente que utilizaremos recursos,
por lo cual se debe evaluar cual recurso se agotará primero (recurso limitante). Ese recurso que se hace
cero sale de la base y es reemplazado por la variable x1 dando lugar a una nueva solución factible.
Este criterio se evalúa con Φk

Φk = bk / ahk
donde k es el nombre de la fila que contiene la variable analizada (la que va a salir)
h es el nombre de la columna que contiene la variable candidata a entrar.
Se opta la de menor valor Φk.:
cj → 2,8 1 0 0 0
ck xk B x1 x2 x3 x4 x5 Φk
0 x3 600 0,8 1 1 0 0 (600)/(0,8) = 750
0 x4 1560 2,6 2 0 1 0 (1500)/(2,6)=600
0 x5 500 1 0 0 0 1 500
Zj 0
cj – Z j 2,8 1 0 0 0 0

Por tanto la nueva base estará conformada por x3, x4 y x1


La nueva matriz será construida aplicando la transformación de Gauss-Jordan, en la cual adquiere
importancia el concepto de punto pivote: es el aij que resulta de la intersección de la variable de entrada y
la de salida, que se señala en la matriz de arriba con un círculo. La fila que contiene ese punto pivote se
transforma dividiendo cada elemento que la constituye por el valor del pivote.
Programación Lineal. 38

Fig. 25. Punto Pivote

Para el resto de los valores se aplica la siguiente regla:


AC
B' = B − donde B’ es el nuevo valor de ese aij en la nueva matriz.
P
Siendo el caso particular del vector entrante x1 P=A y B=C

cj → 2,8 1 0 0 0
ck xk B x1 x2 x3 x4 x5 Φk
0 x3 200 0 1 1 0 –0,8 200
0 x4 260 0 2 0 1 –2,6 130
2,8 x1 500 1 0 0 0 1 500
Zj 1400 2,8 0 0 0 2,8
cj – Z j 0 1 0 0 −2,8
El proceso se repite, eliminándose de la base x4 y entrando x2: :
cj → 2,8 1 0 0 0
ck xk B x1 x2 x3 x4 x5 Φk
0 x3 70 0 0 1 –0,5 0,5
1 x2 130 0 1 0 0,5 –1,3
2,8 x1 500 1 0 0 0 1
Zj 1530 2,8 1 0 0,5 1,5
cj – Z j 0 0 0 −0,5 −1,5

Cuando la fila cj – Zj es nula o negativa, se ha llegado al óptimo.


La solución a la que se ha arribado es:
x1 = 500 x2 = 130 x3 = 70
x4 = 0 x5 = 0 Z = 1530 ≡ MAX

D.1. Algunas consideraciones a tener en cuenta:


• Si el pivot es nulo o negativo no puede utilizarse: se trata de un caso donde el funcional crece sin
límites. El pivot debe ser siempre positivo.
• Ninguna de las variables básicas xk puede ser cero. Para ellas cj – Zj es cero. Si hay una variable no
básica con cj – Zj = 0 se está en presencia de una solución alternativa.
• Si hay al menos una restricción del tipo ≥ 0 significa que el
Fig. 26. Nueva origen no pertenece al espacio de soluciones posibles.
restricción
En este caso el método se divide en dos fases:.

Volviendo al problema de ejemplo, el enunciado decía que lo


máximo a producirse de ACCIÓN era 500 unidades. Si ese
enunciado se cambia estableciendo que por lo menos se
produzcan 500 unidades de ACCIÓN, el modelo queda planteado
de la siguiente manera:
Optimizar
Z = 2,8 x1 + 1x2 ≡ MAX
Sujeto a:
2,6 x1 + 2 x2 ≤ 1560
0,8 x1 + x2 ≤ 600
x1 + 0 x2 ≥ 500
xj ≥ 0
Las primeras dos restricciones no se modifican, pero en la tercera al incorporar una variable slack debe
restarse:
x1 + 0 x2 – x6 = 500
En este caso, cuando x1 = 0 y x2 = 0 queda x6 = –500, lo cual contradice la restricción xj ≥ 0.
Programación Lineal. 39

Esta contradicción se supera incorporando una nueva variable llamada variable artificial , lo que lleva, en
la solución trivial a que x1 = 0, x2 = 0 y x6 = 0 quedando entonces x7 = 500:
x1 + 0 x2 – x6 + x7 = 500
Siendo las dos primeras las variables de decisión, la tercera la variable slack y la cuarta y última la
variable artificial. Cuando x7 = 500 se está en el origen pero fuera del espacio de soluciones.
Cuando x7 = 0 se ha arribado al espacio de soluciones.
Recapitulando:
FASE I. Variables artificiales en la solución: significa que la evolución de la solución todavía está fuera
del espacio de soluciones.
FASE II. Variables artificiales nulas: esto significa que comenzó la exploración del espacio de soluciones
en busca del óptimo.
Se procede siempre con la misma transformada.
En conclusión, según la desigualdad se aplican las siguientes variables:
RESTRICCIÓN VARIABLES
≤ + VAR SLACK
≥ – VAR SLACK + VAR ARTIF
= + VAR ARTIF

Sin embargo, estas variables artificiales deberán incorporarse al funcional con un coeficiente que las
penalice cuando sean distintas de cero. A este coeficiente se lo llama M, que es numero mayor que
cualquier otro coeficiente del modelo, de manera que M afecta totalmente el funcional. También deberá
tenerse en cuenta el signo de M:
Si Z es maximizante, M < 0
Si Z es minimizante, M > 0

Se replantea ahora el problema, quedando:


Optimizar:
Z = 2,8 x1 + 1x2 + 0x3 + 0x4 + 0x5 –Mx6 ≡ MAX
Sujeto a
0,8 x1 + x2 + x3 = 600
2,6 x1 + 2 x2 + + x4 = 1560
x1 + 0 x2 – x5 + x6 = 500

Una vez resuelto por el método Simplex, resulta:


Z = 1680,
x1 = 600
x3 = 120
x5 = 100

E. Interpretación de los modelos


Resolver un modelo de programación lineal no significa solamente arribar a los resultados: la tabla de
SIMPLEX aporta rica información adicional que permite evaluar la factibilidad de los valores y conocer
la sensibilidad de las variables. La potencia del método reside en la interpretación correcta de los
resultados que el mismo brinda.
Retomando el ejemplo anterior, cuyo objetivo es maximizar beneficios, con restricciones de horas hombre
en producción y envasado y restricciones en la demanda de ACCIÓN, se tenía una forma general de
presentación:
Optimizar:
Z = 2,8 x1 + 1x2 + 0x3 + 0x4 + 0x5 ≡ MAX
Sujeto a
restricción horas hombre de producción: 0,8 x1 + x2 + x3 = 600
restricción horas hombre de envasado 2,6 x1 + 2 x2 + + x4 = 1560
restricción de demanda de ACCIÓN x1 + 0 x2 + x5 = 500
siendo x1 y x2 las unidades de ACCIÓN y de BUENAVENTURA respectivamente y que no pueden ser
negativas.

La matriz final del SIMPLEX es:


Programación Lineal. 40

cj → 2,8 1 0 0 0
ck xk B x1 x2 x3 x4 x5 Φk
0 x3 70 0 0 1 –0,5 0,5
1 x2 130 0 1 0 0,5 –1,3
2,8 x1 500 1 0 0 0 1
Zj 1530 2,8 1 0 0,5 1,5
cj – Z j 0 0 0 −0,5 −1,5
que indica que la solución es:
x1 = 500 x2 = 130 x3 = 70
x4 = 0 x5 = 0 Z = 1530 ≡ MAX

Ahora bien, si se observa la tabla, pueden identificarse dos matrices:


Matriz Unidad: la que está conformada por las variables básicas.
xk x1 x2 x3
x3 0 0 1
x2 0 1 0
x1 1 0 0

Matriz de coeficientes tecnológicos: que incluye a las variables no básicas:


xk x4 x5
x3 –0,5 0,5
x2 0,5 –1,3
x1 0 1

Si en particular se observa el vector que representa la variable x4 para el recurso envasado, se encuentra
que a x1 corresponde un valor de x4 de cero. Esto indica la falta de relación entre ambas variables: si se
aumentaran las horas de envasado no se modificarían las unidades a producir de ACCIÓN.
Contrario sensu, si se aumenta en una unidad el recurso de envasado, deberá aumentar en 0,5 unidad la
producción de BUENAVENTURA (x2). 130 + 0,5 = 130,5 que son las unidades de x2 producidas
mientras que x1 mantiene su producción pues la relación entre x1 y x4 es cero, y además el recurso
sobrante de producción (x3) baja en media unidad (70 – 0,5) = 69,5.

El tiempo horas hombre para producción es, entonces:


0,8 x 500 + 1 x 130,5 = 530,5
600 − 530,5 = 69,5 ⇒ x3. = 69,5 ⇒ ∆ x3. = – 0,5.
Finalmente el conjunto de soluciones queda:
x’1 = 500 x’2 = 130,5 x’3 = 69,5
x’4 = 1 x’5 = 0 Z’ = 2,8 x 500 + 130,5 = 1530,5
siendo el valor original de Z 1530 se calcula
∆Z = Z – Z’ = 1530 – 1530,5 = −0,5.
Si se observa la fila cj – Zj en la columna x4 el valor que figura es −0,5:
El valor cj – Zj es el monto en que se modifica el funcional por unidad de variación de la variable.
Generalizando:
x’i = xi ± ∆aij
Z’j = Zj – (cj – Zj )
Para el vector x5, si se aumenta su valor en una unidad:
xk x5
x3 0,5 x’3 = 70 – 1 x 0,5 = 69,5
x2 −1,3 x’2 = 130 – 1 x (−1,3) = 131,3
x1 1 x’1 = 500 − 1 x 1 = 499
Z’j = Zj – (cj – Zj )

F. Análisis de Sensibilidad o Análisis Post Óptimo


El objetivo es analizar la estabilidad cualitativa de la solución hallada. Dicho de otra manera: entre que
valores o límites de variación pueden moverse los componentes del modelo sin alterar la composición de
la base: sin que las variables que integran la base cambien.
Programación Lineal. 41

Se analizará buscando los límites de variación de los términos independientes (vector de disponibilidades)
y de los coeficientes del funcional, recordando el análisis de sensibilidad gráfico hecho antes.

F.1. Límites de variación de los términos independientes.


Significa saber cuáles son los valores extremos entre los cuales pueden variar las disponibilidades sin que
la solución optima deje de ser estable.
Este análisis puede ser hecho sobre el vector que representan las variables slacks dado que éstas, a su vez,
representan adecuadamente el recurso. Hay dos casos: a) la slacks está en la solución y b) la slack no está
en la solución.
F.1.a) La variable slack está en la solución
Sea el caso x3 = 70. Representa el recurso producción e indica que sobran 70 horas hombre cuando se
encontró el óptimo. Significa que se utilizan bi – 70 = 600 – 70 = 530 h/h de envasado.
Obviamente la posibilidad de disponer de más horas hombre en envasado, en cualquier valor por encima
de 530 no alterará la solución, porque ese recurso no altera ni restringe el modelo: la variable no está
saturada.
b i – xi ≤ I ≤ ∞
600 – 70 ≤ I ≤ ∞
RI [530, ∞]
F.1.b) La variable slack no está en la solución
Se analizará x4 que representa el recurso envasado. Este recurso se satura y es interesante ver como
cambia la solución cuando varía.
bi xk x4
70 x3 –0,5
130 x2 0,5
500 x1 0
Si envasado aumenta una unidad, x3 disminuye en 0,5 unidad y x2 aumenta en 0,5 unidad mientras que x1
permanece invariable. Si envasado disminuye una unidad, x3 aumenta en 0,5 y x2 disminuye en 0,5.
¿Hasta que valor puede disminuir x2? Solamente hasta lo que se dispone: 130 unidades. La pregunta pasa
a ser ¿ A cuánto hay que llevar x4 para que x2 sea igual a cero?
130 / 0,5 = 260
Significa que cuando x4 = 260 se encuentra una situación tal que:
de x1 = 500 se pasa a x’1 = 500
x2 = 130 x’2 = 0
x4 = 0 x’4 = 0
b4 = 1560 b’4 = 1560 – x4 = 1560 –260 = 1300
Que es una solución alternativa.
Resta analizar lo que ocurre con el recurso x3 : en este caso la dirección del cambio es opuesta a la
anterior: x3 disminuye y x2 aumenta. x3 puede disminuir hasta en 70 unidades para pasar a ser nulo, por lo
tanto
70 / 0,5 = 140 unidades de x4 que son las que habrá que adicionar al recurso para que se agote x3
Con esto se definieron dos límites:
Un límite inferior: b4 = –260
Un límite superior b4 = + 140
Generalizando: bi – ∆INF ≤ R ≤ bi + ∆SUP
bi
∆ INF = min
a ij a ij > 0

bi
∆ SUP = min
a ij
a ij < 0

F.2. Límites de variación de Coeficientes del Funcional


Se analizan los coeficientes correspondientes a las variables básicas (filas), en la discusión del punto
siguiente, Dualidad, se demostrará que si simplemente se convierte el problema mostrado en su dual, el
análisis de sensibilidad de los coeficientes del primal se hace como fue mostrado hasta aquí con el vector
de disponibilidades, ya que en el dual, ese vector representa al de coeficientes del primal, por tanto, el
Programación Lineal. 42

resultado del análisis de sensibilidad para los coeficientes del funcional se muestra en el final de la
discusión G. Dualidad que sigue.

G. Dualidad
Retomando el problema ejemplo, tal como fue planteado. Ese modelo que describía el problema se
conoce con el nombre de Primal.:
Z = 2,8 x1 + 1x2 ≡ MAX
Sujeto a:
2,6 x1 + 2 x2 ≤ 1560 Restricción por producción
0,8 x1 + x2 ≤ 600 Restricción por envasado
x1 + 0 x2 ≤ 500 Restricción por demanda
xj ≥ 0
Existe una segunda forma de plantear el mismo problema, forma a la que se denomina Dual, que tiene las
siguientes características:
1. Aporta elementos para la comprensión total del tema
2. Es una herramienta poderosa que permite, en determinados problemas, arribar con más facilidad a
soluciones que, de otra manera (con el Primal) sería muy dificultoso hallarlas.
3. El Dual aporta información e interpretaciones sobre los análisis marginales.
4. Se puede intentar resolver el Dual como alternativa al Primal si el tamaño del problema así lo
aconseja. Por ejemplo, si el Primal tiene más restricciones que variables, convendría resolver el Dual,
donde la situación se invierte.
G.1. Pasos para convertir un Primal en Dual
1. Si el Primal es un problema de maximización, su Dual será de minimación y viceversa.
2. Los coeficientes de la función objetivo del problema Primal (cj ) serán los coeficientes del vector de
disponibilidades en el Dual (bj )
3. Los signos de las desigualdades de las restricciones del Primal serán contrarios en el Dual (de ≤ pasan
a ≥ y viceversa)
4. La matriz de coeficientes tecnológicos del Primal será la matriz traspuesta cambiada de signo en el
Dual. (aij → –aji , o bien A→ −AT)
5. Las variables xn del Primal se convierten en nuevas variables Ym en el Dual.
6. Las variables de decisión del Primal serán slacks en el Dual.
7. Las variables slacks del Primal serán de decisión en el Dual.
8. Mientras que el Primal analiza la distribución y utilización de los recursos, el Dual analiza el valor de
los mismos.
Se vuelve a plantear el problema original en su forma Primal:
Z = 2,8 x1 + 1x2 ≡ MAX
0,8 x1 + x2 ≤ 600
2,6 x1 + 2 x2 ≤ 1560
x1 + 0 x2 ≤ 500
Que en su versión Dual pasa a ser
Y1 =x3 ;
Y2 =x4 ;
Y3 =x5 ;
Y4 =x1 ;
Y5 =x2 ;
Yi ≥ 0
Z’ = 600 Y1 + 1560 Y2 + 500 Y3 ≡ MIN
0,8 Y1 + 2,6 Y2 + 1 Y3 ≥ 2,8
Y1 + 2 Y2 + 0 Y3 ≥ 1

Cuya primera matriz Simplex es:


cj 600 1560 500 0 0 M M Φk
ck Yk B Y1 Y2 Y3 Y4 Y5 Y6 Y7
M Y6 2,8 0,8 2,6 1 –1 0 1 0 1,07
M Y7 1 1 2 0 0 –1 0 1 0,5
600−1,8M 1560−4,6M 500−M M M 0 0
cj – Z j
Programación Lineal. 43

y cuya matriz final pasa a ser:


cj 600 1560 500 0 0
ck Yk B Y1 Y2 Y3 Y4 Y5
500 Y3 1,50 –0,5 0 1 –1 1,3
1560 Y2 0,50 0,5 1 0 0 –0,5
cj – Z j 70 0 0 500 130

mientras que la final del Primal era:


cj 2,8 1 0 0 0
ck Yk B x1 x2 x3 x4 X5
0 x3 70 0 0 1 –0,5 0,5
1 x2 130 0 1 0 0,5 –1,3
2,8 x1 500 1 0 0 0 1
cj – Z j 0 0 0 – 0,5 –1 ,5

Si el problema primal era de maximización, sus variables de Dual (Ym ) son valores marginales de utilidad
de cada unidad adicional de entrada o de salida. Estas variables de dual se denominan costos de
oportunidad o precio sombra.
El vector de disponibilidad en el primal determinará si las variables del dual tienen relación con el valor
marginal de entrada o de salida.
El valor absoluto de los coeficientes de la última fila (cj – Zj ) indica valores marginales: lo que aumenta Z
por incremento unitario en la variable correspondiente.
El análisis de sensibilidad se hará ahora averiguando cuanto hay que variar Y4 e Y5 para que Y3 e Y2 sean
cero:
1,5/(−1)=−1,5 → para c1, originado en el vector Y4
0,5/0=∞ → para c1 , originado en el vector Y4
1,5/1,3=1,154 → para c2, originado en el vector Y5
0,5/(−0,5)=−1 → para c2, originado en el vector Y5

Lo que indica que los coeficientes del funcional PRIMAL pueden variar de la siguiente manera:

Vinicial − ∆V ≤ cj ≤ Vinicial +∆V

2,8 – 1,5 ≤ c1 ≤ 2,8 + ∞


1 – 1 ≤ c2 ≤ 1 + 1,154

1,3 ≤ c1 ≤ ∞
0 ≤ c2 ≤ 2,154
Programación Lineal. 44

VI - Programación Lineal en PC.


En esta sección se desarrollarán los principios básicos para resolver los problemas de programación lineal
utilizando los programas WinQSB (provisto por la asignatura), LINDO (se pueden obtener versiones de
evaluación en la internet) y EXCEL (disponible en la Universidad).

El problema guía a utilizar será el de la producciób de alcoholes QA1 y QA2 de Química Argentina.
Planeamiento de la producción en Química Argentia.
QA produce dos alcoholes, QA1 y QA2, en su planta San Nicolás. La planta tiene dos secciones: producción y
rectificado. En producción se opera 40 hs semanales empleando a cinco trabajadores de tiempo completo y a dos
que trabajan quince horas semanales. Se dispone de una línea de siete máquinas, operadas por cualquiera de ellos,
disponiéndose así de hasta 230 horas de trabajo, y, una vez terminado el producto, éste pasa al sector de rectificado,
que tiene siete equipos operados por seis empleados de tiempo completo y uno de 10 hs semanales, proporcionando
así una disponibilidad de hasta 250 horas de trabajo.
Las horas requeridas en los dos sectores para producir mil litros de cada alcohol son:

QA1 QA2
Producción 2 1
Rectificado 1 2
Ganancias ($/l) 0,30 0,50

En el cuadro anterior también se muestran los márgenes de ganancias para cada producto.
QA no tiene problemas de materias primas para ambos productos. Puede vender todo lo que quiera de QA1 pero tiene
una demanda limitada a 120000 litros semanales de QA2.

¿Que cantidad semanal de cada producto debe producir QA para maximizar las ganancias?.

A. WinQSB
1. En la barra de tareas de Windows, seleccionar INICIO – PROGRAMAS – WinQSB. Elija el módulo
“Programación Lineal y entera” del listado emergente: (Fig. 27)

Fig. 27. Menú principal de WinQSB, donde se selecciona Programación Lineal y Entera

2. Cargar los datos del problema, utilizando el menú Archivo (File) y seleccionando Nuevo Problema
(New Problem) o Cargar Datos (Load Problem), si estos estaban previamente archivados.
Programación Lineal. 45

Fig. 28. Los datos pueden ingresarse manualmente o desde un archivo preexistente.

Aparecerá una pantalla de especificación del problema, donde deben ingresarse los datos básicos:
1) Nombre del problema (opcional)
2) Cantidad de variables
3) Cantidad de restricciones (sin contar las lógicas)
4) Si el criterio es maximizante o minimizante
5) Tipo de variable (no negativas, continuas o enteras; binarias; irrestrictas)
6) Forma de ingreso de datos (hoja de cálculo o modelo matemático)

Fig. 29. Pantalla de especificación del problema

Para la carga (o modificación de datos) debe tenerse presente que:


• este programa transfiere el problema a la forma normalizada. Esto quiere decir que al ingreso de datos
no se realiza ninguna transformación: los datos del problema se cargaron tal cual estaban en el
enunciado. Sin embargo, en la solución aparecerán las variables de holgura o las que hagan falta.

Fig. 30. Carga de datos del problema


Programación Lineal. 46

Los datos se cargan siguiendo una operación similar a la una hoja de cálculo: una barra de tareas, arriba,
mostrará la celda de edición y dos botones permiten anular (X) o confirmar (!) la entrada, lo que se puede
hacer también con escape (anula) y enter o cursor, (confirman).

También es posible cambiar el nombre por defecto de las variables y las restricciones mediante el menú
Edit – Variable Name o Constraint Name. Este menú sirve para variar algunos aspectos del problema:
pasarlo de maximizante a minimizante, agregar o quitar variables y constantes, etc.

Fig 31. Cambio de datos en el problema: cambio de nombre de variables

3. Ejecutar el módulo:

Fig. 32. Resolver el problema: métodos disponibles

Una vez ingresados los datos, se ejecuta el menú Resolver el Problema (Solve and Analize). Se puede
optar por resolver directamente (Solve the Problem), resolverlo paso a paso (Solve and Display Steps),
resolverlo por método gráfico (Graphic Metod) y, además, cambiar las tolerancias.

Se van a mostrar las tres maneras de hallar la solución. En primer lugar se mostrará la solución gráfica
para el ya conocido problema de los alcoholes:

a) Método Gráfico: cuando se selecciona esta variante del menú, aparece un cuadro de diálogo que
permite elegir los ejes de graficación, según se muestra en la figura 33. Por defecto se presentan los ejes
X1, como absisa (x), y X2 como ordenada (y), pero pueden permutarse.
Programación Lineal. 47

Fig. 33. Selección de ejes para la representación gráfica


b) y se accede al gráfico al pulsar el botón OK

Fig. 34. Representación gráfica del problema de los alcoholes

En la figura aparece el valor de Z óptimo y el que adoptan las variables de decisión.

C) Si, en cambio, se opta por hallar la solución paso a paso (segunda opción del menú), aparecerán
pantallas con cada una de las matrices del Simplex:

Fig. 35. Solucion del problema mostrando cada paso. Primera matriz.

en cada una de estas pantallas se dispone del menú Iteración del Simplex (Simplex Iteration) el que
permite acceder a la siguiente matriz, elegir una variable para entrar en la base, ir a la última matriz o ir
directamente a la final.
Programación Lineal. 48

Fig. 36. Método de resolución mostrando los pasos. Menú de iteraciones del Simplex

Si se opta por cualquiera de las variables a entrar en la opción “Choose…” se accede a una segunda
matriz donde se tiene en cuenta la variable seleccionada para el siguiente punto pivote.

d) Por último se muestra el resultado de resolver directamente el problema, usando la primera opción del
menú:

Fig. 37. Resolución del problema: informe combinado

Puede ocurrir que el formato de la tabla no se vea completamente en el monitor, para ello existen
“botones” de control a fin de regular el tipo, el ancho y el alto de columnas y filas.

Fig. 38. Controles de formato de tabla de resultados

La tabla presentada, Fig. 37, es el informe combinado de los resultados del problema, en la cual se
reconocen tres sectores:

El primer sector (renglones 1 y 2 en la tabla de la figura 37) implica a las variables de decisión.
La columna “Solution Value” indica el valor óptimo a producir de cada una de las variables (70
(mil) litros de QA1 y 90 (mil) litros de QA2). La columna “Unit Cost (cj)” indica el coeficiente
original en el funcional de cada una de las variables. La columna “Total Contibution” señala el
producto cjxj en cada uno de los j que entran en la solución, es la contribución al total del valor
asumido por la variable. La columna “Reduced cost”, en el caso de las variables x1 y x2, que son
básicas (como puede verse en la columna “Status”) no tiene significado, por lo que su valor
aparece como cero. Si fuera diferente a cero indicaría el sentido de evolución de la variable.

Por último aparece un análisis de sensibilidad para los coeficientes de las variables de decisión,
indicándose el mínimo y máximo para cada una de ellas para que se mantenga la solución
hallada. Así, la ganancia de 3 para QA1 puede variar entre 2,5 y 10 sin que varíe el plan de
producción y los 5 del QA2 entre 1,5 y 6.

El segundo sector simplemente presenta el valor de Z en el óptimo y el criterio utilizado. En este


caso es maximizante y el valor de Z = 660.

El tercer sector es similar al primero, pero referido a las restricciones. La columna “Left Hand
Side” aquí presenta los valores que tienen las restricciones cuando se halla el óptimo. Así, la
Programación Lineal. 49

restricción 1 alcanza un valor de 230. La siguiente columna, “Direction”, indica el sentido de la


desigualdad y la tercera el valor original del vector de disponibilidades.

El valor alcanzado por las slacks en el óptimo aparece en la columna “Slack or Surplus”. La restricción 1,
(horas en el sector elaboración), presenta un valor cero, lo que significa que todas las horas del
departamento están utilizadas: no hay holgura. Lo mismo en rectificado (restricción 2). El valor de 30
para la restricción 3 indica que hay una subocupación del recurso: se está produciendo 30 mil litros por
debajo de los 120 mil que son el máximo posible.

Luego aparece la columna “Shadow price”. El precio sombra es el valor del recurso involucrado en la
restricción: 0,3333 para la restricción 1 es la ganancia adicional en cientos de $ que se obtendría
incrementando en una hora el tiempo de elaboración. En la restricción 2 si se incrementa en 1 hora el
tiempo disponible en rectificado se obtiene una ganancia de 2,3333 cientos de $ (233,33 $). La restricción
3 indica que si se incrementa la producción encima de 120 no se obtiene ganancia adicional. (Observe que
la solución inclusive está debajo del límite de 120).

Por último se presenta el análisis de sensibilidad del vector de disponibilidades (o restricciones en el lado
derecho), así la disponibilidad –agotada– de 230 horas en el sector producción puede variar desde 140
hasta 500 sin que cambie la solución óptima hallada en el sentido que es la intersección entre las
restricciones 1 y 2, pero sí variando el plan de producción y la ganancia obtenida.

También es posible acceder a otras formas de ver los resultados mediante el menú Resultados (Results):

Fig. 39. Otras presentaciones de los resultados del problema (el problema tiene que estar resuelto)

Las pantallas que se obtienen en cada caso son:

a) Sumario de la solución, solamente los valores finales y coeficientes de las variables de decisión:

Fig. 40. Informe sumario


b) Análisis de sensibilidad de los coeficientes del funcional y del vector de disponibilidades, informe
combinado. Presenta los mínimos, máximos, actuales de cada elemento por separado o como ya fue
mostrado. (Este tema se discutirá más adelante, en este mismo capítulo).

c) Análisis paramétrico, que permite encontrar un análisis de los coeficientes del funcional y otro para el
vector de disponibilidades. (Este tema se discutirá más adelante, en este mismo capítulo).
Programación Lineal. 50

Fig. 41. Pantalla de selección del análisis paramétrico

El análisis paramétrico evaluará como cambia el valor de la función objetivo cuando se cambian los
coeficientes del funcional (cj) o los del vector de disponibilidades (bi) aún más allá de los límites mínimos
y máximos ya indicados cuando se discutió el informe combinado, más arriba. Si se llama C al vector de
los coeficientes cj, se llamará C’ al vector de dirección de perturbaciones de dichos coeficientes, lo mismo
para B y B’. Si se considera que existe un factor de perturbación µ, se podría expresar una nueva función
objetivo como (C + µC’)x, siendo x el vector de variables de decisión y se encontrará un nuevo conjunto
de valores del lado derecho (B + µB’). Cuando se dispone de una solución es posible asignar una
dirección de perturbaciones para que el programa efectúe el análisis.

También se puede elegir cada uno de los coeficientes o cada uno de los valores del lado derecho. Sea, por
ejemplo, el ya visto análisis paramétrico de la primera restricción. (este tema se discutirá más adelante, en
este mismo capítulo).

Fig. 42. Tabla de análisis paramétrico de la restricción 1

Fig. 43. Gráfico del análisis paramétrico (Diagrama transaccional)


Programación Lineal. 51

Estos resultados se obtienen si se encuentra primero la solución, luego se realiza el análisis paramétrico
con lo que es posible acceder al menú correspondiente:

Fig. 44. Menú de análisis de resultados

Aún hay disponibles algunas utilidades más:

La posibilidad de ver o cargar el problema en forma normalizada, que se obtiene mediante el menú
Formato (Format) ANTES de resolver el problema,

Fig. 45. Problema de los alcoholes presentado en forma normal


o la posibilidad de convertirlo a Dual, con el mismo menú y en la misma oportunidad.

Fig. 46. Dual del problema de los alcoholes


Como ejercicio, intente encontrar las matrices finales Simplex del ejemplo desarrollado en el apartado
anterior cuando se discutió dualidad. Use el menú format.
Programación Lineal. 52

A.1. Cambios en un parámetro (Análisis de sensibilidad)


Siguiendo lo discutido en el análisis gráfico, se muestran los resultados del análisis paramétrico que
presenta el programa, para lo cual se recuerda uno de los agregados al problema:
Se decide disminuir el precio de venta QA1 en $ 25 por mil litros. ¿Cómo varía el plan de producción?
El margen de ganancia pasa de $ 300 a $ 275. La solución hallada es x1 = 70 y x2 = 90 y se desea
averiguar que pasa con estos valores cuando el coeficiente de x1 en la función objetivo pasa de 3 a 2,75

Fig. 47. Análisis de sensibilidad de los coeficientes del funcional

La Fig. 47 muestra el valor actual del coeficiente de cada variable (“Solution Value”) y en las dos
columnas que están a la derecha se indican los valores mínimos (“Allowable Minimum”) y máximos
(“Allowable Maximum”) que esos coeficientes pueden tener sin que cambie el resultado actual de 70 y 90
para cada variable. Debe observarse que el resultado x1 = 70 Y x2 = 90 no cambia pero si cambia el
margen de ganancia que se obtiene
También en el análisis gráfico oportunamente presentado se habían efectuado otras preguntas, una de las
cuales era:
¿Cambia el margen de ganancia si uno de los empleados de tiempo parcial en elaboración trabaja 10 horas en lugar
de 15 por semana?

Fig. 48. Análisis de sensibilidad del vector de disponibilidades

Observando la Fig. 48, se verá que, para cada restricción se presenta un valor actual (“Right Han Side”)
tal como fue cargado con los datos, y un mínimo y máximo (“Allowable Minimum” y “Allowable
Maximum”, respectivamente). Más arriba se había descrito la presentación del precio sombra. Ese precio
sombra tiene valor siempre y cuando el lado derecho de las restricciones permanezca dentro de un cierto
rango, que es el que está entre los máximos y mínimos arriba mencionados:
El precio sombra de 0,3333 cientos de $ para la restricción 1 tiene valor mientras el tiempo de horas de
elaboración fluctúe entre 140 y 500. (Cada hora adicional de elaboración desde la actual 230 hasta 500
incrementa el margen de ganancia en $ 33,33. Cada hora menos de elaboración desde la actual de 230 y
hasta 140 disminuye el margen de ganancia en $ 33,33).

Cambios en un parámetro fuera del rango de variabilidad (Análisis


paramétrico)
Se accede a la opción de analizar cada restricción individualmente. En la Fig. 49 se muestra la selección
de la restricción 1. Para acceder a este cuadro se selecciona el menú Result – Perform Parametric
Análisis.
Programación Lineal. 53

Fig. 49. Selección de la restricción a analizar.


Debe observarse cuidadosamente lo presentado en la pantalla (Se repite la figura 42 como Fig. 50): en la
primera línea aparece el rango de variabilidad de los valores del lado derecho, dentro de los límites ya
vistos: 230 a 500, con un precio sombra (indicado acá como pendiente) de 0,333, que produce
incrementos del funcional desde los actuales 660 (en 230) hasta 750 (en 500).
La siguiente línea, la 2, toma el tramo superior de variabilidad: los valores del lado derecho desde 500 a
infinito: la pendiente o precio sombra es cero y -por tanto- el valor de la función objetivo va de 750 a 750
(no cambia), lo que quiere decir que incrementar recursos no incrementa ganancias.
Las demás líneas, tal como fuera presentado en el análisis gráfico, muestran la variabilidad de los valores
del lado derecho desde 230 a cero, en los tramos que ya el lector conoce del análisis anterior: 230 a 140;
140 a 120 y 10 a 0. (Nótese que se presenta un tramo 0 a menos infinito, indicado como no calculable).

Fig. 50 (Repetición de la Fig. 42). Análisis paramétrico de la restricción 1.

Fig. 51. Análisis paramétrico de la restricción 2

Fig. 52. Análisis paramétrico de la restricción 3.


Programación Lineal. 54

LINDO
El programa LINDO, del cual se mostrarán pantallas correspondientes a la versión 6.1 para Windows,
lanzada en enero de 2002, puede obtenerse en Internet en versión de prueba. Se encuentra en la página
www.lindo.com o, en el sitio de la asignatura, www.optimiza.unlu.edu.ar en el botón Contactos (Sitios de
interés).

LINDO está orientado a programación lineal, entera, binaria, etc. y puede usarse en la mayor parte de los
temas abarcados por la asignatura, siempre que los problemas se conviertan a la forma lineal. Por
ejemplo, LINDO no tiene un módulo específico para transporte, pero pueden resolverse los problemas de
transporte.

Con el menú File – New se accede a un editor de textos donde el problema se escribe en forma directa
respetando algunas reglas sintácticas simples. El problema de los alcoholes, por ejemplo, se escribe como
se muestra en la figura:

Fig. 53. Edición en la pantalla de ingresos del modelo

El símbolo ! indica que lo que sigue es un comentario.

El verdadero modelo comienza con las palabras MAX o MIN, exclusivamente. Luego se escribe la
función objetivo con las constantes un espacio que puede ponerse o no y las variables como un conjunto
de letras y números (XLZ, X1, C22, VARIABLE3, VAR3, etc.).

Luego se escriben las restricciones, comenzando con la frase SUBJECT TO, las que terminan con la
palabra END.

El modelo se corre con el botón o con el menú Solve, luego de lo cual se solicita si se requiere un
análisis de sensibilidad:

Fig. 54. Análisis de sensibilidad

Fig. 55. Estado de la optimización

y un informe de estado de la modelización resuelta:


Programación Lineal. 55

La planilla de resultados, que el programa presenta en una ventana aparte, es como la que se muestra:

LP OPTIMUM FOUND AT STEP 3


OBJECTIVE FUNCTION VALUE

1) 660.0000

VARIABLE VALUE REDUCED COST


X1 70.000000 0.000000
X2 90.000000 0.000000

ROW SLACK OR SURPLUS DUAL PRICES


REFINADO) 0.000000 0.333333
RECTIFIC) 0.000000 2.333333
DEMANDA) 30.000000 0.000000

NO. ITERATIONS= 3

RANGES IN WHICH THE BASIS IS UNCHANGED:

OBJ COEFFICIENT RANGES


VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF INCREASE DECREASE
X1 3.000000 7.000000 0.500000
X2 5.000000 1.000000 3.500000

RIGHTHAND SIDE RANGES


ROW CURRENT ALLOWABLE ALLOWABLE
RHS INCREASE DECREASE
REFINADO 230.000000 270.000000 90.000000
RECTIFIC 250.000000 45.000000 135.000000
DEMANDA 120.000000 INFINITY 30.000000

Obsérvese que se denomina Dual Prices (Costos en el dual) a los precios sombra. El resto es similar a las
presentaciones ya vistas en WinQSB.

Teniendo en foco la ventana de edición del modelo es posible acceder al menú resultados (Results), desde
el cual se obtienen diferentes reportes, tal como el formato de tabla que se muestra a continuación:

THE TABLEAU

ROW (BASIS) X1 X2 SLK 2 SLK 3 SLK 4


1 ART 0.000 0.000 0.333 2.333 0.000 660.000
REFINADO SLK 4 0.000 0.000 0.333 −0.667 1.000 30.000
RECTIFIC X1 1.000 0.000 0.667 −0.333 0.000 70.000
DEMANDA X2 0.000 1.000 −0.333 0.667 0.000 90.000

También es posible hacer un análisis paramétrico, para ello se accede al menú Results, Parametrics, con
lo cual se accede a un cuadro de diálogo, en el que se puede elegir la restricción a analizar, y el valor
hasta donde se analiza a partir del actual. Se obtiene una salida en texto y –opcionalmente− una en
gráfico, ambas sujetas a los límites señalados. En la salida siguiente se pidió un valor tope RHS de 500,
escribiendo ese valor en la ventana RHS, que señalaba el valor actual de 230 que fue reemplazado por
500:

RIGHTHAND SIDE PARAMETRICS REPORT FOR ROW: RECTIFIC

VAR VAR PIVOT RHS DUAL PRICE OBJ


OUT IN ROW VAL BEFORE PIVOT VAL

250.000 2.33333 660.000


SLK 4 SLK 3 2 295.000 2.33333 765.000
500.000 −0.222045E−15 765.000
Programación Lineal - IV -Uso de PC: Excel y Solver 56

B. Excel
Introducción - Uso de Microsoft Excel
Si bien el programa Microsoft Excel es un producto comercial sobre el cual hay abundante literatura respecto a
su uso y posibilidades, se ha creído conveniente brindar elementos básicos a fin de aprovechar algunas de las
características que tiene y que son aplicables a los contenidos discutidos en esta publicación. La decisión de la
inclusión se basa en que este utilitario se encuentra disponible, en términos generales, en forma generalizada. La
pantalla principal de Microsoft Excel1 es la que se presenta a continuación:

Fig. 56 Pantalla principal de Microsoft Excel 2000


En el caso de la ilustración, se trata de una pantalla similar a la que cualquier usuario obtendrá en su máquina.
Las diferencias que puede encontrar se deben al agregado de algunos comandos y botones que facilitan tareas
repetitivas. Fuera de estas diferencias menores, en todos los casos hay elementos iguales: la barra superior
identifica el programa y el nombre del archivo que está en uso (en el ejemplo, ese nombre es “Libro1”, ya que
Excel da un nombre único -Libro- a cada archivo nuevo que se abre, seguido de un número de orden, en este
caso fue el primer libro abierto). Como primera tarea se dará un nombre al archivo. Para ello, pulsando en
Archivo y luego en Guardar se escribe el nombre INGPROC y luego se hace clic en aceptar, como se muestra en
la Figura.

Fig. 57
Se verifica que, ahora, el nombre del Libro ha cambiado por INGPROC.XLS:
1
Se trabajará sobre versión 97 o 2000, similares en general, formalmente se denominan versión 8.0 y 9.0, sin embargo en las versiones
anteriores, 5.0 y 95 (formalmente 6.0), no hay grandes diferencias. Cuando hay alguna importante se indica en el texto
Programación Lineal - IV -Uso de PC: Excel y Solver 57

Fig. 58. Nuevo nombre del libro

El programa Excel presenta una metáfora de hojas superpuestas, numeradas originalmente desde 1 hasta el
número final que el operador elige (en la fig. 56 sólo hay 3). Esas hojas tienen una “solapa” para poder verlas. El
conjunto de hojas constituye un Libro. Así el libro INGPROC tiene las hojas 1, 2 y 3. Cada hoja tiene un
nombre, en este caso: Hoja1, Hoja2, etc. Estos nombres pueden cambiarse pulsando dos veces sobre ellos.
Pulsando una sola vez se “activa” la hoja, lo que equivale a decir que esa hoja se pasa a primer plano. (Como si
se seleccionara una página en la agenda telefónica).

Cada hoja es una planilla con columnas (denominadas A, B, C, ..., Z luego AA, AB, AC,… AZ luego BA, BB,
BC, … BZ y finaliza en IR, IS, IT, IV) y con filas, (numeradas desde la 1 hasta algo más de 65500).

Este conjunto constituye una matriz donde es posible anotar valores en cada elemento (celda) y operarlos. Así, la
unidad operativa de una hoja es una celda. Por ello si se quiere obtener una función resultado de operar dos
variables se deben utilizar tres celdas. Si se observa detenidamente la figura 56, se verá que una celda, la E8,
está con un recuadro más grueso, esa celda es, en este caso, la “celda activa”. Cuando se tipea algo, se lo hace en
una celda activa.

Sea un ejemplo simple: sumar 2 + 3. Hay dos formas de hacerlo. La primera es usar la hoja como una
calculadora. En ese caso solamente hay que seleccionar una celda (convertirla en activa) y escribir lo siguiente:
=2+3. Al pulsar Enter, la celda activa adoptará el valor 5. Esta manera no brinda otra alternativa más allá de la
simple operación realizada, en este caso la suma de 2+3.

La otra forma de hacerlo, es utilizar tres celdas, por ejemplo la A1, la B1 y la C1 (pueden ser cualquiera, y en
cualquier orden). En la celda A1, se escribe 2, en la celda B1 se ingresa 3 y en la celda C1 se ingresa la
operación deseada, tomando como operandos el nombre de las celdas anteriores, en este caso se ingresa lo
siguiente: =A1+B1.

Fig. 59
Esta forma de plantear el problema implica que cada celda a operar se constituye en una variable, ya que resulta
posible reemplazar los valores 2 o 3 por cualquier otro. Equivale a haber escrito una función completa del tipo
y=x1 + x2.

Efectivamente, si ahora se escribe 1245 en la celda A1, que equivale a x1 , se verá que, luego de ingresar con
“Enter” o con la flecha del cursor, la celda C1, que equivale a y, toma instantáneamente el valor 1248. Esta
potencialidad se aumenta si se complican los cálculos o si se diversifican.

Ejercicio: ingresar en la celda C1 la función (A1+B1)/A1, en la celda C2 la función A1*B1 y en la


celda C3 la función (A1/B1)+3*B1. Una vez hecho esto ingresar distintos valores en A1 y en B1 y
observar como varían simultáneamente las celdas resultados.

Para facilitar las cosas, hay una herramienta accesoria: un botón llamado Botón de Función que activa un
asistente para funciones más complejas.

Fig. 60 Comandos de sumatoria y de asistente de funciones


Al pulsarlo, aparecen todas las funciones disponibles agrupadas en categorías. El botón adyacente, con el
símbolo Σ, activa la suma de celdas, proponiendo un rango de ellas, aunque se puede elegir el o los rangos que
uno desee. Una lista de funciones recientes aparece también en la barra de herramientas cuando se activa una
Programación Lineal - IV -Uso de PC: Excel y Solver 58
celda: ver en la figura 56 que aparece un botón denominado SUMA a la izquierda de la barra de edición, con un
botón pequeño que señala hacia abajo. Ese botón permite ver las funciones recientemente usadas y seleccionar
una de ellas.

B.1. Funciones disponibles


Se pueden escribir las funciones disponibles en la celda activa siempre y cuando se respete la sintaxis
establecida en general y en particular. Hay muchas funciones, desde elementales a complejas.

Supongamos, por ejemplo, que queremos sumar un conjunto de celdas y presentar el resultado en otra celda. En
este caso hay una función disponible (SUMA) y dos maneras de hacerlo.

Para emplear cualquiera de esos métodos es necesario, previamente, conocer la terminología y la estructura del
problema a resolver. El conjunto de celdas que contiene los datos que van a ser procesados es un rango de
celdas: si se desea sumar el contenido de las celdas B1, B2, B3, B4, B5, B6 y B7, entonces el rango es B1:B7. Si
se desea sumar el contenido de B1 con el de B2, B3, C1, C2 y C3, el rango será B1:C3.
El lugar donde se desea que aparezca el resultado, será la celda en donde se escribió la función. Esta celda no
puede estar dentro del rango de celdas que contienen los datos.

Se propone resolver la suma de B1, C1, B2, C2, B3, y C3. y presentar el resultado en D4.

Primer método: ingreso directo de la función.


Se posiciona el cursor en D4, o sea, D4 pasa a ser la celda activa. Allí se escribe la función SUMA con su
sintaxis correcta: =SUMA(B1:C3). Al ingresar la función, con Enter o haciendo clic en el tilde de la barra de
edición, la celda D4 pasará a tener el valor de la operación de suma: B1+B2+B3+C1+C2+C3, cualquiera sea el
valor que estas celdas adopten, el resultado de su suma aparecerá en D4. Si lo que hay en las celdas es algo
distinto a un número, será considerada cero. Como Ejercicio ingresar varios valores en las celdas del rango y
observar como varía D4.

Segundo método: uso del asistente de funciones.


Pulsando el botón fx, ver figura, aparecerá el cuadro de diálogo del Asistente de funciones, el cual agrupa las
funciones por categoría o tipo, además de un listado donde aparecen todas ellas y un listado accesorio de
aquellas recientemente utilizadas.

En el caso ilustrado, la función SUMA está entre las usadas recientemente. Cuando se selecciona la función
SUMA, en la parte inferior aparece una explicación simple de las propiedades de tal función. Una vez que se
seleccionó la función se pulsa el botón ACEPTAR. Si no está en la lista de recientes, estará en la lista Todas y/o
en la lista Matemáticas y Trigonométricas.

Fig. 61

Aceptada la función aparece un nuevo cuadro de diálogo (ver figura). Se observa: la barra de fórmulas presenta
ahora el texto: =SUMA() escrito por el asistente, y el cursor “ilumina” la ventana Número 1, donde puede
escribirse: un número, un rango o una función. Si se necesita otro número, otro rango u otra función, se escribe
en NUMERO 2, en ese caso automáticamente aparecerá una nueva ventana Número 3 preparada para el caso
que se necesite otro conjunto. En este ejemplo se usará solamente la primera ventana, Número 1.
Programación Lineal - IV -Uso de PC: Excel y Solver 59

Fig. 62

En este momento se presentan dos alternativas: una es escribir el rango B1:C3 y pulsar ACEPTAR. Antes de
terminar, se verá el resultado preliminar de la operación propuesta, en la parte inferior izquierda donde dice
“Resultado de la fórmula =”.

La otra alternativa (en vez de escribir el rango), es ubicar el cursor en el cuadro de entrada y luego, al
aparecer la hoja de cálculo, posicionarlo sobre el primer elemento del rango (B1) oprimir el botón izquierdo y
“pintar” todo el rango. Automáticamente veremos que se “escribió” el rango en la ventana y en la barra superior
de ingreso. En este caso se ve la utilidad de tener varias ventanas de “NUMERO” disponible: se pueden sumar
varios rangos separados u alejados (por ejemplo: B1:C3 + J567:H570). En este caso, también se pulsa aceptar y
también se previsualiza el valor obtenido en Resultado de la fórmula:

Fig. 63
Se podrá observar que, cualquiera sea el método utilizado, el o los rangos seleccionados aparecerán limitados
por una delgada línea de puntos o de color (según versiones del programa).
La figura 63 sirve para discutir la notación implícita y explícita que puede utilizar Excel: En la ventana marcada
número1 verá el nombre del rango (B1:C3) en notación primera celda del rango - colon - ultima celda del
rango. Mientras que a la derecha de esa ventana, aparece en gris la notación vectorial de cada uno de los
contenidos del rango seleccionado en la forma contenido columna 1 fila 1 - punto y coma - contenido columna
Programación Lineal - IV -Uso de PC: Excel y Solver 60
2 fila 1 - punto y coma - ... - contenido columna n fila 1 - barra - contenido columna 1 fila 2 - etc. Las barras
separan las filas, los punto y coma las celdas seguidas en cada fila.

Como ejercicio, se propone recorrer las funciones que resulten más interesantes por cada categoría mostrada y
leer la descripción pulsando el botón Ayuda del asistente de funciones. Ensayar con algunas de ellas y probar de
hacer “anidados”, por ejemplo la suma de tres promediosAnexo .

B.2. Ejercicios:
I) Se tienen los siguiente conjuntos de datos:
a) 2, 3, 4, y 5.
b) 5, 6, 7, 8, 1 y 0
c) 10, 9, 8, 9 y 10.
Se pide
1. Calcular el promedio de cada conjunto,
2. Calcular el promedio de los promedios,
3. Calcular el promedio de todos los datos,
4. Establecer cuál es el valor más pequeño y cual es el valor más grande.

II) En una lista escriba el apellido de cuatro de sus compañeros. En otra escriba sus números de
legajo. Diseñe una hoja tal que, cuando se escriba en la celda A1 el número de legajo aparezca el
apellido en B1 y cuando se escriba en A2 el apellido aparezca en B2 el número de legajo. (Para
resolver este problema se deberá leer la ayuda referente a Ordenar datos y agrupar los datos).

B.3. Arrastre y copia de celdas.


Si se observa con cuidado la celda activa que se muestra en la Figura 56, E8, verá que tiene un recuadro con un
pequeño cuadradito en la esquina inferior derecha. Al pasar el cursor del “mouse” por ese recuadro verá que la
habitual cruz ancha que representa el puntero del ratón pasa a una cruz simple (+). Como ejercicio escribir:
• en la celda C1 la fecha,
• en la D1 el número 1,
• en D2 el número 2
• en E1 el número 3.
Ahora
1. Activar C1, posicionar la cruz en el cuadro y, oprimiendo la tecla izquierda del ratón “arrastrar” hacia abajo
por diez celdas. Suelte la tecla y pulse en cualquier lado. Observar el resultado.
2. “pintar” las celdas D 1y D2, luego buscar el cuadrado y repetir el arrastre hacia abajo. Observar el resultado.
3. Activar la celda E1, buscar el cuadrado y arrastrar hacia abajo. Observar.
4. Por último “pintar” D1 y E1, seleccionar y arrastrar a la derecha.
Si todo salió bien se obtendrá algo similar a lo mostrado en la figura 64:

Fig.64
Lo que comenzó como 3 de marzo, se convirtió en una sucesión de fechas. Lo que comenzó como 1-2, en una
cuenta de paso 1, lo que comenzó como 3, en una copia de números y lo que comenzó como 1-3 en una sucesión
de paso 2 (números impares).

Ahora, se borrarán todos los contenidos y en D1 se ingresará la función =A1+B1 (Si lo hace en C1, se deberá
corregir el formato de la celdas ya que al haber ingresado allí fechas, el programa fijó un formato acorde que
persistirá hasta que se cambie por otro). Aparecerá como resultado cero. A continuación debe hacerse clic en el
cuadrado y arrastrar hacia abajo 10 filas. Al ingresar valores aleatorios en el rango A1:B10 se verá que en cada
elemento del vector D1:D10 aparecerá la suma Ai+Bi correspondiente. Al “arrastrar” se incrementarán los
subíndices de A y de B. Si lo hubiésemos hecho hacia la derecha, la variación sería en las columnas (A pasaría a
ser B, B a ser C, etc.) y los números de filas serían constantes. Si se hubiese arrastrado tres posiciones abajo y
dos a la derecha, cada celda habría incrementado la columna y la fila que correspondía.
Programación Lineal - IV -Uso de PC: Excel y Solver 61
Cuando se escribe una fórmula y se piensa en copiarla por “arrastre”, puede resultar útil que, por ejemplo, una
de las columnas en un término no varíe. Esa columna se puede “fijar” mediante el signo $ escrito antes de la
letra de la columna, (si se quiere fijar la columna), del número (si se quiere fijar la fila) o de ambos (si se quiere
fijar la fila y la columna).

Sea, por ejemplo, la operación de sumar dos columnas (A y B) y el resultado de cada una de ellas multiplicarla
por una constante que está en la celda F1 y que se desee obtener un vector de resultados en D. La expresión sería
(Ai + Bi) * F1 = Di. Para i=1, 2, ..., 9, 10. Escribir, simplemente, en D1 la fórmula general =(A1+B1) * $F$1 y
luego arrastrar hasta completar el vector D1:D10. Se verá que el elemento, por ejemplo, D4 contiene la
expresión =(A4 + B4) * $F$1 y el elemento D5 la expresión =(A5 + B5) * $F$1 (varían los renglones de A y de
B, pero F1 es constante).

B.4. SOLVER

Sea el siguiente problema:


• se debe producir aceite tipo x1 y tipo x2, en cantidades tales que se obtenga el mayor beneficio posible.
• El beneficio por litro es de 2 y 3 para cada tipo, respectivamente.
• El costo de producción es de 1 y 4 y no debe superar el valor de 50.
• El costo de mano de obra, en horas hombre es de 2 y de 5 y no debe superar la disponibilidad de 70.
• El costo de materia prima por litro es de 4 y 3 y no se deben superar el valor de 90
• Como las variables de decisión representan bienes tangibles, entonces no pueden tener valores negativos.
Se expresa como
z = 2 x1 + 3x 2 (MAX)
Sujeto a
x1 + 4 x 2 ≤ 50
2 x1 + 5x 2 ≤ 70
4 x1 + 3x 2 ≤ 90
xj ≥ 0
Este problema, clásico de programación lineal, puede ser resuelto gráficamente, o por Simplex o mediante el
software distribuido en la asignatura.
Si se resuelve por algún método ya visto, se encuentran los siguientes resultados:
• de la función de 55,7142857142857
• de x1 de 17,1428571428571
• y de x2 de 7,1428571428571.
Como se resolvió mediante sistemas de ecuaciones encontrados por graficación, los decimales corresponden al
número 5/7 en el funcional y 1/7 en las variables.

Se procederá a plantear y resolver este problema con Excel, paso a paso:


B.4.a). Planteo del problema.

Para plantear un problema de este tipo, se deben definir algunas celdas: la primera es la celda que contendrá la
función objetivo. A esa celda se la llamará Celda Objetivo.

Para ello se elige, por ejemplo la celda A1: en ella se escribe la función (ver fig.), para lo cual hay que definir
dos celdas, una para la variable x1 y otra para x2, en este caso se eligieron A3 y A4, respectivamente:

Fig. 65

La función se escribe entonces


=2*A3+3*A4
En la celda A3 se anota un valor inicial de la variable x1 para comenzar la búsqueda de resolución del problema,
que, como es de maximización y hay condición de no negatividad puede ser cero. (Si se deja en blanco el
programa interpreta un cero). Lo mismo en A4 para x2.
Programación Lineal - IV -Uso de PC: Excel y Solver 62

El problema está planteado ahora como una función de A3 y de A4. Uno por uno se podrán ir probando distintos
valores para cada variable mientras que se observa en A1 cambiar el valor que adquiere el funcional.
Nuevamente es un método poco práctico de resolución, con la agravante de que aún no se han considerado las
restricciones.

B.4.b). Planteo de las restricciones.


En el menú Herramientas, se dispone de un apartado denominado Solver... Si se lo selecciona se encuentra con
un cuadro de diálogo.

Nota: es posible que no se pueda cargar la macro Solver, pues en la instalación normal de Excel, no se habilita.
Si esto ocurre, un mensaje lo informará. En versiones anteriores, como 5 y 95, deberá reinstalarse Excel y
habilitar la opción Agregar/Eliminar Componentes Instalados. Buscar el cuadro de verificación Solver y
marcarlo. Seguir las instrucciones. En versiones posteriores -Office 97 y 2000- se deben cargar como se indica
en el Anexo para “Herramientas de Análisis”. Si la opción “Solver” no existe, entonces se procede reinstalando
el programa habilitando la opción “Solver” en el proceso de Agregar/Eliminar componentes instalados.

Fig. 66

Cuando aparece el cuadro se encontrará con una pantalla similar a la de la figura 67.

Fig 67
Como se puede ver, hay que indicar cual es la celda objetivo, (en este caso A1) y marcar su valor: que significa
si se maximiza, se minimiza o se fuerza a un resultado.
Programación Lineal - IV -Uso de PC: Excel y Solver 63
El sector etiquetado cambiando las celdas requiere se ingrese el rango de la matriz de celdas donde están las
variables, en este caso esa matriz es un vector de 2 elementos (A3 y A4). Por lo cual el rango comienza en A3 y
termina en A4, (se escribe A3:A4).

Sigue un recuadro para restricciones, (originalmente aparece en blanco). Para cargar cada restricción se debe
pulsar el botón Agregar... Aparecerá el cuadro de la figura 68a:

Fig. 68 a

Fig. 68 b

En la casilla Referencia de la celda, se escribe el nombre de la celda que representa la variable a restringir. En la
casilla central el tipo de restricción, al que se accede desplegando la flecha vertical (ver figura 65 b).

Así se puede optar por tres relaciones básicas (igual a, menor o igual a, mayor o igual a) o forzar a un número
entero irrestricto (int) o binario (bin).

Por último, la casilla derecha servirá para escribir la restricción. Si se seleccionó ent o bin, allí aparecerá la
palabra ENTERO o BINARIO respectivamente
Cada restricción que se escribe se carga apretando el botón Agregar. Cuando se escribieron todas, y todas fueron
agregadas se pulsa Aceptar. Si hay que modificar alguna, se pulsa, en el cuadro de la figura 66,
Cambiar. Si hay que borrar alguna, se pulsa Eliminar.

Volviendo al problema, deberá plantearse las restricciones, para lo cual se elegirán tres celdas, por ejemplo las
celdas A5, A6 y A7.

Presione Cancelar para salir del Solver y escriba en cada una de esas casillas la restricción correspondiente:

La restricción Se escribe En la celda


x1 + 4 x 2 ≤ 50 =A3 + 4*A4 A5

2 x1 + 5 x 2 ≤ 70 =2*A3 + 5*A4 A6

4 x1 + 3x 2 ≤ 90 =4*A3 + 3*A4 A7

xj ≥ 0

Demás está agregar que hay una amplia gama de posibilidades para escribir las restricciones. Debe el lector
ensayarlas. El aspecto de la carga completa será el de la figura siguiente (donde se han sombreado las celdas
variables –o cambiantes-):
Programación Lineal - IV -Uso de PC: Excel y Solver 64

Fig. 69

Sin embargo, antes de resolverlo, deben verificarse las variantes del botón Opciones, las que se ven en la figura
70:

Fig. 70
En ese cuadro puede establecerse un tiempo máximo de búsqueda, el error, la tolerancia y el modelo de
resolución, sin embargo es conveniente señalar la importancia de marcar Adoptar Modelo lineal y asumir no
negativos para los problemas de Programación lineal, especialmente este último, que evita la carga de las
restricciones de no-negatividad.
4. Resolver el problema
Se esta en condiciones de terminar la tarea, simplemente oprimiendo el botón Resolver.
Programación Lineal - IV -Uso de PC: Excel y Solver 65

Fig. 71
Aparece un mensaje donde se informa si la búsqueda fue o no satisfactoria, a la vez que, en segundo plano, sobre
la hoja, en las celdas A1, A3 y A4 ya se ven los resultados de la función objetivo, de la variable x1 y de la
variable x2, respectivamente (Comparar con los valores analíticos más arriba señalados) y en las celdas A6, A7 y
A8 aparecen los valores del lado izquierdo de las restricciones.
Este cuadro presenta otras posibilidades:
Un sector denominado Informes: con tres alternativas, respuestas, sensibilidad y límites. Haciendo clic en
cualquiera de ellas de habilita una nueva hoja en el libro. En este caso se “iluminarán” las tres.

Se verá cada una de esas hojas, comenzando con la hoja de Informe de Respuestas, fig. 72, el informe de
sensibilidad, fig. 73 y el de límites, figura 74:

Fig. 72.
Programación Lineal - IV -Uso de PC: Excel y Solver 66

Fig. 73 (arriba) Fig. 74 (abajo)

B.5. El Problema de QA en Excel


Se presentan pantallas paso-a-paso para resolver el problema de QA por este método. Se recuerda que no existe
un método predeterminado para la carga de datos en Excel. El que sigue es un enfoque posible:

Fig. 75. Carga de los datos del problema en una hoja de Excel.
Programación Lineal - IV -Uso de PC: Excel y Solver 67
En la Fig. 75 se propone una forma de presentar el problema de Química Argentina. Las celdas C2 y D2
contienen los valores iniciales de x1 y de x2 respectivamente (0 y 0, o cualquier otro). La celda F3 contiene la
función objetivo, cuya sintaxis se puede observar en la ventana de edición de la barra correspondiente en la
misma figura (=C3*C2+D3*D2).
La columna que se llamó “Valor” presentará, no solo el resultado de la función objetivo en F3, sino que también
presentará el valor que tomarán las restricciones en el óptimo (Lado izquierdo). Obsérvese que cada celda de esa
columna correspondiente a una restricción tiene una función de cálculo (Las figuras 76 y 77 muestran la función
de las dos primeras restricciones), aún las de no negatividad. La función general es $C$2*Cn+$D$2*Dn donde
n es el número de fila de la restricción:

Fig. 76. Función de la restricción 1

Fig. 77. Función de la restricción 2.

Fig. 78. Parámetros del programa en la macro Solver. Debe recordarse que en OPCIONES... se selecciona “Adoptar modelo lineal”
y que en este caso no es necesario marcar “asumir no negativos” (¿porqué?)
Programación Lineal - IV -Uso de PC: Excel y Solver 68

Fig. 79. Resultados en la hoja. Debe observarse que esta manera de presentar la solución permite ver las diferencias entre los
valores del lado derecho y los hallados para cada restricción. (Ver columna Valores en el sector 2 de la Figura 34)

Fig. 80 Informe de límites para cada variable (Ver sector 1 de la Fig. 34). El resultado objetivo (Valor del funcional) en el grupo
central se refiere a valor del funcional cuando la variable está en el límite inferior (cero).

Fig. 81 Informe de sensibilidad. Se encuentran todos los datos ya vistos (Debe entenderse “Sombra Precio” como “Precio Sombra”
y las columnas de la extrema derecha en lugar de “Aumento permisible” deben interpretarse como “Disminución permisible”.
Estos errores vienen con Solver desde la versión 5.).

En la Fig. 81, “Celdas cambiantes” equivale al Sector 1 de la Fig. 42 para WinQSB, y “Restricciones” al sector 3
de la misma figura (230+270=500; 230−90=140; 250+45=295; 250−135=115; 120−30=90 y 120+1030=∞).
Programación Lineal - IV -Uso de PC: Excel y Solver 69

Fig. 82 Informe de respuestas

El informe de respuestas presenta:


1. el valor del funcional con la solución hallada
2. el valor de las variables en el óptimo
3. el valor de las restricciones en el óptimo
4. los elementos que componen la base (Opcional) y si el recurso está agotado (Obligatorio).

Excel no proporciona análisis paramétrico pero, en cambio tiene la versatilidad como para ir comprobando
cambios en los valores del lado derecho, ya que los pasos intermedios pueden guardarse y los reportes se
guardan automáticamente si se van ensayando otros valores.
Programación Lineal - IV -Uso de PC: Excel y Solver 70

Complemento sobre LINDO

Palabras reservadas
Lindo es un Software comercial orientado casi exclusivamente a programación lineal. No está difundido como
Excel y tiene un costo considerable, sin embargo la versatilidad de plantear “coloquialmente” el problema hace
que sea una opción interesante. Se pueden obtener versiones “demo” en la página web de la asignatura.
En la ventana de edición del modelo deben colocarse determinadas palabras a fin de indicar los elementos
estructurales del modelo. Se listan a continuación tales palabras y una breve descripción de su uso:

! Se coloca en un renglón en cualquier lugar e indica que lo que sigue en ese renglón es un
comentario no ejecutable
MAX Indica que el modelo que sigue en el renglón es maximizante
MIN Idem, minimizante
TITLE Permite agregar un texto asociado al modelo de hasta 73 caracteres
SUBJECT TO Indica que todas las expresiones de los renglones siguientes son restricciones, hasta que se
encuentre una sentencia END
ST Igual que SUBJECT TO
) Indica que lo anterior al símbolo es el nombre de la restricción que sigue
+y- Operadores aritméticos válidos
>=, =, <= Operadores de restricción, si se usa < se interpreta <=
END Fin de la lista de restricciones
INT La variable indicada es binaria (0 o 1)
GIN Las variables indicadas son enteras (General Integer),(0, 1, 2, 3, …)
SLB Las variables indicadas tienen límite inferior
SUB Las variables indicadas tienen un límite superior
FREE Las variables indicadas no reconocen la restricción de no negatividad ni ninguna otra
QCP Permite declarar un modelo cuadrático

Variables
Las variables pueden escribirse en mayúsculas o minúsculas, así como los comandos. Los nombres de las variables son de
hasta ocho caracteres.

Sintaxis del modelo

El modelo debe comenzar con MAX, o max, o MIN, o min

El modelo puede ser escrito con retornos de carro en cualquier lugar. Se muestran dos modelos idénticos:

MAX 3 C1 + 5 C2 Max
SUBJECT TO 3 C1 +
PROD) 2 C1 + C2 <= 230 5 C2 ST
RECT) C1 + 2 C2 <= 250 PROD) 2C1+C2<=230
DEM) C2 <= 120 RECT) C1+
END 2C2<=250
Dem) C2<=120 END

Archivos de Comando

Es posible generar un modelo con comandos incluidos, sea por ejemplo el siguiente modelo que incluye en el
primer renglón la declaración de la función objetivo, en el segundo la abreviatura de subject to, en el tercero,
cuarto y quinto las restricciones, en el sexto la declaración de fin de restricciones y en el séptimo el comando
que significa resolver (GO):

MAX 3 QA1 + 5 QA2


ST
Programación Lineal - IV -Uso de PC: Excel y Solver 71
PR) 2 QA1 + QA2 <= 230
RE) QA1 + 2QA2 <= 250
DE) QA2 <= 120
END
GO

Esta serie de renglones debe ser escrita de la manera habitual utilizando el editor que se usó hasta acá. Una vez
escrito debe procederse al archivado con Save, usando cualquier nombre, por ejemplo ALCOCOM.LTX.
Para esta demostración es conveniente cerrar todas las ventanas abiertas. Luego se debe seleccionar en el menú
File, el submenú TAKE COMMANDS y se observará que se carga el modelo, pero que, además, al encontrar la
sentencia GO se ejecuta y presenta el informe general.

Mediante la sentencia Load puede ser usado el mismo modelo para ensayar otros comandos, por ejemplo,
escribir comandos que permitan borrar la tercera restricción y presentar el resultado:

MAX 3 QA1 + 5 QA2


ST
PR) 2 QA1 + QA2 <= 230
RE) QA1 + 2QA2 <= 250
DE) QA2 <= 120
END
DEL DE
GO

Si luego de efectuadas las modificaciones se vuelve a guardar, se puede realizar la operación Take commands.
Deberá obtenerse la eliminación de la restricción N° 3 (QA2 <=129) y el informe estándar del resultado del
problema, igual al anterior, pues se ha eliminado una restricción que aparece en la base y que no forma parte de
las que configuran el óptimo (ver la solución gráfica del mismo problema)

Por último, se propone repetir el proceso con el fin de realizar los siguientes cambios:

MAX 3 QA1 + 5 QA2


ST
PR) 2 QA1 + QA2 <= 230
RE) QA1 + 2QA2 <= 250
DE) QA2 <= 120
TABLEAU
GO

Deberá obtenerse la tabla simplex del problema enunciado y el informe estándar del resultado.

La siguiente es una lista de algunos de los comandos disponibles:

FBR Recupera una base guardada con el comando FBS


FINS Recupera una base guardada con el comando FPUN
LEAVE Termina un texto de comando
MAX/MIN Comienza un modelo
RETR Recupera un problema guardado con SAVE
TAKE Toma un comando de un archivo de comandos
LOOK Muestra todo o parte del modelo
NONZ Muestra la solución para los valores no cero
RANGE Muestra el análisis de rango
SHOCOLUMN Muestra una columna (variable) del modelo
SOLUTION Muestra el informe normal de la solución
TABLEAU Muestra la tabla actual
DIVERT Manda la pantalla de salida a un archivo
FBS Guarda la base actual en formato LINDO
FPUN Guarda la base actual en formato MPS
SAVE Guarda el modelo actual en un archivo comprimido
SDBC Guarda la solución en formato de base de datos/columna
SMPS Guarda el modelo en formato MPS
GO Resolver el problema
Programación Lineal - IV -Uso de PC: Excel y Solver 72
PIVOT Ir a una iteración simplex
APPC Agregar una nueva columna (variable de la formulación)
DEL Borrar una restricción determinada
EXT Agrandar el problema por adición de restricciones
FREE Declara que una variable es irrestricta en su signo
SLB Establece un límite inferior a una variable
SUB Establece un límite superior a una variable
BIP Establece un límite a un modelo de programación entera
GIN Variable general entera (0,1,2,…)
INT Variable binaria (0, 1)
PARAMETRICS Realiza un análisis paramétrico del vector RHS
! Inserta un comentario
BATCH Indica que ejecuta por lotes
PAGE Define la longitud de la página o la pantalla
PAUSE Pausa para que se acepte una entrada por teclado
TERSE Coloca un estilo conversacional para la salida, simplificando el informe
VERB Recoloca el informe normal
WIDTH Establece el ancho de la pantalla de salidas
INVERT Invierte la base actual
STATS Muestra un resumen estadístico del modelo
TITLE establece, cambia o devuelve el título del modelo
QUIT Sale de Lindo

Listado completo de comandos:


1) INFORMACION
HELP COM LOCAL CAT TIME DATE
2) ENTRADAS
MAX MIN RETR RMPS TAKE LEAV RDBC FBR FINS
3) PRESENTACION
PIC TABL LOOK NONZ SHOC SOLU RANGE BPIC CPRI
RPRI DMPS PPIC LKLG
4) SALIDA A ARCHIVO
SAVE DIVE RVRT SMPS SDBC FBS FPUN SMPN
5) SOLUCION
GO PIV GLEX
6) EDICIÓN DE PROBLEMAS
ALT EXT DEL SUB APPC SLB FREE
7) QUIT
8) PROGRAMACIÓN ENTERA, CUADRÁTICA Y PARAMÉTRICA
INT QCP PARA POSD TITAN BIP GIN IPTOL
9) PARAMETROS DE PRESENTACIÓN
WIDTH TERS VERB BAT PAGE PAUS
10) REUTINAS DE USUARIO
USER
11) OTRAS FUNCIONES
INV STAT BUG DEB SET TITL NEWPW

Anexo
Cuando se Instala Excel se cargan muchas funciones accesibles, como se ha visto, mediante el botón fx o
mediante el menú correspondiente. Sin embargo existen varias funciones especializadas más que pueden
cargarse y agregarse al botón y al menú mediante el siguiente método:
1. se accede al menú Herramientas. Dentro de él, al submenú Macros Automáticas (Hasta versión 5) o
Complementos. (versiones posteriores)
2. se marca la opción Herramientas para análisis y Solver en caso que no esté disponible. Luego se presiona
Aceptar.
De esta manera se dispondrán más de 320 funciones.
Para desinstalar este conjunto extra, se sigue el mismo procedimiento, desmarcando la opción Herramientas
para análisis y aceptando.
Programación Lineal - IV -Uso de PC: Excel y Solver 73

También podría gustarte