Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 - Programacion Lineal
1 - Programacion Lineal
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.
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
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.
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.
Definición del
problema
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
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.2. Restricciones
Pero esto solo no alcanza para definir el problema como un modelo matemático: existen las limitaciones o
restricciones:
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
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
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:
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 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
• 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)
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.
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.
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, ,....
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:
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?.
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.
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á:
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
Los fondos totales a invertir en cada proyecto seleccionado en el primer año deberán ser, como máximo,
de 90
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)
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:
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.
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:
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
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.
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. 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.
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
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
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
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
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
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)
Punto x1 x2 Z
A 0 0 0
B 200 0 600
C 100 100 800 ←Optimo
D 0 150 750
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
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:
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
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
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
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
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.
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
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
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
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
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.
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.
bi
∆ SUP = min
a ij
a ij < 0
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
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:
1,3 ≤ c1 ≤ ∞
0 ≤ c2 ≤ 2,154
Programación Lineal. 44
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)
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.
3. Ejecutar el módulo:
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
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ú:
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.
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 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
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)
a) Sumario de la solución, solamente los valores finales y coeficientes de las variables de decisión:
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
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).
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:
La posibilidad de ver o cargar el problema en forma normalizada, que se obtiene mediante el menú
Formato (Format) ANTES de resolver el problema,
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?
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).
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:
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:
La planilla de resultados, que el programa presenta en una ventana aparte, es como la que se muestra:
1) 660.0000
NO. ITERATIONS= 3
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
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:
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. 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
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.
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.
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.
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).
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
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
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.
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:
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. 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. 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
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
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.
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):
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:
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:
Deberá obtenerse la tabla simplex del problema enunciado y el informe estándar del resultado.
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