Está en la página 1de 84

Técnicas Clásicas de Optimización.

Parte I: Programación Lineal y No Lineal

Marı́a Merino Maestre

Facultad de Ciencia y Tecnologı́a


Departamento de Matemática Aplicada y
Estadı́stica e Investigación Operativa
UPV/EHU
Índice general

Prólogo 3

I Programación Lineal y No Lineal 5


1 Programación Lineal 7
1.1 Introducción a la Investigación Operativa . . . . . . . . . . . . . 7
1.1.1 Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2 Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.3 Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2 Introducción a la Programación Lineal . . . . . . . . . . . . . . 11
1.2.1 Formulación matemática . . . . . . . . . . . . . . . . . . 12
1.2.2 Transformaciones . . . . . . . . . . . . . . . . . . . . . . 13
1.2.3 Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.4 Resolución gráfica . . . . . . . . . . . . . . . . . . . . . . 16
1.3 El método Sı́mplex . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1 Resolución algebraica . . . . . . . . . . . . . . . . . . . . 21
1.3.2 Resolución tabular . . . . . . . . . . . . . . . . . . . . . 27
1.3.3 Casos especiales . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.4 Identificación de SBF iniciales . . . . . . . . . . . . . . . 34
1.3.5 Teorı́a del Método Sı́mplex . . . . . . . . . . . . . . . . . 36
1.4 Teorı́a de dualidad y análisis de sensibilidad . . . . . . . . . . . 48
1.4.1 Propiedades de la Teorı́a de Dualidad . . . . . . . . . . . 49
1.4.2 Interpretación económica . . . . . . . . . . . . . . . . . . 51
1.4.3 Análisis de sensibilidad . . . . . . . . . . . . . . . . . . . 53

2 Programación No Lineal 57
2.1 Introducción a la Programación No Lineal . . . . . . . . . . . . 57
2.2 Tipos de problemas de PNL . . . . . . . . . . . . . . . . . . . . 62

i
ÍNDICE GENERAL 1

2.3 Optimización no restringida . . . . . . . . . . . . . . . . . . . . 67


2.4 Optimización restringida: condiciones KKT . . . . . . . . . . . 72
2.5 Programación cuadrática . . . . . . . . . . . . . . . . . . . . . . 73
2.5.1 Formulación cuadrática . . . . . . . . . . . . . . . . . . . 73
2.5.2 Condiciones KKT para programación cuadrática . . . . . 75
2.5.3 Método Sı́mplex Modificado . . . . . . . . . . . . . . . . 77
2 ÍNDICE GENERAL
Prólogo

La asignatura Técnicas Clásicas de Optimización forma parte del Máster


en Modelización e Investigación Matemática, Estadı́stica y Computación, veáse
http://riemann.unizar.es/matg5/.
Esta asignatura pretende introducir al alumnado en metodologı́as modernas
que contribuyen a resolver problemas de decisión donde hay que optimizar el
uso de recursos limitados en contextos aplicados (industriales, económicos, ...).
La asignatura está dividida en tres partes:

Parte I: Programación Continua (Lineal y No Lineal).


Parte II: Programación Entera.
Parte III: Programación Estocástica.

Se recomienda consultar la siguiente bibliografı́a y enlaces: para Opti-


mización los libros [1, 2, 3, 4, 5], para Optimización No Lineal [6, 7], para
Optimización Estocástica [8, 9, 10].
Sobre software de Optimización pueden consultarse las siguientes referen-
cias:

COIN-OR: el código abierto de la Comunidad de Investigación Operativa


COmputational INfrastructure for Operations Research se puede consul-
tar en [11] y una guı́a en [12].
CPLEX: el optimizador de IBM ILOG CPLEX se puede consultar en [13],
ası́ como una guı́a en [14].
XPRESS: la edición de estudiante del sofware FICO Xpress Optimization
suite está disponible en la web [15].
GUSEK: el GLPK Under Scite Extended Kit está disponible en la página
[16].

3
4 ÍNDICE GENERAL
Parte I

Programación Lineal y No
Lineal

5
Capı́tulo 1

Programación Lineal

1.1 Introducción a la Investigación Operativa


1.1.1 Definiciones
¿En qué consiste la Investigación Operativa? Veamos algunas de las defini-
ciones dadas:

• Un método cientı́fico para dotar a los departamentos ejecutivos de una


base cuantitativa para las decisiones que tengan que ver con las opera-
ciones bajo su control (McCord y Kimball, 1951)

• El uso de la lógica y de la matemática de forma que no interfieran con


el sentido común (Woolsey, 1980).

• La ciencia que estudia el modelado de sistemas probabilı́sticos y deter-


minı́sticos que se originan en la vida real desde un punto de vista de
toma de decisiones óptimas (Hillier y Lieberman, 1990).

• El estudio de cómo formular modelos matemáticos para problemas com-


plejos de administración e ingenierı́a y cómo analizarlos para tener una
visión de las posibles soluciones (Rardin, 1998).

• Un enfoque cientı́fico para la toma de decisiones ejecutivas, que consiste


en el arte de modelar situaciones complejas, la ciencia de desarrollar
técnicas para resolver dichos modelos y la capacidad de comunicar efec-
tivamente los resultados (Lawrence y Pasternak, 1998).

7
8 CAPÍTULO 1. PROGRAMACIÓN LINEAL

• Rama interdisciplinaria de la Matemática Aplicada que emplea la mod-


elización matemática, estadı́stica y algoritmos de optimización para al-
canzar soluciones óptimas (o cuasi-óptimas) a complejos sistemas reales,
con la finalidad de mejorar su funcionamiento. Ayuda en el proceso de
toma de decisiones utilizando métodos cientı́ficos (Wikipedia [17], 2013).

Esta disciplina, también conocida como Ciencia de la Gestión, Teorı́a de la


Toma de Decisiones, Programación Matemática, Optimización, Ciencia para
la Mejora, cuenta con aplicaciones en múltiples campos tan amplios como el
industrial, económico y cientı́fico (véase [18]). En cuanto a las aplicaciones en
beneficio de la Humanidad y de la Sociedad, pueden consultarse libros como
por ejemplo, [19] y [20] de Russell Lincoln Ackoff (1919-2009), de la Universidad
de Penssylvania y Charles West Churchman (1913-2004), de la Universidad de
California, Berkeley.
Las Sociedades de Investigación Operativa están organizadas bajo la fed-
eración mundial fundada en 1959 IFORS (International Federation of Oper-
ational Research Societies, [21]) a la que pertenecen unas 30000 personas y
cuya misión es la promoción de la Investigación Operativa como disciplina
académica y como profesión. La Federación agrupa unos 45 paı́ses en cua-
tro regiones geográficas: Asia Pacı́fico, Europa, América del Norte y América
Latina. Cada región a su vez cuenta con su propia asociación que agrupa
las sociedades creadas en su entorno, las primeras constituı́das a mediados del
siglo XX: en Europa se encuentra EURO (Association of European Operational
Research Societies, 1976) a la que pertenece la española SEIO (Sociedad de
Estadı́stica e Investigación Operativa, 1962); América del Norte cuenta con
la Asociación NORAM (Association of North American Operations Research
Societies, 1987) y el Instituto INFORMS (Institute for Operations Research
and Management Sciencies, 1995); a Asia Pacı́fico pertenece APORS (Associ-
ation of Asian-Pacific Operational Research Societies, 1985); y por último en
Latinoamérica se establece ALIO (Asociación Latino-Iberoamericana de Inves-
tigación Operativa, 1982).

1.1.2 Clasificación
Los problemas que aborda la Investigación Operativa se pueden clasificar de
diferentes formas.
Atendiendo a la certidumbre de los datos, se dividen en:

(a) modelos determinı́sticos, en los cuales todos los datos se suponen cono-
cidos;
1.1. INTRODUCCIÓN A LA INVESTIGACIÓN OPERATIVA 9

(b) modelos probabilı́sticos, cuando los datos se consideran inciertos y vienen


dados por distribuciones de probabilidad; y

(c) modelos hı́bridos, como combinación de los anteriores.

Según el objetivo del problema se pueden clasificar en modelos de opti-


mización, cuando el objetivo es maximizar o minimizar una cantidad, sujeta a
una serie de limitaciones que restringen la decisión; y modelos de predicción,
cuando el objetivo es predecir o describir sucesos dadas ciertas condiciones.
Entre los modelos de optimización, se encuentran:

• Problemas de secuenciación, como puede ser decidir el orden a procesar


en el mı́nimo tiempo un número de trabajos en varias máquinas que
requieren tiempos diferentes.

• Problemas de localización, como los problemas de asignación que con-


sisten en asignar recursos limitados (materias primas, inversión, horas-
máquina, horas-hombre) de la manera más eficiente (costo mı́nimo, mı́nimo
tiempo, mı́nimo de desperdicios) o los problemas de transporte o trans-
bordo, que distribuyen objetos desde ciertos orı́genes a varios destinos.

• Problemas de rutas, tratan de encontrar la ruta óptima desde un origen


a un destino cuando existen varias alternativas posibles, como el del
viajante de comercio que tiene que visitar varias ciudades una única vez
antes de volver a su origen.

• Problemas de búsqueda de información para tomar una decisión, como


realizar exploraciones de la tierra para encontrar recursos naturales.

En cuanto a ejemplos de modelos de predicción, están los siguientes:

• Problemas de reemplazamiento o sustitución, se pueden realizar de man-


era preventiva o correctiva, por vejez, desgaste o muerte súbita. Se ocu-
pan de decidir el tiempo adecuado para reemplazar los equipos que fal-
lan o se deterioran, como decidir cuándo cambiar de coche, ordenador o
maquinaria.

• Problemas de inventario o existencias, consisten en determinar la can-


tidad ideal de productos que se deben tener disponibles en una tienda
o almacén. Responden a las decisiones de cuántos artı́culos reponer y
cuándo hacerlo.
10 CAPÍTULO 1. PROGRAMACIÓN LINEAL

• Problemas de colas o lı́neas de espera, se ocupan de estudiar el número


de clientes que solicita un servicio en función del tiempo de llegada del
cliente y de espera hasta ser atendido. Buscan el número de instalaciones
necesarias para minimizar la espera, como puede ser la atención en un
banco o supermercado.

• Problemas de competencia o teorı́a de juegos, cuando dos o más sujetos


compiten por un recurso. Como la obtención de un contrato para prestar
un servicio, la efectividad de las campañas publicitarias o la lealtad de
los clientes frente a la aparición de otra marca.

1.1.3 Metodologı́a
En cuanto a la metodologı́a que emplea la Investigación Operativa, puede
reducirse a los siguientes pasos:

1. Análisis de la realidad y formulación del problema, el analista debe ob-


servar desde diferentes puntos de vista, consciente de las realidades so-
ciopolı́ticas y económicas, para definir de forma clara los objetivos y
limitaciones.

2. Modelado matemático representativo, se deben identificar las variables


de decisión, la función objetivo y las restricciones del problema

3. Resolución del modelo, en esta fase se elige la técnica de resolución y se


generan las soluciones.

4. Presentación de resultados, se lleva a cabo el análisis y verificación de


soluciones, se analiza la representatividad del modelo y se realiza análisis
de sensibilidad.

5. Implementación de resultados: ejecución, se preparan los informes y pre-


sentaciones y se supervisa la aplicación.

Como la realidad es compleja, muchos de estos modelos presentan las sigu-


ientes caracterı́sticas:

1. Son de dimensiones enormes, en términos del número de variables de


decisión o del número de condiciones.

2. Son estocásticos, es decir, hay parámetros cuyos valores no pueden ser


controlados por la persona que toma la decisión y son desconocidos.
1.2. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL 11

La incertidumbre puede deberse a carencia de datos fiables, errores de


medida o parámetros que representan información sobre el futuro.

3. Son enteros, es decir, intervienen variables enteras. Esto ocurre en


muchas situaciones de la vida real: las variables representan objetos indi-
visibles; o en particular problemas binarios en los que aparecen decisiones
de tipo sı́/no, comprar/vender, etc.

4. Son no lineales, es decir, tanto la función objetivo como alguna de las


condiciones son funciones no lineales.

Cada una de estas caracterı́sticas, dimensión, estocasticidad, integralidad y no


linealidad, dificultan enormemente la resolución del problema, considerándose
problemas de complejidad computacional elevada.

La solución es clave para guiar a muchas organizaciones en áreas tales como


la toma de decisiones en planificación de inversiones financieras, gestión de ac-
tivos y pasivos, planificación y distribución de la producción, planificación de
cadenas de montaje, planificación de la generación de energı́a, planificación
de los recursos hidráulicos, control del tráfico aéreo, asignación de rutas de
vehı́culos, agricultura y polı́tica pública, por citar algunos de los muchos cam-
pos de aplicación. Los problemas con las caracterı́sticas anteriores se transfor-
man en modelos matemáticos de optimización.

1.2 Introducción a la Programación Lineal


La toma de decisiones es inherente a la mayorı́a de los aspectos de las finanzas,
la economı́a, la empresa, la industria y las actividades sociales y polı́ticas. En
la actualidad, los procesos de decisión basados en modelos son esenciales como
buena práctica de la gestión y organización de las empresas.
Una de las herramientas que actualmente proporciona decisiones más fi-
ables es la Optimización, campo en el que confluyen las Matemáticas y las
Ciencias de la Computación. El propósito de ésta es construir y resolver de
forma efectiva modelos realistas de la situación que se estudia, con objeto de
permitir que los tomadores de decisiones exploren una amplia variedad de posi-
bles alternativas. Más concretamente, la Optimización se refiere al análisis y
resolución de problemas en que se debe tomar una solución entre un conjunto
de soluciones factibles. El objetivo es encontrar la mejor solución (no necesari-
12 CAPÍTULO 1. PROGRAMACIÓN LINEAL

amente única) y las elecciones se comparan de acuerdo a una cierta función,


llamada función objetivo.
Entre los objetivos de esta ciencia interdisciplinaria, están los clásicos de
maximización de beneficios o rendimiento y minimización de pérdida, costes o
riesgo, a los que se suman -entre otros- los objetivos de eficiencia (asignación de
recursos a actividades), la optimización espacio-temporal (por ejemplo, mı́nima
espera en una cola o mı́nima distancia a recorrer en un viaje) y la mejora en
términos de equidad (como la minimización de diferencias entre individuos en
cuanto al reparto de trabajo o la distribución de vacaciones).
El reconocimiento de la importancia de este tipo de problemas coincidió
con el desarrollo en 1947 de un método eficiente, el método sı́mplex por George
Bernard Dantzig (1914-2005) y un medio, el ordenador, para aplicarlo. Una
gran parte de los fundamentos de la Programación Lineal se descubrió entre
1947 y 1949, un periodo sorprendentemente corto de tiempo de intensa la-
bor de investigación y desarrollo. En la actualidad, el algoritmo sı́mplex es
una herramienta estandar que ha ahorrado enormes cantidades de dinero a la
mayorı́a de las empresas en los paı́ses industrializados y su extensión a otros
sectores de la sociedad avanza rápidamente. A comienzos del milenio, este al-
goritmo aparece en la revista Computing in Science & Engineering [22] elegido
por John F. Nash como uno de los diez algoritmos de mayor influencia en el
desarrollo y la práctica de la ciencia y la ingenierı́a en el siglo XX.

1.2.1 Formulación matemática


Una de las áreas más importantes y activas de la Optimización es la Progra-
mación Lineal. Los problemas que trata se basan en la optimización (mini-
mización o maximización) de una función lineal conocida como función obje-
tivo, sujeta a una serie de restricciones lineales de igualdad o desigualdad.
Matricialmente, un problema de PL en notación estándar (con igualdades)
se puede expresar como:
max z = cx
s.a Ax = b (1.1)
x≥0

donde cx es la función objetivo a maximizar (ó minimizar), x ∈ IR+n representa


el vector de variables a determinar, c ∈ IRn es el vector de costos asociado a
las variables, A ∈ Mm×n es la matriz de coeficientes y b ∈ IR+m el vector
de términos independientes (ó rhs) relativos a las restricciones. Es decir, el
problema (1.1) es equivalente al problema (1.2) en notación extendida:
1.2. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL 13

maximizar z = c1 x1 + c2 x2 + . . . + cn xn
sujeto a a11 x1 + a12 x2 + . . . + a1n xn = b1
a21 x1 + a22 x2 + . . . + a2n xn = b2 (1.2)
···
am1 x1 + am2 x2 + . . . + amn xn = bm
x1 , x2 , . . . , xn ≥ 0
Definición 1.1. Se llama región factible del problema al conjunto de posibles
valores que satisfacen todas las restricciones, R = {x ∈ IRn : Ax = b, x ≥ 0}.
Una solución del problema (1.1) se dice solución factible si satisface todas
las restricciones del mismo, es decir, x ∈ R. Una solución factible se dice
solución óptima si proporciona el valor más favorable a la función objetivo,
es decir, x∗ ∈ R es óptima si ∀x ∈ R, cx∗ ≥ cx.
La función objetivo puede representar un problema de maximización o
minimización. En un problema concreto, las restricciones pueden venir dadas
en términos de igualdad o desigualdad (≥ o ≤) y las variables pueden ser no
negativas (x ≥ 0), no restringidas (x ∈ IR) o acotadas (l ≤ x ≤ u). Sin
embargo, dichas variantes pueden transformarse en el problema dado en forma
estándar en (1.1) añadiendo variables adicionales. A lo largo de este curso,
consideraremos problema en notación estándar (con desigualdades) a:

max z = cx
s.a Ax ≤ b (1.3)
x≥0
y su versión equivalente en notación extendida:

maximizar z = c1 x1 + c2 x2 + . . . + cn xn
sujeto a a11 x1 + a12 x2 + . . . + a1n xn ≤ b1
a21 x1 + a22 x2 + . . . + a2n xn ≤ b2 (1.4)
···
am1 x1 + am2 x2 + . . . + amn xn ≤ bm
x1 , x2 , . . . , xn ≥ 0

1.2.2 Transformaciones
Transformar un problema a notación estándar:
14 CAPÍTULO 1. PROGRAMACIÓN LINEAL

1. Transformaciones sobre la función objetivo:

• Transformar un problema de mı́nimo en un problema de máximo:

max(−z) = min z

2. Transformaciones sobre las restricciones:

• Transformar una restricción con rhs negativo:


si existe i tal que bi < 0, entonces basta multiplicar por (−1) la
restricción.
• Transformar desigualdades ≤ en igualdades:
si aparece una restricción del tipo ai1 x1 + ai2 x2 + . . . + ain xn ≤ bi ,
entonces definimos una nueva variable de holgura xn+1 ≥ 0 con costo
nulo, cn+1 = 0, de manera que reemplazamos la desigualdad por la
siguiente igualdad de forma equivalente:

ai1 x1 + ai2 x2 + . . . + ain xn + xn+1 = bi .

• Transformar desigualdades ≥ en igualdades:


