“SISTEMA DE COMPUTO PARA LA SOLUCIÓN DE PROBLEMAS DE ... · PROBLEMAS DE PROGRAMACIÓN LINEAL”...
Transcript of “SISTEMA DE COMPUTO PARA LA SOLUCIÓN DE PROBLEMAS DE ... · PROBLEMAS DE PROGRAMACIÓN LINEAL”...
“SISTEMA DE COMPUTO PARA LA SOLUCIÓN DE
PROBLEMAS DE PROGRAMACIÓN LINEAL”
TESIS PROFESIONAL
QUE COMO REQUISITO PARCIAL PARA OBTENER EL TITULO DE:
LICENCIADO EN ESTADISTICA
PRESENTA:
López Cruz Marco Antonio
Chapingo, Texcoco, Edo. de México. Julio de 2009
UNIVERSIDAD AUTÓNOMA CHAPINGO
DIVISIÓN DE CIENCIAS FORESTALES
- ii -
La presente tesis titulada “SISTEMA DE COMPUTO PARA LA SOLUCIÓN DE
PROBLEMAS DE PROGRAMACIÓN LINEAL” fue realizada por el C. Marco Antonio
López Cruz, fue dirigida por el M.C. Ángel Leyva Ovalle y asesorada por el Dr. Víctor R.
Valdovinos Chávez. Fue revisada y aprobada por el siguiente Comité Revisor y Jurado
Examinador, para obtener el título de LICENCIADO EN ESTADISTICA.
PRESIDENTE
SECRETARIO
VOCAL
SUPLENTE
SUPLENTE
Chapingo, Texcoco, Edo. de México, Julio de 2009
_______________________________________
M. C. Ángel Leyva Ovalle
_______________________________________
Dr. Víctor Rafael Valdovinos Chávez
_______________________________________
M. C. José Antonio Maldonado Estrella
_______________________________________
M. C. Alejandro Corona Ambriz
_______________________________________
Lic. Margarito Soriano Montero
- iii -
AGRADECIMIENTOS
Antes que nada y después de todo, agradezco plenamente a mi Alma Mater, la Universidad
Autónoma Chapingo por brindarme la oportunidad de alojarme en sus aulas y prepararme
profesionalmente.
A todos y cada uno de los profesores que en cada uno de mis años, tuve el agrado de ocupar
sus pupitres estando ellos frente al pizarrón, poniendo en mis manos las herramientas que
dignamente usaré en mi andar.
A la Familia Buendía Velázquez quienes me brindaron su valioso apoyo cuando más lo
necesitaba sin pedirme nada a cambio.
A la Familia García Zaragoza quienes me han tratado como un hijo y hermano en lo que a
cada uno respecta, con ellos, eternamente agradecido estoy.
A todos los compañeros y amigos de la Licenciatura en Estadística quienes hicieron ver a esta
licenciatura como una familia de camaradas.
Al L. E. F. Guillermo Estrella Baca por ser un amigo y consejero.
A todas aquellas personas que omití pero que debí mencionar por que de alguna u otra manera
me ofrecieron algún tipo de apoyo, regalaron un buen consejo ó me hicieron alguna crítica
constructiva.
- iv -
DEDICATORIA
“Gracias al Ser Todopoderoso por
permitirme vivir, mantenerme vivo
y conservarme sano”
A mis primeros maestros y además padres, José Antonio López Celaya y Amparo Cruz
Aguilar, quienes en todo momento me han ofrecido incondicionalmente cariño, confianza y
con esfuerzo me han brindado educación enviándome a la escuela ó educándome en casa.
A mis hermanos Luís Antonio, Vlady Jazmín y Juan Manuel por ser mis mejores compañeros
y dejarme compartir con ellos el recreo en esta escuela de la vida de la cual espero no egresar.
A mi amiga, compañera y pareja Mayra Velen Buendía Velázquez por su valioso apoyo,
cariño, entera confianza, gran paciencia y felices momentos que me ha regalado.
En general, a dos conjuntos de personas:
{Familia de Marco} ∪ {Amigos de Marco} ≠ ∅
- v -
ÍNDICE GENERAL
Contenido Página
INDICE DE TABLAS. ............................................................................................... vii INDICE DE FIGURAS. ........................................................................................... viii 1. RESUMEN ................................................................................................................... ix 2. ABSTRACT ................................................................................................................... x 3. INTRODUCCIÓN ........................................................................................................ 1 4. OBJETIVOS .................................................................................................................. 2
4.1. GENERAL .................................................................................................................. 2 4.2. PARTICULAR ........................................................................................................... 2
5. REVISIÓN DE BIBLIOGRAFÍA ............................................................................... 3 5.1. LA PROGRAMACIÓN LINEAL Y EL USO DE LA COMPUTADORA ............... 3 5.2. FORMA ESTÁNDAR DEL PROBLEMA DE PROGRAMACIÓN LINEAL ......... 6 5.3. DEFINICIONES Y TEOREMAS BÁSICOS DE LA PROGRAMACIÓN LINEAL 8 5.4. EL MÉTODO SIMPLEX ......................................................................................... 10
5.4.1. El tableau de Tucker para el Método Simplex .................................................. 11 5.4.2. Fases del Método Simplex ................................................................................ 12
5.4.2.1. Fase 1 del Método Simplex .......................................................................... 12 5.4.2.2. Fase 2 del Método Simplex .......................................................................... 13
5.4.3. Intercambios de Jordán en el Método Simplex ................................................. 14 5.4.4. Reglas del Método Simplex .............................................................................. 15
5.4.4.1. Selección de la columna pivote .................................................................... 15 5.4.4.2. Selección de la hilera pivote ......................................................................... 15 5.4.4.3. Criterio de Optimalidad ................................................................................ 16
5.4.5. Relación entre variables dependientes y bases ................................................. 16 5.4.6. Comparación entre el tableau de Tucker y el tableau Estándar ........................ 17
5.4.6.1. Características de los tableaus de Tucker y Estándar. .................................. 18 5.4.6.2. Relación entre los tableaus Estándar y de Tucker ........................................ 19
5.4.7. Manejo de variables irrestrictas y restricciones de igualdad ............................ 19 5.4.7.1. Manejo de variables irrestrictas .................................................................... 20 5.4.7.2. Manejo de restricciones de igualdad ............................................................. 20
5.4.8. Finitud del Método Simplex ............................................................................ 21 5.4.9. Casos especiales en la aplicación del Método Simplex .................................... 21
5.4.9.1. Degeneración ................................................................................................ 22 5.4.9.2. Puntos óptimos alternos ................................................................................ 22 5.4.9.3. Soluciones no acotadas ................................................................................. 23 5.4.9.4. Soluciones infactibles ................................................................................... 23
5.4.10. Supuestos de la programación lineal ................................................................ 24 5.4.10.1. Proporcionalidad ....................................................................................... 24 5.4.10.2. Aditividad ................................................................................................. 24 5.4.10.3. Divisibilidad .............................................................................................. 25 5.4.10.4. Determinismo ............................................................................................ 25
5.4.11. Análisis de sensibilidad .................................................................................... 26
- vi -
5.4.11.1. Análisis de sensibilidad para la función objetivo ..................................... 27 5.4.11.1.1. Rango para las variables no-básicas. .................................................... 27 5.4.11.1.2. Rango para las variables básicas .......................................................... 28 5.4.11.1.3. Costo reducido ..................................................................................... 29
5.4.11.2. Análisis de sensibilidad para el lado derecho de las restricciones ............ 29 5.4.11.2.1. Rango para las restricciones no básicas ............................................... 29 5.4.11.2.2. Rango para las restricciones básicas .................................................... 30 5.4.11.2.3. Precios sombra ..................................................................................... 31
5.4.12. Método del ordenamiento lexicográfico ........................................................... 31 6. MATERIALES Y MÉTODOS .................................................................................. 34 7. RESULTADOS ........................................................................................................... 36
7.1. SOLUCIONADOR DE PROBLEMAS LINEALES USANDO EL TABLEAU DE TUCKER (SPLITT) .............................................................................................................. 36 7.2. MANUAL DEL USUARIO ..................................................................................... 37
7.2.1. Presentación ...................................................................................................... 37 7.2.2. Botones y funciones asociadas ......................................................................... 38 7.2.3. Definir un nuevo problema ............................................................................... 39 7.2.4. Introducir los datos del problema ..................................................................... 40 7.2.5. Comenzar a resolver un problema .................................................................... 42 7.2.6. Tratamiento de variables irrestrictas ................................................................. 43 7.2.7. Tratamiento de restricciones de igualdad ......................................................... 44 7.2.8. Aplicación de la Fase 1 del Método Simplex ................................................... 45 7.2.9. Aplicación de la Fase 2 del Método Simplex ................................................... 46 7.2.10. Finalización del Método Simplex ..................................................................... 47
7.3. PROBLEMA RESUELTO ALTERNAMENTE CON SPLITT Y WIN QSB ......... 48 8. DISCUSIÓN ................................................................................................................ 53 9. CONCLUSIONES ...................................................................................................... 54 10. RECOMENDACIONES ............................................................................................. 54 11. BIBLIOGRAFÍA ......................................................................................................... 55
- vii -
ÍNDICE DE TABLAS
Contenido Pagina
Tableau 1. Representación del problema en forma del tableau de Tucker…..……...…….
Tableau 2. Tableau que resulta de un intercambio de Jordán
con elemento pivote ars………………………………….……….…….……...
Tableau 3. Tableau resultante después de r intercambios de Jordán………..…………….
Tableau 4. Tableau resultante después de p intercambios de Jordán,
con la columna de bi al inicio……...…………………………….……….....…
11
14
16
33
- viii -
ÍNDICE DE FIGURAS
Contenido Pagina
Figura 1. Ventana de inicio del programa SPLITT…………………………..………....…
Figura 2. Principales botones de la barra de herramientas de SPLITT………………....…
Figura 3. Ventana de definición del problema con que cuenta el programa
SPLITT………….……………….………………………………...….……...…
Figura 4. Matriz de entrada de datos en SPLITT……………………………..……...……
Figura 5. Ventana de descripción del problema en SPLITT………………..………....…..
Figura 6. Ventana de Solución del Problema del programa SPLITT…………….….....…
Figura 7. Ventana de intercambio de Jordán para eliminar variables
irrestrictas……………..……………………………………………..……..…...
Figura 8. Ventana de intercambio de Jordán para eliminar restricciones de
igualdad……………………….……………………………….……..…….....…
Figura 9. Mensaje que muestra SPLITT después de maximizar la función Z*……….….
Figura 10. Ventana de intercambio de Jordán que se presenta en la
Fase 2 del Método Simplex…............................................................................
Figura 11. Mensaje que muestra el programa al final cuando la solución es única………
Figura 12. Mensaje que muestra el programa al final cuando existe más
de una solución…………………………………………………………...……
Figura 13. Tabla de Resultados que presenta SPLITT al resolver el
problema indicado…………………………………………………..……...….
Figura 14. Formulación del problema de la Productora Nacional de
Fertilizantes en SPLITT……………………………………………………..…
Figura 15. Formulación del problema de la Productora Nacional de
Fertilizantes en Win QSB…………………………………………….………..
Figura 16. Resultados del problema de la Productora Nacional de
Fertilizantes en SPLITT…………………………………………........……….
Figura 17. Resultados del problema de la Productora Nacional de
Fertilizantes en Win QSB……………………………………….…..…………
37
38
40
41
41
42
43
44
46
46
47
47
48
50
50
51
52
- ix -
1. RESUMEN
La programación lineal es una herramienta de gran utilidad en la actualidad, sobre todo en el
ramo industrial a la hora de determinar el programa óptimo de producción, de asignación, de
transporte, etc. de algún producto, el cual se encuentra inmerso en un conjunto de restricciones
de disponibilidad de recursos humanos, monetarios, etc. ó de requerimientos de calidad,
insumos, etc.; buscando alcanzar un objetivo que puede ser minimizar costos totales ó
maximizar ganancias obtenidas. Dado lo anterior, la enseñanza y comprensión de esta rama de
las matemáticas en las aulas de clase, es fundamental.
Es por esto que en el presente trabajo se elaboró un sistema de cómputo amigable que puede
resolver problemas de este tipo, además de ayudar al usuario a comprender todos y cada uno
de los pasos a seguir para llegar a tal solución. Para esto se hizo uso del Método Simplex que
es un procedimiento usado para resolver problemas de programación lineal. Usando
algoritmos, este método se adaptó en un programa por medio del compilador Borland Builder
6.0, usando un lenguaje de programación de alto nivel, llamado C++, permitiendo llevar a
cabo programación orientada a objetos.
Aunque se conocen muchos programas de cómputo para resolver problemas de esta índole, el
sistema propuesto en este trabajo, funciona de manera distinta, ya que la manera de manipular
y trabajar con los datos es a través de una tabla llamada tableau de Tucker. Finalmente, se
incluye un pequeño manual sobre como usar dicho programa, además de una comparación
entre el software más usado en este ámbito, conocido como Win QSB y el obtenido en este
trabajo.
Palabras clave: programación lineal, método simplex, lenguaje de programación, programa
óptimo, tableau de Tucker.
- x -
2. ABSTRACT
Nowadays, linear programming is an important tool, especially in the industrial sector to
determine the optimal production, allocation or transport of any product, which is immersed in
a series of restrictions on availability of human resources, money, etc.; or quality
requirements, inputs, etc., aiming to reach a goal that may be to minimize total costs or
maximize gains. Given the above, education and understanding of this branch of mathematics
in the classroom, is crucial.
Due to the above, in this study a computer-friendly system was developed, which can solve
problems of this kind, and help to users to understand each of the steps required to reach such
solution. This was done using the simplex method which is a procedure used to solve linear
programming problems. Using algorithms, this method was adapted in a program through the
compiler Borland Builder 6.0, using a high level programming language, called C++, allowing
to carry out object oriented programming.
Although known many computer programs to solve problems of this nature, the system
proposed works in a different way, as a way to manipulate and work with data is through a
table called the tableau of Tucker. Finally, it includes a small manual on how to use the
program, besides a comparison between the more used software in this area, known as Win
QSB and the obtained in this work.
Keywords: linear programming, simplex method, programming language, program optimal,
tableau of Tucker.
- 1 -
3. INTRODUCCIÓN
El Método Simplex es un procedimiento de solución eficiente para resolver problemas de
programación lineal, incluso los de gran tamaño. Arreola (2003), menciona que, aunque las
operaciones involucradas para aplicar este método son elementales, tienen que realizarse un
gran número de veces, sobre todo cuando se trata de problemas grandes, lo cual hace que su
aplicación manual sea tediosa. Esto hace concluir que sin el uso de la computadora, este
método hubiese sido de interés académico solamente. Sin embrago, en la actualidad existen
aplicaciones de computadora que resuelven problemas de programación lineal usando el
Método Simplex. Entre los muchos programas de este tipo, los más conocidos son: Win QSB,
LINDO y SOLVER.
El uso de los sistemas antes mencionados, podría no ser muy ergonómico para los usuarios,
por lo cual es necesaria una herramienta que se encuentre en idioma español que proporcione
la solución óptima de un problema de programación lineal y que sea de fácil uso. Asimismo,
se requiere de un sistema más amigable para el usuario, enfocando su utilidad principalmente
a fortalecer el proceso de enseñanza-aprendizaje, de los distintos cursos de Investigación de
Operaciones que se ofertan al interior de la Universidad Autónoma Chapingo.
En el presente trabajo se desarrolló una aplicación para computadora, amigable y de fácil
manejo, con la cual se podrán solucionar problemas de programación lineal utilizando el
Método Simplex por medio del tableau de Tucker; esto, a través de algoritmos haciendo uso
de un lenguaje de programación de alto nivel, conocido como C++, con el que se llevó a cabo
la llamada programación orientada a objetos mediante el compilador Borland C++ Builder
versión 6. Además de esto, se elaboró un pequeño manual para el uso del mismo.
El usuario podrá formular algún problema de programación lineal y el sistema indica a éste,
paso a paso la metodología de solución del problema, de tal forma que se pueda comprender
en que fase del Método Simplex se encuentra, si tiene solución ó no, si se puede ó no mejorar
la solución y en el mejor de los casos, encuentra la solución óptima.
- 2 -
4. OBJETIVOS
4.1. GENERAL
Generar una herramienta amigable que facilite los cálculos de solución de un problema de
programación lineal, apoye en la búsqueda de soluciones factibles, calcule cada una de las
iteraciones del Método Simplex y encuentre la solución óptima.
4.2. PARTICULAR
Desarrollar un sistema que auxilie al proceso de Enseñanza-Aprendizaje de los distintos cursos
de Investigación de Operaciones que se imparten al interior de la Universidad Autónoma
Chapingo, donde el usuario pueda visualizar paso a paso la metodología de la solución de un
problema de programación lineal, de una forma simple y sencilla.
- 3 -
5. REVISIÓN DE BIBLIOGRAFÍA
5.1. LA PROGRAMACIÓN LINEAL Y EL USO DE LA COMPUTADORA
Durante el año de 1947, George Dantzing, con Marshall Word y sus asociados, se ocuparon de
un proyecto para la Fuerza Aérea de los Estados Unidos, que diera como resultado la búsqueda
de una técnica que fuera capaz de resolver los problemas de planeación militar. La esencia de
las investigaciones consistió en considerar las interrelaciones entre las actividades de una gran
organización como un método de programación lineal, y determinar el programa de
optimización minimizando o maximizando una función objetivo lineal. Dantzig indicó que ese
nuevo enfoque tendría amplias aplicaciones en los problemas de los negocios, como ocurre
actualmente (Thierauf, 1972).
La programación lineal es en la actualidad una herramienta de uso normal que ha ahorrado
miles ó millones de dólares a muchas compañías ó negocios en los distintos países
industrializados del mundo. Una proporción muy grande de los cálculos científicos en
computadoras está dedicada al uso de la programación lineal (Hillier y Lieberman, 2001).
La programación lineal está destinada a la asignación eficiente de recursos limitados en
actividades conocidas, con el objetivo de satisfacer las metas deseadas (tal como maximizar
beneficios o minimizar costos) (Taha, 1981).
La programación lineal utiliza un modelo matemático para describir el problema. El adjetivo
lineal significa que todas las funciones matemáticas del modelo deben ser funciones lineales.
La palabra programación, no se refiere a la programación en computadora, en esencia, es un
sinónimo de planeación. Entonces, la programación lineal trata la planeación de las
actividades para obtener un resultado óptimo, es decir, el resultado que, entre todas las
alternativas de solución, mejor alcance la meta especificada según el modelo matemático
(Hillier y Lieberman, 2001).
- 4 -
Existe un procedimiento de solución eficiente para resolver problemas de programación lineal,
incluso los de gran tamaño, llamado Método Simplex (Hillier y Lieberman, 2001).
Aunque las operaciones involucradas para resolver este método son elementales, tienen que
realizarse un gran número de veces, sobre todo cuando se trata de problemas grandes, lo cual
hace que su aplicación manual sea tediosa. Esto hace concluir que sin el uso de la
computadora, este método hubiese sido de interés académico solamente (Arreola, 2003).
Afortunadamente, los programadores que se dedican a construir aplicaciones en computadoras
mediante algoritmos, se han encargado de adaptar el Método Simplex en programas
computacionales. Los algoritmos son procedimientos para la solución de problemas de
cualquier tipo por medio de una determinada secuencia de pasos simples y no ambiguos. Este
concepto es ampliamente usado en la programación de computadoras, la cual se lleva a cabo
comunicándose con ellas mediante algún lenguaje de computadora.
Existen hoy en día, cientos de lenguajes de computadora. Estos pueden ser categorizados en
tres tipos generales (Deitel, 1994):
1. El lenguaje maquina es el lenguaje natural de una computadora particular.
Generalmente, consiste de cadenas de números que instruyen a las computadoras para
que ejecuten sus operaciones más elementales una a la vez. Este lenguaje es difícil de
utilizar por los seres humanos.
2. Los lenguajes ensambladores se forman principalmente por abreviaturas en ingles para
representar las operaciones elementales de la computadora. Se desarrollaron
traductores denominados ensambladores para convertir los programas de lenguaje
ensamblador a lenguaje maquina a la velocidad de las computadoras.
3. Los lenguajes de alto nivel se desarrollaron para acelerar el proceso de programación,
en los cuales se podía llevar a cabo tareas sustanciales. Los programas de traducción
que convierten los programas de alto nivel al lenguaje maquina, se llaman
- 5 -
compiladores. Los lenguajes de alto nivel le permiten a los programadores escribir
instrucciones que parecen prácticamente como el español de todos los días y contienen
notaciones matemáticas comúnmente utilizadas.
Es obvio, que los lenguajes de alto nivel son mucho más deseables desde el punto de vista del
programador que los lenguajes máquina ó los ensambladores. C y C++, son de entre los
lenguajes de alto nivel, los más poderosos y más utilizados, además de que facilitan un método
estructurado y disciplinado para el diseño de programas de computación. (Deitel, 1994).
Para operar el Método Simplex por medio de la computadora, existen muchos programas,
entre ellos, los más conocidos son:
• Win QSB que podría ser el más usado en la actualidad, debido a su amplia gama de
módulos entre los que se encuentra “Linear Programming” con el cual se pueden
resolver problemas de programación lineal continua, binaria (0 y 1) y entera,
gráficamente o utilizando el Método Simplex, sin embargo este paquete se encuentra
en ingles.
• SOLVER que es un complemento de Microsoft Excel, también resuelve problemas
lineales introduciendo en celdas la fórmula de una función que se busca optimizar y los
valores de las variables de las que depende dicha función; también hace uso del
Método Simplex. La introducción de datos es en cualquier celda y al momento de
resolver se tienen que ubicar las celdas donde se encuentran los datos.
• LINDO es una aplicación para computadoras que se utiliza para resolver problemas de
programación lineal, cuadrática y entera. Se dice que ha sido una de las herramientas
de optimización favoritas de las comunidades Educativas y Empresariales. Ya que es
uno de los más antiguos, tiene una larga historia y es uno de los pioneros en crear
programas de optimización. Para introducir los datos se reescribe el problema tal y
como se formula.
- 6 -
5.2. FORMA ESTÁNDAR DEL PROBLEMA DE PROGRAMACIÓN LINEAL
Un problema que satisfaga las condiciones de linealidad en una función objetivo y en las
restricciones dadas, se dice que tiene la forma estándar si se formula matricialmente como a
continuación:
Maximizar Z = cX (*)
Sujeta a AX ≤ b (**)
X ≥ 0 (***)
donde la función lineal (*) se llama función objetivo; el sistema de desigualdades (**) se
llaman restricciones y a (***) se le conoce como condición de no-negatividad, que evita que
los resultados den un absurdo negativo (Strang, 2007).
X =
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
nX
XX
M2
1
es un vector de n elementos. Se le conoce como vector de actividades que son las
variables de decisión.
c = (c1, c2, …, cn) es un vector de n componentes que se le conoce como vector de precios ó de
costos unitarios de las variables.
b =
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
mb
bb
M2
1
es un vector de m elementos denominado vector de disponibilidad de recursos que
puede representar una limitación ó un requerimiento de recursos.
- 7 -
A =
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
mnmm
n
n
aaa
aaaaaa
L
OMM
L
K
21
22221
11211
, es una matriz de m hileras y n columnas. Es conocida como matriz
de coeficientes tecnológicos. Cada coeficiente aij en esta matriz (i = 1,…,m y j = 1, …,n)
representa la cantidad de recursos j que se necesita por unidad de la actividad i (Prawda,
2005).
Dantzing (1963), señala que si el problema no reúne estas condiciones, se le debe manipular,
de modo que se pueda expresar mediante alguna de las siguientes transformaciones:
a) Si se tiene una restricción del tipo:
ai1X1 + ai2 X2+ ... +ain ≥ bi
para transformarla a la forma ≤, se le multiplica por -1 y se obtendrá entonces:
-ai1X1 - ai2 X2- ... - ain ≤ bi
b) Si se tiene una restricción del tipo:
ai1X1 + ai2 X2+ ... +ain = bi
se le puede sustituir por las siguientes restricciones:
ai1X1 + ai2 X2+ ... +ain ≤ bi
y
ai1X1 + ai2 X2+ ... +ain ≥ bi
ya que la intersección de estas dos restricciones da la restricción de igualdad.
c) Si se tiene una variable Xj que pueda tomar valores positivos y negativos, es decir, es
irrestricta , se le puede redefinir como sigue:
'''jjj XXX −= , donde 0,0 ''' ≥≥ jj XX
y sustituir '''jj XX − por cada aparición de Xj.
- 8 -
d) Si se tiene un problema de minimización, se sustituye la función objetivo Z = c X por
Z’ = -c X y se maximiza Z’. Al terminar, el mínimo de Z se obtiene como:
Min Z = - Max {Z’ = -c X}
En algunos textos se considera la forma estándar como aquella que contiene igualdades en las
restricciones, sin embargo, esto tiene sus desventajas, pues para obtener igualdad a partir de
una desigualdad es necesario agregar una variable, ya sea de escasez o de exceso. Sin
embargo, la desventaja de usar esta forma estándar es que se incrementa el número de
variables de forma explícita (Bueno, 1987).
5.3. DEFINICIONES Y TEOREMAS BÁSICOS DE LA PROGRAMACIÓN
LINEAL
Punto extremo. Un punto X se denomina punto extremo, si está en la frontera de n ó más
restricciones, donde n es el número de variables en el problema.
Punto adyacente. Un punto extremo B es un punto adyacente a un punto extremo A, si ambos
están en la frontera de una misma restricción.
Es conveniente hacer dos observaciones. Primero, como los puntos extremos se obtienen al
intersecarse n o más fronteras de restricciones y el número de estas es finito, el número de
puntos extremos por considerar en el Método Simplex es finito. Segundo, como siempre se
trata de mejorar la función, una vez visitado un punto extremo, jamás se regresa a él, excepto
en el caso de que se intersequen más de n restricciones en un punto extremo y se presente
ciclaje (Se explica más adelante con detalle) (Bueno, 1987).
Solución factible. Una solución factible de un problema lineal es aquel vector columna
X’ = (X1, X2,…, Xn) el cual satisface las restricciones AX ≤ b y X ≥ 0.
- 9 -
Solución factible básica. Es aquella solución factible con no más de m componentes positivas.
Solución factible básica no degenerada. Es una solución factible básica donde exactamente m
componentes del vector columna X son positivas.
Solución no factible. Es una solución para la que al menos una restricción se viola, es decir, no
se satisface.
Variables no básicas. Son las n-m variables que se hacen iguales a cero en una solución
básica.
Variables básicas. Son las m variables restantes en una solución básica que toman valor
positivo (Generalmente).
Región factible. Es la colección de todas las soluciones factibles. Gráficamente, representa el
área que se encuentra limitada por todas las fronteras de las restricciones y las condiciones de
no-negatividad de las variables.
Teorema. El conjunto de todas las soluciones factibles de un problema de programación
lineal, es un conjunto convexo (Taha, 1981). Dantzing (1963) describe un conjunto convexo
como aquel para el cual se cumple que, dados dos puntos cualesquiera del conjunto, la recta
que une tales puntos, pertenece también a la región.
Solución óptima. Es una solución factible que proporciona el valor más favorable de la
función objetivo. Por valor más favorable se entiende el valor más grande para el caso de
problemas de maximización o el valor más pequeño para el caso de problemas de
minimización.
Teorema. La función objetivo de un problema de programación lineal alcanza su valor optimo
(máximo ó mínimo) en un punto extremo del conjunto convexo de soluciones factibles (región
factible) (Taha, 1987).
- 10 -
La mayoría de los problemas tendrán una única solución óptima, sin embargo, también es
posible que se encuentren más de una. En este caso, se tendrá un número infinito de soluciones
con el mismo valor de la función objetivo, denominadas como soluciones óptimas alternas (Se
detalla más adelante).
Bueno (1987) menciona que puede ocurrir que el problema no tenga soluciones óptimas. Esto
ocurre si el problema no tiene soluciones factibles ó si las restricciones no impiden que el
valor de la función objetivo mejore indefinidamente en la dirección favorable (positiva o
negativa). Éste último se conoce como problema no acotado (Se detalla más adelante).
5.4. EL MÉTODO SIMPLEX
Prawda (2005) señala que en un problema con n variables y m restricciones, el número
máximo de puntos extremos es )!(!
!mnm
nmn
−=⎟⎟
⎠
⎞⎜⎜⎝
⎛, que podría ser un número muy grande si n
y m también lo fueran; sin embargo, Dantzing, considerado como el padre de la Programación
Lineal, halló un método que permite resolver un problema de programación lineal sin
necesidad de analizar el valor de la función objetivo en cada punto extremo. Dantzing (1963)
señala que esto se debe al hecho de que el óptimo de un problema de programación lineal
siempre deberá ocurrir en el punto extremo debido a la linealidad y convexidad de las
restricciones; de ahí que basta analizar los puntos extremos para conocer el punto que produce
el óptimo.
El método se inicia en un punto extremo factible (en muchos de los casos el origen es el punto
factible) y se mueve a otro punto extremo factible adyacente que incremente la función del
objetivo. Cuando no es posible moverse a otro punto adyacente mejorando la función
objetivo, se ha alcanzado el óptimo.
De acuerdo con Taha (1981), para asegurar que en cada nueva solución del Método Simplex,
el valor de la función objetivo se mejore, se debe cumplir dos condiciones fundamentales:
- 11 -
• La condición de optimalidad que asegura que nunca se encontrará una solución inferior
(comparada con la solución actual).
• La condición de factibilidad que garantiza que partiendo de una solución básica
factible, únicamente se encontrarán durante el cálculo, soluciones básicas factibles.
5.4.1. El tableau de Tucker para el Método Simplex
El problema de programación lineal escrito en forma estándar es de la siguiente forma:
Maximizar Z = c X Sujeta a: A X ≤ b
X ≥ 0
Este problema se puede reescribir como sigue:
Maximizar Z = c X Sujeta a: Y = A (-X) + b ≥ 0
X ≥ 0
Las restricciones son ahora un conjunto de relaciones lineales, con la restricción adicional de
que, tanto las variables independientes (X), como las dependientes (Y), son no-negativas.
Este problema se puede resumir en una tabla, que en la terminología del Método Simplex se
llama tableau ó tabla de Tucker y que es de la siguiente forma (Tableau 1):
Variables independientes
-X1 -X2 … -Xn 1 Y1 = a11 a12 … a1m b1 Y2 = a21 a22 … a2m b2 M M M O M M
Ym = am1 am2 … anm bm Z = - c1 - c2 … - cn 0
Tableau 1. Representación del problema en forma del tableau de Tucker.
Var
iabl
es
depe
ndie
ntes
- 12 -
El tableau contiene relaciones lineales que representan a las restricciones y a la función
objetivo. La hilera i de la tabla que se leerá como: Yi = ai1(-X1) + …+ain(-Xn) + bi , que es
igual a multiplicar la hilera i de la matriz A por el vector (-X) y sumarle bi, es decir,
Yi = Ai(-X)+bi.
El tableau representará el punto X en el espacio Rn, que se obtiene al hacer cero las variables
independientes. En el tableau inicial, generalmente, este punto es X1 = 0, X2 = 0, …, Xn = 0
y el valor de la función objetivo que se obtiene en ese punto es cero, que es el elemento que
aparece en la última celda de la última columna del tableau.
5.4.2. Fases del Método Simplex
El Método Simplex consta de dos fases: la Fase 1 que provee un punto inicial factible para la
Fase 2 (Dantzing, 1963). Se describirán a continuación ambas fases:
5.4.2.1. Fase 1 del Método Simplex
En la Fase 2 del Método Simplex se parte del hecho de que se conoce un punto extremo
factible; el origen (0,0,…,0) generalmente es un punto extremo factible para muchos
problemas. Cuando el origen no es un punto factible se requiere aplicar la Fase 1 del Método
Simplex. El origen no es factible si alguno de los bi del problema AX ≤ b es negativo (Bueno,
1987).
La Fase 1 consiste en introducir una variable independiente adicional ρ en las restricciones Yi
cuya bi sea < 0 y asignarle un valor positivo manteniendo a X = 0, de modo que:
ij
jiji bXaY ++−= ∑ ρ)( ≥ 0
- 13 -
para las restricciones con bi < 0. Las demás restricciones permanecen igual. Los coeficientes
bajo la columna de ρ son -1 para las restricciones con bi < 0 y 0 para el resto de las
restricciones.
Las variables independientes en este problema aumentado son (X, ρ), de donde el punto que
representa el tableau está en el plano Rn+1. Al asignar a ρ el valor de ρ0 que hace que Yi ≥ 0,
i = 1,2,…,m, el punto (0, ρ0) resultará ser un punto extremo factible para el nuevo problema.
El valor de ρ0 se obtiene como el mayor valor absoluto de los bi < 0.
Para hacer que ρ tome el valor ρ0, se efectúa un Intercambio de Jordán (Se explica más
adelante) volviendo a ρ variable dependiente y haciendo independiente a la restricción que dio
el valor de ρ0. Después del intercambio, el tableau representará un punto extremo factible
(0, ρ0) en el espacio Rn+1.
Se deberá regresar al espacio Rn lo más pronto posible, es decir, quitar la variable y función
adicional, posicionándose en un punto extremo factible del problema original, de existir
alguno. Esto se logra maximizando la función adicional Z* = - ρ, que deberá tener su máximo
en ρ = 0, si es que existieran puntos factibles en el problema original. Los coeficientes sobre
la hilera de Z* son 1 para la columna de ρ y 0 para el resto de las columnas. Si el valor
máximo ocurriera en ρ distinto de cero, el problema original es infactible (se explica más
adelante). Si el máximo ocurriera en ρ = 0, se podrá quitar del tableau la columna de ρ y la
hilera de la función objetivo adicional Z* y el tableau que quedará representará un punto
extremo factible del problema original, por lo que se podrá continuar con la Fase 2 del Método
Simplex (Bueno, 1987).
5.4.2.2. Fase 2 del Método Simplex
Partiendo de un punto extremo factible se encuentra el punto extremo óptimo. Esto equivale
hacer que los elementos de la última hilera del tableau, con excepción del que está bajo la
última columna, tomen valores no-negativos, manteniendo en todo momento factibilidad, es
- 14 -
decir, la última columna deberá conservarse no-negativa y que el elemento último de la
columna final (valor de Z), no decrezca. Para lograr esto se utilizan los llamados Intercambios
de Jordán, intercambiando las variables independientes (no-básicas) por variables
dependientes (básicas).
Como el punto que representa el tableau es el que se obtiene al hacer cero las variables
independientes, en el tableau inicial, las variables X son las variables independientes, entonces
X = 0 estará en la región factible si Y ≥ 0, pero como Y = A (-X) + b y si X = 0, Y = b. Se
sigue que si b es no-negativa, el punto X = 0 estará en la región factible y se puede iniciar con
esta Fase.
5.4.3. Intercambios de Jordán en el Método Simplex
Considérese de nuevo el Tableau 1. Un Intercambio de Jordán con elemento pivote ars
consiste en intercambiar el papel de la variable Yr con el de la variable Xs, es decir, volver a Xs
variable dependiente y a Yr variable independiente. Esto se logra despejando a Xs de la
ecuación r-ésima y sustituyéndola en las demás funciones lineales. El sistema así obtenido
dará como resultado un tableau como el que se ilustra a continuación (Tableau 2):
-X1 ... -Xs-1 -Yr -Xs+1 ... -Xn Y1 = d11 ... d1, s-1 d1s d1, s+1 ... d11
M M O M M M O M Yr-1 = dr-1, 1 ... dr-1, s-1 dr-1,, r dr-1, s+1 ... dr-1 ,n Xs = ds1 ... ds, s+1 dsr ds, s+1 ... dsn
Yr+1 = dr+1, 1 ... dr+1, s-1 dr+1, r dr+1, s+1 ... dr+1, n M M O M M M O M
Ym = dm1 ... dm, s-1 dmr dm, s+1 ... dmn
Tableau 2. Tableau que resulta de un intercambio de Jordán con elemento pivote ars.
- 15 -
En la cual, los coeficientes dij son los que resultarán después de efectuar el despeje de Xs de la
ecuación r-ésima y su sustitución en las demás ecuaciones. Estos se obtienen mediante las
siguientes reglas (Bueno, 1987):
• Elemento pivote: rs
rs ad 1
=
• Elementos sobre la hilera pivote (hilera r): rs
rjrj a
ad = , j ≠ s
• Elementos sobre la columna pivote (columna s): rs
isis a
ad −= , i ≠ r
• Resto de los elementos: rs
rjisijij a
aaad −= , i ≠ r y j ≠ s
5.4.4. Reglas del Método Simplex
Las reglas que se deben toma en cuanta para aplicar el Método Simplex son las siguientes:
5.4.4.1. Selección de la columna pivote
La elección de la columna cuya variable con elemento negativo en la última hilera del tableau
del Método Simplex, para tomar un valor λ > 0, que produce un incremento en la función
objetivo.
5.4.4.2. Selección de la hilera pivote
La elección de la hilera cuya variable con la cual se cumple λ = min {bi /ais | ais > 0}, que
garantiza factibilidad, es decir, se mantiene Y ≥ 0 y X ≥ 0.
- 16 -
5.4.4.3. Criterio de Optimalidad
El valor óptimo se obtendrá en el punto extremo que representará el tableau cuya última hilera
es no-negativa.
5.4.5. Relación entre variables dependientes y bases
Para explicar la relación que hay entre las variables dependientes y las bases asociadas,
considérense A1, A2, …, An, los n vectores columna de la matriz A de m hileras y n columnas
y, e1, e2, …,em, los m vectores columna de la matriz identidad I de m hileras y m columnas,
donde:
I =
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
100
010001
K
MOMM
L
L
Durante alguna iteración del Método Simplex se obtendrá un tableau como el que se ilustra en
el Tableau 3:
-Y1 … -Yr -Xr+1 … -Xn 1 X1 = d11 … d1r d1, r+1 … d1n f1, n+1 M M O M M O M M
Xr = dr1 … drr dr, r+1 … drn fr, n+1 Yr+1 = dr+1,1 … dr+1, r dr+1, r+1 … dr+1, n fr+1, n+1 M M O M M O M M
Ym = dm1 … dmr dm, r+1 … dmn fm, n+1 Z = u1 … ur qr+1 … qn Q
Teorema. Para cada tableau existe una base asociada que está constituida por los vectores
columna de coeficientes (Aj para variables Xj y ei para las variables Yi), correspondientes a las
variables dependientes en el tableau y las columnas de coeficientes en el tableau, excepto la
última hilera, son las coordenadas de los vectores de coeficientes (Aj para variables Xj y ei para
Tableau 3. Tableau resultante después de r intercambios de Jordán.
- 17 -
las variables Yi) correspondientes a las variables independientes respecto de la base asociada al
tableau.
De acuerdo a lo anterior, la base asociada al Tableau 3 la constituyen los vectores A1, …, Ar,
er+1, …, em, que son los vectores de coeficientes iniciales correspondientes a las variables
dependientes X1, …, Xr, Yr+1,…, Ym. Es por esta razón que a las variables dependientes se les
llama también variables básicas y a las independientes, variables no básicas.
Si se denota con B a la matriz formada por los vectores en la base, se tiene:
B = [A1, …, Ar, er+1, …, em]
Así entonces, los coeficientes dij sobre las columnas de las variables independientes son las
coordenadas, respecto de la base B, de los vectores e1, …, er, Ar+1, …, An, que son los
coeficientes iniciales correspondientes a las variables independientes Y1, …, Yr , Xr+1, …, Xn.
Esto quiere decir que el vector columna bajo Yr, denotado por dr, se obtendrá como:
dr = B-1er
y el vector columna bajo Xn se obtendrá como:
dn = B-1An
5.4.6. Comparación entre el tableau de Tucker y el tableau Estándar
El tableau de Tucker tiene la ventaja de que el paso de un tableau a otro representará un
intercambio entre una variable dependiente y una variable independiente y requiere
prácticamente nada de álgebra lineal para su comprensión, además permite reconocer
fácilmente el punto extremo que representa el tableau, la base y las restricciones que se cruzan
en el punto extremo. Sin embargo, algunas propiedades del Método Simplex como es su
finitud para el caso de degeneración, requieren la utilización de la forma estándar (Bueno,
1987).
- 18 -
5.4.6.1. Características de los tableaus de Tucker y Estándar.
Las características de ambos tableaus son las siguientes:
Tucker Estándar
Las variables básicas se ubican a la
izquierda del tableau, pero también
aparecen esparcidas en él. Son las variables
cuyas columnas constituyen la matriz I y
varían de iteración a iteración.
Las variables no-básicas están esparcidas en
el tableau y son aquellas cuyas columnas
que no forman parte de la matriz idéntica I.
El valor de Z depende de las variables
básicas, la hilera de Z contiene ceros bajo
las columnas que están en la base y los
demás coeficientes coinciden con los de la
última hilera del tableau de Tucker.
Pivotear en ars ≠ 0, significa despejar Xs de
la ecuación r-ésima:
( )∑=
=+n
jrrjrj bYXa
1
y sustituirla en las demás ecuaciones, es
decir, hacer Xs básica y Yr no-básica.
La selección de la variable que entrará a la
base es cualquiera con elemento en la
última hilera < 0, eso garantiza la selección
de una variable no-básica.
1.- Las variables básicas aparecen a la
izquierda del tableau y varían de iteración a
iteración.
2.- Las variables no-básicas aparecen en la
parte superior del tableau y varían en cada
iteración.
3.- El valor de Z depende de las variables
básicas y se afecta cambiando el valor de
Xj = 0 a Xj > 0, donde Xj es una variable no-
básica.
4.- Pivotear en ars ≠ 0, significa despejar Xs
de la ecuación r-ésima:
( )∑=
+−=n
jrjrjr bXaY
1
y sustituirla en las demás ecuaciones, es
decir, hacer Xs básica y a Yr no-básica.
5.- La elección de la variable que entrará a
la base es cualquiera con qs < 0.
- 19 -
5.4.6.2. Relación entre los tableaus Estándar y de Tucker
El tableau de Tucker es una parte del tableau Estándar. Exactamente aquellas columnas del
tableau Estándar que corresponden a las variables no-básicas, son aquellas que constituyen el
tableau de Tucker. El resto de las columnas del tableau Estándar, es decir, las que
corresponden a las variables básicas, contienen a la matriz identidad I y ceros en la última
hilera del tableau (Bueno, 1987).
El tableau de Tucker es realmente una versión resumida del tableau Estándar que tiene la
ventaja de utilizar en su definición el concepto de variables dependientes e independientes que
facilitan la comprensión del Método Simplex (Bueno, 1987).
5.4.7. Manejo de variables irrestrictas y restricciones de igualdad
El procedimiento para manipular un problema que no está en la forma estándar y llevarlo a
ella, implica, para el caso de tener igualdades, un aumento en el número de restricciones; y
para el caso de tener variables irrestrictas, aumento en el número de variables de decisión. Se
6.- La selección de la hilera que saldrá de la
base es aquella con r que haga:
fr/drs = min {fr/dis | dis > 0}.
7.- Las formulas de pivoteo son:
d’rs = 1/drs
d’rj = drj/drs j ≠ s
d’is = -dis/drs i ≠ r
d’ij = dij – (dis drj)/drs
La selección de la hilera que saldrá de la
base es aquella con r que haga:
fr/drs = min {fr/dis | dis > 0}.
Las formulas de pivoteo son:
d’rs = 1
d’rj = drj/drs j ≠ s
d’is = 0s i ≠ r
d’ij = dij – (dis drj)/drs
- 20 -
propone otra metodología para estos casos sin tener que pasarlo a la forma estándar, ésta
consiste en remover del tableau las variables irrestrictas y las restricciones de igualdad
(Bueno, 1987).
5.4.7.1. Manejo de variables irrestrictas
Consiste en pivotear todas las variables irrestrictas para que se vuelvan variables dependientes
ó básicas. Una vez hecho esto, se extraerá del tableau la hilera de la variable y se guardará la
relación que la representará como variable dependiente para obtener su valor posteriormente
(Bueno, 1987).
Si no fuera posible efectuar el pivoteo, quiere decir, que la columna bajo la variable contiene
todos sus elementos igual a cero y:
• Si el elemento de la última hilera es cero también, se puede eliminar la columna de la
variable, ya que el problema es independiente de ella y no afecta a la función objetivo.
• Si el elemento de la última hilera es diferente de cero, entonces el problema es
no-acotado y por lo tanto infactible (Se detallan más adelante).
5.4.7.2. Manejo de restricciones de igualdad
Consiste en pivotear todas las variables Yi correspondientes a una igualdad para convertirlas en
variables independientes y posteriormente extraer la columna correspondiente del tableau.
Esto es válido, ya que al ser Yi independiente y tomando el valor de cero, garantiza el
cumplimiento de la igualdad (Bueno, 1987).
Si no fuese posible convertir a Yi en una variable independiente, quiere decir que los
elementos sobre la hilera i son todos cero y:
- 21 -
• Si bi = 0, hay dependencia lineal. La restricción Yi es redundante y se puede eliminar
del tableau sin afectar el problema.
• Si bi ≠ 0, la restricción es infactible, y por lo tanto, el problema también lo es (Se
detalla más adelante).
5.4.8. Finitud del Método Simplex
Si un problema lineal es factible, entonces al iniciarse el Método Simplex en un punto extremo
factible, la función objetivo se mejora estrictamente en cada iteración y después de un número
finito de iteraciones se obtiene el punto óptimo ó se detecta un no-acotamiento en la función
objetivo. Todo esto si el problema es tal que en ningún tableau se presente la degeneración (Se
detalla más adelante), es decir, que los elementos de la última columna se mantengan
estrictamente positivos.
5.4.9. Casos especiales en la aplicación del Método Simplex
Taha (1981) señala que se consideran casos especiales que pueden presentarse en la aplicación
del Método Simplex, entre ellos destacan:
• Degeneración. • Puntos óptimos alternos. • Soluciones no acotadas. • Soluciones inexistentes (infactibles).
- 22 -
5.4.9.1. Degeneración
Se dice que un tableau es degenerado si algún elemento de la última columna del tableau es
cero. Un problema es degenerado si alguno de los tableaus que se obtienen al resolverlo con el
Método Simplex es degenerado. La degeneración aparece cuando, en el problema inicial una ó
más restricciones tienen bi igual a cero, ó cuando al seleccionar la hilera del pivote, más de
una hilera produce el valor mínimo (Dantzing, 1963).
El hecho de que el punto extremo que representa el tableau se obtenga al hacer cero las n
variables independientes y que las m variables restantes sean básicas, hace que, cuando en el
punto extremo, más de n restricciones tomen el valor de cero, se puedan usar distintas
combinaciones de n variables para que sean variables independientes y consecuentemente
distintas bases (Bueno, 1987).
Como el punto extremo no cambiará, solo las bases, el valor de la función objetivo no
cambiará tampoco. Entonces, se podría tener una secuencia infinita de bases con el mismo
valor de la función objetivo y el Método Simplex podría no terminar jamás. Esto dará lugar al
fenómeno conocido como ciclaje (Dantzing, 1963).
Para evitar el ciclaje y asegurar la finitud del Método Simplex, se puede aplicar el Método de
ordenamiento lexicográfico ó la regla de Bland (Bueno, 1987).
5.4.9.2. Puntos óptimos alternos
Cuando la función objetivo es paralela a una restricción que se satisface en el sentido de la
igualdad a través de la solución óptima, la función objetivo tomará el mismo valor óptimo en
más de un punto de solución (Taha, 1981).
Si al obtener el valor óptimo de un problema, el tableau óptimo contiene ceros en la última
hilera, el problema contiene puntos óptimos alternos. La restricción que es paralela a la
- 23 -
función objetivo es la que contiene elemento diferente de cero en la última hilera del tableau.
Para obtener estos puntos alternos, se pueden hacer iteraciones (Intercambios de Jordán) en las
variables independientes j que contengan elemento qj de la última hilera igual a cero; Taha
(1981) señala que estas variables entrarán a la solución sin alterar el valor de Z, pero
provocarán un cambio en los valores de las variables.
5.4.9.3. Soluciones no acotadas
Taha (1981) menciona que en algunos modelos de programación lineal, los valores de las
variables se pueden aumentar en forma indefinida sin violar ninguna de las restricciones, lo
que significa que el espacio de soluciones es no acotado cuando menos en una dirección. Esto
da como resultado, que el valor de la función objetivo aumente (caso de maximización) ó
disminuya (caso de minimización) en forma indefinida. En este caso se dice que el espacio de
soluciones y la función objetivo son no-acotados.
Thie (1979) señala en un teorema, que se detectará un no-acotamiento en la función objetivo
cuando se encuentre una columna j con elemento de la última hilera qj < 0 pero con aij ≤ 0
para i = 1,2,…,m, es decir, que en la columna seleccionada, todos los elementos, a excepción
de él de la última hilera, sean menor o igual a cero.
5.4.9.4. Soluciones infactibles
Taha (1981) señala que cuando las restricciones no se pueden satisfacer en forma simultánea,
se dice que el modelo no tiene solución factible. Esta situación nunca podrá ocurrir si todas las
restricciones son del tipo “≤” suponiendo constantes no negativas en la última columna
(elementos bi).
Usando el tableau de Tucker, esta situación se presenta en el caso de tener restricciones del
tipo “=” cuando no es posible convertir la variable Yi correspondiente en variable
- 24 -
independiente. Ocurre también en el caso de aplicar la Fase 1 cuando tenemos elementos
bi < 0, cuando al maximizar la variable adicional Z* = - ρ, su óptimo ocurre en un punto ρ ≠ 0.
5.4.10. Supuestos de la programación lineal
De acuerdo con Bazaraa (1981), para poder representar un problema de optimización como un
problema de programación lineal, se requieren varios supuestos que están implícitos en la
formulación del problema. A continuación se explican brevemente:
5.4.10.1. Proporcionalidad
El supuesto de proporcionalidad es sobre la función objetivo y las restricciones. Se refiere a
que la contribución de cada actividad Xj al valor de la función objetivo es proporcional al nivel
de la actividad Xj, representado por el término cj Xj en la función objetivo. Similarmente, la
contribución de cada actividad al lado izquierdo de cada restricción funcional es proporcional
al nivel de la actividad Xj, representado por el termino aij Xj en la restricción. Este supuesto
elimina cualquier exponente de las variables Xj distinto de 1 en cualquier término de la función
objetivo ó del lado izquierdo de las restricciones (Hillier y Lieberman, 2001).
5.4.10.2. Aditividad
Aunque el supuesto de proporcionalidad elimina los exponentes de las variables distintos de
uno, no prohíbe los términos de productos cruzados. El supuesto de aditividad, también
conocido como de linealidad, se refiere a que el valor de cada función en un modelo de
programación lineal (función objetivo ó lado izquierdo de las restricciones) es la suma de las
contribuciones individuales de las restricciones respectivas (Hillier y Lieberman, 2001).
- 25 -
5.4.10.3. Divisibilidad
El supuesto de divisibilidad se refiere a los valores permitidos para las variables de decisión.
Este supone que las variables de decisión en un modelo de programación lineal pueden tomar
cualquier valor, incluso valores no enteros, que satisfagan las restricciones funcionales y de no
negatividad. Quiere decir que las variables no están restringidas solo a valores enteros. Por lo
tanto, como cada variable de decisión representa el nivel de alguna actividad, se supone que
las actividades se pueden realizar a niveles fraccionales (Hillier y Lieberman, 2001).
En algunas situaciones este supuesto no se cumple debido a que algunas ó todas las variables
de decisión deben restringirse a valores enteros. Estos modelos se conocen como Modelos de
Programación Entera; pero en el presente trabajo solo se trabaja con problemas cuyos valores
no son necesariamente enteros.
5.4.10.4. Determinismo
Este último supuesto, también conocido como de certidumbre, se refiere a los precios unitarios
(cj) en la función objetivo, a los coeficientes tecnológicos (aij) en las restricciones funcionales
y a las cantidades de recurso disponible (bi) en el lado derecho de las restricciones. Y supone
que los valores asignados a cada uno de estos parámetros de un modelo de programación
lineal, son constantes conocidas.
En los problemas reales, rara vez se satisface por completo este supuesto de certidumbre.
Generalmente se formula un problema como una aproximación para elegir un curso de acción
futuro, por lo tanto, al ser una predicción, los valores de los parámetros generan un cierto
grado de incertidumbre.
Por eso, es importante siempre realizar un análisis de sensibilidad después de encontrar una
solución (Hillier y Lieberman, 2001).
- 26 -
5.4.11. Análisis de sensibilidad
Una vez que se halla resuelto un problema de programación lineal, puede darse el caso de que
uno o varios parámetros de la formulación original, tales como los precios unitarios (cj), los
coeficientes tecnológicos (aij) ó la disponibilidad de los recursos (bi), cambien, dando origen a
un nuevo problema. Sin embargo, no es necesario volver a resolverlo, el análisis de
sensibilidad permite identificar el impacto que resulta en la solución óptima del problema
original luego de determinadas variaciones en los coeficientes del modelo sin que sea
necesario resolver el problema de nuevo. Este análisis hace uso de la solución óptima y del
tableau final del Método Simplex (Prawda, 2005).
La variación en estos coeficientes del problema se analizará individualmente, es decir, se
analizará la sensibilidad de la solución debida a la modificación de un coeficiente a la vez,
asumiendo que todos los demás permanecen sin alteración alguna. Esto es importante porque
se trata de una sensibilidad estática y no dinámica, que solo contempla el cambio de un dato a
la vez y no el de varios (Figueroa, 2009).
El objetivo principal del análisis de sensibilidad es establecer un intervalo de números reales
en el cual la variable que se analiza pueda estar contenida, de tal manera que la solución siga
siendo óptima y que la variable permanezca en el nivel en el que se encuentra (básica ó no-
básica) siempre que su valor pertenezca a dicho intervalo, es decir, que no se tenga que
cambiar la base; además de predecir el cambio que sufre el valor de Z debido a un cambio en
la variable (Hillier y Lieberman, 2001).
Generalmente, se presta más atención al análisis de sensibilidad sobre los parámetros bi y cj
que sobre los aij, ya que el efecto de variar el valor de algún aij, casi siempre es despreciable,
mientras que un cambio en un bi ó cj puede tener un impacto más notable, además de que los
valores de aij quedan determinados por la tecnología que se está usando, de aquí el nombre que
se les da de coeficientes tecnológicos.
- 27 -
Si el análisis de sensibilidad indicara que la base no cambia y que la solución ó el valor de Z se
afectan solo levemente ante cambios considerables en los valores de los coeficientes, se dice
que la solución óptima es insensible. Por otro lado, si la base cambia ó el valor óptimo de la
función Z se modifica considerablemente ante cambios pequeños en los en los valores de los
coeficientes, se dice que la solución óptima es sensible (Dantzing, 1963).
5.4.11.1. Análisis de sensibilidad para la función objetivo
El análisis de sensibilidad para la función objetivo consiste en conocer:
• Los rangos en los que pueden fluctuar los costos para las variables sin que se tenga que
modificar la base.
• Como cambia la base fuera de esos rangos.
• En cuánto se modifica el valor de la función objetivo.
5.4.11.1.1. Rango para las variables no-básicas.
Considere el tableau óptimo, es decir, el último que se obtiene al finalizar el Método Simplex,
cuando ya no es posible mejorar más el valor de la función objetivo. Suponga el Tableau 3
como óptimo.
El rango en que puede fluctuar el costo de una variable no-básica (independiente), sin que
entre a la base y cambie la solución óptima se conoce como rango de insignificancia.
El análisis de sensibilidad puede efectuarse utilizando la información contenida en el tableau
óptimo. Los coeficientes qj de la última hilera del tableau se pueden obtener como sigue:
qj = zj – cj = cBB-1 hj – cj
- 28 -
donde hj es el vector columna en la matriz H = (I, A) correspondiente a la variable de la
columna j del tableau y cB es el vector que contiene los costos de las variables que son básicas.
Al cambiar el costo de una variable Xk no básica, de ck a c’k = ck + ∆, el nuevo valor q’k será:
q’k = qk - ∆
Para que el punto óptimo que representa el tableau permanezca como optimo, se deberá seguir
cumpliendo que la última hilera sea no-negativa, es decir, q’k deberá ser mayor ó igual a cero.
Entonces qk - ∆ ≥ 0 implica que ∆ ≤ qk. De donde el rango de insignificancia para la variable Xk
será (- ∞, ck + qk].
5.4.11.1.2. Rango para las variables básicas
El rango en que puede fluctuar el costo (ci) de una variable básica (dependiente) Xi, sin que
esta deje de ser productiva y salga de la base y, por consiguiente, cambie la solución óptima,
se llama rango de optimalidad.
Similarmente, los coeficientes qj de la última hilera del tableau se obtienen como sigue:
qj = zj – cj = cBB-1 hj – cj
Al cambiar el costo de una variable básica cBi a cBi + ∆, donde cB es el vector que contiene los
costos de las variables que son básicas, después de una manipulación algebraica, los
coeficientes de la última hilera se modifican a :
q’j = qj + ∆eiB-1hj
Para que el punto extremo óptimo se mantenga óptimo se deberá cumplir que:
q’j ≥ 0, j = 1, …, n
Esto quiere decir que para obtener los q’j se debe sumar a la última hilera del tableau, ∆ veces
la hilera i. Las expresiones obtenidas tienen que ser entonces, mayor ó igual a cero y definirán
el rango de optimalidad para la variable Xi.
- 29 -
5.4.11.1.3. Costo reducido
Haciendo uso del tableau se puede conocer qué variable no-básica provoca un incremento
mayor en la función objetivo. Esto se logra conociendo el costo reducido de la variable.
El valor del costo reducido de la variable Xj indica el cambio en el valor de la función objetivo
por cada unidad de aumento en el valor de la variable no-básica Xj. Por consiguiente, un costo
reducido positivo para una variable no-básica tiene como resultado una solución con un valor
de la función objetivo mayor cuando dicha variable no-básica se convierte en básica. Un costo
reducido negativo tiene como resultado una solución con un valor de la función objetivo más
pequeño (Kamlesh, 1996).
El Método Simplex, con el tableau de Tucker identifica este costo reducido como el
coeficiente (qj) que se encuentra en la última hilera de la columna de la variable independiente
Xj.
5.4.11.2. Análisis de sensibilidad para el lado derecho de las restricciones
El análisis de sensibilidad para el vector del lado derecho de las restricciones (LDR), es muy
importante desde el punto de vista económico, pues las restricciones generalmente representan
recursos, tiempo de labor, etc., que podrían cambiar si resultara benéfico.
5.4.11.2.1. Rango para las restricciones no básicas
El rango en que se puede mover el coeficiente bi sin modificar a tal grado la región factible
que obligue a un cambio en la base y por lo tanto, a un diferente punto óptimo, se conoce
como rango de factibilidad para la restricción.
- 30 -
Si la restricción Yi se encuentra como variable independiente y se cambia el valor de bi por
bi + ∆, el nuevo valor de la función objetivo es:
Q’ = Q + ∆ cB B-1 ei
pero como ei es el vector de coeficientes asociados a Yi, se tiene que cB B-1 ei es el coeficiente
de la última hilera del tableau bajo Yi, denotada como ui, de donde:
Q’ = Q + ∆ ui
La solución óptima se transformará en:
X’B = XB + ∆ B-1 ei
es decir, para obtener la nueva solución, hay que agregar ∆ veces la columna bajo Yi al vector
de solución (a la última columna del tableau). Para encontrar el rango de factibilidad para la
restricción i, se deberá cumplir que el nuevo punto se mantenga factible, es decir:
X’B = XB + ∆ B-1 ei ≥ 0
Los límites de ∆ que resulten de la desigualdad anterior definirán el rango de factibilidad para
bi.
5.4.11.2.2. Rango para las restricciones básicas
Se llama actividad de la restricción al valor que se usa durante el proceso. En el tableau, este
valor es equivalente al valor de la variable Yi, que es igual a ∑=
n
jjij Xa
1
, siendo Xj el valor
optimo. La holgura de la restricción es el remanente no utilizado en el proceso, es decir,
bi - ∑=
n
jjij Xa
1
.
Si bi < ∑=
n
jjij Xa
1
, siendo Xj el valor optimo, el punto extremo obtenido sería infactible, por lo
que se tendría que cambiar de base para obtener el óptimo.
- 31 -
Si se cambia el valor de bi por b’i = bi + ∆, y para que la nueva solución X’B siga siendo
óptima, se deberá cumplir que:
X’Bi = XBi + ∆ ≥ 0
Es decir, mientras ∆ ≥ - XBi.
5.4.11.2.3. Precios sombra
El Método Simplex proporciona una información sobre la contribución económica de los
recursos al desempeño de Z, denominados precios sombra para los recursos.
El precio sombra para el recurso i, mide el valor marginal de este recurso, es decir, la tasa a la
cual Z puede aumentar si se incrementa la cantidad que se proporciona de este recurso bi.
Dicho de otra manera, representa la variación que sufre Z ante un aumento de una unidad de bi
(Hillier y Lieberman, 2001). El Método Simplex, con el tableau de Tucker identifica este
precio sombra como el coeficiente ui (ver Tableau 3) que se encuentra en la última hilera de la
columna de la variable independiente Yi.
Los precios sombra con signo positivo restringen a Z para que no pueda incrementarse. Los
recursos con este precio sombra se conocen como recursos escasos. Mientras que los recursos
con precio sombra igual a cero que son disponibles con superávit, se conocen como recursos
abundantes. Si el valor que se usa para bi es una estimación del valor del recurso disponible y
no una decisión del administrador, se debe manejar con más cuidado si tiene precio sombra
positivo ó más aun, si el valor del precio sombra es grande (Hillier y Lieberman, 2001).
5.4.12. Método del ordenamiento lexicográfico
Este método se basa en las siguientes definiciones y propiedades:
- 32 -
Definición. Un vector X ∈Rn es positivo (ó negativo) lexicográficamente, si su primer
elemento diferente de cero es positivo (ó negativo) y se escribe X f 0 (ó X p 0), indicando
así que X es lexicográficamente positivo (ó negativo).
Por ejemplo: (0, 0, 7, 4,-5) f 0; (0,-4, 4, 0, 5) p 0
Definición. Un vector X es mayor que el vector Y lexicográficamente (X f Y), si y solo si, el
vector de diferencia X - Y es positivo lexicográficamente (X - Y f 0).
Por ejemplo: (0, 3,-4, 0,-2) f (0, 1, 4,-4, 3), ya que (0, 2, -8, 4, -5) f 0.
Las propiedades del ordenamiento lexicográfico son:
Propiedad 1.
Si X f 0, y Y f 0, entonces, X + Y f 0.
Para cada X ≠ Y ∈Rn, puede cumplirse una de las siguientes posibilidades:
• X f Y.
• X p Y.
• Propiedad de Transitividad: X f Y y Y f Z, entonces, X f Z
Propiedad 2. Mínimo
Sean m vectores de Rn, distintos, es decir, Ai ∈ Rn, i = 1,2,…, m, Ai ≠ Aj, i ≠ j, entonces Ar es
el mínimo lexicográfico, si y solo si, Ar p Ai para i = 1,2,…, m, i ≠ r y se escribe
Ar = { }mmi
A,,ALexicoMin 11
K≤≤
.
El Método Simplex con el ordenamiento lexicográfico requiere que el problema sea positivo
lexicográficamente para poder iniciarse. Para esto, dado que el vector b es positivo (en el caso
de haber factibilidad y no presentarse degeneración), se traslada este de tal manera que sea la
primera columna del tableau. Considérese el Tableau 4.
- 33 -
1 -Y1 … -Yp -Xp+1 … -Xn X1 = f1, n+1 d11 … d1p d1, p+1 … d1n M M M O M M O M
Xp = fp, n+1 dp1 … dpp dp, p+1 … dpn Yp+1 = fp+1, n+1 dp+1,1 … dp+1, p dp+1, p+1 … dp+1, n M M M O M M O M
Ym = fm, n+1 dm1 … dmp dm, p+1 … dmn Z = Q u1 … up qp+1 … qn
En las iteraciones, la regla para seleccionar la columna pivote, es cualquier columna s con
elemento negativo en la última hilera y la regla para seleccionar la hilera pivote es la hilera r
que sea el mínimo lexicográficamente de los vectores hilera multiplicados por 1/ dis, es decir,
se elige la hilera que cumpla:
⎟⎟⎠
⎞⎜⎜⎝
⎛=⎟⎟
⎠
⎞⎜⎜⎝
⎛
>≤≤ is
ni
is
i
is
i
is
i
hmirs
nr
rs
r
rs
r
rs
r
dd
dd
dd
df
dd
dd
dd
df
is
,,,,LexicoMin,,,, 21
0,1
21 LL
La regla de selección lexicográfica garantiza que:
• Todas las hileras, con excepción posiblemente de la hilera correspondiente a la función
objetivo, permanezcan positivas lexicográficamente.
• El valor de la función objetivo Z se incremente en cada iteración, evitándose así el
ciclaje, iniciándose para la siguiente iteración con un tableau positivo
lexicográficamente.
Tableau 4. Tableau resultante después de p intercambios de Jordán, con la columna de bi al inicio.
- 34 -
6. MATERIALES Y MÉTODOS
Para la elaboración del trabajo propuesto, se hizo uso de la información contenida en la
bibliografía de la Dra. Graciela Bueno Aguilar, “Introducción a la Programación Lineal y al
Análisis de Sensibilidad”. Además, esta bibliografía se adaptó en un programa que contiene
los elementos necesarios para la solución y obtención de los resultados de problemas de
programación lineal utilizando el Método Simplex usando el tableau de Tucker, todo esto,
haciendo uso del lenguaje C++, con el cual se llevó a cabo un tipo de paradigma de
programación que usa objetos y sus interrelaciones para diseñar aplicaciones de computadora
conocido como programación orientada a objetos (Blum, 1992) mediante el compilador
Borland C++ Builder versión 6. Además, se redactó un pequeño manual para el uso del
mismo, este contiene imágenes de apoyo resolviendo un problema hipotético.
La metodología que se programó en el sistema para la solución de un problema de
programación lineal es la propuesta en la teoría por medio de algoritmos, a saber:
1) Una vez introducidos todos los datos y antes de empezar a resolver el problema ya sea
pasando a la Fase 1 ó Fase 2, de existir variables de decisión no restringidas y/o
restricciones de igualdad, se realiza el tratamiento propuesto en la bibliografía, es
decir, eliminar las variables irrestrictas una vez establecidas como variables
dependientes con un intercambio de Jordán y guardando su relación que la representa
como variable dependiente para al final, ya teniendo los valores de las variables
independientes, obtener su valor; y para las restricciones de igualdad, el tratamiento es
también eliminarlas del tableau después de intercambiarlas como variables
independientes mediante un intercambio de Jordán. Este tratamiento lo debe hacer el
usuario, indicando el orden de eliminación y la variable con la que se hará dicho
intercambio, ya sea al mismo tiempo ó con alguna variable que permita el intercambio.
2) Una vez hecho esto, el programa detecta si es necesario aplicar la Fase 1 del Método
Simplex ó se puede pasar directamente a la Fase 2 del mismo. Si fuese necesario
aplicar la Fase 1, la herramienta, elaborará el paso sugerido en la teoría, esto es,
- 35 -
introducirá en una columna, una variable adicional “ρ” (Rho) y una función adicional
Z* = - ρ, que en el programa se indicará como “R”. Maximizará la función Z*, hecho
esto, el sistema indicará el paso a seguir dependiendo del resultado de este
procedimiento aplicado, que puede ser continuar a la Fase 2 si el máximo de la función
Z* se alcanzara en ρ = 0, de lo contrario, detectará la infactibilidad del problema y
mostrará un mensaje sobre tal infactibilidad.
3) De poder pasar a la Fase 2 del Método Simplex, en el programa se puede seleccionar
de una lista la variable que entrará a la base dándole un clic sobre esta y
automáticamente, aplicando el método de ordenamiento lexicográfico para evitar
ciclaje y una secuencia infinita de intercambios de Jordán, la herramienta propone la
variable dependiente que saldrá de la base. Al tener ya contempladas ambas variables,
se hace un intercambio de Jordán usando como elemento pivote el que se encuentra en
la intersección de la fila y la columna de las variables. Si el usuario prefiere, se puede
elegir resolver el problema automáticamente con un botón sin tener que escoger la
variable, ya que el programa lo hace repetidamente hasta que ya no se cumpla el
criterio de selección de la variable que entrará a la base.
4) Si en el problema existieran variables que no acotan la función objetivo, es decir, no se
pudiera aplicar el Método Simplex, ya que la región factible no es acotada, el programa
desplegará un mensaje de no-acotamiento y el Método Simplex terminará. Por otro
lado, si existieran restricciones no factibles, el sistema las detectará y sugerirá
eliminarlas de ser posible ó terminar el proceso del Método Simplex.
5) Cuando ya no se cumpla con el criterio de selección de la variable independiente que
entrará a la base, el programa lo indicará en un mensaje desplegado y presentará en una
tabla el resumen del problema, a saber, valores finales de las variables, coeficientes
(tecnológicos ó costos), contribución total de cada variable al valor de la función
objetivo, precio sombra ó costo reducido, rango de optimalidad, de insignificancia ó de
factibilidad. Además, el usuario podrá obtener, si es que existieran, los puntos óptimos
alternos del problema mediante intercambios de Jordán.
- 36 -
7. RESULTADOS
El resultado obtenido al final de este trabajo fue un sistema para Windows que soporta
cualquier sistema operativo hasta Windows Vista en 32 bits, además de un pequeño manual
del usuario sobre cómo usar dicho programa.
7.1. SOLUCIONADOR DE PROBLEMAS LINEALES USANDO EL TABLEAU DE
TUCKER (SPLITT)
Se elaboró un programa que utiliza los mecanismos típicos de la interface de Windows, es
decir, ventanas, menús desplegables, barras de herramientas, etc. Su uso y manejo es similar a
cualquier otro que utilice el entorno Windows.
Este programa cuenta con tres ventanas: la ventana principal donde contiene los botones y el
menú básico del sistema. Una ventana secundaria que contiene una interfaz que posee celdas
de entrada de datos: numero de variables, numero de restricciones, tipo de variables de
decisión, criterio del problema, además de una matriz la cual contendrá el tableau inicial del
problema. Además, de una segunda ventana secundaria donde se contiene una matriz donde se
alojarán los tableaus para cada una de las iteraciones, además de una matriz donde se
presentarán los resultados finales.
El programa es capaz de resolver problemas de programación lineal definidos con hasta 50
variables de decisión y hasta 50 restricciones de recurso; en él se pueden resolver problemas
ya sea de maximizar (ganancias) ó minimizar (costos). El usuario formula el problema en su
forma natural y el programa lo manipula para llevarlo a la forma adecuada:
Maximizar Z = c X. Sujeta a: Y = A (- X) + b ≥ 0
X ≥ 0. que es la que se usa en el tableau de Tucker.
- 37 -
El programa realiza el tratamiento para variables irrestrictas y/o restricciones de igualdad, si es
que estas existen, ó pasa directamente a la Fase 2 del Método Simplex donde se aplicarán
intercambios de Jordán para hacer cambios de base e ir mejorando la función objetivo hasta
alcanzar su valor máximo.
Una vez encontrado el valor óptimo, el programa muestra en una tabla, el análisis de
sensibilidad del problema, que cuenta con los valores máximos y mínimos en los que debe
fluctuar el valor de la variable para mantenerla en el nivel en que se encuentra, además del
costo unitario para las variables independientes básicas, el costo reducido para las variables
no-básicas y el precio sombra de las restricciones que no están en la base.
7.2. MANUAL DEL USUARIO
7.2.1. Presentación
El programa SPLITT es una herramienta amigable con la cual se podrá apoyar para resolver
problemas de programación lineal. Por la palabra “amigable” se quiere decir que su manejo y
uso es fácil, ya que está en idioma español y que su entorno es familiar, ya que cuenta con
matrices de entrada de datos, menús desplegables, barras de herramientas, etc. Al iniciar el
programa aparece una ventana de presentación (Figura 1) de SPLITT.
Figura 1. Ventana de inicio del programa SPLITT.
- 38 -
7.2.2. Botones y funciones asociadas
Los principales botones con que cuenta la barra de herramientas de SPLITT se ilustran en la
Figura 2:
Nuevo. Para formular un nuevo problema. Aparecerá una ventana de entrada de datos (numero
de variables, numero de restricciones, criterio de optimización, tipo de variables por default).
Abrir. Para abrir un problema guardado anteriormente. Abre archivos del tipo *.txt con el
formato requerido de SPLITT.
Guardar. Puede guardar un problema formulado. Solo guarda la formulación, no los
resultados. Se guarda en archivo *.txt.
Vista anterior. Regresa a la ventana de entrada de datos, donde puede modificar los
coeficientes del problema.
Intercambio de Jordán. Aparece una ventana en la cual puede escoger las variables que va
intercambiar durante la solución del problema.
Nuevo
Abrir
Guardar
Vista anterior
Intercambio de Jordán
Columna mas ancha
Columna menos ancha
Hilera mas alta
Hilera menos alta
Letra mas grande
Letra mas chica
Eliminar hilera
Eliminar columna
Resolver
Figura 2. Principales botones de la barra de herramientas de SPLITT.
- 39 -
Resolver. Para resolver el problema haciendo intercambios de Jordán hasta que se encuentra la
solución. Solo está disponible cuando no hay variables irrestrictas, restricciones de igualdad ó
puntos extremos no factibles.
Columna más ancha ó columna menos ancha. Para cambiar el ancho de la columna del tableau
ó de la tabla de resultados que aparece al resolver el problema.
Hilera más alta ó hilera menos alta. Para modificar la altura de las hileras del tableau.
Letra más grande ó letra más chica. Se puede modificar el tamaño de la fuente usada en las
tablas.
Eliminar hilera ó eliminar columna. Puede sustraer del tableau una hilera ó columna, siempre
y cuando no afecte el problema, es decir, que todos los elementos en la hilera ó columna sean
cero. Si elimina una hilera o columna diferente de ceros, puede alterar el problema original.
7.2.3. Definir un nuevo problema
Para formular un nuevo problema lineal se puede hacer clic en el menú archivo, seleccionar la
opción “Nuevo” ó hacer clic en el botón del mismo nombre, donde aparecerá una ventana de
entrada de datos (Figura 3). Se le pude poner opcionalmente un nombre al problema. En el
cuadro de “Tamaño del problema”, se debe especificar el número de variables de decisión y el
número de restricciones de recurso; los cuales deben ser valores enteros mayores que 1 y
menor o igual 50. Además, en el cuadro de “Criterio del problema”, se puede escoger el tipo
de problema que se va a resolver (de maximización ó de minimización), seleccionando con un
clic la opción a manejar. En el cuadro de “Tipo de variable por default”, se puede seleccionar
el tipo de variable que aparecerá en el tableau por omisión, aunque más adelante se puede
cambiar. Una vez introducidos los datos de variables, restricciones y criterio, para continuar
hacer clic en el botón “OK”.
- 40 -
7.2.4. Introducir los datos del problema
Una vez que ya se tiene especificado el tamaño del problema (número de variables,
restricciones y criterio de optimización) se pueden introducir los datos del problema en la
matriz, es decir, los coeficientes de cada restricción (R1, R2, etc.), los coeficientes de la
función objetivo, el lado derecho de las restricciones (bi), la dirección de la restricción y el tipo
de variable Xj. Los datos pueden ser números enteros o decimales, estos últimos, se deben
introducir a 3 cifras, se pueden también escribir fracciones como de esta manera ½, 4/5, ¾,
etc. La dirección se puede cambiar escribiendo “<=”, “=” ó “>=” ó haciendo clic sobre ella
donde aparecerá una pequeña lista como en la Figura 4 y seleccionando la deseada.
Similarmente, el tipo de variable, se puede cambiar escribiendo “nonegativa” ó “irrestricta”, ó
Figura 3. Ventana de definición del problema con que cuenta el programa SPLITT.
- 41 -
haciendo clic sobre la celda y eligiendo el deseado de la lista (Figura 4). Es posible introducir
solamente los coeficientes diferentes de cero y para completar, si es que hubiesen, los datos
restantes con ceros, existe la opción “Rellenar con ceros” dando clic con el botón derecho del
mouse.
Por ejemplo, el problema:
Maximizar Z = 2X1 + X 2 - 2X 3 + 2X4 Sujeta a: X1 + X2 + 3X3+ X4 ≤ 6
2X1+ 2X2 + 2X3 + 2X4 ≤ 5 3X1 + X2 + 2X3 + 4X4 ≤ 4
4X1 + 3X3 + X4 ≤ 6 X1, X2, X3, X4 ≥ 0
se formularía en SPLITT como se ilustra en la Figura 5:
Figura 5. Ventana de descripción del problema en SPLITT.
Figura 4. Matriz de entrada de datos en SPLITT.
- 42 -
7.2.5. Comenzar a resolver un problema
Cuando ya se han introducido los datos del problema, se puede continuar haciendo clic en el
botón ”Siguiente”. Inmediatamente aparecerá la ventana de “Solución del Problema” tal como
se ilustra en la Figura 6.
El programa indicará en un texto de seguimiento que aparecerá durante la solución del
problema, ubicado en la parte inferior de la ventana, el paso a seguir dependiendo si hay
variables irrestrictas y/o restricciones de igualdad, directamente aplicar la Fase 1 ó pasar a la
Fase 2 del Método Simplex. Se puede regresar a la ventana de “Descripción del Problema”
desde el menú “Datos>Modificar datos del tableau” ó con el botón “Pagina anterior”, donde
se pueden hacer modificaciones a los datos. También es posible modificar el tamaño del
problema desde el menú “Datos>Modificar criterio y tamaño”.
Figura 6. Ventana de Solución del Problema del programa SPLITT.
- 43 -
7.2.6. Tratamiento de variables irrestrictas
Si existieran variables irrestrictas en el problema, habrá que eliminarlas del tableau. El
programa lo indicará en el texto de seguimiento. Se debe dar clic en el botón “Intercambio de
Jordán” ó en el menú “Análisis>Intercambio de Jordán”.
Aparecerá una ventana como la de la Figura 7, donde se puede seleccionar con un clic, la
variable irrestricta que se desee intercambiar para eliminar en cada intercambio de Jordán. En
la lista de la izquierda, aparecerán las variables dependientes con las que es posible realizar tal
intercambio. Si además, existieran restricciones de igualdad, se pueden intercambiar al mismo
tiempo variables irrestrictas e igualdades seleccionando la opción “Intercambiar al mismo
tiempo” que se encuentra en el cuadro de la parte inferior de la ventana. Si no existieran
restricciones de igualdad en el problema, tal cuadro no aparecerá. En los cuadros que se
encuentran en la parte superior de las listas, aparecerán las variables que se van intercambiar.
Si no fuera posible intercambiar la variable X, ya sea debido a un no-acotamiento, el programa
lo indicará con un mensaje y el Método Simplex terminará; ó debido a una redundancia (todos
Figura 7. Ventana de intercambio de Jordán para eliminar variables irrestrictas.
- 44 -
los elementos sobre la columna de la variable son cero), se debe eliminar haciendo clic sobre
el botón “Eliminar columna” ubicado en la barra de herramientas. Si se elimina una columna
con elementos distintos de cero, se puede afectar el problema original.
7.2.7. Tratamiento de restricciones de igualdad
Si existieran variables irrestrictas en el problema, habrá que eliminarlas del tableau después de
intercambiarlas como variables independientes. El programa lo indicará en el texto de
seguimiento situado en la parte inferior de la ventana. Se deberá hacer clic en el botón
“Intercambio de Jordán” ó en el menú “Análisis > Intercambio de Jordán”.
Aparecerá una ventana como la de la Figura 8, donde se puede seleccionar con un clic, la
variable Y correspondiente a la igualdad que se desee intercambiar para eliminar en cada
intercambio de Jordán. En la lista de la derecha aparecerán las variables independientes con las
que es posible realizar tales intercambios. Si además existieran variables irrestrictas se pueden
Figura 8. Ventana de intercambio de Jordán para eliminar restricciones de igualdad.
- 45 -
intercambiar al mismo tiempo igualdades y variables irrestrictas seleccionando la opción
“Intercambiar al mismo tiempo” que se encuentra en el cuadro de la parte inferior de la
ventana. Si no existieran variables irrestrictas en el problema, tal cuadro no aparecerá. En los
cuadros que se encuentran en la parte superior de las listas, aparecerán las variables que se van
intercambiar.
Si no fuera posible intercambiar la variable Y, ya sea debido a una infactibilidad, el programa
lo indicará con un mensaje y el Método Simplex terminará; ó debido a una dependencia lineal
(todos los elementos sobre la columna de la variable son cero), se debe eliminar haciendo clic
sobre el botón “Eliminar hilera” ubicado en la barra de herramientas. Si se elimina una hilera
con elementos distintos de cero, se puede afectar el problema original.
7.2.8. Aplicación de la Fase 1 del Método Simplex
Si en el problema planteado existiera algún elemento de la última columna del tableau menor a
cero, se deberá aplicar la Fase 1. El programa lo indicará en el texto de seguimiento situado en
la parte inferior y agregará una variable “R” ubicada en una columna antes de la columna de
“1“, además de una función adicional “Z*” en la última hilera del tableau.
El usuario deberá dar clic en el botón “Intercambio de Jordán” para continuar con el
procedimiento, que es maximizar la función Z*, primeramente intercambiando a R con la
variable Y que tenga en la columna de “1”, al mayor coeficiente negativo, en valor absoluto.
Cuando se halla maximizado la función Z*, aparecerá un mensaje como el de la Figura 9 si el
máximo ocurre en R = 0 y automáticamente el programa eliminará la columna de R e hilera Z*
y podrá continuar con la Fase 2. Si el máximo ocurriera en R ≠ 0, se mostrará un mensaje de
infactibilidad del problema y terminará el Método Simplex. El mismo procedimiento se hará
cuando después de eliminar todas las variables irrestrictas y restricciones de igualdad,
existieran elementos negativos en la última columna del tableau.
- 46 -
7.2.9. Aplicación de la Fase 2 del Método Simplex
Se podrá aplicar la Fase 2 del Método Simplex, siempre y cuando no halla variables
irrestrictas, restricciones de igualdad ó coeficientes negativos en la última columna. En este
momento, estará visible el botón “Resolver”, con el cual se podrá resolver el problema dándole
clic ó desde el menú “Análisis>Resolver”, ó si se prefiere ir viendo cada uno de los
intercambios de Jordán, dando clic en el botón “Intercambio de Jordán” (ó en el menú
“Análisis>Intercambio de Jordán”), aparecerá la ventana (Figura 10) donde es posible elegir
de la lista de la derecha la variable independiente que incrementa la Z, dándole un clic y en la
lista de la izquierda aparecerá la variable dependiente con la cual se hará el intercambio,
aplicando la regla de selección. Se puede realizar el intercambio, dando clic en el botón
“Intercambio”.
Figura 9. Mensaje que muestra SPLITT después de maximizar la función Z*.
Figura 10. Ventana de intercambio de Jordán que se presenta en la Fase 2 del Método S implex.
- 47 -
7.2.10. Finalización del Método Simplex
El Método Simplex terminará cuando:
• Se ha obtenido la solución óptima, y ésta es única. En este caso aparecerá un mensaje
como el siguiente (Figura 11):
• Se ha obtenido una solución óptima, aunque existe más de una solución. Se mostrará
un mensaje como el siguiente (Figura 12):
En este último caso, se puede hacer un intercambio de Jordán dando clic en el botón del
mismo nombre en la barra de herramientas para obtener los puntos óptimos alternos. En
ambos casos, después de clicar el botón de “OK” del mensaje que se mostrará, se presentará
una tabla con el resumen del problema y el análisis de sensibilidad (Figura 13).
Figura 11. Mensaje que muestra el programa al final cuando la solución es única.
Figura 12. Mensaje que muestra el programa al final cuando existe más de una solución.
- 48 -
En el menú “Ver” se puede cambiar entre ver el tableau óptimo (el último que se obtuvo) ó ver
los resultados finales (Figura 13).
7.3. PROBLEMA RESUELTO ALTERNAMENTE CON SPLITT Y WIN QSB
Problema
La Productora Nacional de Fertilizantes quiere programar su producción trimestral para el
próximo año de 1975. Supóngase que la demanda de fertilizantes pronosticada por la
Secretaría de Agricultura es de:
Toneladas de
Periodo fertilizante 1er trimestre 1975 100,000 2do trimestre 1975 120,000 3er trimestre 1975 110,000 4to trimestre 1975 90,000
La capacidad de producción de la Productora Nacional de Fertilizantes es de 95,000 toneladas
por trimestre. Sin embargo, se pueden producir 30,000 toneladas adicionales por trimestre si se
pone a trabajar un tercer turno. Cuesta $300/ton/trimestre más el poder producir el fertilizante
en el turno extra que durante los turnos normales. Eso se debe a que en los turnos extras, los
Figura 13. Tabla de Resultados que presenta SPLITT al resolver el problema indicado.
- 49 -
salarios son más altos. Al fertilizante que no se pueda vender, hay que almacenarlo en bodegas
a un costo de $500/ton/trimestre. Las bodegas no pueden almacenar más de 20,000
ton/trimestre.
Bajo estas condiciones, ¿Cuántas toneladas deben producirse por trimestre en turnos normales
y extras tal que la demanda se satisfaga y se abatan los costos extras de producción y de
almacenamiento? Supóngase que el costo normal de producción es de $700/ton/trimestre.
Solución
El problema se puede formular como sigue:
Xi ≥ 0: toneladas de fertilizantes producidas en el trimestre i (i = 1, 2, 3, 4) durante los turnos
regulares.
Xi+4 ≥ 0: toneladas de fertilizantes producidas en el trimestre i (i = 1, 2, 3, 4) durante los
turnos extra.
Xi+8 ≥ 0: toneladas de fertilizantes que quedan almacenadas al final del trimestre i (i = 1, 2, 3 y
4) durante los turnos regulares.
Las ecuaciones que indican el balance de flujo son:
X1 + X5 = 100 000 + X9
X2 + X6 + X9 = 120 000 + X10
X3 + X7 + X10 = 110 000 + X11
X4 + X8 + X11 = 90 000 + X12
Las restricciones que indican las limitaciones de producción son:
Xi ≤ 95 000, i = 1, 2, 3, 4
Xi ≤ 30 000, i = 5, 6, 7, 8
En cambio, las limitaciones en almacenamiento están dadas por:
Xi ≤ 20 000, i = 9, 10, 11, 12
- 50 -
La función objetivo que se trata de minimizar es la de la suma de los costos de producción
normales y extras, más los costos de almacenamiento. Esta dada por:
Min Z = 700(X1 + X 2 + X 3 + X 4) + (700 + 300)( X 5 + X 6 + X 7 + X 8) + 500(X 9 + X 10 + X 11 + X 12)
Introduciendo los datos del problema en SPLITT, se tiene (Figura 14):
Si se formula el problema con Win QSB, se tiene (Figura 15):
Figura 14. Formulación del problema de la Productora Nacional de Fertilizantes en SPLITT.
Figura 15. Formulación del problema de la Productora Nacional de Fertilizantes en Win QSB.
- 51 -
Resolviendo el problema con SPLITT, se tiene como resultado una tabla con el reporte final
del problema y el análisis de sensibilidad (Figura 16):
Similarmente, si se resuelve con Win QSB, se tiene una tabla similar (Figura 17):
Figura 16. Resultados del problema de la Productora Nacional de Fertilizantes en SPLITT.
- 52 -
Ambos sistemas arrojan que la solución óptima es (Ver figuras 16 y 17):
Producir 95 000 toneladas de fertilizante en el trimestre 1 en turno regular.
Producir 95 000 toneladas de fertilizante en el trimestre 2 en turno regular.
Producir 95 000 toneladas de fertilizante en el trimestre 3 en turno regular.
Producir 90 000 toneladas de fertilizante en el trimestre 4 en turno regular.
Producir 5 000 toneladas de fertilizante durante en el trimestre 1 en turno extra.
Producir 25 000 toneladas de fertilizante durante en el trimestre 2 en turno extra.
Producir 15 000 toneladas de fertilizante durante en el trimestre 3 en turno extra.
Con un valor mínimo de la función objetivo de $ 307,000,000.
Figura 17. Resultados del problema de la Productora Nacional de Fertilizantes en Win QSB.
- 53 -
8. DISCUSIÓN
El sistema elaborado, a grandes rasgos, es similar al Win QSB. Aunque cabe recalcar que éste
último es un software muy poderoso y muy usado por su amplia gama de módulos con los que
cuenta, además de que puede trabajar con variables de valor entero y binarias (0 y 1),
comparándolo con SPLITT, destaca en primer plano, el idioma; además de que el sistema
SPLITT no puede resolver un problema con el método gráfico, a diferencia de Win QSB, sin
embargo, este método solamente se aplica en problemas con dos variables, que en la teoria,
son muy escasos. En ambos, la manera de introducir los datos es similar, es relativamente más
fácil comparada con la forma de entrada de datos en los sistemas como SOLVER y LINDO,
donde para introducir los datos, se tiene que reescribir el problema por completo a diferencia
de SPLITT y Win QSB, donde solamente se introducen los coeficientes en las hileras y
columnas correspondientes. Además, los programas mencionados anteriormente, Win QSB,
LINDO y SOLVER trabajan usando el tableau Estándar, que desde el punto de vista de la
programación en computadora, demandan mayor espacio de memoria, ya que aumentan el
numero de variables en contraste con el tableau de Tucker que es el que usa SPLITT. En
SOLVER, no se puede obtener cada una de las iteraciones, más aun, no se muestra el último
tableau (óptimo), ya que se muestra directamente el resultado final; además de que la
introducción de datos es un poco más complicada que en el sistema LINDO.
- 54 -
9. CONCLUSIONES
El sistema SPLITT es un software amigable y de fácil uso, en el cual se facilita la introducción
de datos, la resolución y la interpretación de los resultados de un problema de programación
lineal, principalmente por el idioma en que fue programado y por su formato de salida de
resultados.
SPLITT sirve de apoyo en el proceso de enseñanza-aprendizaje, ya que durante la solución de
un problema de programación lineal, se va indicando al usuario el paso a seguir dependiendo
de la manera en que esta definido el problema, es decir, si es necesario aplicar tratamiento para
variables irrestrictas ó para restricciones de igualdad, si hay que aplicar la Fase 1 ó si es
posible implementar la Fase 2 del Método Simplex.
10. RECOMENDACIONES
Finalmente, se recomienda que se continúe con un trabajo similar, que soporte variables
binarias (0,1) y enteras. Además podría agregarse opciones para formular los problemas de
transporte, de flujo máximo, ruta más corta y problemas de asignación como problemas
lineales y resolverlos con el presente sistema. Asimismo podría adicionarse la opción de
resolver un problema de dos variables por el método grafico, es decir, que pueda graficar. Con
todo esto se obtendría un programa más completo en español de apoyo para la solución de
problemas de programación lineal.
Se sugiere continuar con estos tipos de trabajos, ya que podrían ser de apoyo académico para
la enseñanza de la metodología de la solución de problemas de programación lineal.
- 55 -
11. BIBLIOGRAFÍA
1. Arreola Risa, A. 2003. Programación Lineal: Una introducción a la toma de
decisiones cuantitativa. Disponible en:
http://books.google.com.mx/books?id=VyklbTvUhggC&printsec=frontcover&source=
gbs_v2_summary_r&cad=0. (16/05/09).
2. Bazaraa, M. 1981. Programación Lineal y Flujo en Redes. Versión en español, primera
edición. Editorial Limusa. 539 p.
3. Blum, A. 1992. Neuronal Networks in C++, an Object-Oriented Framework for
Building Connectionist Systems. John Wiley & Sons, Inc. 207 p.
4. Bueno Aguilar, G. 1987. Introducción a la Programación Lineal y al Análisis de
Sensibilidad. Primera edición. Editorial Trillas. 187 p.
5. Dantzing, G. B. 1963. Linear Programming and Extensions. Primera edición.
Princeton University Press. 627 p.
6. Deitel, H. M. 1994. Como Programar en C / C++. Segunda edición. Pearson, Prentice
Hall. 927 p.
7. Figueroa, J. C. 2009. Portal para Investigadores y Profesionales. Disponible en:
http://www.elprisma.com/apuntes/matematicas/analisisdesensibilidad/ (14/05/09)
8. Gass, S. I. 1978. Programación Lineal (Métodos y Aplicaciones). Primera publicación.
Compañía Editorial Continental, S. A., México. 444 p.
9. Hernan, G. 1998. Investigación de Operaciones. Disponible en:
http://members.tripod.com/operativa/lindo/lindo.html (14/05/09)
- 56 -
10. Hillier, F. y Lieberman, G. J. 2001. Investigación de Operaciones. Séptima edición.
Editorial Mc Graw-Hill. 1223 p.
11. Kamlesh, M. 1996. Investigación de Operaciones, El Arte de la Toma de Decisiones.
Primera edición. Prentice Hall Hispanoamericana, S. A. 972 p.
12. Prawda, J. 2005. Métodos y Modelos de Investigación de Operaciones. Volumen 1.
Editorial Limusa, Grupo Noriega Editores. 935 p.
13. Programación Lineal. 2008. Sitio de Programación lineal en español. Disponible en:
http://www.programacionlineal.net/sensibilidad.html (25/04/09)
14. Strang, G. 2007. Algebra Lineal y sus Aplicaciones. Cuarta edición. Internacional
Thompson Editores, S.A. de C.V. 487 p.
15. Taha Hamdy, A. 1981. Investigación de Operaciones, Una Introducción. Versión en
español de la segunda edición. Representaciones y Servicios de Ingeniería, S. A. 647 p.
16. Thie, P. R. 1979. An Introduction to Linear Programming and Game Theory. Segunda
edición. John Wiley & Sons. 335 p.
17. Thierauf, R. J. 1972. Toma de decisiones por medio de Investigación de Operaciones.
Primera edición. Limusa-Wiley S.A. 560 p.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 1 -
M A N U A L D E L U S U A R I O
1. Presentación
El programa SPLITT es una herramienta amigable con el cual se podrá apoyar para resolver problemas de programación lineal. Por la palabra “amigable” se quiere decir que su manejo y uso es fácil, ya que esta en idioma español y que su entorno es familiar, ya que cuenta con matrices de entrada de datos, menús desplegables, barras de herramientas, etc. Al iniciar el programa aparece una ventana de presentación (Figura 1) de SPLITT.
Figura 1. Ventana de inicio del programa SPLITT.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 2 -
2. Botones y funciones asociadas
Los principales botones con que cuenta la barra de herramientas de SPLITT se ilustran en la Figura 2:
Nuevo. Para formular un nuevo problema. Aparecerá una ventana de entrada de datos (numero de variables, numero de restricciones, criterio de optimización, tipo de variables por default). Abrir. Para abrir un problema guardado anteriormente. Abre archivos del tipo *.txt con el formato requerido de SPLITT. Guardar. Puede guardar un problema formulado. Solo guarda la formulación, no los resultados. Se guarda en archivo *.txt. Vista anterior. Regresa a la ventana de entrada de datos, donde puede modificar los coeficientes del problema. Intercambio de Jordán. Aparece una ventana en la cual puede escoger las variables que va intercambiar durante la solución del problema. Resolver. Para resolver el problema haciendo intercambios de Jordán hasta que se encuentra la solución. Solo está disponible cuando no hay variables irrestrictas, restricciones de igualdad ó puntos extremos no factibles. Columna más ancha o columna menos ancha. Para cambiar el ancho de la columna del tableau o de la tabla de resultados que aparece al resolver el problema. Hilera más alta o hilera menos alta. Para modificar la altura de las hileras del tableau.
Nuevo
Abrir
Guardar
Vista anterior
Intercambio de Jordán
Columna mas ancha
Columna menos ancha
Hilera mas alta
Hilera menos alta
Letra mas grande
Letra mas chica
Eliminar hilera
Eliminar columna
Resolver
Figura 2. Principales botones de la barra de herramientas de SPLITT.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 3 -
Letra más grande o letra más chica. Se puede modificar el tamaño de la fuente usada en las tablas. Eliminar hilera o eliminar columna. Puede sustraer del tableau o tabla una hilera ó columna, siempre y cuando no afecte el problema, es decir, que todos los elementos en la hilera ó columna sean cero. Si elimina una hilera o columna diferente de ceros, puede alterar el problema original.
3. Definir un nuevo problema
Para formular un nuevo problema lineal se puede hacer clic en el menú Archivo, seleccionar la opción “Nuevo” ó hacer clic en el botón del mismo nombre, donde aparecerá una ventana de entrada de datos (Figura 3). Se le pude poner opcionalmente un nombre al problema. En el cuadro de “Tamaño del problema”, se debe especificar el número de variables de decisión y el número de restricciones de recurso; los cuales deben ser valores enteros mayores que 1 y menor o igual 50. Además, en el cuadro de “Criterio del problema”, se puede escoger el tipo de problema que se va a resolver (de maximización o de minimización), seleccionando con un clic la opción a manejar. En el cuadro de “Tipo de variable por default”, se puede seleccionar el tipo de variable que aparecerá en el tableau por default, aunque más adelante se puede cambiar. Una vez introducidos los datos de variables, restricciones y criterio, para continuar hacer clic en el botón “OK”.
Figura 3. Ventana de definición del problema con que cuenta el programa SPLITT.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 4 -
4. Introducir los datos del problema
Una vez que ya se tiene especificado el tamaño del problema (número de variables, restricciones y criterio de optimización) se pueden introducir los datos del problema en la matriz, es decir, los coeficientes de cada restricción (R1, R2, etc.), los coeficientes de la función objetivo, el lado derecho de las restricciones (bi), la dirección de la restricción y el tipo de variable Xj. Los datos pueden ser números enteros o decimales, estos últimos, se deben introducir a 3 cifras, se pueden también escribir fracciones como de esta manera ½, 4/5, ¾, etc. La dirección se puede cambiar escribiendo “<=”, “=” o “>=” o haciendo clic sobre ella donde aparecerá una pequeña lista como en la Figura 4 y seleccionando la deseada. Similarmente, el tipo de variable, se puede cambiar escribiendo “nonegativa” o “irrestricta” o haciendo clic sobre la celda y eligiendo el deseado de la lista (Figura 4). Es posible introducir solamente los coeficientes diferentes de cero y para completar, si es que hubiesen, los datos restantes con ceros, existe la opción “rellenar con ceros” dando clic con el botón derecho del mouse.
Por ejemplo, el problema:
Maximizar Z = 2X1 + X 2 - 2 X 3 + 2X4 Sujeta a: X1 + X2 + 3X3 + X4 ≤ 6
2X1+ 2X2 + 2X3 + 2X4 ≤ 5 3X1 + X2 + 2X3 + 4X4 ≤ 4 4X1 + 3X3 + X4 ≤ 6
X1, X2, X3, X4 ≥ 0
se formularía en SPLITT como se ilustra en la Figura 5:
Figura 4. Matriz de entrada de datos en SPLITT.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 5 -
5. Comenzar a resolver un problema Cuando ya se han introducido los datos del problema, se puede continuar haciendo clic en el botón ”Siguiente”. Inmediatamente aparecerá la ventana de “Solución del Problema” tal como se ilustra en la Figura 6.
Figura 6. Ventana de Solución del Problema del programa SPLITT.
Figura 5. Ventana de descripción del problema en SPLITT.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 6 -
El programa indicará en un texto de seguimiento que aparecerá durante la solución del problema, ubicado en la parte inferior de la ventana, el paso a seguir dependiendo si hay variables irrestrictas y/o restricciones de igualdad, directamente aplicar la Fase 1 o pasar a la Fase 2 del Método Simplex. Se puede regresar a la ventana de “Descripción del Problema” desde el menú “Datos>Modificar datos del tableau” o con el botón “Pagina anterior”, donde se pueden hacer modificaciones a los datos. También es posible modificar el tamaño del problema desde el menú “Datos>Modificar criterio y tamaño”.
6. Tratamiento de variables irrestrictas Si existieran variables irrestrictas en el problema, habrá que eliminarlas del tableau. El programa lo indicará en el texto de seguimiento. Se debe dar clic en el botón “Intercambio de Jordán” o en el menú “Análisis>Intercambio de Jordán”.
Aparecerá una ventana como la de la Figura 7, donde se puede seleccionar con un clic, la variable irrestricta que se desee intercambiar para eliminar en cada intercambio de Jordán. En la lista de la izquierda, aparecerán las variables dependientes con las que es posible realizar tal intercambio. Si además, existieran restricciones de igualdad, se pueden intercambiar al mismo tiempo variables irrestrictas e igualdades seleccionando la opción “Intercambiar al mismo tiempo” que se encuentra en el cuadro de la parte inferior de la ventana. Si no existieran restricciones de igualdad en el problema, tal cuadro no aparecerá.
Figura 7. Ventana de intercambio de Jordán para eliminar variables irrestrictas.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 7 -
En los cuadros que se encuentran en la parte superior de las listas aparecerán las variables que se van intercambiar. Si no fuera posible intercambiar la variable X, ya sea debido a un no-acotamiento, el programa lo indicará con un mensaje y el Método Simplex terminará; o debido a una redundancia (todos los elementos sobre la columna de la variable son cero), se debe eliminar haciendo clic sobre el botón “Eliminar columna” ubicado en la barra de herramientas. Si se elimina una columna con elementos distintos de cero, se puede afectar el problema original.
7. Tratamiento de restricciones de igualdad Si existieran variables irrestrictas en el problema, habrá que eliminarlas del tableau después de intercambiarlas como variables independientes. El programa lo indicará en el texto de seguimiento situado en la parte inferior de la ventana. Se deberá hacer clic en el botón “Intercambio de Jordán” o en el menú “Análisis > Intercambio de Jordán”.
Aparecerá una ventana como la de la Figura 8, donde se puede seleccionar con un clic, la variable Y correspondiente a la igualdad que se desee intercambiar para eliminar en cada intercambio de Jordán. En la lista de la derecha aparecerán las variables independientes con las que es posible realizar tales intercambios. Si además existieran variables irrestrictas se pueden intercambiar al mismo tiempo igualdades y variables irrestrictas seleccionando la
Figura 8. Ventana de intercambio de Jordán para eliminar restricciones de igualdad.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 8 -
opción “Intercambiar al mismo tiempo” que se encuentra en el cuadro de la parte inferior de la ventana. Si no existieran variables irrestrictas en el problema, tal cuadro no aparecerá. En los cuadros que se encuentran en la parte superior de las listas aparecerán las variables que se van intercambiar. Si no fuera posible intercambiar la variable Y, ya sea debido a una infactibilidad, el programa lo indicará con un mensaje y el Método Simplex terminará; o debido a una dependencia lineal (todos los elementos sobre la columna de la variable son cero), se debe eliminar haciendo clic sobre el botón “Eliminar hilera” ubicado en la barra de herramientas. Si se elimina una hilera con elementos distintos de cero, se puede afectar el problema original.
8. Aplicación de la Fase 1 del Método Simplex Si en el problema planteado existiera algún elemento de la última columna del tableau menor a cero, se deberá aplicar la Fase 1. El programa lo indicará en el texto de seguimiento situado en la parte inferior y agregará una variable “R” ubicada en una columna antes de la columna de “1“, además de una función adicional “Z*” en la última hilera del tableau. El usuario deberá dar clic en el botón “Intercambio de Jordán” para continuar con el procedimiento, que es maximizar la función Z*, primeramente intercambiando a R con la variable Y que tenga en la columna de “1”, al mayor coeficiente negativo en valor absoluto. Cuando se halla maximizado la función Z*, aparecerá un mensaje como el de la Figura 9 si el máximo ocurre en R = 0 y automáticamente el programa eliminará la columna de R e hilera Z* y podrá continuar con la Fase 2. Si el máximo ocurriera en R ≠ 0, se mostrará un mensaje de infactibilidad del problema y el Método Simplex terminará. El mismo procedimiento se hará cuando después de eliminar todas las variables irrestrictas y restricciones de igualdad, existieran elementos negativos en la última columna del tableau.
Figura 9. Mensaje que muestra SPLITT después de maximizar la función Z*.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 9 -
9. Aplicación de la Fase 2 del Método Simplex
Podrá aplicar la Fase 2 del Método Simplex, siempre y cuando no halla variables irrestrictas, restricciones de igualdad o coeficientes negativos en la última columna. En este momento, estará visible el botón “Resolver”, con el cual se podrá resolver el problema dándole clic o desde el menú “Análisis>Resolver”; o si se prefiere ir viendo cada uno de los intercambios de Jordán, dando clic en el botón “Intercambio de Jordán” (o en el menú “Análisis>Intercambio de Jordán”), aparecerá la ventana (Figura 10) donde es posible elegir de la lista de la derecha la variable independiente que incrementa la Z dándole un clic y en la lista de la izquierda aparecerá la variable dependiente con la cual se hará el intercambio, aplicando la regla de selección. Puede realizar el intercambio, dando clic en el botón “Intercambio”.
10. Finalización del Método Simplex
El Método Simplex terminará cuando:
• Se ha obtenido la solución óptima, y esta es única. En este caso aparecerá un mensaje como el siguiente (Figura 11):
Figura 10. Ventana de intercambio de Jordán que se presenta en la Fase 2 del Método Simplex.
Autor: Lic. Marco Antonio López Cruz Universidad Autónoma Chapingo
- 10 -
• Se ha obtenido una solución óptima, aunque existen más de una solución. Se mostrará un mensaje como el siguiente (Figura 12):
En este último caso, se puede hacer un Intercambio de Jordán dando clic en el botón del mismo nombre para obtener los puntos óptimos alternos. En ambos casos, después de clicar el botón de “OK” del mensaje que se mostrará, se presentará una tabla con el resumen del problema y el análisis de sensibilidad (Figura 13). En el menú “Ver” se puede cambiar entre ver el tableau óptimo (el último que se obtuvo) o ver los resultados finales (Figura 13).
Figura 11. Mensaje que muestra el programa al final cuando la solución es única.
Figura 13. Tabla de Resultados que presenta SPLITT al resolver el problema indicado.
Figura 12. Mensaje que muestra el programa al final cuando existen más de una solución.