si aparece una restricción del tipo ai1 x1 + ai2 x2 + . . . + ain xn ≥ bi ,
entonces definimos una nueva variable de superavit xn+1 ≥ 0 con
costo nulo, cn+1 = 0, de manera que reemplazamos la desigualdad
por la siguiente igualdad de forma equivalente:

ai1 x1 + ai2 x2 + . . . + ain xn − xn+1 = bi .

3. Transformaciones sobre las variables:

• Transformar una variable no positiva en una variable no negativa:


si existe j tal que xj ≤ 0, entonces la reemplazamos por una nueva
variable no negativa

x̃j = −xj , x̃j ≥ 0.

• Transformar una variable no restringida en dos variables no negati-


vas:
si existe j tal que xj ∈ IR (no restringida), entonces la reemplazamos
por la diferencia entre dos variables no negativas:

xj = x+ − + −
j − xj , xj ≥ 0, xj ≥ 0.
1.2. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL 15

• Transformar una variable acotada inferiormente en una variable no


negativa:
si existe j tal que xj ≥ lj , entonces la reemplazamos por una nueva
variable no negativa

x̃j = xj − lj , x̃j ≥ 0.

• Transformar una variable acotada superiormente en una variable no


negativa:
si existe j tal que xj ≤ uj , entonces la reemplazamos por una nueva
variable no negativa

x̃j = uj − xj , x̃j ≥ 0.

Ejemplo 1.1. Transformar a notación estándar (con desigualdades) el sigu-


iente problema de PL:

min z = 3x1 + 5x2


s.a. : x1 +x2 ≥ 4
(1.5)
4x1 +8x2 = 10
x1 ∈ IR, x2 ≥ 0

Desdoblamos la variable no restringida y la restricción en igualdad, ası́:

max −z = −3x+ −
1 + 3x1 − 5x2
s.a. : −x+
1

−x1 −x2 ≤ −4
4x+
1 −4x−
1 +8x 2 ≤ 10 (1.6)
−4x+
1

+4x1 −8x2 ≤ −10
x+ −
1 , x1 , x2 ≥ 0

Ejemplo 1.2. Transformar a notación estándar (con igualdades) el siguiente


problema de PL:

min z = z1 + z2
s.a. : 15 −4x1 +4x2 −u1 −z1 ≤0
30 +4x1 −8x2 −2u1 −z2 ≤ 0 (1.7)
x1 +2x2 −30 ≤0
x1 , x2 , u1 , z1 , z2 ≥ 0

Añadimos las variables de holgura y1 , y2, v1 y obtenemos:


16 CAPÍTULO 1. PROGRAMACIÓN LINEAL

max −z = −z1 − z2
s.a. : 4x1 −4x2 +u1 −y1 +z1 = 15
−4x1 +8x2 +2u1 −y2 +z2 = 30 (1.8)
x1 +2x2 +v1 = 30
x1 , x2 , u1 , y1 , y2, v1 z1 , z2 ≥ 0

1.2.3 Clasificación
Los problemas de optimización pueden clasificarse, según el carácter de las
variables, en:
Problemas lineales generales, si todas sus variables de decisión son con-
tinuas, es decir, toman valores en el espacio de números reales IR. Se
denominarán simplemente problemas lineales y se denotarán por P L.
Problemas enteros, si todas sus variables de decisión son enteras, es decir,
toman valores en el espacio de números enteros Z. También se conocen
como problemas enteros puros lineales, y se denotan por P E. En par-
ticular, se tiene un problema entero 0–1, si todas sus variables son
binarias, es decir, toman valores en el conjunto {0, 1}.
Problemas mixtos, si tienen variables de decisión tanto continuas como en-
teras. También se conocen como problemas enteros mixtos lineales, y se
denotarán por P M. En particular, un problema mixto 0–1 es aquel
que contiene tanto variables continuas como variables binarias.

1.2.4 Resolución gráfica


Ejemplo 1.3. Formulación matemática y resolución gráfica de un problema
de PL
En la Compañı́a Wyndor Glass se producen artı́culos de vidrio de alta cal-
idad, incluidas ventanas y puertas de vidrio. Consta de tres plantas. En la
Planta 1 se hacen marcos y molduras de alumnio, en la Planta 2 marcos y
molduras de madera y la Planta 3 se produce el vidrio y se ensamblan de los
productos. Debido a una reducción de las ganancias, la Dirección ha decidido
reorganizar la lı́nea de producción de la compañı́a. Se dejará libre una parte
de la capacidad de producción para emprender la fabricación de dos productos
nuevos cuyas ventas potenciales son muy prometedoras:
• Producto 1: una puerta de vidrio de 240cm con marco de aluminio
1.2. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL 17

• Producto 2: una ventana corrediza con marco de madera de 120cm x


180cm

El producto 1 requiere parte de la capacidad de producción en las plantas 1 y


3 y nada en la planta 2. El producto 2 sólo necesita trabajo en las plantas
2 y 3. La división de comercialización ha concluido que la compañı́a puede
vender todos los productos que se puedan fabricar en las plantas. Sin embargo,
como ambos productos competirı́an por la misma capacidad de producción en
la planta 3, no está claro qué combinación de productos serı́a la más rentable.
Por lo tanto, se ha formado un Equipo de Optimización para estudiar este
problema. El grupo comenzó por reunirse con la Dirección para identificar los
objetivos del estudio. Como consecuencia desarrolló la siguiente definición del
problema:
Determinar qué tasas de producción deben tener los dos productos con el fin
de maximizar las utilidades totales, sujetas a las restricciones impuestas por
las capacidades de producción limitadas disponibles en las tres plantas. (Cada
producto se fabricará en lotes de 20 unidades, de manera que la tasa de pro-
ducción está definida como el número de lotes que se producen a la semana.)
Se permite cualquier combinación de tasas de producción que satisfaga estas
restricciones, incluso no fabricar uno de los productos y elaborar todo lo que
sea posible del otro.
El Equipo de Optimización también identificó los datos que necesitaba re-
unir:

1. Número de horas de producción disponibles por semana en cada planta


para fabricar estos nuevos productos. (Casi todo el tiempo de estas plan-
tas está comprometido con los productos actuales, lo que limita la capaci-
dad para manufacturar nuevos productos.)

2. Número de horas de fabricación que se emplea para producir cada lote de


cada artı́culo nuevo en cada una de las plantas.

3. La ganancia por lote de cada producto nuevo. (Se escogió la ganancia por
lote producido como una medida adecuada una vez que el equipo llegó a
la conclusión de que la ganancia incremental de cada lote adicional pro-
ducido serı́a, en esencia, constante, sin que importase el número total de
lotes producidos. Debido a que no se incurre en costos sustanciales para
iniciar la producción y la comercialización de estos nuevos productos, la
ganancia total de cada uno es aproximadamente la ganancia por lote que
se produce multiplicada por el número de lotes.)
18 CAPÍTULO 1. PROGRAMACIÓN LINEAL

La obtención de estimaciones razonables de estas cantidades requirió del


apoyo de personal clave en varias unidades de la compañı́a. El personal de la
división de manufactura proporcionó los datos de la primera categorı́a men-
cionada. En la segunda categorı́a, el desarrollo de estimaciones requirió un
análisis de los ingenieros de manufactura involucrados en el diseño de los pro-
cesos de producción para elaborar los nuevos artı́culos. Al analizar los datos de
costos que se obtuvieron, junto con la decisión sobre los precios de la división
de marketing, el departamento de contabilidad calculó las estimaciones para la
tercera categorı́a.
La Tabla 1.1 resume los datos reunidos. De inmediato, el Equipo de Opti-
mización reconoció que se trataba de un problema de programación lineal del
tipo clásico de mezcla de productos y procedió a la formulación del modelo
matemático correspondiente.

Tabla 1.1: Datos del Ejemplo 1.3


Tiempo de producción por lote Tiempo de producción
Planta Producto 1 Producto 2 disponible por semana
1 1 hora 0 horas 4 horas
2 0 horas 2 horas 12 horas
3 3 horas 2 horas 18 horas
Ganancia 3000 euro 2000 euro

Consideraremos x1 y x2 el número de lotes del producto 1 y 2, respecti-


vamente, producidas por semana y z la ganancia semanal total (en miles de
euros) generada por estos dos productos. Por tanto, x1 y x2 son las variables
de decisión del modelo y el objetivo es elegir los valores que maximicen
z = 3x1 + 5x2
sujeto a las restricciones impuestas sobre dichos valores limitadas por la disponi-
bilidad de capacidad de las plantas. Según la Tabla 1.1 cada lote de producto 1
producida por semana emplea 1 hora de producción en la Planta 1, donde sólo
se dispone de 4 horas semanales. Esta restricción se expresa matemáticamente
por la desigualdad x1 ≤ 4. Análogamente la Planta 2 impone la restricción
2x2 ≤ 12. El número de horas de producción usadas a la semana en la Planta 3
consumido por elegir x1 y x2 como las nuevas tasas de producción de los produc-
tos serı́a 3x1 + 2x2 . Por tanto, la restricción para la Planta 3 es 3x1 + 2x2 ≤ 18.
Finalmente, como las tasas de producción no pueden ser negativas, es necesario
añadir: x1 ≥ 0 y x2 ≥ 0. En resumen, en el lenguaje matemático de la PL, el
problema consiste en elegir los valores x1 y x2 solución de:
1.2. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL 19

max z = 3x1 +5x2


sujeto a x1 ≤4
2x2 ≤ 12 (1.9)
3x1 +2x2 ≤ 18
x1 ≥ 0, x2 ≥ 0
Como es un problema pequeño con tan solo dos variables de decisión se
puede representar gráficamente en el espacio de dos dimensiones, donde los
ejes corresponden a las variables de x1 y x2 . En primer lugar, identificamos
los valores (x1 , x2 ) posibles dadas las restricciones, que están representados en
la región coloreada de la Figura 1.1 conocida como región factible. Para ello se
dibujan las rectas correspondientes a las restricciones en igualdad y finalmente
la región correspondiente. Para encontrar la mejor solución (x1 , x2 ), es decir,
la que maximice la función objetivo z = 3x1 + 2x2 , vamos dando valores a
z = 10, 20, 30, . . . y dibujamos las rectas asociadas 10 = 3x1 + 2x2 , 20 =
3x1 +2x2 , 30 = 3x1 +2x2 , . . . A medida que ascendemos conseguimos mejorar la
función objetivo (ya que se trata de un problema de máximo), de esta manera
observamos que la mejor solución es la que corresponde al punto (2, 6) que
reporta un beneficio de z = 36. Esto indica que la empresa deberı́a producir los
productos 1 y 2 a tasas de 2 y 6 por semana, respectivamente con un beneficio
resultante de 36000 epor semana. Aún más, ninguna otra combinación es
mejor, respecto a este modelo. Llegados a este punto, el Departamento de
I.O. estarı́a listo para evaluar la validez del modelo y realizar un análisis de
sensibilidad sobre las estimaciones de la Tabla 1.1.
10

9
3x1 + 2x2 = 18
8
x1 = 4
z = 36 = 3x1 + 5x2 7

2x2 = 12
6b b

4
z = 20 = 3x1 + 5x2
3 b

2
z = 10 = 3x1 + 5x2
1

0b b

0 1 2 3 4 5 6 7 8

Figura 1.1: Región factible del ejemplo 1.3


20 CAPÍTULO 1. PROGRAMACIÓN LINEAL

1.3 El método Sı́mplex

El método Sı́mplex es un algoritmo para la resolución de PL. Consiste en


un proceso algebraico en el que cada iteración calcula una solución factible.
Mediante un criterio de parada en el que se chequea la optimalidad de la
solución, se encuentra la solución óptima. Además, tiene una interpretación
geométrica muy útil. Si recordamos el Ejemplo 1.3 y su Figura 1.1 asociada,
tenı́amos 5 restricciones lineales y 5 puntos intersección claves, (0, 0), (0, 6),
(2, 6), (4, 3) y (4, 0), ya que son los puntos-extremos de la región factible y
por tanto, soluciones factibles de punto-extremo del problema. Dos soluciones
factibles de punto-extremo se dice que son adyacentes si están conectadas por
un único segmento en la frontera de la región factible.
El método sı́mplex se basa en tres propiedades claves de las soluciones
factibles de punto-extremo, bajo el supuesto de que el problema tiene solución
factible y acotada,

1. Si hay exactamente una única solución óptima, debe ser una solución
factible de punto-extremo. Si hay soluciones óptimas múltiples, entonces
al menos dos deben ser soluciones de punto extremo adyacentes.

2. Hay un número finito de soluciones factibles de punto-extremo.

3. Si una solución factible de punto-extremo es igual o mejor (en términos


de z) que todas sus soluciones factibles adyacentes, entonces es igual o
mejor que todas las soluciones factibles de punto extremo, es decir, es
solución óptima.

La propiedad 1 implica que la búsqueda se reduce a un número finito de


soluciones y la propiedad 3 da la clave para el test de optimalidad. El método
explota estas tres propiedades examinándo solo una cantidad relativamente
pequeña de soluciones factibles punto-extremo y parando tan pronto como
el test de optimalidad se satisfaga. En cada iteración se mueve de manera
eficiente de un punto extremo a otro adyacente mejor. El procedimiento puede
resumirse en el esquema algorı́tmico de la Figura 1.2.
1.3. EL MÉTODO SÍMPLEX 21

Paso inicial
Búsqueda de solución SFPE inicial

Paso iterativo
Mover a solución SFPE adyacente mejor

Test de optimalidad
¿Ninguna SFPE adyacente
no
es mejor?

sı́

Parar

Figura 1.2: Esquema del algoritmo Sı́mplex

1.3.1 Resolución algebraica


Vamos a resolver el Ejercicio 1.3 utilizando el método sı́mplex, para ello nece-
sitamos transformar el modelo a forma estandar con igualdades, por lo que
convertimos las restricciones de desigualdad en igualdad añadiendo 3 variables
de holgura. Ası́, el problema 1.9 en forma estándar con igualdades es:

max z = 3x1 + 5x2


sujeto a x1 +x3 =4
2x2 +x4 = 12 (1.10)
3x1 +2x2 +x5 = 18
xi ≥ 0, ∀i = 1, 2, 3, 4, 5
Esta formulación es mucho más conveniente para la manipulación alge-
braica y la identificación de soluciones factibles punto extremo.
Definición 1.2. Una solución aumentada es una solución de un prob-
lema originariamente con restricciones de desigualdad transformado en prob-
22 CAPÍTULO 1. PROGRAMACIÓN LINEAL

lema de igualdades mediante la incorporación de las variables de holgura nece-


sarias. Una solución básica es una solución punto extremo aumentada. Una
solución básica factible es una solución factible punto extremo aumentada.

En el ejemplo, la solución (3, 2) tiene su correspondiente solución aumen-


tada (3, 2, 1, 8, 5). La solución (4, 6) es solución infactible punto extremo y
(4, 6, 0, 0, −6) es solución básica mientras que (0, 6) es solución factible punto-
extremo y por tanto, (0, 6, 4, 0, 6) es solución básica factible.
Estas definiciones son esenciales en el vocabulario de la PL, por lo que
aclararemos sus propiedades algebraicas. Obsérvese que en la forma estandar
(1.10) del ejemplo, el sistema tiene 5 variables y 3 restricciones, se dice entonces
que tiene 2 grados de libertad, ya que dos variables pueden fijarse a un valor
arbitrario, y resolver las 3 ecuaciones en función de las 3 variables restantes. El
sı́mplex utiliza el 0 para este valor arbitrario. Las variables que se fijan a 0 se
llaman variable no básicas y el resto variables básicas. En términos generales, el
número de variables no básicas corresponde al número de grados de libertad del
sistema y el número de variables básicas al de ecuaciones. La solución completa
se llama solución básica y si todas las variables básicas son no negativas, la
solución se llama solución básica factible. Para cualquier solución básica, la
correspondiente solución punto extremo se obtiene eliminando las variables de
holgura. Dos soluciones factibles básicas son adyacentes si todas menos una de
las variables no básicas son las mismas y lo mismo para las variables básicas.
Por lo que moverse de una solución básica factible a otra adyacente, supone
cambiar una variable básica por una no básica y viceversa.
El algoritmo necesita manipular la función objetivo por lo que conviene
reescribir de nuevo el problema (1.10) como:

(0) z −3x1 −5x2 =0


(1) x1 +x3 =4
(1.11)
(2) 2x2 +x4 = 12
(3) 3x1 +2x2 +x5 = 18

Ası́, la función objetivo será tratada como la ecuación (0) y z como una
variable básica adicional permanente. Denotaremos por E(i) la ecuación i-
ésima del problema. Hay varias cuestiones a las que ir respondiendo:
1.3. EL MÉTODO SÍMPLEX 23

Pasos del algoritmo Sı́mplex

Paso inicial: ¿Cómo seleccionar una SFPE (solución factible básica)


inicial?

Paso iterativo: ¿Cómo moverse a una SFPE adyacente (solución


factible básica adyacente) mejor?

Fase 1: ¿Qué variable no básica entra en la base?


Fase 2: ¿Qué variable básica sale de la base?
Fase 3: ¿Cómo identificar la nueva solución?

Test de optimalidad: ¿Cómo determinar que la SFPE actual es


mejor que cualquiera adyacente?


Vamos a explicar el procedimiento algebraico resolviendo el ejemplo.
Ejemplo 1.4. Resolución algebraica del algoritmo Sı́mplex
Paso inicial
Cuando el problema original está en forma de desigualdades, se comienza
en el origen, solución xN ≡ (x1 , x2 ) = (0, 0). Ası́, tras introducir variables
de holgura, las variables originales se consideran no básicas y las variables de
holgura variables básicas, xB ≡ (x3 , x4 , x5 ). Como las no básicas se fijan a
cero, la solución básica factible inicial es (0, 0, 4, 12, 18). Observar que esta
solución es inmediata porque cada restricción tiene una única variable básica
con coeficiente +1 y no aparece en ninguna otra restricción.
Paso iterativo 1: ¿qué variable entra en y cuál abandona la base?
Para movernos de la actual SBF a otra adyacente mejor, debemos reem-
plazar una variable no básica (entrante) por una nueva variable (saliente).
Las candidatas a entrar en la base son las variables no básicas, como al
entrar su valor pasará de nulo a positivo (excepto en casos degenerados), la
candidata es la que en mayor medida pueda mejorar la función objetivo z, es
decir, la que tenga el coeficiente positivo mayor en la función objetivo. En el
ejemplo, como c1 = 3 < c2 = 5, la candidata a entrar en la base es la variable
x2 .
Como x1 permanece a 0, geométricamente nos movemos a lo largo del
semieje positivo x2 . La SFPE adyacente es (0, 6) Las posibles variables a
abandonar la base son x3 , x4 y x5 . Necesitamos analizar en qué situación
x2 aumentarı́a lo más posible antes de que ninguna variable sea negativa, ver
24 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Tabla 1.2. Como x4 impone la menor cota superior para x2 , la variable que
abandona la base es x4 , que se fija a 0 y ası́ x2 = 6 entra en la nueva base.

Tabla 1.2: Determinación de la variable a abandonar la base en la iteración 1

xB Ecuación Cota superior para x2


x3 (1) x3 = 4 − x1 x2 ≤ ∞
x4 (2) x4 = 12 − 2x2 x2 ≤ 12
2
= 6 (minimo)
x5 (3) x5 = 18 − 3x1 − 2x2 x2 ≤ 18
2
=9

Como xN ≡ (x1 , x4 ) = (0, 0), entonces xB ≡ (x3 , x2 , x5 ) = (4, 6, 6).


De cara a la siguiente iteración, nos interesa convertir el sistema en uno
similar al de la primera iteración, es decir, donde cada ecuación tenga una única
variable básica con coeficiente +1 y que no aparezca en ninguna otra ecuación.
Esto se logra realizando dos tipos de operaciones algebraicas legı́timas:
• Multiplicar una ecuación por una constate no nula:
Ẽ(i) := k · E(i)

• Añadir un múltiplo de una ecuación a otra ecuación:


Ẽ(j) := E(j) + k · E(i)

Para obtener el coeficiente +1 en la nueva variable básica x2 hacemos


1
· E(2)
Ẽ(2) :=
2
Para eliminar x2 del resto de ecuaciones:

Ẽ(0) := E(0) + (5) · Ẽ(2)


Ẽ(1) := E(1) + (0) · Ẽ(2)
Ẽ(3) := E(3) + (−2) · Ẽ(2)
Ası́, el sistema (1.11) se transforma en el siguiente sistema equivalente:

(0) z −3x1 + 52 x4 = 30
(1) x1 +x3 =4
(1.12)
(2) x2 + 21 x4 =6
(3) 3x1 −x4 +x5 = 6
1.3. EL MÉTODO SÍMPLEX 25

Intercambiando la posición de x2 y x4 para ilustrar el resultado:

(0) z −3x1 + 25 x4 = 30
(1) x1 +x3 =4
1 (1.13)
(2) x
2 4
+x2 =6
(3) 3x1 −x4 +x5 = 6

Ası́, la nueva SBF es (x1 , x2 , x3 , x4 , x5 ) = (0, 6, 4, 0, 6) que obtiene un ben-


eficio de z = 30. Este método algebraico es similar al Método de eliminación
Gauss Jordan.
Test de optimalidad
Para determinar si la solución es óptima, reconvertimos la ecuación (0),
en función objetivo: z = 30 + 3x1 − 25 x4 . Como el coeficiente de x1 es positivo,
podriamos movernos a una SBF adyacente mejor que la actual, por lo que la
solución obtenida no es óptima. En general, las SBF es óptima si y solo si
todas las variables no básicas tienen coeficientes no positivos (≤ 0) en la forma
actual de la función objetivo. Es por ello que se utiliza la función objetivo en
la forma de la ecuación (0) ya que contiene todas las variables no básicas y
ninguna básica.
Paso iterativo 2: ¿qué variable entra en y cuál abandona la base?
Mirando a los coeficientes de la función objetivo, el mayor (y único) coefi-
ciente positivo implica que x1 es la variable a entrar en la nueva base.
Analizando la menor cota superior para x1 , ver Tabla 1.3, la variable a
entrar en la base es x5 .

Tabla 1.3: Determinación de la variable a abandonar la base en la iteración 2

xB Ecuación Cota superior para x2


x3 (1) x3 = 4 − x1 x1 ≤ 14 = 4
x2 (2) x2 = 6 − 12 x4 x1 ≤ ∞
x5 (3) x5 = 6 − 3x1 + x4 x1 ≤ 36 = 2 (minimo)

Tras eliminar la variable x1 de todas las ecuaciones excepto E(3) con el


método algebraico:
1
Ẽ(3) := · E(3)
3
Ẽ(0) := E(0) + (3) · Ẽ(3)
26 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Ẽ(1) := E(1) + (−1) · Ẽ(3)

Ẽ(2) := E(2) + (0) · Ẽ(3)

Ası́, el sistema (1.13) se transforma en el siguiente sistema equivalente:

3
(0) z 2 4
x +x5 = 36
(1) x3 + 31 x4 − 13 x5 = 2
(1.14)
(2) x2 + 21 x4 =6
(3) x1 − 13 x4 + 13 x5 = 2

Ası́, la solución factibe básica es (x1 , x2 , x3 , x4 , x5 ) = (2, 6, 2, 0, 0), con un


beneficio de z = 36.

Test de optimalidad

Como la función objetivo z = 36 − 23 x4 − x5 tiene todos los coeficientes de


las variables no básica negativos, la solución es óptima.

Resumiendo, el esquema para la resolución algebraica es el siguiente:


1.3. EL MÉTODO SÍMPLEX 27

Resolución algebraica del algoritmo Sı́mplex

Paso inicial: Introducir las variables de holgura como básicas y las


originales como no básicas a 0. Ir al Test de Optimalidad.

Paso iterativo: Consta de 3 fases:

Fase 1: Determinar la variable a entrar en la base, chequeando la


magnitud de los coeficientes de la función objetivo reescrita
en términos de las variables no básicas.
Fase 2: Determinar la variable a salir de la base, seleccionando la
variable básica que se anula primera al aumentar la variable
básica entrante recién seleccionada.
Fase 3: Determinar la nueva SBF, utilizando el método de elimi-
nación Gauss Jordan para reescribir el sistema de manera
que cada variable básica aparezca en una única restricción
con el signo +1.

Test de optimalidad: Chequear si z puede aumentar al aumentar


una variable no básica, que serı́a candidata a entrar en la nueva
base. Si es posible, ir al Paso iterativo; en caso contrario, se ha
encontrado la solución óptima, parar.

1.3.2 Resolución tabular

La resolución tabular es matemáticamente equivalente a la forma algebraica,


pero más conveniente a la hora de realizar cálculos a mano, ya que repre-
sentaremos en la tabla sólo la información esencial, es decir: los coeficientes de
las variables, los términos rhs de las ecuaciones y las variables básicas de cada
ecuación.

Ejemplo 1.5. Resolución tabular del algoritmo Sı́mplex


Resolvamos el ejemplo mediante la resolución tabular.
Paso inicial:
Representamos el sistema (1.11) en forma de tabla de la siguiente manera:
28 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Tabla 1.4: Tabla sı́mplex inicial

xB Ec. num. z x1 x2 x3 x4 x5 rhs


z (0) 1 −3 −5 0 0 0 0
x3 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 2 0 1 0 12
x5 (3) 0 3 2 0 0 1 18

Observamos que está en la forma apropiada, es decir, las variables básicas


(variables de holgura) aparecen con coeficiente +1 una única vez, por lo que
la solución es inmediata ya que las variables no básicas (variables iniciales)
toman el valor cero: (x1 , x2 , x3 , x4 , x5 ) = (0, 0, 4, 12, 18).
Test de optimalidad
La actual SBF es óptima si y solo si todos los coeficientes de la ecuación (0)
son no negativos (≥ 0). Como no es el caso, comienza la primera iteración.
Paso iterativo 1
Entre las variables negativas, se considera la de mayor valor absoluto, como
max{| − 3|, | − 5|} = 5, entonces la variable x2 entra en la base y a la columna
asociada se la llama columna pivote.
Ahora, entre los coeficientes positivos se considera el mı́nimo cociente entre
el rhs correspondiente y dicho coeficiente, como min{ 12 2 2
, 18 } = 6, entonces la
variable x4 sale de la base y a dicha fila se la llama fila pivote, en este caso
E(2) . A la intersección entre la fila y la columna pivote, se le llama elemento
pivote, en esta iteración el número 2, los pivotes se han representado en rojo
en la Tabla 1.5.

Tabla 1.5: Tabla sı́mplex inicial con columna, fila y elemento pivote

xB Ec. num. z x1 x2 x3 x4 x5 rhs


z (0) 1 −3 −5 0 0 0 0
x3 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 2 0 1 0 12
x5 (3) 0 3 2 0 0 1 18

Para determinar la nueva SBF se construye la tabla apropiada. Para ello


la fila pivote se divide por el elemento pivote:
E(p) E(2)
Ẽ(p) := ⇒ Ẽ(2) :=
p 2
1.3. EL MÉTODO SÍMPLEX 29

Para el resto de las filas, la nueva fila se calcula como la antigua menos el
coeficiente de la columna pivote por la nueva fila pivote:

 Ẽ(0) := E(0) − (−5) · Ẽ(2)
∀i 6= p, Ẽ(i) := E(i) − (aip ) · Ẽ(p) ⇒ Ẽ := E(1) − (0) · Ẽ(2)
 (1)
Ẽ(3) := E(3) − (2) · Ẽ(2)
De esta forma se obtiene la Tabla 1.6, completándose asi la primera it-
eración. Como cada variable no básica es nula, cada básica toma el valor rhs
y ası́ (x1 , x2 , x3 , x4 , x5 ) = (0, 6, 4, 0, 6) con beneficio z = 30.

Tabla 1.6: Tabla sı́mplex iteración 1

xB Ec. num. z x1 x2 x3 x4 x5 rhs


z (0) 1 −3 0 0 5/2 0 30
x3 (1) 0 1 0 1 0 0 4
x2 (2) 0 0 1 0 1/2 0 6
x5 (3) 0 3 0 0 −1 1 6

Test de optimalidad:
Como hay un coeficiente negativo, la solución actual no es óptima.
Paso iterativo 2:
max{| − 3|} = 3, entonces la variable x1 entra en la base (columna pivote).
Y por el test de mı́nimo cociente: min{ 41 , 36 } = 2, entonces la variable x5 sale
de la base (fila pivote). Ası́, el elemento pivote es 3, ver Tabla 1.7.

Tabla 1.7: Tabla sı́mplex iteración 1 con columna, fila y elemento pivote

xB Ec. num. z x1 x2 x3 x4 x5 rhs


z (0) 1 −3 0 0 5/2 0 30
x3 (1) 0 1 0 1 0 0 4
x2 (2) 0 0 1 0 1/2 0 6
x5 (3) 0 3 0 0 −1 1 6

Las operaciones algebraicas a realizar son ahora:



E


 Ẽ(3) := 3(3)
Ẽ(0) := E(0) − (−3) · Ẽ(3)


 Ẽ(1) := E(1) − (1) · Ẽ(3)

 Ẽ := E − (0) · Ẽ
(3) (3) (3)
30 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Como vemos en la Tabla 1.8, la nueva SBF es (x1 , x2 , x3 , x4 , x5 ) = (2, 6, 2, 0, 0)


con beneficio z = 36.

Tabla 1.8: Tabla sı́mplex iteración 2

xB Ec. num. z x1 x2 x3 x4 x5 rhs


z (0) 1 0 0 0 3/2 1 36
x3 (1) 0 0 0 1 1/3 −1/3 2
x2 (2) 0 0 1 0 1/2 0 6
x1 (3) 0 1 0 0 −1/3 1/3 2

Test de optimalidad
Como ningún coeficiente de la ecuación (0) es negativo, el algoritmo ter-
mina, la solución actual es óptima, x1 = 2 y x2 = 6.
Obsérvese que los valores 0, 32 y 1 son los precios sombra de los tres
recursos, es decir, el valor marginal o tasa a la que z podrı́a aumentar si se
aumenta la capacidad disponible b1 , b2 y b3 , respectivamente. Por ejemplo, si
la capacidad disponible para la Planta 2 aumentara una unidad, de b2 = 12
a b2 = 13, entonces la solución pasarı́a de ser (2, 6) con valor z = 36 a ser
( 35 , 13
2
) con valor z = 37 21 . Efectivamente, z aumentarı́a ligeramente en 23 .

1.3.3 Casos especiales


Veamos algunos casos ambiguos, que no han sido abordados hasta el momento.
(a) Empates para la variable básica a entrar
En la primera fase del paso iterativo, se elige variable candidata a entrar en
la base entre las variables no básicas con coeficiente negativo en la ecuación (0)
cuyo valor absoluto sea mayor. Por ejemplo, si la función objetivo del ejemplo
fuera z = 3x1 + 3x2 . ¿Cómo resolver el empate? La respuesta es: arbitraria-
mente. La solución óptima se alcanzará independientemente de dicha elección.
En este caso, se encontrarı́a el óptimo (2, 6) en tres iteraciones si elegimos
en primer lugar x1 como variable a entrar en la base, y en dos iteraciones si
eligiéramos a x2 en primer lugar.
(b) Empates para la variable básica a abandonar: degeneración
Cuando se elige la variable básica a abandonar la base, también podrı́a
haber empates. Supongamos que el empate ocurre entre dos o más variables
básicas cuando se elige la variable que sale en la segunda fase del paso itera-
tivo ¿Importa cuál se escoge? En teorı́a, sı́, pero de forma crı́tica debido a lo
1.3. EL MÉTODO SÍMPLEX 31

que podrı́a ocurrir. Primero, todas las variables empatadas se hacen cero al
mismo tiempo cuando aumenta el valor de la variable entrante. Por lo tanto,
aquellas que no se eligieron como variable básica saliente también tendrán un
valor de cero en la nueva SBF. Las variables básicas con valor 0 se llaman
degeneradas,y la correspondiente SBF se llama solución factible básica
degenerada. Segundo, si una de estas variables básicas degeneradas sigue
con valor de cero hasta que se selecciona como variable básica que sale en una
iteración posterior, la variable básica entrante deberá también quedar con valor
de cero (ya que no puede crecer sin que la variable básica que sale se vuelva
negativa), por lo que el valor de z no cambiará. Tercero, si z permanece igual
en lugar de mejorar en cada iteración, el método sı́mplex puede caer en un
bucle que repite la misma secuencia de soluciones de forma periódica, en lugar
de aumentar en algún momento para llegar a la solución óptima. En realidad,
se han construido ejemplos artificiales que se quedan atrapados en un bucle
infinito de este tipo. Afortunadamente, aunque el buble es teóricamente posi-
ble, muy raramente ocurre en problemas en la práctica. Si ocurriera un bucle
siempre se puede salir de él al cambiar la elección de la variable básica que sale.
En ejercicios prácticos se recomienda romper los empates de modo arbitrario
y seguir el proceso sin preocuparse de las variables degeneradas que puedan
resultar. Además se han construido reglas especiales para deshacer empates
de manera que se eviten bucles infinitos, por lo que no debemos preocuparnos
por las variables básicas degeneradas.
(c) Inexistencia de variable básica a abandonar: solución inaco-
tada
En la segunda fase del paso iterativo podria ocurrir otra posibilidad que no
hemos comentado aún: que no haya variables candidatas a abandonar la base.
(Obsérvese que esto no serı́a un problema en la primera fase, como sabemos,
por el test de optimalidad). Esto puede ocurrir si la variable básica candidata
a entrar podrı́a aumentar indefinidamente sin que ninguna de las variables
básicas llegue a dar valores negativos. En la fórma tabular observarı́amos que
en la columna pivote todos los coeficientes son nulos o negativos.

Ejemplo 1.6. Resolución de un problema inacotado


Si en el Ejemplo 1.3 eliminamos las dos últimas restricciones nos encon-
trarı́amos con esta situación.
32 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Tabla 1.9: Tabla sı́mplex inicial del Ejemplo 1.6

xB Ec. num. z x1 x2 x3 rhs


z (0) 1 −3 −5 0 0
x3 (1) 0 1 0 1 4

max z = 3x1 + 5x2


sujeto a x1 +x3 =4 (1.15)
xi ≥ 0, ∀i = 1, 2, 3

10 b b

0b b

0 1 2 3 4 5 6 7 8

Figura 1.3: Región factible inacotada del Ejemplo 1.6

Esto se interpreta de la siguiente manera: las restricciones no impiden el


crecimiento indefinido de la función objetivo, ası́ que el algoritmo pararı́a con
el mensaje de que z es inacotado. Como la PL no ha descubierto la manera de
conseguir beneficios infitos, el mensaje real para los problemas en la práctica
es que ¡hay algún error! Probablemente en la modelización del problema: por
haber omitido restricciones relevantes o haberlas formulado incorrectamente.
(d) Soluciones óptimas múltiples
En muchas aplicaciones de PL el problema tiene soluciones óptimas mul-
tiples, que aportan el mismo valor a la función objetivo. Cuando el algoritmo
sı́mplex encuentra una SBF óptima, ¿cómo reconoce si hay otras y cómo las
encuentra?
1.3. EL MÉTODO SÍMPLEX 33

Cuando un problema tiene más de una SBF óptima, al menos una de las
variables no básicas tiene coeficiente 0 en la ecuación (0), ası́ que aumentar
dicha variable no varı́a el valor de z. Ası́, que se pueden encontrar otras solu-
ciones, realizando iteraciones adicionales del algoritmo, eligiendo una variable
no básica con coeficiente cero como candidata a entrar en la base.

Ejemplo 1.7. Resolución de un problema de soluciones múltiples

Si en el Ejemplo 1.3 modificamos levemente la función objetivo, z = 3x1 +


2x2 , nos encontrarı́amos con esta situación. Cada problema tiene al menos
dos soluciones factibles de punto extremo óptimas (SBF), en el ejemplo (2, 6)
y (4, 3), por lo que todas las soluciones en el segmento son óptimas.

10

6b b

3 b

0b b

0 1 2 3 4 5 6 7 8

Figura 1.4: Región factible del Ejemplo 1.7

Veamos la resolución tabular del algoritmo sı́mplex para este ejemplo en la


Tabla 1.10.
34 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Tabla 1.10: Tabla sı́mplex para soluciones múltiples

Iteración xB Ec. num. z x1 x2 x3 x4 x5 rhs Óptima?


0 z (0) 1 −3 −2 0 0 0 0 No
x3 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 2 0 1 0 12
x5 (3) 0 3 2 0 0 1 18
1 z (0) 1 0 −2 3 0 0 12 No
x1 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 2 0 1 0 12
x5 (3) 0 0 2 −3 0 1 6
2 z (0) 1 0 0 0 0 1 18 Sı́
x1 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 0 3 1 −1 6
x2 (3) 0 0 1 −3/2 0 1/2 3
Extra z (0) 1 0 0 0 0 1 18 Sı́
x1 (1) 0 1 0 0 −1/3 1/3 2
x3 (2) 0 0 0 1 1/3 −1/3 2
x2 (3) 0 0 1 0 1/2 0 6

Por lo que las dos SBF óptimas encontradas son (4, 3, 0, 6, 0) y (2, 6, 2, 0, 0),
cada una alcanza un beneficio de z = 18. Obsérvese que la variable x4 también
presenta coeficiente 0 en la ecuación (0), pero entrar en la base supondrı́a volver
a la iteración 2. El resto de soluciones óptimas son promedio ponderado de
ambas, es decir, todas las que se encuentran en el segmento entre (2, 6) y (4, 3),
es decir,

{(2, 6) + λ[(4, 3) − (2, 6)] : λ ∈ [0, 1]} = {(2 + 2λ, 6 − 3λ) : λ ∈ [0, 1]}

1.3.4 Identificación de SBF iniciales


El único problema real que pueden acarrear las diferentes formulaciones de
las restricciones es el cálculo de la SBF inicial. La técnica que se emplea
en estos casos es la técnica de variables artificiales. Este procedimiento con-
siste en introducir variables artificiales (dummy) con el fin de convertirse en
variables básicas iniciales. Se les asigna un peso M en la función objetivo
exorbitante (penalización), con el fin de que el método las vaya expulsando
1.3. EL MÉTODO SÍMPLEX 35

automáticamente, hasta que todas queden fuera (fijadas a 0) y se resuelva el


problema real. A esto se le conoce como el método de la gran M.
Ejemplo 1.8. Identificación de soluciones iniciales
Consideremos que en el Ejemplo 1.3 se requiere utilizar la Planta 3 a ca-
pacidad completa. Es decir, la restriccion (3) se da en igualdad. Gráficamente
la región factible, es tan solo el segmento (2, 6) a (4, 3).
Tras introducir las dos variables de holgura en la inecuaciones (1) y (2) el
modelo resultante viene dado en (1.16).

max z = 3x1 + 5x2


sujeto a x1 +x3 =4
2x2 +x4 = 12 (1.16)
3x1 +2x2 = 18
xi ≥ 0, ∀i = 1, 2, 3, 4
No hay una SBF obvia ya que ha desaparecido la variable de holgura de
la ultima restricción. Por ello, introducimos una variable artificial, xM ≥ 0.
Y obtenemos una SBF inicial (x1 , x2 , x3 , x4 , xM ) = (0, 0, 4, 12, 18). De esta
manera hemos aumentado la región factible del problema. El modelo resultante
será equivalente siempre que la solución de la variable artificial sea nula, es
decir, xM = 0. Por lo que utilizaremos el método de la gran M para garantizar
que la solución caiga en la región factible inicial. Es decir, reformulamos
el modelo (1.16) como (1.17), donde M es un valor positivo suficientemente
grande

max z = 3x1 + 5x2 − MxM


sujeto a x1 +x3 =4
2x2 +x4 = 12 (1.17)
3x1 +2x2 +xM = 18
x1 , x2 , x3 , x4 , xM ≥ 0
La ecuación (0) serı́a entonces

E(0) : z − 3x1 − 5x2 + MxM = 0.

Sin embargo, el algoritmo no puede aplicarse aún, recordemos que para el test
de optimalidad y para la fase 1 del paso iterativo cada variable básica debe tener
un coeficiente 0 en la función objetivo y no lo satisface la variable ficticia xM .
Como en la fase 3 del paso iterativo, vamos a reemplazar la fila 0 por

Ẽ(0) := E(0) − M · Ẽ(3)


36 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Ası́,
Ẽ(0) : z + (−3 − 3M)x1 + (−5 − 2M)x2 = −18M
De esta forma se completa el trabajo adicional que requiere el paso inicial
del algoritmo para problemas de este tipo. A partir de aquı́, el algoritmo se
resuelve como hemos visto. Las cantidades relativas a M solo aparecerán en
la ecuación (0), por lo que solo afectarán al test de optimalidad y a la fase 1
del paso iterativo. La resolución tabular viene expresada en la Tabla 1.11.

Tabla 1.11: Tabla sı́mplex con variables artificiales

It xB Ec. num. z x1 x2 x3 x4 xM rhs


0 z (0) 1 −3 − 3M −5 − 2M 0 0 0 −18M
x3 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 2 0 1 0 12
xM (3) 0 3 2 0 0 1 18
1 z (0) 1 0 −5 − 2M 3 + 3M 0 0 12 − 6M
x1 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 2 0 1 0 12
xM (3) 0 0 2 −3 0 1 6
2 z (0) 1 0 0 −9/2 0 5/2 + M 27
x1 (1) 0 1 0 1 0 0 4
x4 (2) 0 0 0 3 1 −1 6
x2 (3) 0 0 1 −3/2 0 1/2 3
3 z (0) 1 0 0 0 3/2 1+M 36
x1 (1) 0 1 0 0 −1/3 1/3 2
x3 (2) 0 0 0 1 1/3 −1/3 2
x2 (3) 0 0 1 0 1/2 0 6

La solución que se obtiene es (x1 , x2 , x3 , x4 , xM ) = (2, 6, 2, 0, 0).

1.3.5 Teorı́a del Método Sı́mplex


En esta sección vamos a revisar los fundamentos téoricos del algoritmo sı́mplex
y presentar el método sı́mplex revisado. Este método fue diseñado a partir del
método anterior y fue desarrollado para que la ejecución computacional sea
eficiente.
Recordemos la formulación matricial del modelo general de PL (1.3):
1.3. EL MÉTODO SÍMPLEX 37

max z = cx
s.a Ax ≤ b
x≥0
donde c es el vector fila

c = (c1 c2 . . . cn ),

x, b, 0 son los vectores columna:


     
x1 b1 0
 x2   b2  0
x =  ..  , b =  ..  , 0 =  ..  ,
     
.  .  .
xn bm 0

y A es la matriz  
a11 a12 . . . a1n
 a21 a22 . . . a2n 
A =  .. .. .. 
 
 . . . 
am1 am2 . . . amn
Para convertirlo en un problema de igualdades introducimos las m variables
de holgura en cada restricción:
 
xn+1
 xn+2 
xh =  .. 
 
 . 
xn+m
ası́ que las restricciones del modelo en forma estandar son:
   
 x x
AI =by ≥0
xh xh

donde I es la matriz identidad m × m y el vector 0 tiene ahora n + m


elementos.
Recordemos que el método consiste en encontrar SBF hasta llegar a la
óptima. Una vez identificadas las variables básicas xB y las no básicas xN , la
solución básica es el resultado del sistema de m ecuaciones
 
 x
AI =b
xh
38 CAPÍTULO 1. PROGRAMACIÓN LINEAL
 
x
donde las xN serán n variables elegidas de entre las n + m de que serán
xh
igualadas a 0. Al eliminar esas n variables, se obtiene un conjunto de m
ecuaciones y m incógnitas (las variables básicas xB ). Denotemos este conjunto
de ecuaciones como
BxB = b
donde la matriz básica B y el vector de variables básicas xB son
   
B11 B12 . . . B1m xB1
 B21 B22 . . . B2m   xB2 
B =  .. .. .. , x B  .. 
   

 . . .   . 
Bm1 Bm2 . . . Bmm xBm
donde la matriz B se obtiene eliminando las columas correspondientes a las
coeficientes de las variables xN de (A I). Para resolver BxB = b, multiplicamos
por B −1 a ambos lados y se tiene
xB = B −1 b.
Sea cB el vector que se obtiene al eliminar los coeficientes de las variables
no básicas de (c 0) y cN el correspondiente a las no básicas, el valor de la
función objetivo es
z = cB xB + cN xN = cB xB = cB B −1 b
Ejemplo 1.9. Formulación matricial del algoritmo Sı́mplex
En el Ejemplo 1.3 tenemos m = 3 ecuaciones y n = 2 variables originales:
     
1 0 1 0 0 4   x3
x1
c = (3 5), (A I) = 0 2 0 1 0 , b = 12 , x =
    , xh = x4  .

x2
3 2 0 0 1 18 x5
Como vimos en la resolución la secuencia de SBF obtenidas iterativamente
son:
Iteración inicial
   
x3 1 0 0
xB = x4  , B = 0 1 0 , B −1 = I,
x5 0 0 1
 
4
−1
⇒ xB = B b = b = 12 , cB = (0 0 0) ⇒ z = cB xB = 0.

18
1.3. EL MÉTODO SÍMPLEX 39

Iteración 1
     
x3 1 0 0 1 0 0
xB = x2  , B = 0 2 0 , B −1 = 0 21 0 ,
x5 0 2 1 0 −1 1

 
4
⇒ xB = B −1 b = 6 , cB = (0 5 0) ⇒ z = cB xB = 30.
6

Iteración 2

1 13 − 31
     
x3 1 0 1
xB = x2  , B =  0 2 0 , B −1 = 0 12 0 ,
x1 0 2 3 1
0 − 3 31

 
2
⇒ xB = B −1 b = 6 , cB = (0 5 3) ⇒ z = cB xB = 36.
2

El conjunto de ecuaciones original es



  z  
1 −c 0   0
x = . (1.18)
0 A I b
xh

Esto corresponde a la iteración inicial al comienzo de la Tabla 1.12. Tras cada


iteración xB = B −1 b y z = cB B −1 b, ası́ que

1 cB B −1 cB B −1 b
      
z 0
= = .
xB 0 B −1 b B −1 b

Por tanto,
 si premultiplicamos el conjunto de ecuaciones (1.18) por la misma
−1

1 cB B
matriz , obtenemos para cada iteración
0 B −1
 
 −1 −1
 z  −1

1 cB B A − c cB B x= c B B b
.
0 B −1 A B −1 B −1 b
xh
40 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Tabla 1.12: Tabla sı́mplex en forma matricial

Iteración xB Ec. num. z x xh rhs


0 z (0) 1 −c 0 0
xB (1) − (m) 0 A I b
−1 −1 −1
i z (0) 1 cB B A − c cB B cB B b
−1 −
xB (1) − (m) 0 B A B 1 B −1 b

Hay dos implicaciones reseñables que se deducen de la forma matricial. La


primera es que dados los parametros originales A, b, cB , solo se necesita calcular
B −1 para obtener todos los números necesarios. La segunda es que no hace
falta obtener todos los números, sino tan solo los necesarios.

Definición 1.3. Dados dos puntos x′ , x′′ ∈ IRn , se denomina segmento lin-
eal de x′ a x′′ al conjunto de puntos {λx′ + (1 − λ)x′′ : λ ∈ (0, 1)}. Los
puntos del segmento se dice que son combinación lineal convexa de x′ y x′′ .

Definición 1.4. Un conjunto S ⊆ IRn se dice conjunto convexo si para todo


par de puntos del conjunto, el segmento que los une está totalmente contenido
en el conjunto; es decir,

∀x′ , x′′ ∈ S, λx′ + (1 − λ)x′′ ∈ S, ∀λ ∈ (0, 1).

Es decir, si para todo par de puntos, el segmento rectilı́neo que une dichos
puntos está dentro de la región.
1.3. EL MÉTODO SÍMPLEX 41

b b b b

b b

b b b b b b

región convexa región convexa región no convexa región no convexa

b b b b b b b b

(a) (b) (c) (d)

Figura 1.5: Convexidad de regiones

Definición 1.5. Un poliedro es un conjunto de puntos comunes a uno o más


semiespacios. Un poliedro siempre es convexo.

Definición 1.6. Un punto extremo de un conjunto convexo es un punto z


tal que si z = λx′ + (1 − λ)x′′ para un cierto λ ∈ (0, 1), entonces x′ = x′′ = z.
Es decir, no puede ponerse como combinación lineal convexa de ningún par de
puntos distintos del conjunto.

Definición 1.7. Dado un conjunto convexo cerrado S ⊆ IRn , un vector no nulo


d ∈ IRn se llama dirección si x+λd ∈ S, ∀λ ≥ 0, ∀x ∈ S. Dos direcciones d1
y d2 son direcciones distintas si d1 6= αd2 , ∀α ≥ 0. Una dirección d se dice
dirección extrema si no puede ponerse como combinación lineal positiva de
dos direcciones distintas, esto es, si existe λ1 , λ2 > 0 tal que d = λ1 d1 + λ2 d2 ,
entonces d1 = αd2 para algún α > 0.

Teorema 1.1. Sea S = {x ∈ IRn : Ax = b, x ≥ 0} donde A ∈ Mm×n es


una matriz de rango m y b ∈ IRm es un vector columna. Un punto x ∈ IRn
es un punto extremo de S si y sólo si A puede descomponerse,  tras reordenar
 −1 
 xB B b
sus columnas, en la forma A = BN cumpliendo que x = = ,
xN 0
donde B ∈ Mm×m es una matriz inversible tal que B −1 b ≥ 0.
42 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Demonstración.
⇐ Supongamos que A puede descomponerse, tras  reordenar
  −1sus colum-
 xB B b
nas, en la forma A = BN cumpliendo que x = = , donde
xN 0
B ∈ Mm×m es una matriz inversible tal que B −1 b ≥ 0. Obviamente, x ∈ S.
Supongamos que existen x′ , x′′ ∈ S, λ ∈ (0, 1) tales que x = λx′ + (1 − λ)x′′ , si
expresamos los puntos x′ , x′′ en función de la factorización anterior, tenemos
 −1   ′   ′′   ′
λxB + (1 − λ)x′′B
  
B b xB xB xB
=x= = λ ′ + (1 − λ) ′′ = .
0 xN xN xN λx′N + (1 − λ)x′′N

Como x′N , x′′N ≥ 0 y λ, (1 − λ) > 0, entonces x′N = x′′N = 0 y esto implica que
x′B = x′′B = B −1 b ya que b = Ax′ = A(x′B , x′N )t = Bx′B + Nx′N = Bx′B + 0 =
Bx′B y análogamente para x′′ . Ası́, x = x′ = x′′ , por lo que x es un punto
extremo de S.
⇒ Supongamos que x es un punto extremo de S. Sin pérdida de gener-
alidad, supongamos que x = (x1 , x2 , . . . , xk , 0, . . . , 0) con x1 , . . . , xk > 0. De-
mostraremos que las columnas correspondientes A1 , . . . Ak de A son linealmente
independientes. Por reducción al absurdo, supongamos que Pno es ası́, entonces
k
existirı́an λ1 , . . . , λk escalares no todos nulos tales que j=1 λj Aj = 0, sea
∆ = (λ1 , . . . , λk , 0, . . . , 0). Construimos los siguientes dos vectores x′ = x+α∆
y x′′ = x − α∆, donde α > 0 se elige de manera que x′ , x′′ ≥ 0. Entonces,
k
X k
X k
X
Ax′ = (xj + αλj )Aj = xj Aj + α λj Aj = b
j=1 j=1 j=1

y
k
X k
X k
X
Ax′′ = (xj − αλj )Aj = xj Aj − α λj Aj = b
j=1 j=1 j=1

Resumiendo, x′ , x′′ ∈ S, x′ 6= x′′ ya que α > 0 y además x = 21 x′ + 21 x′′ y esto


contradice el hecho de que x es un punto extremo. Por lo que A1 , . . . , Ak son
linealmente independientes y pueden elegirse m − k columnas del resto de n − k
columnas que sean linealmente independientes con estas k columnas, ya que el
rango de A es m. Supongamos que estas son Ak+1 , . . . , Am  , podemos escribir
A = B N donde B = A1 . . . Ak Ak+1 . . . Am , además B −1 b =
−1
(x1 , x2 , . . . , xk , 0, . . . , 0)t ≥ 0, entonces B
 b ≥ 0 y la demostración−1del teorema
está completa. En efecto, Ax = B N x = BxB + NxN = b, B b = xB .

Corolario. El número de puntos extremos de S es finito.


1.3. EL MÉTODO SÍMPLEX 43

Teorema 1.2. Sea S = {x ∈ IRn : Ax = b, x ≥ 0} no vacı́o y A ∈ Mm×n es


una matriz de rango m y b ∈ IRm es un vector columna, entonces S tiene al
menos un punto extremo.
Teorema 1.3. Sea S = {x ∈ IRn : Ax = b, x ≥ 0} y A ∈ Mm×n es una
matriz de rango m y b ∈ IRm es un vector columna. Un vector d es una
dirección extrema de S si y solo si A puede descomponerse en B N tal que
B −1 Aj ≤ 0 para alguna
 columna Aj de la matriz N y d es un múltiplo positivo
−1
de d = −B Aj ej , ej es un n − m vector de ceros excepto en la posición
j donde tiene un 1.
Corolario. El número de direcciones extremas de S es finito.
El siguiente resultado permite representar cualquier punto de un poliedro
como sumas de puntos y direcciones extremas.
Teorema 1.4. Teorema de representación
Sea S = {x ∈ IRn : Ax = b, x ≥ 0} un poliedro no vacı́o y A ∈ Mm×n es
una matriz de rango m y b ∈ IRm es un vector columna. Sean x1 , x2 , . . . , xk ∈
IRn los puntos extremos de S y d1 , d2 , . . . , dl las direcciones extremas de S.
Entonces x ∈ S si y solo si
k
X l
X
j
x= λj x + µj dj
j=1 k=1
Pk
donde j=1 λj = 1, λj ≥ 0, j = 1, . . . , k y µj ≥ 0, j = 1, . . . , l.
Corolario. Sea S = {x ∈ IRn : Ax = b, x ≥ 0} un poliedro no vacı́o
y A ∈ Mm×n es una matriz de rango m y b ∈ IRm es un vector columna.
Entonces S tiene al menos una dirección extrema si y solo si es no acotado.
Teorema 1.5. Condiciones de optimalidad en Programación Lineal
Sea el problema de PL
max z = cx
s.a Ax = b
x≥0
cuya región factible es no vacı́a, donde x1 , x2 , . . . , xk ∈ IRn son los puntos
extremos de la región factible S = {x ∈ IRn : Ax = b, x ≥ 0}, y d1 , d2 , . . . , dl
las direcciones extremas de S. Una condición necesaria y suficiente para que
exista una solución óptima finita del problema es que
cdj ≤ 0, j = 1, . . . , l
En este caso existe un punto extremo que es solución óptima del problema.
44 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Demonstración. Por el Teorema de representación, Teorema 1.4, Ax = b y


x ≥ 0 es equivalente a que x se puede escribir como
k
X l
X
j
x= λj x + µj dj
j=1 k=1

donde kj=1 λj = 1, λj ≥ 0, j = 1, . . . , k y µj ≥ 0, j = 1, . . . , l. Por tanto el


P
problema de PL puede ponerse como

z = c( kj=1 λj xj + lk=1 µj dj )
P P
max
Pk
s.a j=1 λj = 1
λj , µ j ≥ 0

⇐ Si existe algún j tal que cdj > 0, entonces µj puede elegirse arbitraria-
mente grande, proporcionando una solución no acotada. Esto demuestra que
una condición necesaria y suficiente para que haya solución óptima finita es
cdj ≤ 0, ∀j = 1, . . . , l.
⇒ Supongamos que cdj ≤ 0, ∀k = 1, . . . , l, como queremos maximizar la
función objetivo, elegimos µj = 0, ∀j, con lo que el problema se reduce a

z = c( kj=1 λj xj )
P
max
Pk
s.a j=1 λj = 1
λj ≥ 0
Está claro que la solución óptima de este problema es finita y se encuentra
haciendo λi = 1, λj = 0, ∀j 6= i, donde el ı́ndice i viene dado por cxi =
max1≤j≤k cxj . Obsérvese que la solución del problema se alcanza en el punto
extremo i-ésimo, con lo que queda demostrado el teorema.

A continuación revisitaremos los pasos del Algoritmo Sı́mplex, cuyo re-


sumen puede observarse en el esquema de la Figura 1.6.
Paso inicial
Analicemos si la SBF de cualquier iteración es o no óptima.
Sea x∗ un punto extremo y por tanto SBF, se puede escribir como
 ∗   −1 
∗ xB B b
x = =
x∗N 0

con B −1 b ≥ 0 y A = B N . El valor de la función objetivo es cx∗ =
cB x∗B + cN x∗N = cB x∗B = cB B −1 b.
1.3. EL MÉTODO SÍMPLEX 45

Consideremos que las variables correspondientes a la base son x1 , x2 , . . . , xm


y las variables no básica son xm+1 , xm+2 , . . . , xm+n .  
xB
Sea x un punto factible cualquiera, x puede factorizarse como x =
xN
y se pueden realizar las siguientes operaciones. Como Ax = BxB + NxN = b,
entonces xB = B −1 b − B −1 NxN . El valor de la función objetivo en el punto x
puede expresarse como cx = cB xB + cN xN = cB (B −1 b − B −1 NxN ) + cN xN =
cB B −1 b + (cN − cB B −1 N)xN . Pero B −1 b = x∗B , luego cx = cB x∗B + (cN −
cB B −1 N)xN , además cx∗ = cB x∗B + cN x∗N = cB x∗B . Ası́,

m+n
X
cx = cx∗ + (cN − cB B −1 N)xN = cx∗ + (cj − cB B −1 Aj )xj
j=m+1

Pueden ocurrir dos situaciones:


1. Como xN ≥ 0 para cualquier P solución factible, si cj −cB B −1 Aj ≤ 0, ∀j =
m + 1, . . . , m + n, entonces m+n
j=m+1 (cj − cB B
−1
Aj )xj ≤ 0 y por tanto
∗ ∗
cx ≤ cx , ∀x factible, por lo que x es la solución óptima del problema.

2. Si por el contrario, existe j tal que cj −cB B −1 Aj > 0, entonces si tomamos


una solución en la que xj > 0 toma valor y el resto se quedan como están,
entonces,
m+n
X
cx = cx∗ + (cN − cB B −1 N)xN = cx∗ + (cj − cB B −1 Aj )xj > cx∗
j=m+1

y por tanto, la solución x mejorará a la solución x∗ .


Paso iterativo: fase 1
Si hemos llegado a este paso, es porque existe al menos una variable xj
tal que cj − cB B −1 Aj > 0. Sean j1 , j2 , . . . , jr los ı́ndices de las variables que
satisfacen dicha desigualdad. Sabemos que
m+n
X
∗ −1 ∗
cx = cx + (cN − cB B N)xN = cx + (cj − cB B −1 Aj )xj
j=m+1

Como vamos a pasar una SBF adyacente, consideraremos todas las vari-
ables básicas de x∗ excepto una. Como ya hemos comentado, entrará en la
nueva base aquella variable que mejore en mayor cantidad el valor de la función
objetivo, es decir,
46 CAPÍTULO 1. PROGRAMACIÓN LINEAL

xe ∈ {xj1 , . . . , xjr } : ce − cB B −1 Ae = maxj1,...,jr {cj − cB B −1 Aj }

ya que por cada unidad de xj la función objetivo aumentará en cj − cB B −1 Aj .


Esta regla es heurı́stica.
Paso iterativo: fase 2
Supongamos que e ∈ {j1 , . . . , jr } es el ı́ndice de la variable no básica que
entra en la nueva base.Construimos un nuevo punto de la forma x = x∗ + λde ,
−B −1 Ae

donde de = y ee es un vector nulo de dimensión n − m, excepto
ee
en la posición e que tiene un
 1.
 −B −1 Ae

Como Ade = B N = −BB −1 Ae + Ae = 0 y por tanto,
ee
Ax = A(x∗ + λde ) = Ax∗ + λAde = b, ∀λ. En conclusión, cualquier punto x de
la forma x = x∗ + λde verifica Ax = b, y para que sea factible, deberá verificar
además x ≥ 0, es decir,
−B −1 Ae
  ∗
−B −1 Ae
  
∗ ∗ xB
x = x + λde = x + λ = +λ ≥ 0.
ee 0 ee

Si λ > 0, entonces la coordenada correspondiente a xe es mayor que cero.


Pueden ocurrir dos situaciones:

1. Si B −1 Ae ≤ 0 para todas sus coordenadas, entonces −B −1 Ae ≥ 0 y


λ(−B −1 Ae ) ≥ 0, ∀λ ≥ 0, por lo que x es factible para cualquier λ.

2. Si por el contrario, existe alguna coordenada tal que B −1 Ae > 0, la


situación no es tan sencilla y habrá que elegir λ tal que
 −1
(B b)1 − λ(B −1 A)1e

..
.
 
 
 −1
(B b)m − λ(B −1 A)me 

0
 −1   
B b + λ(−B −1 Ae )  
x= = .
..
 ≥ 0.
λee 




 λ 

 .. 
 . 
0

Por hipótesis, existe al menos un i tal que (B −1 A)ie > 0. Para satisfacer
x ≥ 0 bastará con que (B −1 b)i −λ(B −1 A)ie ≥ 0 para aquellos i en los que
1.3. EL MÉTODO SÍMPLEX 47
−1
(B b)i
(B −1 A)ie > 0, es decir, que para estos i se cumpla λ ≤ (B −1 A)
ie
Obsérvese
−1 −1 −1
que si (B A)ie ≤ 0, siempre se tiene (B b)1 − λ(B A)1e ≥ 0. Por lo
que se debe cumplir,

(B −1 b)i
λ≤ −1
, ∀i : (B −1 A)ie > 0
(B A)ie

Si tomamos λ como el mı́nimo de dichos cocientes, se tiene la condición,


ası́
(B −1 b)s (B −1 b)i
λ= −1
= min1≤i≤m { −1 : (B −1 A)ie > 0}
(B A)se (B A)ie

Ası́, (B −1 b)s − λ(B −1 A)se = 0 y x tiene las variables que tenı́a x∗ menos
xs que pasa a tomar valor 0 y en su lugar aparece la variable xe que toma
(B −1 b)s
valor λ, el resto de variables toma valor (B −1 b)i − (B −1 A) (B
se
−1
A)ie . Y
hemos construido una SBF adyacente a la anterior en la que xe toma
valor como deséabamos.

Ası́ el nuevo punto x =  x∗ + λde aporta a la función objetivo el valor


−1 −1
  
∗ ∗ −B Ae ∗
 −B Ae
cx = cx + cλde = cx + λc = cx + λ cB cN =
ee ee
cx∗ + λ(−cB B −1 Ae + ce ) donde recordemos que λ = xe . ¿Cuál es el valor de
la función objetivo en cada una de las dos posibles situaciones?

1. Si B −1 Ae ≤ 0 para todas sus coordenadas, independientemente del valor


λ la solución es factible, por lo que ce − cB B −1 Ae > 0 y cx = cx∗ +
λ(−cB B −1 Ae + ce ) −→ ∞ cuando 0 < λ −→ ∞, yel problema tiene
−B −1 Ae
solución no acotada. En este caso, de = es una dirección
ee
extrema cumpliendo que cde = ce − cB B −1 Ae > 0, luego estamos en las
condiciones del Teorema 1.5 de condiciones de optimalidad en PL que
nos permite concluir nuevamente que estamos ante solución no acotada.

2. Si por el contrario, existe alguna coordenada tal que B −1 Ae > 0. En


este caso, el valor de la nueva SBF habrá mejorado en |cx∗ − cx| =
λ|ce − cB B −1 Ae | y como xe = λ la función objetivo habrá mejorado en
|ce − cB B −1 Ae | unidades por cada unidad de xe .
48 CAPÍTULO 1. PROGRAMACIÓN LINEAL

Paso inicial
búsqueda de SBF inicial

Test de optimalidad sı́ Parar


∀j, cj − cB B −1 Aj ≤ 0? óptimo

no

Paso iterativo: fase 1


xe ∈ xN : max {cj − cB B −1 Aj }
cj −cB B
−1 Aj >0

sı́ Parar
(B −1 A)e < 0?
inacotado

no

Paso iterativo: fase 2


(B −1 b)i
xs ∈ xB : min { }
(B −1 A)ie >0 (B −1 A)ie

Paso iterativo: fase 3


Pivotaje para nueva SBF

Figura 1.6: Esquema del algoritmo Sı́mplex


.

1.4 Teorı́a de dualidad y análisis de sensibili-


dad
Uno de los descubrimientos más importantes durante el desarrollo inicial de
la programación lineal fue el concepto de dualidad y sus importantes ramifi-
caciones. Este descubrimiento reveló que, asociado a todo problema de pro-
gramación lineal, existe otro problema lineal llamado dual. Desde distintos
puntos de vista las relaciones entre el problema dual y el original (llamado
1.4. TEORÍA DE DUALIDAD Y ANÁLISIS DE SENSIBILIDAD 49

primal) son muy útiles. Por ejemplo, se verá que, en realidad, la solución
óptima del problema dual es la que proporciona los precios sombra que se
describieron en la Sección 1.3.2. Una de las aplicaciones más importantes de
esta teorı́a es la interpretación y realización del análisis de sensibilidad. Es
una parte esencial de casi todos los estudios de programación lineal, debido a
que la mayorı́a de los valores de los parámetros que se emplean en el modelo
original son sólo estimaciones de las condiciones futuras, es necesario investigar
el efecto que tendrı́an sobre la solución óptima en caso de que prevalecieran
otras condiciones. Aún más, ciertos valores de estos parámetros (como la can-
tidad de recursos) pueden representar decisiones administrativas, en cuyo caso
su elección debe ser el aspecto principal de la investigación, el cual se puede
estudiar a través del análisis de sensibilidad.
Dada nuestra forma estándar para el problema primal, que se presenta a
la izquierda (quizá después de hacer conversiones cuando provienen de otras
formas), su problema dual tiene la forma que se muestra a la derecha.
max z = cx min w = yb
s.a Ax ≤ b (1.19) s.a yA ≥ c (1.20)
x≥0 y≥0
En general, la correspondencia entre ambos modelos viene dada en la Tabla
1.13.

Tabla 1.13: Correspondencia primal-dual

Función objetivo P max z min w


Restricciones P aij xj ≤ bi yi ≥ 0
P aij xj = bi yi ∈ IR
aij xj ≥ bi P yi ≤ 0
Variables xj ≥ 0 P aij yi ≥ cj
xj ∈ IR P aij yi = cj
xj ≤ 0 aij yi ≤ cj

1.4.1 Propiedades de la Teorı́a de Dualidad


A continuación se presenta un resumen de las importantes relaciones entre los
problemas primal y dual.

1. Propiedad de dualidad débil: Si x es una solución factible para el prob-


50 CAPÍTULO 1. PROGRAMACIÓN LINEAL

lema primal y y es una solución factible para el problema dual, entonces

cx ≤ yb.

2. Propiedad de dualidad fuerte: Si x∗ es una solución óptima para el prob-


lema primal y y ∗ es una solución óptima para el problema dual, entonces

cx∗ = y ∗ b.

3. Propiedad de soluciones complementarias: En cada iteración, el método


sı́mplex identifica de manera simultánea una solución FEV, x, para el
problema primal y una solución complementaria, y, para el problema
dual (que se encuentra en la fila (0), como los coeficientes de las variables
de holgura), donde
cx = yb.
Si x no es óptima para el problema primal, entonces y no es factible para
el problema dual.

4. Propiedad de soluciones complementarias óptimas: Al final de cada it-


eración, el método sı́mplex identifica de manera simultánea una solución
óptima x∗ para el problema primal y una solución óptima complemen-
taria y ∗ para el problema dual (que se encuentra en la fila (0) como los
coeficientes de las variables de holgura), donde

cx∗ = y ∗ b.

Los valores de yi∗ son los precios sombra para el problema primal.

5. Propiedad de simetrı́a: En el caso de cualquier problema primal y su


problema dual, las relaciones entre ellos deben ser simétricas debido a
que el dual de este problema dual es este problema primal.

En consecuencia, todas las propiedades anteriores se cumplen sin que im-


porte a cuál de los dos problemas se le llame problema primal. (La dirección
de la desigualdad de la propiedad de dualidad débil requiere que el problema
primal se exprese o reexprese en la forma de maximización y el problema dual
en la forma de minimización.) Por tanto, el método sı́mplex se puede aplicar a
cualquiera de los dos problemas e identificará al mismo tiempo las soluciones
complementarias (y en última instancia una solución complementaria óptima)
para el otro problema.
1.4. TEORÍA DE DUALIDAD Y ANÁLISIS DE SENSIBILIDAD 51

Hasta este punto se han estudiado las relaciones entre las soluciones factibles
u óptimas para el problema primal y las soluciones correspondientes para el
problema dual. Sin embargo, es posible que el problema primal (o el dual)
no tenga soluciones factibles o bien tenga soluciones factibles pero no una
solución óptima (debido a que la función objetivo no esté acotada). La última
propiedad resume las relaciones primal-dual de todas estas posibilidades.

Teorema 1.6. Teorema de la dualidad


Las siguientes son las únicas relaciones posibles entre los problemas primal
y dual.

1. Si un problema tiene soluciones factibles y una función objetivo acotada


(y, por ende, una solución óptima), entonces ocurre lo mismo con el otro
problema, de manera que se aplican tanto la propiedad de dualidad débil
como la fuerte.

2. Si uno de los problemas tiene soluciones factibles y una función objetivo


no acotada (es decir, no tiene solución óptima), entonces el otro problema
no tiene soluciones factibles.

3. Si un problema no tiene soluciones factibles, entonces el otro problema


no tiene soluciones factibles o bien la función objetivo es no acotada.

1.4.2 Interpretación económica


Recordemos la expresión del problema primal en notación extendida dada en
1.21:

maximizar z = nj=1 cj xj
P
Pn
sujeto a j=1 aij xj ≤ bi , i = 1, 2, . . . , m
(1.21)
xj ≥ 0, j = 1, 2, . . . , n
La interpretación económica de los coeficientes, es como en el Ejemplo 1.3:

xj : Nivel de la actividad j

cj : Ganancia unitaria debida a la actividad j

z: Ganancia total debida a todas las actividades

bi : Cantidad disponible del recurso i


52 CAPÍTULO 1. PROGRAMACIÓN LINEAL

aij : Cantidad del recurso i consumida por cada unidad de la actividad j

El primal tiene su correspondiente problema dual en 1.22:

minimizar w = m
P
i=1 bi yi
Pm
sujeto a i=1 aij yi ≥ cj , j = 1, 2, . . . , n
(1.22)
yi ≥ 0, i = 1, 2, . . . , m

La interpretación económica es la siguiente:

yi : contribución a la ganancia por unidad del recurso i (precio sombra)

bi yi : contribución a la ganancia por disponer de bi unidades del recurso i


P
aij yi : contribución a la utilidad de esa mezcla de recursos que se con-
sumirı́an si se usara 1 unidad de la actividad (producir 1 lote del producto
j por semana)
P
aij yi ≥ cj : la contribución actual a la utilidad de la mezcla anterior de re-
cursos debe ser, por lo menos, tan grande como si 1 unidad de la actividad
j la utilizara; de otra manera no se llevarı́a a cabo la mejor utilización
de estos recursos

yi ≥ 0: la contribución a la utilidad por parte del recurso i debe ser no nega-


tiva, pues de lo contrario serı́a mejor no utilizar este recurso.

min w: minimización del valor total implı́cito de los recursos consumidos por
las actividades.

La asociación entre las variables de los problemas primal y dual viene dada
en la Tabla 1.14:

Tabla 1.14: Correspondencia variables primal-dual


Variables primales Variables duales
De decisión x1 , . . . , xn De superavit z1 − c1 , . . . , zn − cn
De holgura xn+1 , . . . , xn+m De decisión y1 , . . . , ym
1.4. TEORÍA DE DUALIDAD Y ANÁLISIS DE SENSIBILIDAD 53

1.4.3 Análisis de sensibilidad


El análisis de sensibilidad consiste, en esencia, en la investigación del efecto
que tiene sobre la solución óptima el hecho de hacer cambios en los valores de
los parámetros del modelo aij , bi y cj . Sin embargo, al cambiar los valores de
los parámetros en el problema primal se cambian también los valores corre-
spondientes en el problema dual. Por tanto, se puede elegir qué problema se
va a usar para investigar cada cambio.
Por ejemplo, suponga que los cambios que se hacen en el modelo original
ocurren en los coeficientes de una variable que era no básica en la solución
óptima original. ¿Cuál es el efecto de estos cambios sobre esta solución? ¿To-
davı́a es factible? ¿Todavı́a es óptima? Como la variable en cuestión es no
básica (su valor es cero), el cambio en sus coeficientes no puede afectar la
factibilidad de la solución, por lo cual, la pregunta que queda abierta en este
caso es si todavı́a es óptima. Una pregunta equivalente es si la solución básica
complementaria para el problema dual todavı́a es factible después de hacer
estos cambios. Dado que los cambios afectan al problema dual nada más en
una restricción, la pregunta se puede responder de manera sencilla al verificar
si esta solución básica complementaria satisface la restricción revisada.
Las variables de decisión del modelo suelen representar los niveles de las
distintas actividades en consideración. En algunas situaciones, se seleccionan
algunas de ellas de entre un grupo grande de actividades posibles en el que
las restantes no fueron elegidas debido a que parecı́an ser menos atractivas. O
quizás estas otras actividades no fueron visibles sino hasta después de formular
y resolver el modelo original. De cualquier manera, la pregunta en este caso es
si se justifica la inclusión de alguna de estas actividades no consideradas con
anterioridad. En otras palabras, ¿cambiará la solución óptima original si se
agrega cualquiera de estas actividades? La inclusión de otra actividad equivale
a introducir en el modelo una nueva variable, con los coeficientes apropiados
en las restricciones funcionales y en la función objetivo. El único cambio
que resulta en el problema dual es la introducción de una nueva restricción.
Una vez hechos estos cambios, ¿la solución óptima original, junto con la nueva
variable igual a cero (no básica), será todavı́a óptima para el problema primal?
Igual que en el caso anterior, una pregunta equivalente es si la solución básica
complementaria todavı́a es factible para el problema dual, e igual que antes,
esta pregunta se puede contestar con sólo verifi car si esta solución básica
complementaria satisface una restricción, que en este caso se trata de la nueva
restricción del problema dual.
El trabajo del equipo de investigación de operaciones apenas comienza una
54 CAPÍTULO 1. PROGRAMACIÓN LINEAL

vez que se aplica con éxito el método sı́mplex para identificar una solución
óptima para el modelo. Un supuesto de programación lineal es que todos
los parámetros del modelo son constantes conocidas. En realidad, los valores
de los parámetros que se usan en el modelo casi siempre son sólo estimaciones
basadas en una predicción de las condiciones futuras. Con frecuencia, los datos
que se obtienen para desarrollar estas estimaciones son bastante burdos o no
existen, ası́ que los parámetros de la formulación original pueden representar
tan sólo la opinión proporcionada por el personal correspondiente. Los datos
pueden incluso representar estimaciones optimistas o pesimistas que protegen
los intereses de los estimadores.
En consecuencia, un administrador razonable y el personal de investigación
de operaciones deben mantener cierto escepticismo saludable respecto de los
números originales que les proporciona el ordenador y, en muchos casos, los
tomarán nada más como un punto de partida para el análisis posterior del
problema. Una solución óptima lo es sólo en lo que se refiere al modelo es-
pecı́fico que se usa para representar el problema real, y esa solución no se
convierte en una guı́a confiable para la acción hasta verificar que su compor-
tamiento es bueno también para otras representaciones razonables del prob-
lema. Aún más, algunas veces los parámetros del modelo (en particular las bi )
se establecen como resultado de decisiones basadas en polı́ticas administrati-
vas (por ejemplo, la cantidad de ciertos recursos que se ponen a disposición
de las actividades), y estas decisiones deben revisarse después de detectar sus
consecuencias potenciales.
Por estas razones es importante llevar a cabo un análisis de sensibilidad,
para investigar el efecto que tendrı́a sobre la solución óptima que proporciona
el método sı́mplex el hecho de que los parámetros tomen otros valores posi-
bles. En general, habrá algunos parámetros a los que se les pueda asignar
cualquier valor razonable sin que afecten la optimalidad de esta solución. Sin
embargo, también habrá parámetros con valores probables que lleven a una
nueva solución óptima. Esta situación es seria, en particular si la solución
original adquiere valores muy inferiores en la función objetivo, o tal vez no
factibles.
Por tanto, un objetivo fundamental del análisis de sensibilidad es identificar
los parámetros sensibles (es decir, los parámetros cuyos valores no pueden
cambiar sin que cambie la solución óptima). Para coeficientes de la función
objetivo que no están clasificados como sensibles, también puede resultar de
gran utilidad determinar el intervalo de valores del parámetro para el que la
solución óptima no cambia. (Este intervalo de valores se conoce como inter-
valo permisible para ese coeficiente.) En algunos casos, el cambio del valor
1.4. TEORÍA DE DUALIDAD Y ANÁLISIS DE SENSIBILIDAD 55

de un parámetro en la columna del lado derecho dentro de una restricción


funcional puede afectar la factibilidad de la solución BF óptima. Para mane-
jar tales parámetros, es útil determinar el intervalo de valores para el que la
SBF óptima (con los valores ajustados de las variables básicas) seguirá siendo
factible. (Este intervalorecibe el nombre de intervalo permisible por el
lado derecho involucrado.) Este rango de valores es también el rango den-
tro del cual el precio sombra actual de la restricción correspondiente permanece
válido.
Tal información es de gran valor en dos sentidos. Primero, identifica los
parámetros más importantes, por lo que se debe tener un cuidado especial
para hacer estimaciones cercanas y seleccionar una solución que tenga un buen
desempeño para la mayorı́a de los valores posibles. Segundo, identifica los
parámetros que será necesario controlar muy de cerca cuando el estudio se
implante. Si se descubre que el valor real de un parámetro está fuera de su
intervalo de valores permisibles, ésta es una señal incontrastable de que es
necesario cambiar la solución.
Para problemas pequeños, la verificación del efecto de una variedad de
cambios en los valores de los parámetros es directa con sólo aplicar de nuevo
el método sı́mplex para ver si cambia la solución óptima.
Sin embargo, en problemas más grandes como los que se encuentran en
la práctica, el análisis de sensibilidad requerirı́a de un esfuerzo computacional
exorbitante si fuera necesario volver a aplicar el método sı́mplex desde el prin-
cipio para investigar cada cambio en el valor de un parámetro. Por fortuna, se
pueden analizar los cambios esenciales en la tabla sı́mplex para analizar cómo
los cambios en el modelo original alterarı́an los números de la tabla sı́mplex
final. Por tanto, después de hacer unos cuantos cálculos para actualizar esta
tabla sı́mplex, se puede verificar si la SBF óptima original ahora es no óptima
(o no factible). Si es ası́, esta solución se usará como solución básica inicial
para comenzar de nuevo el sı́mplex (o el sı́mplex dual) y encontrar una nueva
solución óptima, si se desea. Si los cambios en el modelo no son muy grandes,
sólo se requerirán unas cuantas iteraciones para obtener la nueva solución
óptima a partir de esta solución básica inicial avanzada.
Resumen del procedimiento para análisis de sensibilidad:

1. Revisión del modelo: se hacen los cambios deseados en el modelo que se


va a investigar.

2. Revisión de la tabla sı́mplex final: Se emplea la idea fundamental para


determinar los cambios que resultan en la tabla sı́mplex final.
56 CAPÍTULO 1. PROGRAMACIÓN LINEAL

3. Conversión a la forma apropiada de eliminación de Gauss: Se convierte


esta tabla en la forma apropiada para identificar y evaluar la solución
básica actual, para lo cual se aplica (según sea necesario) eliminación de
Gauss.

4. Prueba de factibilidad: Se prueba la factibilidad de esta solución medi-


ante la verificación de que todas las variables básicas de la columna del
lado derecho aún tengan valores no negativos.

5. Prueba de optimalidad: Se verifica si esta solución es óptima (factible),


mediante la comprobación de que todos los coeficientes de las variables
no básicas de la fila 0 continúen no negativos.

6. Reoptimización: Si esta solución no pasa una de las pruebas, se puede


obtener (si se desea) la nueva solución óptima a partir de la tabla actual
como tabla sı́mplex inicial (con las conversiones necesarias) por el método
sı́mplex o el sı́mplex dual.

Posibles casos a considerar:

• Cambios en las bi

• Cambios en los coeficientes de una variable no básica

• Introducción de una nueva variable

• Cambios en los coeficientes de una variable básica

• Introducción de una nueva restricción


Capı́tulo 2

Programación No Lineal

2.1 Introducción a la Programación No Lineal


Como respuesta a dos de las crı́ticas más frecuentes de la PL, a saber, la re-
strictividad de la hipótesis de linealidad y la dificultad de definir una única
función objetivo, surge la Programación no lineal (PNL) y la Teorı́a de la
Decisión Multicriterio (que no abordaremos en este capı́tulo). Efectivamente,
un supuesto importante en PL es que todas sus funciones (objetivo y restric-
ciones) son lineales. Aunque, en esencia, este supuesto se cumple en el caso de
muchos problemas prácticos, con frecuencia no es ası́. Por lo que es necesario
abordarlo desde la Programación No Lineal (PNL).
De manera general, un problema de PNL consiste en encontrar x = (x1 , x2 , . . . , xn )
tal que

max f (x)
s.a gi (x) ≤ bi , ∀i = 1, 2, . . . , m
x≥0

donde f (x) y gi (x) son funciones dadas de n variables de decisión1 .

1
Análogamente, puede tratarse de un problema de minimización

min f (x)
s.a gi (x) ≥ bi , ∀i = 1, 2, . . . , m
x≥0

57
58 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

En notación extendida:

max f (x1 , x2 , . . . , xn )
s.a g1 (x1 , x2 , . . . , xn ) ≤ b1
g2 (x1 , x2 , . . . , xn ) ≤ b2
..
.
gm (x1 , x2 , . . . , xn ) ≤ bm
xj ≥ 0, ∀j = 1, 2, . . . , n

Existen muchos tipos de problemas de PNL, en función de las caracterı́siticas


de estas funciones, por lo que se emplean varios algoritmos para resolver los
distintos tipos. Para ciertos casos donde las funciones tienen formas sencillas,
los problemas pueden resolverse de manera relativamente eficiente. En algunos
otros casos, incluso la solución de pequeños problemas representa un verdadero
reto.
Cuando un problema de PNL tiene sólo una o dos variables, se puede rep-
resentar en forma gráfica. Si las funciones no son lineales, dibujaremos curvas
en lugar de rectas, por lo que función objetivo y región factible dejarán de
tener el aspecto que adquieren en la PL. La solución no tiene porqué estar
en un vértice de la región factible, ni siquiera tiene porqué encontrarse en la
frontera de esta. Por lo que la desaparece ahora la gran simplificación que se
utiliza en PL, que permite limitar la búsqueda de solución óptima a las solu-
ciones en los vértices. Además en PNL un máximo local no es necesariamente
un máximo global y en general, los algoritmos de PNL no pueden distinguir
cuando se encuentra en un óptimo local o en uno global. Por tanto, es crucial
conocer las condiciones en las que se garantiza que un máximo local es un
máximo global en la región factible. Recuerde que en Análisis Matemático,
cuando se maximiza una función ordinaria (doblemente diferenciable) de una
sola variable f (x) sin restricciones, esta garantı́a está dada cuando

d2 f
∀x, ≤ 0,
dx2
es decir, cuando la función es cóncava hacia abajo, o simplemente cóncava.

Ejemplo 2.1. Formulación y resolución gráfica de un problema de PNL


Si se modifica ligeramente la función objetivo del Ejemplo 1.3, el problema
se convierte en uno de PNL. El problema dado en (2.1) se puede representar
gráficamente por la Figura 2.1 y su solución es el punto interior, (3, 3), de la
región factible.
2.1. INTRODUCCIÓN A LA PROGRAMACIÓN NO LINEAL 59

max 54x1 − 9x21 + 78x2 − 13x22


sujeto a x1 ≤4
2x2 ≤ 12 (2.1)
3x1 +2x2 ≤ 18
x1 ≥ 0, x2 ≥ 0

6b b

z = 198
3 b b

(3, 3)
2

0b b

0 1 2 3 4 5 6 7

Figura 2.1: Región factible del ejemplo 2.1

Si un problema de PNL no tiene restricciones, el hecho de que la función


objetivo sea cóncava garantiza que un máximo local es un máximo global. (De
igual manera, una función objetivo convexa asegura que un mı́nimo local es un
mı́nimo global.) Si existen restricciones, se necesita una condición más para dar
esta garantı́a, a saber, que la región factible sea un conjunto convexo. Por esta
razón, los conjuntos convexos tienen un papel fundamental en la programación
no lineal.
Recuérdese la Definición 1.4 de conjunto convexo, es simplemente un con-
junto de puntos tales que, para cada par de puntos de la colección, el segmento
de recta que los une está totalmente contenido en ella. Ası́, la región factible
en el problema original de la Wyndor Glass Co. (vea la Figura 2.1) es un
conjunto convexo. En realidad, la región factible de cualquier otro problema
de PL es un conjunto convexo. En general, la región factible de un problema
de PNL es un conjunto convexo siempre que todas las funciones gi (x) sean
convexas. Para garantizar que un máximo local sea un máximo global en un
problema de PNL con restricciones g1 (x) ≤ b1 , g2 (x) ≤ b2 , . . . , gm (x) ≤ bm y
x ≥ 0, la función objetivo f (x) debe ser cóncava y cada gi (x) debe ser convexa.
Un problema de este tipo se llama problema de programación convexa y es una
de las clases más importantes de la PNL.
60 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

Dada la importancia de las nociones de concavidad de funciones y regiones


en este capı́tulo, veamos un resumen de sus definiciones y propiedades.
Definición 2.1. Sea una función de una sola variable f (x) y consideremos
cada par de valores de x, x′ y x′′
• Se dice que es una función convexa (o cóncava hacia arriba) si se
cumple
f (λx′′ + (1 − λ)x′ ) ≤ λf (x′′ ) + (1 − λ)f (x′ ), ∀λ ∈ (0, 1).

• Se dice que es una función estrictamente convexa si se cumple


f (λx′′ + (1 − λ)x′ ) < λf (x′′ ) + (1 − λ)f (x′ ), ∀λ ∈ (0, 1).

• Se dice que es una función cóncava (o cóncava hacia abajo) si se


cumple
f (λx′′ + (1 − λ)x′ ) ≥ λf (x′′ ) + (1 − λ)f (x′ ), ∀λ ∈ (0, 1).

• Se dice que es una función estrictamente cóncava si se cumple


f (λx′′ + (1 − λ)x′ ) > λf (x′′ ) + (1 − λ)f (x′ ), ∀λ ∈ (0, 1).

Obsérvese que λx′′ + (1 − λ)x′ es el segmento que une los dos puntos x′
y x′′ , por lo que en una función cóncava hacia arriba (convexa) el segmento
queda por encima de la función, mientras que en una función cóncava hacia
abajo (cóncava) el segmento queda por debajo. Por ejemplo, f (x) = x2 es
convexa, f (x) = −x2 es cóncava, f (x) = x es simultáneamente cóncava y
convexa, f (x) = x3 no es ni cóncava ni convexa. En la Figura 2.2 observamos
gráficamente los diferentes casos de funciones según su concavidad.

convexa ni cóncava ni convexa

cóncava cóncava y convexa

(a) (b) (c) (d)

Figura 2.2: Convexidad de funciones


2.1. INTRODUCCIÓN A LA PROGRAMACIÓN NO LINEAL 61

Si f (x) tiene derivadas de segundo orden para todo x, la caracterización


de convexidad para funciones de una variable viene dada en la Tabla 2.1.

Tabla 2.1: Caracterización de convexidad para funciones de una variable

Convexa Estrictamente convexa Cóncava Estrictamente cóncava


d2 f
dx2
≥0 >0 ≤0 <0

Definición 2.2. Sea una función de varias variables f (x) = f (x1 , x2 , . . . , xn ) y


consideremos cada par de puntos de x, x′ = (x′1 , x′2 , . . . , x′n ) y x′′ = (x′′1 , x′′2 , . . . , x′′n ),
dado que los puntos sobre el segmento que une x′ y x′′ vienen dados por
λx′′ + (1 − λ)x′ = (λx′′1 + (1 − λ)x′1 , λx′′2 + (1 − λ)x′2 , . . . , λx′′n + (1 − λ)x′n )
las definiciones dadas en la Definición 2.1 siguen siendo válidas donde x, x′ , x′′
son vectores de n elementos.
Obsérvese que en una función cóncava hacia arriba (convexa) el segmento
queda por encima de la gráfica de la función, mientras que en una función
cóncava hacia abajo (cóncava) el segmento queda por debajo. Si f (x) tiene
derivadas parciales de segundo orden para todas sus variables xj , necesitamos
definir la matriz hessiana para expresar la caracterización de convexidad para
funciones de dos variables dada en la Tabla 2.2 y la genérica para n variables
en la Tabla 2.3.
Definición 2.3. Sea la función f : D ⊂ IRn → IR con derivadas parciales de
segundo orden en el punto x∗ ∈ D, entonces definimos
• el gradiente como el vector de derivadas parciales de primer orden
 
∗ ∂f ∂f ∂f
∇f (x ) = , ,...,
∂x1 ∂x2 ∂xn |x∗

• la matriz hessiana como


∂2f ∂2f ∂2f
 
∂x21 ∂x2 ∂x1
... ∂xn ∂x1
∂2f ∂2f ∂2f
...
 
2 ∗ ∂x1 ∂x2 ∂x22 ∂xn ∂x2
 
∇ f (x ) =  .. .. .. ..

. . . .
 
 
∂2f ∂2f ∂2f
∂x1 ∂xn ∂x2 ∂xn
... ∂x2n |x∗
62 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

• el determinante de orden k como el determinante que se obtiene de la


matriz hessiana al considerar las primeras k filas y k columnas, es decir,
 ∂2f ∂2f ∂2f 
∂x21 ∂x2 ∂x1
... ∂xk ∂x1
∂2f ∂2f ∂2f
...
 
∂x1 ∂x2 ∂x22 ∂xk ∂x2
 
Dk = det  .. .. .. ..

. . . .
 
 
∂2f ∂2f ∂2f
∂x1 ∂xk ∂x2 ∂xk
... ∂x2k |x∗

Tabla 2.2: Caracterización de convexidad para funciones de dos variables

Convexa Est. convexa Cóncava Est. cóncava


∂2f
D1 = ∂x21
≥0 >0 ≤0 <0
∂2f ∂2f 2
D2 = ∂x21 ∂x22
− ( ∂x∂ 1fx2 )2 ≥0 >0 ≥0 >0

Tabla 2.3: Caracterización de convexidad para funciones de varias variables

Convexa Est. convexa Cóncava Est. cóncava


D1 ≥0 >0 ≤0 <0
D2 ≥0 >0 ≥0 >0
D3 ≥0 >0 ≤0 <0
.. .. .. .. ..
. . . . .
(si n par)Dn ≥0 >0 ≥0 >0
(si n impar)Dn ≥0 >0 ≤0 <0

2.2 Tipos de problemas de PNL


Veamos las clases de problemas de PNL más importantes:

• Optimización no restringida: problema sin restricciones, es decir, el


problema se reduce a
maxf (x).
2.2. TIPOS DE PROBLEMAS DE PNL 63

Si f (x) es diferenciable, la condición necesaria para que x = x∗ sea


óptima es
∂f
|x=x∗ = 0, ∀j = 1, 2, . . . , n.
∂xj
La condición suficiente es que f (x) sea cóncava2 .

• Optimización restringida linealmente: si todas las funciones de re-


stricciones son lineales pero la función objetivo es no lineal. Se han
desarrollado extensiones del método sı́mplex. Un caso particular, con
m = 0 es aquel en que hay variables no negativas. Por ejemplo,

max f (x)
s.a xj ≥ 0

Entonces la condición necesaria cambiarı́a a :


( ∂f
| ∗ = 0, x∗j > 0
∂xj x=x
∂f
| ∗ ≤ 0, x∗j = 0
∂xj x=x

• Programación cuadrática: problema restringido linealmente con función


objetivo cuadrática (contiene cuadrados de variables o/y productos de
variables, como la del Ejemplo 2.1)

f (x1 , x2 ) = a1 x21 + a2 x22 + a3 x1 x2 + a4 x1 + a5 x2 .

Se han desarrollado muchos algoritmos para f (x) cóncava, esta formu-


lación surge de manera natural en muchas aplicaciones.

• Programación convexa: abarca una amplia clase de problemas, entre


los cuales, como casos especiales, se puede mencionar todos los tipos
anteriores cuando f (x) es una función cóncava que debe maximizarse.
Los supuestos son: (i) f (x) es cóncava y (ii) cada gi (x) es convexa.
Estos supuestos aseguran que un máximo local es global3 .
2
Si el problema es de minimización la confición suficiente es que f (x) sea convexa.
3
Si el problema es de minimización

min f (x)
s.a gi (x) ≤ bi

f (x) convexa y g1 (x), g2 (x), . . . , gm (x) convexas aseguran que un mı́nimo local es global.
64 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

• Programación separable: es un caso especial de programación con-


vexa, en donde el supuesto adicional es: todas las funciones f (x) y gi (x)
son separables. Una función separable es una función en la que cada
término incluye una sola variable, por lo que la función se puede separar
en una suma de funciones de variables individuales. Por ejemplo, si f (x)
es una función separable, se puede expresar como
n
X
f (x) = fj (xj )
j=1

donde cada fj (xj ) incluye sólo los términos con xj . Como en el Ejem-
plo 2.1, f (x1 , x2 ) = 54x1 − 9x21 + 78x2 − 13x22 es una función separable
porque puede ser expresada como f (x1 , x2 ) = f1 (x1 ) + f2 (x2 ) donde
f1 (x1 ) = 54x1 − 9x21 y f2 (x2 ) = 78x2 − 13x22 son cada una funciones de
una sola variable. Es importante distinguir estos problemas de otros de
programación convexa, pues cualquier problema de programación sepa-
rable se puede aproximar muy de cerca mediante uno de programación
lineal y, entonces, se puede aplicar el eficiente método sı́mplex.

• Programación no convexa: incluye todos los problemas de PNL que


no satisfacen los supuestos de programación convexa. En este caso, aun
cuando se tenga éxito en encontrar un máximo local, no hay garantı́a
de que sea también un máximo global. Por lo tanto, no se cuenta con
un algoritmo que garantice encontrar una solución óptima para todos
estos problemas; sin embargo, existen algunos algoritmos bastante ade-
cuados para encontrar máximos locales, en especial cuando las formas
de las funciones no lineales no se desvı́an demasiado de aquellas que se
supuso para programación convexa. Ciertos tipos especı́ficos de proble-
mas de programación no convexa se pueden resolver sin mucha dificultad
mediante métodos especiales.

• Programación geométrica: cuando se aplica PNL a problemas de


diseño de ingenierı́a, muchas veces la función objetivo y las funciones de
restricción toman la forma
N
X
g(x) = ck Pk (x)
k=1

donde
Pk (x) = xa1k1 xa2k2 · · · xankn , k = 1, 2, . . . , N
2.2. TIPOS DE PROBLEMAS DE PNL 65

En tales casos, ck y akj con frecuencia representan las constantes fı́sicas,


mientras que las xj son las variables de diseño. Estas funciones por lo
general no son ni cóncavas ni convexas, por lo que las técnicas de progra-
mación convexa no se pueden aplicar en forma directa a estos problemas
de programación geométrica. Sin embargo, existe un caso importante en
el que el problema se puede transformar en un problema de programación
convexa equivalente. Este caso es aquel en el que todos los coeficientes
ck de cada función son estrictamente positivos, es decir, las funciones
son polinomios positivos generalizados (ahora llamados posinomios), y
la función objetivo se tiene que minimizar. El problema equivalente de
programación convexa con variables de decisión y1 , y2 , . . . , yn se obtiene
al establecer
xj = eyj , j = 1, 2, . . . , n
en todo el modelo original, de modo que ya se puede aplicar un algo-
ritmo de programación convexa. Se ha desarrollado otro procedimiento
de solución para resolver estos problemas de programación posinomial,
al igual que para problemas de programación geométrica de otros tipos.

• Programación fraccional: si la función objetivo se encuentra en la


forma de una fracción, esto es, como razón o cociente de dos funciones,
f1 (x)
max f (x) = f2 (x)

Estos problemas de programación fraccional surgen, por ejemplo, cuando


se maximiza la razón de la producción entre las horas-persona empleadas
(productividad), o la ganancia entre el capital invertido (tasa de rendi-
miento), o el valor esperado dividido entre la desviación estándar de al-
guna medida de desempeño de una cartera de inversiones (rendimiento /
riesgo). Se han formulado algunos procedimientos de solución especiales
para ciertas formas de f1 (x) y f2 (x). Cuando es posible, el enfoque más
directo para resolver un problema de programación fraccional es transfor-
marlo en un problema equivalente de algún tipo estándar que disponga
de un procedimiento eficiente. Para ilustrar este enfoque, suponga que
f (x) es de la forma de programación fraccional lineal
cx + x0
f (x) =
dx + d0
donde c y d son vectores fila, x es un vector columna y c0 y d0 son
escalares. También suponga que las funciones de restricción gi (x) son
66 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

lineales, es decir, las restricciones en forma matricial son Ax ≤ b y x ≥


0. Bajo algunos supuestos débiles adicionales, el problema se puede
transformar en un problema equivalente de programación lineal si se
establece
x 1
y= y t=
dx + d0 dx + d0
y
de manera que x = . Este resultado conduce a
t
max z = cy + c0 t
s.a Ay − bt ≤ 0
dy + d0 t = 1
y ≥ 0, t ≥ 0,

que se puede resolver con el método sı́mplex. En términos generales, se


puede usar el mismo tipo de transformación para convertir un problema
de programación fraccional con f1 (x) cóncava, f2 (x) convexa y gi (x)
convexas, en un problema equivalente de programación convexa.

• Problema de complementariedad: Dadas las variables w1 , w2, . . . , wp


y z1 , z2 , . . . , zp , el problema de complementariedad encuentra una solución
factible para el conjunto de restricciones

w = F (z), w ≥ 0, z≥0

que también satisface la llamada restricción de complementariedad,

w t z = 0.

Aquı́, w y z son vectores columna, F es una función vectorial y el su-


perı́ndice t denota la transpuesta. El problema no tiene función objetivo,
de manera que, desde un punto de vista técnico, no es un problema de
programación no lineal completo. Se llama problema de complemen-
tariedad por las relaciones complementarias que establecen las también
conocidas como variables complementarias que

wi = 0 ó zi = 0 i = 1, 2, . . . , p.

Un caso en especial importante es el problema de complementariedad


lineal, donde
F (z) = q + Mz,
2.3. OPTIMIZACIÓN NO RESTRINGIDA 67

donde q es un vector columna dado y M es una matriz dada de orden


p × p. Se dispone de algoritmos eficientes para resolver este problema
bajo algunos supuestos adecuados sobre las propiedades de la matriz M.
Uno de éstos requiere pivotear de una solución básica factible a la sigu-
iente, en forma muy parecida a la del método sı́mplex para programación
lineal. Además de tener aplicaciones en programación no lineal, los prob-
lemas de complementariedad se utilizan en teorı́a de juegos, problemas
de equilibrio económico y problemas de equilibrio en ingenierı́a.

2.3 Optimización no restringida

Consideremos el caso de maximizar una función diferenciable de una variable


cóncava (f ′′ (x∗ ) < 0) no sujeta a ninguna restricción. Recordemos el resultado
de Análisis Matemático que nos dice que x∗ es máximo global si y solo si

df (x∗ )
= 0.
dx

Si se puede despejar x∗ de modo directo, el problema llega a su fin; pero


si f (x) no es una función sencilla y su derivada no es una función lineal o
cuadrática, tal vez sea imposible resolver la ecuación analı́tica. De ser ası́,
existe una cantidad de procedimientos de búsqueda para resolver el problema
en forma numérica. El enfoque con cualquiera de estos procedimientos de
búsqueda implica encontrar una serie de ensayos de solución que conduzcan
hacia una solución óptima. En cada iteración se comienza con la solución de
prueba actual para llevar a cabo una búsqueda sistemática, que culmina con
la identificación de una nueva solución de prueba mejorada. El procedimiento
continúa hasta que la solución de prueba haya convergido hacia una solución
óptima, en caso de que exista una. Como el conocido procedimiento intuitivo
y directo Método de Bisección para resolver

f ′ (x) = 0,

cuyo algoritmo viene dado a continuación.


68 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

Método de Bisección

Paso inicial: Seleccionar una toleracia ǫ ≈ 0 Encontrar x y x por


inspección, ubicar un valor con derivada positiva y otro con
derivada negativa. Seleccionar una solución de prueba inicial
intermedia x(0) := x+x
2
, i := 0.
(i)
Paso iterativo: Avanzar i := i + 1. Evaluar df (x dx
)
. Si es positivo,
redefinir x := x . Si es negativo, redefinir x := x(i) . Seleccionar
(i)

una nueva solución intermedia: x(i) := x+x


2
.

Criterio de parada: Si x − x ≤ 2ǫ, parar, x∗ ≈ x(i) . Sino, ir al Paso


iterativo.

Ejemplo 2.2. Aplicación del Método de Bisección


Utiliza el Método de Bisección con tolerancia ǫ = 0.01 para resolver el
problema:

max 12x − 3x4 − 2x6


s.a : x ≥ 0
f (x) = 12x − 3x4 − 2x6 . Como f ′′ (x) = −12(3x2 + 5x4 ) ≤ 0, f es cóncava
por lo que si encontramos un máximo local, será máximo global. El máximo x∗
debe satisfacer f ′ (x∗ ) = 0, por lo que el problema de maximización se reduce a
resolver la ecuacı́ón no lineal

12 − 12x3 − 12x5 = 0.

Tabla 2.4: Método de Bisección en el ejemplo


Iteración f ′ (x) x x x(i) f (x(i) )
0 0 2 1 7
1 −12 0 1 0.5 5.7812
2 +10.12 0.5 1 0.75 7.6948
3 +4.09 0.75 1 0.875 7.8439
4 −2.19 0.75 0.875 0.8125 7.8672
5 +1.31 0.8125 0.875 0.84375 7.8829
6 −0.34 0.8125 0.84375 0.828125 7.8815
7 +0.51 0.828125 0.84375 0.8359375 7.8839
2.3. OPTIMIZACIÓN NO RESTRINGIDA 69

Dada dicha tolerancia, el algoritmo pararı́a en la iteración 7, ofreciendo un


resultado de x∗ ∈ (0.828125, 0.84375) y x∗ ≈ 0.8359375.
Presentamos a continuación el esquema algorı́tmico Método de Newton
para resolver
f ′ (x) = 0,
técnica que juega un papel fundamental en la PNL.

Método de Newton

Paso inicial: Seleccionar una toleracia ǫ ≈ 0 Encontrar por in-


spección una solución de prueba inicial, i := 0.
df (x(i) ) 2 (i)
Paso iterativo: Evaluar dx
y d fdx(x2 ) . Redefinir una nueva
′ (i) )
solución: x(i+1) := x(i) − ff′′(x (x(i) )
.

Criterio de parada: Si |x(i+1) − x(i) | ≤ ǫ, parar, x∗ ≈ x(i+1) . Sino,


avanzar i := i + 1, ir al Paso iterativo.


Ejemplo 2.3. Aplicación del Método de Newton
Utiliza el Método de Newton con tolerancia ǫ = 0.00001 para resolver el
problema del Ejercicio 2.2 anterior:

Tabla 2.5: Método de Newton en el ejemplo


Iteración x(i) f (x(i) ) f ′ (x(i) ) f ′′ (x(i) ) x(i+1)
1 1 7 12 96 0.875
2 0.875 7.8439 2.1940 62.733 0.84003
3 0.84003 7.8838 0.1325 55.279 0.83763
4 0.83763 7.8839 0.0006 54.790 0.83762

Dada dicha tolerancia, el algoritmo pararı́a en la iteración 4, ofreciendo un


resultado de x∗ ≈ 0.83762.
En sólo cuatro iteraciones, este método ha convergido con un grado muy
alto de precisión. Una comparación de esta tabla con la Tabla 2.2 ilustra cuánto
más rápido converge el método de Newton que el método de bisección. Si se
aplica este último, se requerirı́an cerca de 20 iteraciones para converger con el
mismo grado de precisión. Aunque esta convergencia rápida es muy usual en
el método de Newton, su desempeño varı́a de problema a problema.
70 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

Consideremos ahora el caso de maximizar una función diferenciable de


varias variables cóncava no sujeta a ninguna restricción. Recordemos el re-
sultado de Análisis Matemático que nos dice que x∗ es máximo global si y solo
si
∂f (x∗ ) ∂f (x∗ ) ∂f (x∗ )
 

∇f (x ) = , ,..., = (0, 0, . . . , 0).
∂x1 ∂x2 ∂xn
Supongamos que el sistema no se puede resolver en forma analı́tica, por lo que
debe emplearse un procedimiento de búsqueda numérico. Igual que en el caso
de una variable, existen varios procedimientos de búsqueda para resolver este
tipo de problema en forma numérica. Uno de éstos, el Método de búsqueda
del gradiente, es muy importante porque identifica y utiliza la dirección de
movimiento, desde la solución de prueba actual, que maximiza la tasa a la
cual se incrementa f (x). Ésta es una de las ideas clave de la programación no
lineal. Las adaptaciones de esta idea para tomar en cuenta las restricciones
también son una caracterı́stica central de muchos algoritmos que se utilizan
para llevar a cabo una optimización restringida.
Método de búsqueda del gradiente

Paso inicial: Seleccionar una toleracia ǫ ≈ 0 Encontrar por in-


spección una solución de prueba inicial x∗ . Ir al Criterio de
parada.

Paso iterativo: Consta de tres fases:

• Expresar f (x∗ + t∇f (x∗ )) como función de t al establecer

∂f (x∗ )
xj = x∗j + t , ∀j = 1, 2, . . . , n
∂xj

y sustituir estas expresiones en f (x).


• Utilizar el procedimiento de búsqueda en una dimensión
para encontrar t = t∗ que maximice f (x∗ + t∇f (x∗ )) para
t ≥ 0.
• Establecer x∗ := x∗ + t∗ ∇f (x∗ ). Ir al criterio de parada.

Criterio de parada: Evaluar ∇f (x∗ ). Si | ∂f∂x(xj ) | ≤ ǫ, ∀j =
1, 2, . . . , n, parar, la aproximación a la solución óptima es x∗ .
Sino, ir al Paso iterativo.


2.3. OPTIMIZACIÓN NO RESTRINGIDA 71

La versión general del método de Newton está diseñada para resolver prob-
lemas de optimización restringida con variables múltiples. La idea básica es la
misma, es decir, se trabaja con una aproximación cuadrática de la función ob-
jetivo f (x), donde, en este caso, x = (x1 , x2 , . . . , xn ). Esta función cuadrática
de aproximación se obtiene al truncar la serie de Taylor alrededor de la solución
de prueba actual después del término de la segunda derivada. Después, esta
función aproximada se maximiza (o minimiza) exactamente para obtener la
nueva solución de prueba para iniciar la siguiente iteración. Cuando la función
objetivo es cóncava y tanto la solución de prueba actual x como su gradiente
∇f (x) se escriben como vectores columna, la solución x∗ que maximiza la
función cuadrática de aproximación tiene la forma

x∗ = x − [∇2 f (x)]−1 ∇f (x)

donde [∇2 f (x)]−1 es la inversa de esta matriz hessiana. Los algoritmos de


programación no lineal que emplean el método de Newton (incluso aquellos que
lo adaptan para ayudar a tratar con problemas de optimización restringida)
por lo general aproximan el inverso de la función hessiana de varias maneras.
Estas aproximaciones del método de Newton son conocidas como métodos
cuasi-Newton (o métodos métricos variables).

Ejemplo 2.4. Aplicación del Método de búsqueda del gradiente


Utiliza el Método de Búsqueda del Gradiente para resolver el problema:

max 2x1 x2 + 2x2 − x21 − 2x22


s.a : x1 ≥ 0, x2 ≥ 0
 
−2 2 2
∇f (x) = (2x2 − 2x1 , 2x1 + 2 − 4x2 ). Como ∇ f (x) = < 0, f
2 −4
es cóncava por lo que si encontramos un máximo local, será máximo global.
Consideremos (0, 0) la solución inicial de prueba.

Tabla 2.6: Método de Búsqueda del Gradiente en el ejemplo


Iteración x∗ ∇f (x∗ ) x∗ + t∇f (x∗ ) f (x∗ + t∇f (x∗ )) t∗ x∗ + t∗ ∇f (x∗ )
1 (0, 0) (0, 2) (0, 2t) 4t − 8t2 1/4 (0, 1/2)
2
2 (0, 1/2) (1, 0) (t, 1/2) t − t + 1/2 1/2 (1/2, 1/2)

En iteraciones sucesivas, se obtienen: ( 12 , 43 ), ( 43 , 43 ), ( 43 , 87 ), ( 87 , 78 ), . . . Esta


sucesión converge a (1, 1) que es la solución óptima, ya que ∇f (1, 1) = (0, 0).
72 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

2.4 Optimización restringida: condiciones KKT


Hemos visto las condiciones de optimalidad para el caso no restringido, para
el caso restringido general, veremos las condiciones de Karush-Kuhn-Tucker
(condiciones KKT), que fueron desarrolladas de manera independiente por
Karush (tesis de master, 1939) y por Kuhn y Tucker (1951). En la Tabla 2.7
se resumen las condiciones de optimalidad para problema de PNL restringidos
o no.

Tabla 2.7: Condiciones de optimalidad


Restricciones Condiciones necesarias Condiciones suficientes
No ∇f (x) = 0 f (x) cóncava
xj ≥ 0 ∇f (x) = 0 & ∇f (x) ≤ 0 si xj = 0 f (x) cóncava
General condiciones KKT f (x) cóncava y gi (x) convexas

Teorema 2.1. • (Condiciones nesarias)


Sean f (x), g1 (x), g2 (x), . . . , gm (x) funciones diferenciables que satisfacen
ciertas condiciones de regularidad. Entonces, x∗ = (x∗1 , x∗2 , . . . , x∗n ) puede
ser una solución óptima para el problema de PNL (2.1), sólo si existen m
números u1 , u2 , . . . , um que satisfagan las siguientes condiciones KKT:
∂f (x∗ ) Pm i (x
∗)
1. ∂xj
− i=1 ui ∂g∂x
≤ 0, j = 1, 2, . . . , n
j
 
∂f (x∗ ) ∂gi (x∗ )
2. x∗j − m
P
∂xj
u
i=1 i ∂xj = 0, j = 1, 2, . . . , n

3. gi (x∗ ) − bi ≤ 0, i = 1, 2, . . . , m
4. ui (gi (x∗ ) − bi ) = 0, i = 1, 2, . . . , m
5. x∗j ≥ 0, j = 1, 2, . . . , n
6. ui ≥ 0, i = 1, 2, . . . , m

• (Condiciones suficientes)
Sea f (x) cóncava y g1 (x), g2 (x), . . . , gm (x) convexas (es decir, se trata
de un problema de programación convexa), donde todas estas funciones
satisfacen las condiciones de regularidad y x∗ satisface las condiciones
KKT. Entonces, x∗ es una solución óptima.

Veremos una aplicación de las condiciones KKT en la Sección 2.5.


2.5. PROGRAMACIÓN CUADRÁTICA 73

2.5 Programación cuadrática


Como se ha mencionado en la clasificación de problemas de PNL en la Sección
2.2, la programación cuadrática difiere de la programación lineal nada más en
que la función objetivo es una función cuadrática, es decir, incluye también
términos cuadrados o productos de variables.

2.5.1 Formulación cuadrática


Definición 2.4. Sea f : IRn → IR, f es una función cuadrática si
  
q11 q12 . . . q1n x1
n
X  q21 q22 . . . q2n   x2 
f (x1 , x2 , . . . , xn ) = qij xi xj = (x1 x2 . . . xn )  .. .. .  .. .
  
..
i,j=1
 . . . ..   . 
qn1 qn2 . . . qnn xn

Propiedad: Las funciones cuadráticas cumplen la propiedad

f (λx1 , λx2 , . . . , λxn ) = λ2 f (x1 , x2 , . . . , xn ).

Definición 2.5. Sea f : IRn → IR una función cuadrática, se dice que es

• definida positiva si f (x) > 0, ∀x ∈ IRn − {0},

• semidefinida positiva si f (x) ≥ 0, ∀x ∈ IRn ,

• definida negativa si f (x) < 0, ∀x ∈ IRn − {0},

• semidefinida negativa si f (x) ≤ 0, ∀x ∈ IRn ,

• indefinida si no entra en ninguna de las clasificaciones anteriores.

Recuérdese la caracterización de matrices definidas positivas: todos los


autovalores λj son positivos, o equivalentemente, todos los determinantes de
los menores principales son positivos. Por el contrario, la caracterización de
matrices definidas negativas: todos los autovalores λi son negativos, o equiv-
alentemente, todos los determinantes de los menores principales tienen signos
alternos, siendo el primero negativo.
74 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

Tabla 2.8: Caracterización de definición para funciones cuadráticas

Autovalores Semidefinida Positiva Semidefinida Negativa


positiva negativa
λ1 ≥0 >0 ≤0 <0
λ2 ≥0 >0 ≤0 <0
λ3 ≥0 >0 ≤0 <0
.. .. .. .. ..
. . . . .
λn ≥0 >0 ≤0 <0

En consecuencia, si se usa la notación matricial el problema es encontrar x


para

max f (x) = cx + 12 xt Qx
s.a Ax ≤ b
x≥0
donde c ∈ IRn es un vector fila y x ∈ IRn y b ∈ IRn son vectores columna.
Q = (qij ) ∈ Mn×n y A = (aij ) ∈ Mm×n son matrices y el superı́ndice t denota
la transpuesta. Los elementos qij de Q son constantes dadas tales que qij = qji
(es decir, Q es una matriz simétrica, Qt = Q). Ası́, la función objetivo se
expresa en términos de estas qij , los elementos cj de c y las variables xj , de la
siguiente manera:
n n n
1 X 1 XX
f (x) = cx + xt Qx = cj xj + qij xi xj
2 j=1
2 i=1 j=1

Ejemplo 2.5. Formulación de un problema cuadrático


Consideremos el siguiente problema cuadrático de dos variables:
max f (x1 , x2 ) = 15x1 + 30x2 + 4x1 x2 − 2x21 − 4x22
s.a x1 + 2x2 ≤ 30
x1 ≥ 0, x2 ≥ 0

Si observamos la función objetivo:


    
1 t  x1 1  q11 q12 x1
f (x) = cx + x Qx = c1 c2 + x1 x2 =
2 x2 2 q12 q22 x2
1
= c1 x1 + c2 x2 + (q11 x21 + 2q12 x1 x2 + q22 x22 )
2
2.5. PROGRAMACIÓN CUADRÁTICA 75

Igualando coeficiente a coeficiente con la expresión:


1
f (x1 , x2 ) = 15x1 + 30x2 + (−4x21 + 8x1 x2 − 8x22 )
2
tenemos
 
 −4 4 
c = 15 30 , Q= , A= 1 2 , b = 30
4 −8

Se dispone de varios algoritmos para el caso especial de un problema de


programación cuadrática donde la función objetivo es una función cóncava. La
función objetivo f (x) = cx + 21 xt Qx es cóncava si + 21 xt Qx es cóncava, es decir,
si xt Qx es semidefinida negativa. En efecto, recuérdese la caracterización de
convexidad dada en la Tabla 2.3 y obsérvese que

∇2 f (x) = Q.

Se describirá uno de estos algoritmos, el método sı́mplex modificado, que


es muy aceptado porque se basa en el método sı́mplex con una pequeña modi-
ficación. La clave de este enfoque es construir las condiciones KKT y después
reexpresarlas de una manera conveniente que se parezca a programación lineal.
Por esto, antes de describir el algoritmo, se desarrollará esta práctica forma.

2.5.2 Condiciones KKT para programación cuadrática


Ejemplo 2.6. Condiciones KKT en programación cuadrática
Analicemos las condiciones KKT en el Ejemplo 2.5 anterior.

1. Para j = 1 : 15 + 4x2 − 4x1 − u1 ≤ 0

Para j = 2 : 30 + 4x1 − 8x2 − 2u1 ≤ 0

2. Para j = 1 : x1 (15 + 4x2 − 4x1 − u1 ) = 0

Para j = 2 : x2 (30 + 4x1 − 8x2 − 2u1) = 0

3. x1 + 2x2 − 30 ≤ 0

4. u1 (x1 + 2x2 − 30) = 0

5. x1 ≥ 0, x2 ≥ 0

6. u1 ≥ 0
76 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

Para poder reexpresar estas condiciones en una forma más conveniente,


se mueven las constantes de las condiciones 1 y 3 al lado derecho y después
se introducen variables de holgura no negativas (denotadas por y1 , y2 y v1 ,
respectivamente) para convertir estas desigualdades en ecuaciones.

−4x1 +4x2 −u1 + y1 = −15


4x1 −8x2 −2u1 +y2 = −30
x1 +2x2 +v1 = 30
Observe que la condición 2 para j = 1 se puede reexpresar ahora en forma
simple como la necesidad de que se cumpla una de las dos, x1 = 0 o bien
y1 = 0; esto es,
x1 y1 = 0.
Exactamente en la misma forma, las condiciones 2 para j = 2 y 4 se pueden
sustituir por
x2 y2 = 0
u1 v1 = 0
Para cada uno de estos tres pares (x1 , y1), (x2 , y2 ) y (u1 , v1 ), las dos vari-
ables se llaman variables complementarias, porque sólo una de las dos
podrı́a ser diferente de cero. Estas nuevas formas de las condiciones 2 y 4 se
pueden combinar en una única restricción, llamada restricción de comple-
mentariedad:
x1 y1 + x2 y2 + u1 v1 = 0.
Después de multiplicar las ecuaciones de las condiciones 1. por −1 para
obtener lados derechos no negativos, se obtiene la forma deseada del conjunto
completo de condiciones:

4x1 −4x2 +u1 −y1 = 15


−4x1 +8x2 +2u1 −y2 = 30
x1 +2x2 +v1 = 30 (2.2)
x1 , x2 , u1 , y1, y2 , v1 ≥ 0
x1 y1 + x2 y2 + u1v1 = 0

Esta forma es en especial conveniente puesto que excepto por la restricción


de complementariedad, estas condiciones son restricciones de programación
lineal.

En cualquier problema de programación cuadrática, sus condiciones KKT


se pueden reducir a la misma forma conveniente que contiene sólo restricciones
2.5. PROGRAMACIÓN CUADRÁTICA 77

de programación lineal y una restricción de complementariedad. En notación


matricial, esta forma general es

−Qx + At u − y = ct ,
Ax + v = b
x, u, y, v ≥ 0
xt y + ut v = 0

donde los elementos del vector columna u ∈ IRm son las ui de las condiciones
KKT y los elementos de los vectores columna y ∈ IRn y v ∈ IRm son variables
de holgura.
Como se supone que la función objetivo del problema original es cóncava y
como las funciones de restricción son lineales y, por tanto, convexas, se puede
aplicar el Teorema 2.1. Ası́, x es óptima si y sólo si existen valores de y,
u y v tales que los cuatro vectores juntos satisfacen todas estas condiciones.
Ası́ pues, el problema original se reduce al problema equivalente de encon-
trar una solución factible para estas restricciones. Es interesante observar que
este problema equivalente es un ejemplo del problema de complementariedad
lineal que se introdujo en la Sección 2.2, y que una restricción clave de este
problema de complementariedad lineal es precisamente su restricción de com-
plementariedad.

2.5.3 Método Sı́mplex Modificado


El Método Sı́mplex Modificado explota el importante hecho de que, con
excepción de la restricción de complementariedad, las condiciones KKT ex-
presadas en la forma conveniente que se acaba de obtener, no son otra cosa
que restricciones de programación lineal. Aún más, la restricción de comple-
mentariedad simplemente implica que no es permisible que las dos variables
complementarias de un par dado sean básicas (no nulas) al considerar SBF (no
degeneradas). Por tanto, el problema se reduce a encontrar una SBF inicial
para cualquier problema de programación lineal con estas restricciones, su-
jeta a la restricción adicional sobre la identidad de las variables básicas. (Esta
solución inicial básica factible puede ser la única solución factible en este caso.)
Como se analizó en la Subsección 1.3.4, tal SBF inicial se encuentra casi
de modo directo. En el sencillo caso de que ct ≤ 0 (poco probable) y b ≥ 0, las
variables básicas iniciales son los elementos de y y v (se multiplica por −1 todo
el primer conjunto de ecuaciones), de manera que la solución deseada es x = 0,
u = 0, y = −ct , v = b. De otra manera, es necesario revisar el problema e
introducir una variable artificial en cada una de las ecuaciones donde cj > 0 (se
78 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

agrega la variable una variable artificial por la izquierda) o bi < 0 (se resta una
variable artificial por la izquierda y después se multiplican los dos lados por
−1), con el fin de usar estas variables artificiales (que se denotan por zj ) como
variables básicas iniciales del problema revisado. (Observe que esta selección de
variables básicas iniciales satisface la restricción de complementariedad, puesto
que como variables no básicas x = 0 y u = 0, de manera automática.) Después
se utiliza la fase 1 del método de dos fases para encontrar una SBF para el
problema real; es decir, se aplica el método sı́mplex (con una modificación) al
siguiente problema de programación lineal

X
min z = zj
j

sujeta a las restricciones anteriores de programación lineal que se obtu-


vieron de las condiciones KKT, pero con estas variables artificiales incluidas.
La modificación del método sı́mplex es el siguiente cambio en el proced-
imiento para elegir una variable básica entrante.
Regla de entrada restringida: cuando se elige la variable básica en-
trante, se excluye de las posibilidades cualquier variable no básica cuya variable
complementaria sea básica; la elección debe hacerse entre las otras variables
no básicas, según el criterio normal del método sı́mplex.
Esta regla asegura que la restricción de complementariedad se satisface en
todo el curso del algoritmo.
Cuando se obtiene una solución óptima x∗ , u∗ , y ∗, v ∗ y z = 0 para la fase 1
de este problema, x∗ es la solución óptima deseada para el problema original
de programación cuadrática. La fase 2 del método de dos fases no se necesita.

Ejemplo 2.7. Resolución del Método Sı́mplex Modificado


Vamos a aplicar el algoritmo en el Ejemplo 2.5. Como hemos visto, la
−4 4
matriz Q = es definida negativa, por lo que la función objetivo a
4 −8
maximizar f (x) es cóncava. El punto de partida para resolver este ejemplo
son las condiciones KKT en la forma conveniente (2.2) que se obtuvo en el
Ejemplo 2.6. Una vez que se introducen las variables artificiales z necesarias,
el problema de programación lineal que se resolverá en forma explı́cita por el
método sı́mplex modificado es
2.5. PROGRAMACIÓN CUADRÁTICA 79

min z = z1 + z2
4x1 −4x2 +u1 −y1 +z1 = 15
−4x1 +8x2 +2u1 −y2 +z2 = 30 (2.3)
x1 +2x2 +v1 = 30
x1 , x2 , u1, y1 , y2 , v1 z1 , z2 ≥ 0
La restricción de complementariedad adicional
x1 y1 + x2 y2 + u1 v1 = 0
no se incluye de manera explı́cita, porque el algoritmo garantiza que se satisfaga
esta restricción de manera automática con la regla de entrada restringida.
En particular, en cada uno de los tres pares de variables complementarias
siempre que una de las dos variables sea ya una variable básica, la otra se
excluye de las candidatas como variable básica entrante. Recuerde que sólo
las variables diferentes de cero son variables básicas. Dado que el conjunto
inicial de variables básicas del problema de programación lineal (z1 , z2 y v1 )
proporciona una SBF inicial que satisface la restricción de complementariedad,
no hay manera de violar esta restricción con ninguna de las SBF subsiguientes.
En la Tabla 2.9 se muestran los resultados de la aplicación del método
sı́mplex modificado a este problema.
En la iteración inicial se presenta el sistema de ecuaciones inicial después
de convertir de minimización de z a maximización de −z y de eliminar alge-
braicamente las variables básicas iniciales de la ecuación (0). Las tres itera-
ciones proceden igual que en el método sı́mplex normal, excepto por la elimi-
nación de ciertos candidatos para la variable básica entrante, según la regla
de entrada restringida. En la iteración 1 se elimina u1 como candidato
porque su variable complementaria v1 es ya una variable básica (de todas man-
eras, habrı́a entrado x2 puesto que | − 4| > | − 3|). En la iteración 2 se
elimina tanto u1 como y2 (puesto que sus complementarias v1 y x2 son vari-
ables básicas) y de manera automática se elige x1 como único candidato con
coeficientes negativos en la fila (0), mientras que el método sı́mplex normal
habrı́a permitido la entrada de x1 o bien de u1 , porque están empatadas con el
coeficiente más negativo. En la iteración 3 se eliminan y1 y y2 (porque x1 y x2
son variables básicas). Esta vez u1 no se elimina, puesto que v1 ya no es una
variable básica, ası́ que se elige u1 como variable entrante. La solución óptima
que resulta para esta fase del problema es x1 = 12, x2 = 9, u1 = 3, mien-
tras el resto de las variables son nulas. Además, se satisfacen las condiciones
KKT del problema original, por lo que la solución óptima para el problema de
programación cuadrática es (x1 , x2 ) = (12, 9) con z = 270.
80 CAPÍTULO 2. PROGRAMACIÓN NO LINEAL

Tabla 2.9: Tabla Método Sı́mplex Modificado

It. xB Ec. z x1 x2 u1 y1 y2 v1 z1 z2 rhs


0 z (0) −1 0 −4 −3 1 1 0 0 0 −45
z1 (1) 0 4 −4 1 −1 0 0 1 0 15
z2 (2) 0 −4 8 2 0 −1 0 0 1 30
v1 (3) 0 1 2 0 0 0 1 0 0 30
1 z (0) −1 −2 0 −2 1 1/2 0 0 1/2 −30
z1 (1) 0 2 0 2 −1 −1/2 0 1 1/2 30
x2 (2) 0 −1/2 1 1/4 0 −1/8 0 0 1/8 15/4
v1 (3) 0 2 0 −1/2 0 1/4 1 0 −1/4 45/2
2 z (0) −1 0 0 −5/2 1 3/4 1 0 1/4 −15/2
z1 (1) 0 0 0 5/2 −1 −3/4 −1 1 3/4 15/2
x2 (2) 0 0 1 1/8 0 −1/16 1/4 0 1/16 75/8
x1 (3) 0 1 0 −1/4 0 1/8 1/2 0 −1/8 45/4
3 z (0) −1 0 0 0 0 0 0 1 1 0
u1 (1) 0 0 0 1 −2/5 −3/10 −2/5 2/5 3/10 3
x2 (2) 0 0 1 0 1/20 −1/40 3/10 −1/20 1/40 9
x1 (3) 0 1 0 0 −1/10 1/20 2/5 1/10 −1/20 12
Referencias

[1] H. Calvete and P. Mateo, Programación lineal, entera y meta. Colección


Textos Docentes. Prensa Universitaria de Zaragoza, 1994.

[2] F. Hillier and G. Lieberman, Introducción a la investigación de opera-


ciones. Editorial McGraw-Hill, 2001.

[3] J. J. Salazar, Programación Matemática. Ed. Diaz de Santos, 2011.

[4] C. Maroto, J. Alcaraz, and R. Ruiz, Investigación Operativa. Modelos y


Técnicas de optimización. Editorial Universidad Politécnica de Valencia,
2002.

[5] W. L. Winston, Operations Research: Applications and Algorithms. In-


ternational Thomson Publishing, 1994.

[6] J. Dennis and R. Schnable, Numerical methods for unconstrained opti-


mization and nonlinear equations. Prentice-Hall, Inc., New Jersey, 1983.

[7] J. Nocedal and S. Wright, Numerical optimization. Springer, USA, 1999.

[8] J. Birge and F. Louveaux, Introduction to Stochastic Programming.


Springer, 1997.

[9] L. Escudero, A. Garin, M. Merino, and G. Pérez, “A general algorithm for


solving two-stage stochastic mixed 0-1 first-stage problems.,” Computers
and Operations Research, vol. 36, pp. 2590–2600, 2009.

[10] A. Ramos, A. Alonso-Ayuso, and G. P. (eds.), Optimización bajo incer-


tidumbre. Publicaciones de la Universidad Pontificia Comillas, 2009.

[11] COIN-OR, “COmputational INfrastructure for Operations Research.”


Website. http://www.coin-or.org/.

81
82 REFERENCIAS

[12] G. Pérez and M. Garı́n, “On downloading and using COIN-OR for solving
linear/integer optimization problems,” tech. rep., Working paper series
Biltoki, UPV/EHU. DT.2010.05, Basque Country University, Spain, 2010.

[13] IBM, “ILOG CPLEX optimizer.” Website


. http://www-01.ibm.com/software/integration/optimization/cplex-optimizer/.

[14] G. Pérez and M. Garı́n, “On Downloading and Using CPLEX within
COIN-OR for Solving Linear/Integer Optimization Problems,” tech. rep.,
Working paper series Biltoki, UPV/EHU. DT.2011.08, Basque Country
University, Spain, 2011.

[15] FICO, “XPRESS optimization suite - student edition.” Website


. http://optimization.fico.com/student-version-of-fico-xpress.html.

[16] “GUSEK (GLPK under scite extended kit).” Website


. http://gusek.sourceforge.net/gusek.html.

[17] Wikipedia, “OR.” http://en.wikipedia.org/wiki/Operations_research/.

[18] INFORMS, “Science of better.” http://www.scienceofbetter.org/.

[19] R. L. Ackoff, El arte de resolver problemas: las fábulas de Ackoff. Noriega,


Limusa Wiley, 2007.

[20] C. Churchman, R. Ackoff, and E. Arnoff, Introduction to Operations Re-


search. Wiley, New York, 1957.

[21] IFORS. http://www.ifors.org/.

[22] J. Nash, “The (dantzig) simplex method for linear programming,” Com-
puting in Science & Engineering, pp. 29–31.