CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

88
UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE CIENCIAS F ´ ISICAS Y MATEM ´ ATICAS ESCUELA ACAD ´ EMICO PROFESIONAL DE MATEM ´ ATICAS CONSTRUCCI ´ ON DE M ´ ETODOS PARA CALCULAR UNA SOLUCI ´ ON INICIAL PARA EL ALGORITMO DUAL SIMPLEX DE LA PROGRAMACI ´ ON LINEAL A GRAN ESCALA Trabajo de Tesis Alumna: YESSICA EVELIN Z ´ ARATE PEDRERA Asesor: Dr. EDMUNDO VERGARA MORENO Trujillo - PER ´ U 2014 Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Transcript of CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Page 1: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

UNIVERSIDAD NACIONAL DE TRUJILLO

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

ESCUELA ACADEMICO PROFESIONAL DE MATEMATICAS

CONSTRUCCION DE METODOS PARA CALCULAR UNA

SOLUCION INICIAL PARA EL ALGORITMO DUAL SIMPLEX DE

LA PROGRAMACION LINEAL A GRAN ESCALA

Trabajo de Tesis

Alumna:

YESSICA EVELIN ZARATE PEDRERA

Asesor:

Dr. EDMUNDO VERGARA MORENO

Trujillo - PERU

2014

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 2: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Jurado

Dr. Ulices Zavaleta Calderon

Presidente

Mg. Nelson Aragones Salazar

Secretario

Mg. Manuel Montalvo Bonilla

Vocal

i

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 3: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Dedicatoria

A mi mama Isidora Vera

Castillo con mucho amor

y carino le dedico todo mi

esfuerzo y trabajo puesto

para la realizacion de esta

tesis.

ii

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 4: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Agradecimiento

Agradezco a Dios ser maravilloso que me dio fuerza y fe para creer lo que me

parecıa imposible terminar. A mi familia, en especial a mi tıo Luis Pedrera Vera y

mi madre Isabel Pedrera Vera por todo su apoyo y sus consejos durante el tiempo

de mis estudios de pregrado.

A mis amigos, sobre todo a Alfredo Jara Grados y Rusbert Calderon Beltran

por las veces que estudiamos juntos, estare siempre agradecida por sus ensenanzas

y su amistad sincera. A mi asesor Dr. Edmundo Vergara Moreno por las horas de

estudio y su atencion en mi trabajo de tesis. A Sander Contreras Escobar, por su

paciencia y ayuda durante los ultimos meses de investigacion. Sin ustedes no hubiera

sido posible culminar esta tesis.

Un agradecimiento especial a los investigadores, estudiantes y personal del de-

partamento de matematicas y a todos mis maestros de la Universidad Nacional de

Trujillo por su ensenanza academica.

iii

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 5: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Presentacion

Senores Miembros del Jurado:

En cumplimiento con el reglamento para optar el TITU-

LO de LICENCIADO EN CIENCIAS MATEMATICAS, someto a vuestra conside-

racion el trabajo de tesis titulado:

CONSTRUCCION DE METODOS PARA CALCULAR

UNA SOLUCION INICIAL PARA EL ALGORITMO

DUAL SIMPLEX DE LA PROGRAMACION LINEAL

A GRAN ESCALA

La Autora.

iv

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 6: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Indice general

Jurado I

Dedicatoria II

Agradecimiento II

Presentacion III

Resumen VII

Introduccion VIII

1. Preliminares 1

1.1. Modelo de programacion lineal . . . . . . . . . . . . . . . . . . . . . . 1

1.2. Algunos resultados de analisis convexo . . . . . . . . . . . . . . . . . 2

1.2.1. Conjuntos poliedricos, puntos extremos y direcciones extremas 5

2. Programacion lineal 15

2.1. Mejoramiento de una solucion basica factible . . . . . . . . . . . . . . 18

2.2. Optimalidad y no acotamiento . . . . . . . . . . . . . . . . . . . . . . 21

2.3. Terminacion con una solucion optima . . . . . . . . . . . . . . . . . . 22

2.4. Soluciones optimas unicas y alternativas . . . . . . . . . . . . . . . . 22

2.5. El metodo simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.1. El metodo simplex en formato de tableau . . . . . . . . . . . . 24

2.5.2. El metodo simplex para variables acotadas . . . . . . . . . . . 25

3. Metodo dual simplex 29

3.1. Planteamiento del problema dual . . . . . . . . . . . . . . . . . . . . 29

3.2. Metodo dual simplex en formato de tableau . . . . . . . . . . . . . . 30

v

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 7: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

3.3. Problema general de programacion lineal . . . . . . . . . . . . . . . . 31

3.4. Algoritmo dual simplex para problemas generales . . . . . . . . . . . 33

4. Metodos de inicializacion del algoritmo dual simplex 34

4.1. Metodo de modificacion de costos . . . . . . . . . . . . . . . . . . . . 34

4.2. Metodo de reducir las infactibilidades o metodo de Ping-Qi Pan . . . 35

4.3. Metodo de minimizar la suma de infactibilidades duales . . . . . . . . 36

4.4. Implementacion en matlab . . . . . . . . . . . . . . . . . . . . . . . . 37

4.5. Tecnicas para implementar el algoritmo dual simplex . . . . . . . . . 53

Conclusiones 54

Bibliografıa 56

A. Codigos de programas en matlab 57

vi

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 8: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Resumen

El metodo simplex es un algoritmo iterativo que, iniciando en una solucion basica

factible pero no optima, genera soluciones factibles cada vez mejores hasta conseguir

la solucion optima (si esta existe); es decir el metodo simplex mantiene la factibi-

lidad mientras busca optimalidad. Pero surge la posibilidad de usar otro esquema

igualmente iterativo, que como contraparte del simplex, comienza en una solucion

optima, pero no factible, y mantiene las condiciones de optimalidad mientras busca

factibilidad. Este procedimiento, con el cual se llega a la solucion de un problema

de programacion lineal, se conoce como metodo dual-simplex y fue desarrollado en

1954 por C.E. Lemke.

Para el algoritmo simplex existen procedimientos para obtener una solucion basica

factible inicial de un conjunto de restricciones, por ejemplo el metodo de dos fases

y el metodo de penalizacion. Por otro lado, el algoritmo dual-simplex inicia con

una solucion basica que cumpla las condiciones de optimalidad, dicha solucion se

denomina solucion dual factible, por tanto; para obtener una solucion basica dual

factible, en este trabajo se presentan tres metodos, los cuales son:

Metodo de modificacion de costos

Metodo de P.Q. Pan

Metodo de la mınima suma de infactibilidades duales.

Estos metodos y el algoritmo dual simplex fueron implementados en matlab, para

luego resolver algunos pequenos problemas lineales, tambien se resolvio un problema

test obtenido de la librerıa MIPLIB.

Palabras claves: Problema de programacion lineal, metodo simplex, metodo dual

simplex, solucion basica factible inicial

vii

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 9: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Introduccion

La programacion matematica es un moderno campo dentro de la matematica apli-

cada orientado a la modelacion de problemas en el ambito de la toma de decisiones

y al diseno de metodologıas para resolverlos. En esta clase de problemas, cuyos mo-

delos son denominados programas matematicos; se trata de seleccionar una mejor

alternativa, el conjunto de alternativas se denomina conjunto factible, la calidad

de las alternativas es medida por una funcion llamada objetivo y el adjetivo mejor

equivale a un maximo o mınimo segun la naturaleza del problema.

Una rama de la programacion matematica, se llama programacion lineal (PL) y

estudia modelos de optimizacion de funciones objetivo y restricciones lineales. Su

aplicacion practica se encuentra en casi todas las facetas de los negocios, desde la

publicidad hasta la planificacion de la produccion. Problemas de transporte, distri-

bucion, y planificacion global de produccion son los objetos mas comunes del analisis

de PL. Esta teorıa tambien se aplica con exito a problemas de presupuestos de ca-

pital, diseno de dietas, conservacion de recursos, juegos de estrategia, prediccion de

crecimiento economico y sistemas de transporte. [1]

Todo problema PL consta de una funcion objetivo que es una funcion real de n

variables y esta sujeto a restricciones que definen un conjunto factible el cual se

expresa como la interseccion de hiperplanos o semiespacios en Rn .

En particular un problema de programacion lineal tiene la siguiente formulacion:

min f(x)

s.a. Ax ≤ b

x ≥ 0

(1)

donde f : Rn −→ R es una funcion lineal, A es una matriz m × n, llamada matriz

de restricciones, b ∈ Rm, x ∈ Rn y F = {x ∈ Rn : Ax ≤ b, x ≥ 0} se denomina

conjunto factible.

viii

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 10: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Para resolver los problemas de PL, fue creado el metodo simplex, por George Ber-

nard Dantzig, publicado en el verano de 1947. Actualmente, usando computadoras

modernas y una implementacion sofisticada del metodo simplex, es facil resolver

programas lineales con mas de 5 000 restricciones y 10 000 variables. Aunque se han

desarrollado muchas variantes del metodo simplex y se han propuesto otros nuevos

algoritmos competidores, el metodo simplex sigue siendo un medio viable y el mas

usado para resolver problemas de PL. [3],[7]

Sin embargo si (1) es un problema a gran escala, es decir, tiene un gran numero de

variables n mucho mayor que el numero de restricciones m (n � m) y se intenta

resolver dicho problema usando el metodo simplex, se presentarıan las siguientes

dificultades:

� El numero de columnas de la matriz A serıan tantas que dificultarıan el alma-

cenamiento de A en la memoria de un computador, hecho por el cual el metodo

simplex no podrıa buscar una mejor solucion, ya que este metodo trabaja con

todas las columnas en cada iteracion.

� Como el metodo simplex tiene una complejidad computacional exponencial,

entonces el tiempo para resolver un problema con un numero de variables muy

grande, no serıa razonable.

Es por ello que para implementar el metodo simplex se utiliza la version revisada. El

metodo simplex revisado es un algoritmo que solo trabaja con las columnas elegidas

para formar parte de la base, dejando de lado las columnas que no llegan a estar en

la base en ninguna iteracion del algortimo

Actualmente, problemas de PL a gran escala pueden ser resueltos por un algoritmo

de punto interior o dual simplex. El metodo dual simplex fue desarrollado por C.

E. Lemke en 1954 , pero no se uso como alternativa del metodo simplex por casi

cuarenta anos. [5] Durante la decada de los 90 se han hecho grandes progresos en

establecer el metodo dual simplex como un metodo general para solucionar pro-

blemas PL a gran escala [6]. El proceso del metodo simplex consiste en buscar la

condicion de optimalidad manteniendo la condicion de factibilidad; mientras que el

metodo dual simplex hace lo contrario, manteniendo la condicion de optimalidad,

busca una solucion que satisfaga la condicion de factibilidad. Por tanto, mientras

que el algoritmo simplex inicia con una solucion factible, el algoritmo dual simplex

ix

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 11: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

inicia con una solucion que satisfaga la condicion de optimalidad.

En el algoritmo simplex se cuenta con los metodos clasicos de variables de holgura,

penalizacion y de dos fases para determinar la solucion inicial, mientras que para el

algoritmo dual simplex estos metodos no pueden ser utilizados. En el presente tra-

bajo se desarrolla algunos metodos que permitan obtener una solucion inicial para

el algoritmo dual simplex y se muestra que uno de estos metodos es el mas eficiente.

La presentacion de este trabajo esta dividido en 4 capıtulos, en el primero se presen-

ta los conceptos teoricos fundamentales de la teorıa de programacion lineal. En el

capıtulo 2, se presenta el mejoramiento de una solucion y los conceptos basicos del

metodo simplex. En el capıtulo 3, se plantea el problema dual y se presenta el meto-

do dual simplex para problemas generales. Finalmente, en el capıtulo 4, se presentan

los metodos de inicializacion para el algoritmo dual simplex y su implementacion en

matlab.

x

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 12: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Capıtulo 1

Preliminares

1.1. Modelo de programacion lineal

El objetivo principal de los problemas de optimizacion es la solucion de los problemas

del tipo: min f(x)

s.a : x ∈ S ⊆ Rn,(1.1)

donde f es la funcion objetivo y el conjunto S es definido por las restricciones im-

puestas sobre el vector de decision x.

El problema (1.1) se lee como: “Encontrar (si existe) un elemento de S donde la

funcion objetivo f alcanza su valor mınimo”.

Un problema de programacion lineal se puede formular como:

(PL)

min z = f(x) = cTx

s.a: Ax ≤ b

x ≥ 0,

donde: A es un matriz de m× n, b ∈ Rm y x, c ∈ Rn,Una de las formas para resolver los problemas de programacion lineal es usando el

metodo simplex el cual fue disenado para resolver los problemas lineales en su forma

estandar. La forma estandar se obtiene del problema (PL) adicionandole variables

de holgura a las restricciones, y es dada por:

1

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 13: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

(PLE)

min z = f(x) = cTx

s.a: Ax = b

x ≥ 0,

Definicion 1.1 Cualquier punto x, que satisface las restricciones del problema (PLE)

es una solucion factible y al conjunto de soluciones factibles, denotado por S = {x :

Ax = b, x ≥ 0}, se denomina region factible.

Definicion 1.2 Una solucion optima del problema (PLE) es aquella o cada una de

aquellas soluciones factibles donde la funcion objetivo alcanza el mınimo. Es decir,

x∗ es solucion optima si cTx∗ ≤ cTx, ∀x ∈ S.

Los problemas lineales plantean la busqueda de una solucion factible x∗, de manera

que f(x∗) sea el menor posible. Tal busqueda puede concluir con uno de los siguientes

resultados.

a. Problema no factible: Cuando S = ∅ y en tal caso

mınx∈S

f(x) = +∞.

b. Problema no acotado: Cuando existe una solucion que haga descender infini-

tamente a la funcion objetivo; es decir, cuando para cualquier valor real M

siempre existe un x ∈ S tal que f(x) < M . En tal caso

mınx∈S

f(x) = −∞.

c. Problema con valor optimo: Cuando existe x∗ ∈ S tal que f(x∗) ≤ f(x) ,

∀x ∈ S. En tal caso

f(x∗) = mınx∈S

cTx,

y x∗ es la solucion optima global, siendo no necesariamente unica en S con

esta propiedad.

1.2. Algunos resultados de analisis convexo

A partir del planteamiento del problema de programacion lineal estudiaremos algu-

nos resultados del analisis convexo, incluyendo los conceptos de conjuntos convexos

y conjuntos poliedricos.

2

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 14: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Definicion 1.3 Un conjunto no vacıo S ⊂ Rn es convexo si y solo si ∀x, y ∈ S se

tiene λx+ (1− λ)y ∈ S, ∀λ ∈ [0, 1].

Ejemplo 1.1 El conjunto

S = {x ∈ Rn : Ax ≤ b, Am×n, b ∈ Rm}

es convexo

Definicion 1.4 Sea el conjunto no vacıo S ⊂ Rn, el punto x ∈ Rn es combinacion

convexa de puntos de S si existe un conjunto finito de puntos {xi}mi=1 ⊂ S tal que

x =m∑i=1

λixi donde λi ∈ [0,1], ∀ i = 1, . . . ,m ym∑i=1

λi = 1.

Definicion 1.5 Un hiperplano H en Rn es una coleccion de puntos de la forma

H = {x ∈ Rn : pTx = α}

donde p es un vector no nulo en Rn y α es un escalar.

Figura 1.1: Hiperplano H

Un hiperplano H define dos semiespacios cerrados de la forma

H+ = {x ∈ Rn : pTx ≥ α}

H− = {x ∈ Rn : pTx ≤ α}

y dos semiespacios abiertos {x ∈ Rn : pTx > α} y {x ∈ Rn : pTx < α}

3

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 15: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 1.2: Semiespacios H+ y H−

Definicion 1.6 Sea S un conjunto no vacıo en Rn y sea x ∈ ∂S, donde ∂S denota

la frontera de S. Un hiperplano H = {x ∈ Rn : pT (x − x) = 0} es llamado un

hiperplano soporte de S en x si se cumple solo una de las siguientes condiciones:

i. S ⊆ H+, es decir, pT (x− x) ≥ 0, ∀x ∈ S.

ii. S ⊆ H−, es decir, pT (x− x) ≤ 0, ∀x ∈ S.

Definicion 1.7 Sea S ⊂ Rn no vacıo y H un hiperplano soporte de S. Denomina-

remos puntos soporte a los puntos del conjunto S ∩H.

Definicion 1.8 Un conjunto no vacıo C ∈ Rn es llamado un cono con vertice cero

si para cualquier x ∈ C,λx ∈ C, ∀λ ≥ 0. Si ademas C es convexo, entonces C es

llamado un cono convexo.

Observacion: Si x ∈ C, donde C es cono, entonces la semirecta que contiene al

origen y pasa por el punto x debe estar contenida en el cono C.

Teorema 1.1 Si L1, L2, . . . , Lm ∈ Rm son linealmente independientes y L ∈ Rm es

combinacion lineal de ellas; es decir,

L =m∑i=1

λiLi

con λk 6= 0, entonces L1, . . . , Lk−1, Lk+1, . . . , Lm, L son linealmente independientes

Prueba.1

1Para su demostracion ver [1]

4

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 16: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

1.2.1. Conjuntos poliedricos, puntos extremos y direcciones

extremas

Conjunto poliedrico

Definicion 1.9 (Conjunto poliedrico)

Un conjunto S en Rn es un conjunto poliedrico si S es la interseccion de un numero

finito de semiespacios cerrados; es decir,

S = {x ∈ Rn : pTi x ≤ αi ∀ i, . . . ,m},

donde pi ∈ Rn, pi 6= 0, αi ∈ R, ∀ i = 1, . . . ,m.

Observacion

� Un conjunto poliedrico es un conjunto cerrado y convexo.

� Como una ecuacion puede representarse por dos inecuaciones, entonces un

conjunto poliedrico puede ser representado por un numero finito de ecuaciones

y/o inecuaciones.

Puntos extremos y direcciones extremas

Definicion 1.10 Sea S ⊂ Rn un conjunto convexo no vacıo. Un vector x ∈ S es

un punto extremo de S si x = λx1 + (1 − λ)x2 con x1, x2 ∈ S y λ ∈ (0, 1) implica

que x = x1 = x2; es decir, un punto extremo es aquel que no se puede escribir como

combinacion convexa de dos puntos diferentes de S.

Figura 1.3: Se puede observar que x1 es punto extremo, mientras que x2 y x3 no lo son.

El concepto de puntos extremos juega un papel muy importante dentro de la progra-

macion lineal, debido a que cada punto extremo es una posible solucion del problema

que se esta tratando.

5

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 17: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Definicion 1.11 Sea S ⊂ Rn un conjunto cerrado y convexo. Un vector d ∈ Rn,

distinto de cero, es una direccion de S si para todo x ∈ S se tiene que x + λd ∈S, ∀λ ≥ 0.

Figura 1.4: d es una direccion de S.

Observacion : Por la definicion dada de “direccion”, el conjunto debe ser no acotado

para que tenga al menos una direccion.

Definicion 1.12 Dos direcciones d1 y d2 de S son distintas si d1 6= αd2 para cual-

quier α > 0.

Definicion 1.13 Una direccion d de S es una direccion extrema si no se puede

escribir como combinacion lineal positiva de dos direcciones distintas; es decir, si

d = λ1d1 + λ2d2 para λ1, λ2 > 0, entonces d1 = αd2 para algun α > 0.

Figura 1.5: d1 y d2 son direcciones extremas de S.

6

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 18: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Caracterizacion de puntos extremos y direcciones extremas

Teorema 1.2 (Caracterizacion de puntos extremos)

Sea S = {x ∈ Rn : Ax = b, x ≥ 0}, donde A es una matriz de m× n con rango m y

b ∈ Rm. Un punto x es un punto extremo de S si y solo si A puede ser descompuesta

en la forma [B N ] tal que

x =

xB

xN

=

B−1b

0

,donde B es una matriz m×m invertible tal que B−1b ≥ 0.

Prueba.

⇐] Como B−1b ≥ 0, entonces x =

B−1b

0

≥ 0, ademas

Ax =[B N

] B−1b

0

= BB−1b = b,

por lo tanto x ∈ S.

Ahora supongamos que x = λx1 + (1− λ)x2, donde x1, x2 ∈ S y λ ∈ 〈0, 1〉.

Sea x1 =

x11

x12

y x2 =

x21

x22

,

luego B−1b

0

= λ

x11

x12

+ (1− λ)

x21

x22

,ya que x12 ≥ 0, x22 ≥ 0 y λ > 0, se tiene que x12 = x22 = 0.

En consecuencia, x1 =

x11

0

y x2 =

x21

0

.

Por otro lado

Ax1 = b,[B N

] x11

0

= b,

Bx11 = b,

x11 = B−1b.

De forma similar x12 = B−1b; y con esto se tiene que x = x1 = x2, por lo tanto, x

es un punto extremo.

7

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 19: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

⇒] x es un punto extremo de S. Se debe probar que A = [B N ], B es invertible y

x =

B−1b

0

≥ 0

En efecto. Por hipotesis x ∈ S ⊂ Rn, sin perdida de generalidad supongamos

que x = (x1, . . . , xk, 0, . . . , 0)T , donde x1, . . . , xk son positivos con k ≤ n.

Luego

Ax = b,

[A1 A2 · · · An

]

x1...

xk

0...

0

= b,

A1x1 + A2x2 + · · ·+ Akxk = b,

entonces

[A1 A2 · · · Ak

]x1...

xk

= b. (1.2)

Probemos que {A1, A2, . . . , Ak} son linealmente independiente.

Supongamos que {A1, A2, . . . , Ak} son linealmente dependiente; es decir, existen

escalares λ1, λ2, . . . , λk no todos ceros tal que

λ1A1 + · · ·+ λkAk = 0.

Sean λ = (λ1, λ2, . . . , λk, 0, . . . , 0)T ∈ Rn y α > 0, definamos

x1 = x+ αλ y x2 = x− αλ,

donde α es escogido de tal forma que x1 ≥ 0 y x2 ≥ 0.

Notar que

Ax1 = Ax+ αAλ = b+ αk∑i=1

λiAi = b, puesk∑i=1

λiAi = 0

8

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 20: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

y de forma similar, Ax2 = b.

Por lo tanto, x1, x2 ∈ S y como α > 0 y λ 6= 0, entonces x1 6= x2. Ademas

x = 12x1 + 1

2x2, lo que indica que x no es punto extremo; contradiciendo ası la

hipotesis, por lo tanto {A1, A2, . . . , Ak} es un conjunto linealmente independiente.

Puesto que ran(A) = m, entonces hay m columnas linealmente independientes lo

que indica que k ≤ m. Si k = m, entonces de la ecuacion (1.2) se tiene

[A1 A2 · · · Ak

]x1...

xk

= b,

BxB = b,

xB = B−1b,

pues B es invertible.

Si k < m, entonces se pueden escoger m−k de n−k columnas tal que ellas, junto con

las k primeras columnas forman un conjunto de vectores linealmente independientes.

De este modo podemos formar la matriz B = [A1 . . . Ak Ak+1 . . . Am] invertible.

Es decir, A podemos experesar como A = [B N ], donde B es una matriz invertible

de m×m y ademas x =

B−1b

0

≥ 0, puesto que xi > 0, ∀ i = 1, . . . , k. 2

Corolario 1.2.1 El numero de puntos extremos de S es finito.

Prueba.2

Teorema 1.3 (Existencia de puntos extremos)

Sea un conjunto poliedrico no vacıo de la forma S = {x ∈ Rn : Ax = b, x ≥ 0},donde A es una matriz de m×n con rango m y b ∈ Rm. Entonces S tiene al menos

un punto extremo.

Prueba.3

Teorema 1.4 (Caracterizacion de direcciones extremas)

Sea S = {x ∈ Rn : Ax = b, x ≥ 0} no vacıo, donde A es una matriz de m × n

con rango m y b ∈ Rm. Un vector d es una direccion extrema de S si y solo si A

2Para su demostracion ver [2]3Para su demostracion ver [2]

9

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 21: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

puede descomponerse en [B N ] tal que B−1aj ≤ 0, para alguna columna aj de N

y d es un multiplo positivo de d =

−B−1ajej

, donde ej es un vector de n − m

componentes de valor cero excepto en la posicion j que tiene valor 1.

Prueba.

⇐] Como B−1aj ≤ 0, entonces d =

−B−1ajej

≥ 0,

ademas

Ad =[B N

] −B−1ajej

= −BB−1aj +Nej = −aj + aj = 0,

por lo tanto d es una direccion.

Ahora supongamos que

d = λ1d1 + λ2d2,

donde λ1, λ2 > 0 y d1, d2 son direcciones de S. Notar que d tiene m− n− 1 compo-

nentes iguales a cero, entonces las correspondientes componentes de d1 y d2 tambien

deben ser iguales a cero, pues d1 ≥ 0 , d2 ≥ 0.

Ası d1 y d2 pueden ser escritos como

d1 = α1

d11

ej

, d2 = α2

d21

ej

,donde α1 > 0 y α2 > 0. Como d1 y d2 son direcciones, entonces Ad1 = Ad2 = 0.

Luego

Ad1 = 0,[B N

] α1d11

α1ej

= 0,

α1Bd11 + α1Nej = 0,

α1Bd11 + α1aj = 0,

d11 = −B−1aj.

De forma similar se tiene que d21 = −B−1aj. Ası se tiene que d1 y d2 no son distintos,

el cual implica que d es una direccion extrema. Ya que d es un multiplo positivo de

d, se tiene que d tambien es una direccion extrema.

10

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 22: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

⇒] Supongamos que d es una direccion extrema de S. Sin perdida de generalidad,

supongamos que

d = (d1, . . . , dk, 0, . . . , 0, dj, 0, . . . , 0)T ,

donde di > 0, para i = 1, . . . , k y para i = j.

Luego, A1, A2, . . . , Ak son linealmente independientes.

En efecto. Por contradiccion, supongamos que esto no se cumple, entonces existen

escalares λ1, . . . , λk no todos ceros tales que

k∑i=1

λiAi = 0.

Sea λ = (λ1, . . . , λk, 0, . . . , 0)T ∈ Rn y escojamos α > 0 tal que

d1 = d+ αλ y d2 = d− αλ

sean no negativos.

Notar que

Ad1 = Ad+ αAλ = 0 + αk∑i=1

Aiλi = 0 + α0 = 0.

De forma similar Ad2 = 0. Puesto que d1, d2 ≥ 0, se tiene que d1 y d2 son direcciones

de S. Notar tambien que d1 y d2 son distintos, puesto que α > 0 y λ 6= 0.

Ademas, d = 12d1 + 1

2d2, lo que implica que d no es una direccion extrema, contradi-

ciendo ası la hipotesis. Por lo tanto A1, A2, . . . , Ak son linealmente independientes.

Como ran(A) = m, se tiene que k ≤ m, entonces existe m−k vectores en el conjunto

de vectores {Ai : i = k+ 1, . . . , n; i 6= j}, el cual junto con A1, A2, . . . , Ak forman un

conjunto de vectores linealmente independiente. Sin perdida de generalidad, supon-

gamos que esos vectores son Ak+1, . . . , Am. Denotar a [A1 A2 . . . Am] por B y notar

que B es invertible. Ası

0 = Ad = Bd+ aj dj, (1.3)

donde d es un vector de las m primeras componentes de d.

De la ecuacion (1.3) se tiene que d = −djB−1aj y por lo tanto d = dj

−B−1ajej

.

Ademas, como d ≥ 0 y dj > 0 se tiene que B−1aj ≤ 0, completando ası la prueba.2

Corolario 1.2.2 El numero de direcciones extremas de S es finito.

Prueba.4

4Para su demostracion ver [2]

11

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 23: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Teorema 1.5 (Teorema de Representacion)

Sea S un conjunto poliedrico no vacıo de la forma S = {x ∈ Rn : Ax = b, x ≥ 0},donde A es una matriz de m × n con rango m y b ∈ Rm. Sean x1, x2, , . . . , xk los

puntos extremos de S y d1, d2, , . . . , dl las direcciones extremas de S. Entonces x ∈ Ssi y solo si x puede ser escrito como

x =k∑i=1

λixi +l∑

j=1

µjdj

k∑i=1

λi = 1

λi ≥ 0, ∀ i = 1, . . . , k

µj ≥ 0, ∀ j = 1, . . . , l

Prueba.5

En la siguiente figura se muestra la interpretacion de este teorema.

Figura 1.6: En la ilustracion se observa que x = λx1 + (1− λ)x3 + µd2.

Teorema 1.6 (Existencia de direcciones exremas)

Sea S un conjunto poliedrico no vacıo de la forma S = {x ∈ Rn : Ax = b, x ≥ 0},donde A es una matriz de m×n con rango m y b ∈ Rm. Entonces S tiene al menos

una direcion extrema si y solo si S es no acotado.

Prueba.

⇒] Si S tiene al menos una direccion extrema. Probar que S es no acotada.

5Para su demostracion ver [2]

12

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 24: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

En efecto. Por el absurdo, supongamos que S es acotado, entonces

∃ k > 0 : ‖x‖ ≤ k, ∀x ∈ S.

Sea d una direccion extrema, entonces d es una direccion. Por tanto, para cualquier

x ∈ S se tiene x+ αd ∈ S, ∀α ≥ 0.

Sea la sucesion (xn)n∈IN ⊂ S tal que xn = x + nd, para algun x ∈ S. Como S es

acotada, entonces (xn)n∈IN es acotada. Entonces existe una subsucesion (xn)n∈K⊂IN

de (xn)n∈IN que es convergente, entonces (xn)n∈K⊂IN es una sucecion de Cauchy; es

decir:

∀ ε > 0, ∃n0 ∈ K ⊂ IN : ‖xm − xs‖ < ε, ∀m, s ≥ n0.

En particular para m = m0 > n0 y s = m0 + r, r ≥ 1, s ∈ K, entonces

‖xm0 − xm0+r‖ < ε.

Por otro lado:

‖xm0+r‖ = ‖xm0+r − xm0 + xm0‖ ≤ ‖xm0+r − xm0‖+ ‖xm0‖ < ε+ ‖xm0‖,

entonces

‖xm0+r‖ < ε+ ‖xm0‖. (1.4)

Ademas

(m0+r)‖d‖ = ‖(m0+r)d‖ = ‖x+(m0+r)d−x‖ ≤ ‖x+(m0+r)d‖+‖x‖ = ‖xm0+r‖+‖x‖,

entonces

(m0 + r)‖d‖ ≤ ‖xm0+r‖+ ‖x‖. (1.5)

Luego, de las ecuaciones (1.4) y (1.5) se tiene:

(m0 + r)‖d‖ ≤ ‖xm0+r‖+ ‖x‖ < ε+ ‖xm0‖+ ‖x‖,

entonces

‖x‖ > (m0 + r)‖d‖ − (ε+ ‖xm0‖).

Como (m0 + r)‖d‖− (ε+‖xm0‖)→∞, cuando r →∞ entonces ‖x‖ → ∞, hecho

que lleva a una contradiccion por haber supuesto que S es acotado. Por lo tanto, S

es no acotado.

⇐] Sea S no acotado. Probar que S tiene al menos una direccion extrema.

13

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 25: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

En efecto. Por el absurdo, supongamos que S no posee direcciones extremas, en-

tonces por el teorema (1.5) se tiene que cualquier elemento de S se puede representar

como

x =k∑i=1

λixi,

donde λi ∈ [0, 1], xi ∈ S, ∀ i = 1, . . . , k yk∑i=1

λi = 1.

Ahora, usando desigualdad triangular se tiene:

‖x‖ = ‖k∑i=1

λixi‖ ≤k∑i=1

λi‖xi‖.

Sea t = max1≤i≤k

‖xi‖, entonces ‖xi‖ ≤ t, ∀ i = 1, . . . , k. Luego

‖x‖ ≤k∑i=1

λi‖xi‖ ≤k∑i=1

λit = tk∑i=1

λi = t.

Ası, ‖x‖ ≤ t, ∀x ∈ S, entonces S es acotado. Contradiciendo ası la hipotesis. Por

lo tanto S posee al menos una direccion extrema. 2.

14

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 26: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Capıtulo 2

Programacion lineal

Considere el sistema Ax = b, con x ≥ 0, en donde A es una matriz de m×n y b ∈ Rm.

Suponga que ran(A, b) = ran(A) = m. Despues de un posible reordenamiento de

las columnas de A, se tiene A = [B N ], en donde B es una matriz invertible de

orden m×m y N es una matriz de orden m× (n−m).

Esta descomposicion de la matriz A genera una descomposicion de x en x =

xB

xN

.

Ası Ax = b queda expresado como

BxB +NxN = b (2.1)

Multiplicando a (2.1) por B−1, puesto que B es invertible, se obtiene

xB = B−1b+B−1NxN (2.2)

Entonces para cualquier xN y xB dado en (2.2) se tiene que x =

xB

xN

satisface

Ax = b. Particularmente, si xN = 0 y xB = B−1b se tiene que x =

B−1b

0

tambien satisface Ax = b.

Definicion 2.1 La solucion x =

xB

xN

del sistema Ax = b, en donde

xB = B−1b y xN = 0,

se denomina solucion basica del sistema. Si xB = B−1b ≥ 0, entonces el vector

x =

B−1b

0

se denomina solucion basica factible.

15

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 27: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

La matriz B se denomina matriz basica (o simplemente base) y N se denomima

matriz no basica. Las componentes de xB se denominan variables basicas y las com-

ponentes de xN se denominan variables no basicas.

Definicion 2.2 Si xB = B−1b > 0, entonces x =

B−1b

0

se denomina solucion

basica factible no degenerada.

Definicion 2.3 Si por lo menos una componente de xB = B−1b es igual a cero,

entonces x =

B−1b

0

se denomina solucion basica factible degenerada.

Teorema 2.1 (Condiciones de optimalidad de la programacion lineal)

Considere el siguiente problema de programacion lineal

min cTx

s.a. Ax = b

x ≥ 0,

(2.3)

donde c ∈ Rn, A es una matriz de m × n con rango m y b ∈ Rm. Supongamos que

la region factible F = {x ∈ Rn : Ax = b, x ≥ 0} es no vacıa y sean x1, x2, . . . , xk los

puntos extremos y d1, d2, . . . , dl las direcciones extremas de la region factible F . Una

condicion necesaria y suficiente para la existencia de una solucion optima finita es

que cTdj ≥ 0, ∀ j = 1, . . . , l. Si este es el caso, entonces existe un punto extremo

xj que resuelve el problema.

Prueba.

Por el teorema de representacion se tiene que todo elemento de F se puede expresar

como

x =k∑i=1

λjxj +l∑

j=1

µjdj (2.4)

k∑i=1

λi = 1

λi ≥ 0, ∀ i = 1, . . . , k

µj ≥ 0, ∀ j = 1, . . . , k,

16

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 28: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

reemplazando (2.4) en el problema (2.3) se tiene

mink∑i=1

(cTxj)λj +l∑

j=1

(cTdj)µj

s.a.k∑i=1

λi = 1

λi ≥ 0, ∀ i = 1, . . . , k

µj ≥ 0, ∀ j = 1, . . . , l.

⇒] Si existe una solucion optima finita para el problema (2.3). Se probara que

cTdj ≥ 0 ∀ j = 1, . . . , l.

En efecto. Supongamos que cTdj � 0, para algun j; es decir, existe un j0 tal que

cTdj0 < 0.

Como dj0 es una direccion extrema, entonces x = x0+µdj0 ∈ F, ∀x0 ∈ F , ∀µ > 0.

Ası cTx = cTx0 + µcTdj0 , luego

lımµ→∞

cTx = lımµ→∞

(cTx0 + µcTdj0 )

= cTx0 + cTdj0 lımµ→∞

µ

= −∞,

puesto que cTdj0 < 0.

Entonces cTx no esta acotada inferiormente, lo cual contradice la hipotesis.

⇐] Si cTdj ≥ 0, ∀ j = 1, . . . , l. Probar que existe una solucion optima finita para el

problema (2.3); es decir, ∃x∗ ∈ F : cTx∗ ≤ cTx, ∀x ∈ FEn efecto. Sean µj ∈ R arbitrarios tal que µj ≥ 0, ∀ j = 1, . . . , l,

entoncesl∑

j=1

µjcTdj ≥ 0.

Sumandok∑j=1

λjcTxj en ambos miembros de la ultima desigualdad se tiene:

cTx =k∑j=1

λjcTxj +

l∑j=1

µjcTdj ≥

k∑j=1

λjcTxj. (2.5)

Sea x∗ = xj0 tal que cTx∗ = cTxj0 = mın1≤j≤k

cTxj.

De (2.5) se tiene:

cTx ≥k∑j=1

λjcTxj ≥

k∑j=1

λjcTx∗ = cTx∗

k∑j=1

λj = cTx∗.

17

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 29: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Ası cTx∗ ≤ cTx, ∀x ∈ F , donde x∗ = xj0 es un punto extremo.

Por lo tanto, existe una solucion optima finita para el problema (2.3) y ademas es

un punto extremo. 2

2.1. Mejoramiento de una solucion basica factible

Obtener todas las soluciones basicas factibles para evaluarlas en la funcion objetivo

y luego compararlas para determinar la solucion optima no es una tarea que se re-

comiende en la practica. El metodo simplex proporciona una estrategia que permite

mejorar, si es posible, una solucion basica factible dada.

Consideremos el problena de programacion lineal

min f(x)

s.a. Ax = b

x ≥ 0,

(2.6)

donde A es una matriz con rango m.

Suponga que se tiene una solucion basica factible

B−1b

0

cuyo valor objetivo z0

esta dado por

z0 = c

B−1b

0

=[cB cN

] B−1b

0

= cBB−1b. (2.7)

Sea

xB

xN

, donde xB y xN denotan, respectivamente, al conjunto de variables basi-

cas y al conjunto de variables no basicas para la base dada. Entonces, la factibilidad

requiere que

xB ≥ 0 , xN ≥ 0,

y

b = Ax = BxB +NxN , (2.8)

18

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 30: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

como B es invertible, entonces multiplicando (2.8) por B−1 se tiene:

xB = B−1b−B−1NxN

= B−1b−∑j∈R

B−1ajxj (2.9)

= b−∑j∈R

yjxj, (2.10)

donde R es el conjunto actual de ındices de las variables no basicas.

De las ecuaciones (2.7) y (2.9) y denotando como z al valor de la funcion objetivo,

se obtiene:

z = cTx =[cB cN

] xB

xN

,= cBxB + cNxN ,

= cB

(B−1b−

∑j∈R

B−1ajxj

)+ cNxN ,

= cBB−1b−

∑j∈R

cBB−1ajxj +

∑j∈R

cjxj,

= z0 −∑j∈R

(cBB−1aj − cj)xj.

Entonces

z = z0 −∑j∈R

(zj − cj)xj, (2.11)

donde zj = cBB−1aj para toda variable no basica y a zj − cj se le llama costo

reducido de xj.

La ecuacion (2.11) sirve como guıa para mejorar una solucion basica factible actual.

Debido a que como se desea minimizar z, conviene aumentar el valor de xj desde

su nivel presente igual a cero, siempre que zj − cj > 0. Si zj − cj ≤ 0, ∀ j ∈ R,

entonces xj = 0, ∀ j ∈ R y xB = b es optimo para (2.6), puesto que, de (2.11) se

tendrıa que z0 ≤ z.

Teniendo esto en cuenta se puede aplicar la siguiente regla:

Se fijan todos los valores de las variables no basicas xj en cero, excepto una de ellas;

supongamos que es la variable no basica xk, cuyo coeficiente zk−ck es el mas positivo

de todos los zj − cj. Por lo tanto, de (2.11) se tiene que el nuevo valor de la funcion

objetivo estarıa dado por

z = z0 − (zk − ck)xk. (2.12)

19

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 31: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Debido a que zk−ck > 0 y se desea minimizar z, es conveniente aumentar el valor de

xk tanto como sea posible. Conforme xk crece, las variables basicas deben modificarse

de acuerdo a la ecuacion (2.10) obteniendose ası:

xB = b− ykxk , donde yk = B−1ak

xB1

...

xBr

...

xBm

=

b1...

br...

bm

y1k...

yrk...

ymk

xk. (2.13)

Si yik ≤ 0, entonces xBicrece cuando xk crece y ası xBi

continua siendo no negativo.

Si yik > 0, entonces xBidecrece cuando xk crece. A fin de satisfacer la no negatividad

de las variables basicas, xk se incrementa hasta el primer punto en que una variable

basica xBr se hace cero. Al analizar la ecuacion (2.13), resulta entonces que la primera

variable basica que se vuelve cero corresponde al mınimo debiyik

para yik positivo.

Con mas precision, es posible incrementar xk hasta

xk =bryrk

= mın1≤i≤m

{biyik

: yik > 0

}. (2.14)

Cuando no hay degeneracion, br > 0 y entonces xk =bryrk

> 0. Por la ecuacion

(2.12) y con el hecho de que zk−ck > 0, se concluye que z < z0 y la funcion objetivo

mejora estrictamente.

Cuando xk crece desde el nivel cero hastabryrk

se obtiene una nueva solucion basica

factible. Al sustituir xk =bryrk

en la ecuacion (2.13) se obtiene el siguiente punto:xBi

= bi −yikyrk

br , ∀ i = 1, . . . ,m

xk =bryrk

Todas las demas xj son cero .

(2.15)

Con base en la ecuacion (2.15), xBr = 0 y entonces cuando muchom variables son po-

sitivas. Las columnas correspondientes enA son aB1 , aB2 , . . . , aBr−1 , ak, aBr+1 , . . . , aBm .

Observe que estas columnas son linealmente independientes, ya que yrk 6= 0. Por con-

siguiente, el punto dado por la ecuacion (2.15) es una solucion basica factible.

En resumen, se ha descrito algebraicamente una iteracion; es decir, el proceso de

20

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 32: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

transformacion de una base a una base adyacente. Lo anterior se lleva a cabo incre-

mentando el valor de una variable no basica xk con zk − ck positivo y ajustando las

variables basicas actuales. En el proceso, la variable xBr se hace cero. Por tanto, la

variable xk entra a la base y xBr sale de la base. Cuando no hay degeneracion, el va-

lor de la funcion objetivo decrece estrictamente y ası las soluciones basicas factibles

generadas son distintas. Dado que solo existe un nunero finito de soluciones basicas

factibles, entonces el procediemiento debe terminar en un numero finito de pasos.

2.2. Optimalidad y no acotamiento

El procedimiento de introducir una variable en la base y sacar otra variable de la

base conduce al proceso de cambio de una base a una base adyacente. Los criterios

para que una variable pueda entrar y salir de la base son los siguientes:

1. Entrada: xk puede entrar si zk − ck > 0.

2. Salida: xB puede salir si

xk =bryrk

= mın1≤i≤m

{biyik

: yik > 0

}Ahora surgen dos preguntas:

i. ¿ Que ocurre si todas las variables no basicas xj tienen zj − cj ≤ 0 ?. En este

caso, se ha obtenido el optimo.

ii. ¿ Que ocurre si zj − cj > 0, de modo que xk es elegible para entrar a la base,

pero no es posible encontrar componentes positivas yik, i = 1, . . . ,m; es decir,

yk ≤ 0 ? En este caso, el valor optimo de la funcion objetivo es no acotado; es

decir,

f(x) = min cTx = −∞.

Ahora veremos con mas detalle cada uno de los casos.

21

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 33: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

2.3. Terminacion con una solucion optima

Consideremos el siguiente problema en donde A es una matriz de orden m× n con

rango m min z = cTx

s.a: Ax ≤ b

x ≥ 0.

Suponga que x∗ es una solucion basica factible con base B; es decir, x∗ =

B−1b

0

y sea z∗ = cTx∗ = cBB

−1b el valor de la funcion objetivo en x∗.

Ademas suponga que zj−cj ≤ 0, ∀ j ∈ R, de modo que ninguna variable no basica

es elegible para entrar a la base. Sea x cualquier solucion basica factible con valor

objetivo z. Entonces por la ecuacion (2.11) se tiene

z∗ − z =∑j∈R

(zj − cj)xj. (2.16)

Como zj − cj ≤ 0 y xj ≥ 0, ∀ j ∈ R, entonces z∗ ≤ z y por lo tanto x∗ es una

solucion basica factible optima.

2.4. Soluciones optimas unicas y alternativas

Es posible obtener mas informacion de la ecuacion (2.16).

� Si zj − cj < 0, ∀ j ∈ R, entonces la solucion optima actual es unica. Para ver lo

anterior, sea x cualquier solucion factible distinta de x∗. Luego, existe por lo menos

una componente no basica xj que es positiva, por que si todas las componentes

no basicas son ceros, entonces x no podra ser distinta de x∗. Ası de la ecuacion

(2.16) se tiene que z∗ < z. Y por consiguiente, x∗ es la unica solucion optima.

� Si zj− cj ≤ 0, ∀ j ∈ R, pero zk− ck = 0 para al menos una variable no basica xk.

Al incrementear xk (y suponiendo que no hay degeneracion), se obtienen puntos

distintos de x∗ pero que tienen el mismo valor objetivo. El proceso se incrementar

xk desde el nivel cero hasta que es bloqueada por una variable basica genera una

infinidad de soluciones optimas alternativas.

22

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 34: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

No acotamiento

Suponga que se tiene una solucion basica factible del sistema Ax = b, x ≥ 0 con

valor objetivo z0.

Ahora se considerara el caso en que se encuentra una variable no basica xk, con

zk − ck > 0 y yk ≤ 0. De la ecuacion (2.11) se tiene

z = z0 − (zk − ck)xk.

Como se desea minimizar el objetivo z y dado que zj− cj > 0, conviene incrementar

indefinidamente el valor de xk lo cual hara que z se vaya a −∞. La razon por la

cual no fue posible hacer esto antes es que el incremento en el valor de xk estaba

bloqueado por una variable basica; es decir, le impone un tope a xk. Recordemos

que de la ecuacion (2.13) se tiene

xB = B−1b− ykxk

de modo que, como yk ≤ 0, entonces xk se puede incrementar indefinidamente sin

que ninguna variable basica se haga negativa.

En resumen, si se tiene una solucion basica factible con zk − ck > 0 para alguna

variable no basica xk y ademas yk ≤ 0, entonces el valor optimo de la funcion

objetivo es no acotado; es decir,

f(x) = min cTx = −∞.

Este valor se obtiene al incrementar xk indefinidamente y ajustar los valores de las

variables basicas actuales; esto, a su vez, es equivalente a efectuar un desplazamiento

a lo largo del rayo

B−1b

0...

0...

0

+ xk

−yk0...

1...

0

, xk ≥ 0

=

B−1b

0

+ xk

−ykek

, xk ≥ 0

.

Observemos que el vertice del rayo es la solucion basica factible actual

B−1b

0

y

la direccion del rayo es d =

−ykek

y ademas es una direccion extrema.

23

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 35: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Notar que

cTd =[cB cN

] −ykek

= −cByk + ck

= −zk + ck.

Como zk − ck > 0, entonces cTd < 0, que es la condicion necesaria y suficiente para

no acotamiento.

2.5. El metodo simplex

Dadas una solucion basica factible y su base correspondiente, es posible mejorar la

solucion si zk−ck > 0 para alguna variable no basica xk, o bien, el proceso se detiene

en un punto optimo si zj − cj ≤ 0 para todas variables no basicas. Si zk − ck > 0 y

el vector yk contiene por lo menos una componente positiva, entonces el incremento

de xk sera bloqueado por una de las variables basicas presentes, la cual se vuelve

cero y sale de la base. Por otra parte, si zk − ck > 0 y yk ≤ 0 entonces xk se puede

incrementar indefinidamente y la solucion optima es no acotada con valor (−∞).

Esto precisamente es lo que hace el metodo simplex. [3]

2.5.1. El metodo simplex en formato de tableau

(Problema de minimizacion)

PASO INICIAL

Se encuentra una solucion basica factible inicial con base B y se forma el siguiente

tableau inicial.

z xB xN LD

z 1 0 cBB−1N− cN cBb

xB 0 I B−1N b

PASO PRINCIPAL

Sea zk−ck = max{zj−cj : j ∈ R}. Si zk−ck ≤ 0, entonces el proceso ha terminado;

24

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 36: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

la solucion actual es optima. En caso contrario, se analiza yk. Si yk ≤ 0, entonces

el proceso ha terminado; la solucion optima es no acotada. Si yk � 0, entonces el

ındice r se determina como sigue:

bryrk

= min1≤i≤m{ biyik : yik > 0}

El tableau se actualiza pivoteando sobre yrk; se actualizan las variables basicas y no

basicas, en donde xk entra a la base y xBr sale de la base. Se repite el paso principal.

2.5.2. El metodo simplex para variables acotadas

En casi todos lo problemas practicos las variables suelen estar acotadas. Una variable

tıpica xj esta acotada inferiormente por lj y superiormente por uj, donde lj < uj.

Si se denotan por l y u los vectores cota inferior y cota superior respectivamente,

entonces se obtiene el siguiente programa lineal con variables acotadas.

(PLV A)

min cTx

s.a: Ax = b

l ≤ x ≤ u,

Definicion 2.4 Considere el sistema Ax = b y l ≤ x ≤ u, en donde A es una matriz

de m × n con rango m. La solucion x de las ecuaciones Ax = b es una solucion

basica de este sistema si A puede descomponerse en [B N1 N2], en donde la

matriz (cuadrada) B es de rango m de modo que con x descompuesto de manera

correspondiente en (xB, xN1 , xN2) se tiene xN1 = lN1, xN2 = uN2, y por consiguiente,

xB = B−1b − B−1N1lN1 − B−1N2uN2. Ademas, si lB ≤ xB ≤ uB , entonces se dice

que x es una solucion basica factible. La matriz B se denomina base, xB son las

variables basicas, y xN1 y xN2 son las variables no basicas en sus lımites inferior y

superior, respectivamente. Se dice que la particion [B N1 N2] correspondiente a

una solucion basica (factible) es una particion basica (factible).

El vector c tambien se descompone en [cB, cN1 , cN2 ]

25

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 37: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Con estas definiciones, las condiciones de optimalidad cambian y el metodo simplex

en forma de tableau se trabaja como sigue:

PASO INICIAL

Se encuentra una solucion basica inicial. Sea xB el vector de variables basicas , y

sean xN1 y xN2 las variables no basicas en sus cotas inferior y superior, respectiva-

mente. Luego se forma el siguiente tableau en el que

z = cBB−1b+ (cN1 − cBB−1N1)lN1 + (cN2 − cBB−1N2)uN2 ; y

b = B−1b − B−1N1lN1 − B−1N2uN2 ; son los valores actuales de z y xB, respectiva-

mente.

z xB xN1 xN2 LD

z 1 0 cBB−1N1 − cN1 cBB−1N2 − cN2 z

xB 0 I B−1N1 B−1N2 b

PASO PRINCIPAL

Sean R1 y R2 los conjuntos de ındices de variables no basicas en su cota inferior y

superior, respectivamente. Sea zj = cBB−1aj ∀j ∈ R1 ∪R2, donde aj es la columna

no basica de A correspondiente al ındice j.

1.- Si zj − cj ≤ 0 ∀j ∈ R1 y zj − cj ≥ 0 ∀j ∈ R2, entonces la solucion actual

es optima. Caso contrario determinar ındice k como el ındice donde se alcanza el

siguiente maximo: max{maxjεR1{zj − cj},maxjεR2{cj − zj}}.Determinar yk = B−1ak, donde ak es la columna de A correspondiente al ındice k.

Si kεR1, ir al paso 2

Si kεR2, ir al paso 3.

2.- Si xk = lk, incrementa hasta lk +4k donde 4k = min(γ1, γ2, uk − lk).

γ1 =

min1≤i≤m{bi−lBi

yik: yik > 0} =

br−lBr

yrk, si yk � 0

∞ ... ... ... ... si yk ≤ 0

γ2 =

min1≤i≤m{uBi−bi

−yik: yik < 0} =

uBr−br−yrk

, si yk � 0

∞ ... ... ... ... si yk ≥ 0

26

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 38: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Si 4k = ∞, entonces el proceso se detiene y el valor de la solucion optima es no

acotado. En caso contrario, se actualiza el tableau para que muestre la nueva solucion

basica factible.

Si 4k = uk − lk entonces no se hace ningun cambio de la base de trabajo y xk sigue

siendo no basica, pero esta vez en su cota superior. Solo se cambia la columna LD

para reflejar el nuevo valor de la funcion objetivo y los nuevos valores de las variables

basicas. z se reemplaza por:

z = z − (zk − ck)4k. (2.17)

b se reemplaza por:

xB = b− yk4k (2.18)

Por otra parte , si 4k esta dado por γ1 o por γ2, entonces xk entra a la base y xBk

sale de la base. El tableau, excepto la columna LD, se actualiza pivotendo en yrk. La

columna LD se actualiza por separado segun las ecuaciones (2.17) y (2.18), excepto

que la r-esima componente del nuevo vector b se reemplaza por lk +4k que es el

valor de xk el cual acaba de entrar a la base.

Se repite el paso 1.

3.- Si xk = uk, decrece hasta uk −4k donde 4k = min(γ1, γ2, uk − lk).

γ1 =

min1≤i≤m{bi−lBi

−yik: yik < 0} =

br−lBr

−yrk, si yk � 0

∞ ... ... ... ... si yk ≥ 0

γ2 =

min1≤i≤m{uBi−bi

yik: yik > 0} =

uBr−bryrk

, si yk � 0

∞ ... ... ... ... si yk ≤ 0

Si 4k = ∞, entonces el proceso se detiene y el valor de la solucion optima es no

acotado. En caso contrario, se actualiza el tableau para que muestre la nueva solucion

basica factible.

Si 4k = uk − lk entonces no se hace ningun cambio de la base de trabajo y xk sigue

siendo no basica, pero esta vez en su cota inferior. Solo se cambia la columna LD

para reflejar el nuevo valor de la funcion objetivo y los nuevos valores de las variables

27

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 39: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

basicas. z se reemplaza por:

z = z + (zk − ck)4k. (2.19)

b se reemplaza por:

xB = b+ yk4k (2.20)

Por otra parte , si 4k esta dado por γ1 o por γ2, entonces xk entra a la base y xBk

sale de la base. El tableau, excepto la columna LD, se actualiza pivotendo en yrk. La

columna LD se actualiza por separado segun las ecuaciones (2.19) y (2.20), excepto

que la r-esima componente del nuevo vector b se reemplaza por uk − 4k que es el

valor de xk el cual acaba de entrar a la base.

Se repite el paso 1. 1

1Ver un ejemplo en [2] pagina 255

28

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 40: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Capıtulo 3

Metodo dual simplex

3.1. Planteamiento del problema dual

Por cada problema lineal que se resuelve existe asociado otro problema lineal que se

resuelve simultaneamente, denominado problema dual.

Forma canonica de dualidad

Suponga que el programa lineal primal esta dado en la forma:

min cTx

s.a. Ax ≥ b

x ≥ 0

(3.1)

Entonces el programa lineal dual se define como:

max bTw

s.a. ATw ≤ c

w ≥ 0

(3.2)

29

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 41: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Relaciones entre los problemas primal y dual

PRIMAL → DUAL

maximizacion 1 minimizacion

resticcion i : ≤ 2 variable i ≥ 0

resticcion i : = 3 variable i irresctricta

resticcion i : ≥ 4 variable i ≤ 0

variable i ≥ 0 5 restriccion i : ≥

variable i irrestricta 6 restriccion i : =

variable i ≤ 0 7 restriccion i : ≤

Dual ← PRIMAL

3.2. Metodo dual simplex en formato de tableau

(Problema de minimizacion)

PASO INICIAL

Encontrar una base B inicial del primal de modo que sea factible para el dual (con-

diciones de optimalidad primal) es decir: zj − cj = cBB−1aj − cj ≤ 0 para todo j.

Luego se forma el siguiente tableau:

z xB xN LD

z 1 0 cBB−1N− cN cBb

xB 0 I B−1N b

PASO PRINCIPAL

1. Si b = B−1b ≥ 0 el proceso termina; la solucion es optima. En caso contrario,

elegir el renglon pivote r con br < 0; por ejemplo, br = min{bi}.2. Si yrj ≥ 0 para todo j, el proceso termina; el dual es no acotado y el primal es no

factible. En caso contrario, elegir la columna pivote k mediante la siguiente prueba

de la razon mınima:

zk−ckyrk

= minj{ zj−cjyrj: yrj < 0}

3. Pivotear en yrk y volver al paso 1.

30

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 42: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

3.3. Problema general de programacion lineal

Consideremos el problena de programacion lineal (PL) de la forma

min z = ctx

s.a. Ax = b

l ≤ x ≤ u,

(3.3)

donde A es una matriz de m × n con rango m, y m < n. las coordenadas de los

vectores l y u pueden ser menos o mas infinito, respectivamente. Sea J = {1, ...n}el conjunto de los ındices columna de A. Denotamos por Jf = {j\j ∈ J, lj =

−∞∧ uj = +∞} el conjunto de las variables primales libres (vpl), por Ju = {j\j ∈J, lj = −∞∧uj < +∞} y J l = {j\j ∈ J, lj > −∞∧uj = +∞} los conjuntos de las

variables primales con una cota finita y por J b = {j\j ∈ J, lj > −∞∧uj < +∞} el

conjunto de variables acotadas inferior y superiormente. Llamaremos a las variables

en J b variables primales encajadas (vpe). Si para alguna variable se tiene lj = uj = a

para algun a ∈ R, entonces la llamaremos variable primal fija (vpf).

Aplicando al problema ( 3.3) la definicion de problema dual, obtenemos lo siguiente:

max z = btπ +∑

j∈J l∪Jb ljνj +∑

j∈Ju∪Jb ujωj

s.a. Atπ + ν + ω = c

νj = 0, ωj = 0, ∀j ∈ Jf

νj ≥ 0, ωj = 0, ∀j ∈ J l

νj = 0, ωj ≤ 0, ∀j ∈ Ju

νj ≥ 0, ωj ≤ 0, ∀j ∈ J b

π irrestricta,

(3.4)

donde π ∈ Rm , ν, ω ∈ Rn. Se denomina a ν y ω como variables duales de holgura

(vdh)

Definicion 3.1 Una base β = {k1, ..., km} es un subconjunto ordenado de J , tal

que la submatriz Aβ es no singular. El conjunto de ındices de columnas no basicas

es denotado por η = J \ β.

Una solucion primal basica (pbs) para una base β es construida fijando cada variable

primal no basica xj, j ∈ η a una de sus cotas finitas ( si es variable libre se fija en

cero) y calcular las variables primales basicas como:

31

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 43: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

xβ = B−1(b− Aηxη).

Definicion 3.2 Una base β es primal factible si todas las variables primales basicas

se encuentran dentro de sus respectivas cotas, es decir, lj ≤ xj ≤ uj, ∀j ∈ β.

Una solucion dual basica (dbs) para una base β es construida calculando los multi-

plicadores duales π = cβB−1 y los costos reducidos dη = cη−Atηπ y fijando las otras

variables de la siguiente forma:

νj = dj, ωj = 0, si j ∈ η con xj = lj y

νj = 0, ωj = dj, si j ∈ η con xj = uj.

Si j ∈ η y j ∈ Jf ( si las variables primales asociadas son no basicas y libres),

entonces

νj = dj, ωj = 0, si dj ≥ 0 y

νj = 0, ωj = dj, si dj < 0 .

Definicion 3.3 Una base β es dual factible si las (vdh) ν y ω satisfacen sus respec-

tivas restricciones (sus cotas cero) en el problema (3.4), es decir, si se cumple:

dj ≥ 0, si j ∈ η con xj = lj,

dj ≤ 0, si j ∈ η con xj = uj y

dj = 0, si xj es variable libre.

La infactibilidad dual solo puede ocurrir en los ındices de columnas asociadas

con variables primales no basicas, pues π es irrestricto y se obtiene a partir de

las variables primales basicas.

En particular las (vdh) asociadas con variables primales no basicas libres so-

lamente son factibles cuando su correspondiente costo reducido dj vale cero.

Las (vdh) asociadas con variables primales no basicas fijas siempre son facti-

bles.

La infactibilidad dual de (vdh) asociadas con variables primales no basicas

encajadas xj puede convertirse en factibilidad cambiando xj a su otra cota

finita. De este modo si se realiza tal cambio entonces las variables primales

basicas deben ser actualizadas.

32

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 44: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

3.4. Algoritmo dual simplex para problemas ge-

nerales

El algoritmo dual-simplex se mueve en cada iteracion, desde una solucion dual basica,

para una base dual factible, hacia una solucion que mejore la funcion objetivo, hasta

alcanzar factibilidad, es decir hasta que se logre obtener tambien una base primal

factible, o bien concluir que el problema dual es no acotado y que el primal es no

factible. ([3] )

El algoritmo es el siguiente:

1. Calcular la representacion factorizada (LU) de B−1, y calcular: xβ, π, y dη (de

la forma antes vista)

2. Determinar p ∈ β con p = kr y xp infactible (primal infactible).

Si xp < lp, hacer δ = xp − lp.Si xp > up, hacer δ = xp − up.Si xβ es factible, entonces IR AL PASO (9).

3. Calcular ρr = etrB−1. Donde er es el r-esimo vector canonico.

4. Calcular αr = ρrAη.

5. Si xp < lp, hacer αr = −αr, caso contrario αr = αr.

Sea F = {j ∈ η : ( j ∈ Jf∧αrj 6= 0) ∨( xj = lj∧αrj > 0) ∨( xj = uj∧αrj < 0) }.Si F = ∅, entonces el problema dual es no acotado. IR AL PASO (9);

caso contrario, determinar q tal que | dqαrq| = min{| dj

αrj| : j ∈ F} y hacer θD = dq

αrq.

6. Calcular αq = B−1aq.

7. Actualizar Z : Z := Z + θDδ.

Actualizar x : Calcular θP = δαrq, y hacer :

xβ := xβ − θPαq y xq := xq + θP .

Actualizar dη: dj := θDαrj para j ∈ η y dp := −θD.

Actualizar β y η: β := ( β \ {p}) ∪ {q} y

η := ( η \ {q}) ∪ {p}. Actualizar la representacion factorizada (LU) de B−1.

8. IR AL PASO (1).

9. FINALIZAR.

33

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 45: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Capıtulo 4

Metodos de inicializacion del

algoritmo dual simplex

El metodo dual simplex comienza con una base dual factible y cambia la base mien-

tras la funcion objetivo dual puede ser mejorada y el problema no se convierta en

dual no acotado.

4.1. Metodo de modificacion de costos

La idea basica de este metodo es hacer que la base inicial sea dual factible modi-

ficando la formulacion del problema y restaurandolo mientras ejecuta el algoritmo

dual simplex.

Dada una base inicial β con η = J \ β, las (vdh) asociadas con (vpe) son hechas

factibles moviendo sus cotas primales; es decir si la variable esta en su cota inferior

son cambiadas a su cota superior, o viceversa. Luego, para cada (vdh) infactible

restante se cambian los coeficientes de costo de su correspondiente variable primal

xj con j ∈ η de la siguiente manera: cj = cj − djEsto conduce a un nuevo costo reducido dj = cj − πtaj = cj − dj − πtaj = 0, el

cual es factible para el dual. Cuando el algoritmo dual simplex termina con una

base primal factible, los costos originales son restaurados. Si la base pasa a ser dual

infactible mediante estas operaciones, entonces pasamos a usar el algoritmo primal

simplex. Este metodo es implementado en el codigo de programacion lineal SoPlex

el cual fue desarrollado por Wuderling R. [4]

34

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 46: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

4.2. Metodo de reducir las infactibilidades o meto-

do de Ping-Qi Pan

La idea basica de este metodo es remover por lo menos una infactibilidad dual

en cada iteracion, pero no garantiza que ninguna nueva infactibilidad sea creada.

Este riesgo es minimizado solamente por una apropiada seleccion de variables de

salida. Antes de llamar al metodo de Pan se debe hacer que las variables duales de

holgura asociadas con (vpe) no basicas, sean factibles, moviendo sus cotas primales,

es decir si se encuentran en su cota inferior, cambiarlas a su cota superior; luego no

se consideran mas en el transcurso del algoritmo.

El metodo es el siguiente:

1. Sea el conjunto de ındices asociados con (vdh) infactibles Q = {j\j ∈ η, ( dj <

0 ∧ xj = lj) ∨ ( dj > 0 ∧ xj = uj) ∨ ( |dj| > 0 ∧ j ∈ Jf , xj = 0) } .

Si Q es vacıo, entonces la base es dual factible, ir al paso 5,

caso contrario, seleccionar un ındice de entrada q ∈ Q mediante alguna regla.

Usaremos la regla de Dantzig: Hallar q tal que |dq| = max{|dj|\j ∈ Q}.

2. Calcular la columna pivote transformada αq = B−1aq.

Si dq < 0, hacer αq := −αq.

3. Determinar el ındice de salida p ∈ β tal que la p-esima (vdh) sea factible

despues del cambio de base.

Sea I = {i\i ∈ {1, ...,m}, j = ki∧( lj > −∞∧αiq < 0) ∨( uj <∞∧αiq > 0) }.Si I es vacıo, entonces el problema es dual infactible, PARAR,

caso contrario, seleccionar p tal que |αpq | = {αiq\i ∈ I} y kr = p.

Calcular θD = dqαrq.

4. Realizar el cambio de base del mismo modo que en el algoritmo dual- simplex

(PASO 7). Para actualizar dη, la fila pivote transformada debe ser calculada

avanzando segun los pasos PASO 3 y PASO 4 de algoritmo dual -simplex.

Ir al paso 1.

5. Llamar al algoritmo dual- simplex.

Nada garantiza una reduccion monotona de la suma de infactibilidades duales,

tampoco del numero de infactibilidades duales. Pero podemos confirmar los

35

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 47: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

resultados de Pan en [8] y [9].

4.3. Metodo de minimizar la suma de infactibili-

dades duales

El objetivo de encontrar una base que proporcione una mınima suma de infactibili-

dades duales puede ser formulada como un problema de (PL) auxiliar, el cual junto

con el problema principal se resuelven por el algoritmo dual simplex. La idea basica

es directamente aplicar el algoritmo dual-simplex al problema auxiliar, esa sera la

tecnica de inicializacion.

Las variables duales de holgura asociadas a (vpe) ( j ∈ J b) se convierten en factibles

moviendo las cotas primales. Luego podemos formular el problema de encontrar una

base con una suma mınima de infactibilidades como sigue:

max z0 =∑

j∈J l∪Jf , dj<0 dj −∑

j∈Ju∪Jf , dj>0 dj

s.a. atjπ + dj = cj, ∀j ∈ J l ∪ Ju ∪ Jf .(4.1)

El problema ( 4.1) es equivalente a la siguiente formulacion:

max z0 =∑

j∈J l∪Jf ωj −∑

j∈Ju∪Jf νj

s.a. atjπ + νj + ωj = cj, ∀j ∈ J l ∪ Ju ∪ Jf .νj ≥ 0,

ωj ≤ 0.

(4.2)

El dual de problema ( 4.2) es:

min z0 =∑

j∈J l∪Ju∪Jf cjxj

s.a.∑

j∈J l∪Ju∪Jf ajxj = 0,

−1 ≤ xj ≤ 0, ∀j ∈ Ju,0 ≤ xj ≤ 1, ∀j ∈ J l,−1 ≤ xj ≤ 1∀j ∈ Jf .

(4.3)

El problema (4.3) es una version reducida del problema original (3.3) en el

sentido que consiste de un subconjunto del conjunto original de columnas y

las cotas junto con el lado derecho (vector recursos) son cambiados.

36

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 48: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Todas las variables del problema (4.3 ) estan encajadas, entonces cualquier

base dada puede ser hecha factible moviendo las cotas primales y se puede

aplicar el algoritmo dual -simplex directamente.

Este metodo es implementado de la siguiente manera:

1. Marcar los ındices de variables encajadas y fijas, como ındices que no seran

seleccionados.

2. Cambiar las cotas del resto de variables y el lado derecho del vector de recursos

de acuerdo al problema (4.3).

3. Empezar con una base inicial y hacerla dual factible moviendo las variables

no basicas entre sus cotas primales.

4. Ejecutar el algoritmo dual -simplex al problema (4.3).

5. Si z0 < 0, entonces el problema original (3.3) es dual infactible, PARAR.

6. Si z0 = 0, entonces la base actual es dual factible para el problema (3.3).

7. Desenmarcar los ındices relacionados a variables encajadas y fijas, y restaurar

las cotas originales y el lado derecho del vector de recursos.

8. Ejecutar el algoritmo dual- simplex con el problema (3.3).

4.4. Implementacion en matlab

Problemas de prueba (Test problems)

Los problemas de prueba para programacion lineal a gran escala podemos encontrar-

los en diferentes bases de datos disponibles en internet, los cuales estan archivados

en formato MPS (Mathematical Programming System). El formato MPS es columna

orientado, es decir al visualizar la matriz de restricciones en este formato primero

aparecen las entradas de la primera columna y continua hasta las entradas de la

ultima columna de la matriz, ademas la primera fila de esta matriz corresponde a la

funcion objetivo; al final estan el vector columna de recursos y las cotas inferiores y

superiores de cada variable, que tambien son posibles de guardar en este formato.

Para este trabajo se ha seleccionado un problema de la librerıa MIPLIB 2003 test

problems: aflow40b; al cual se dio solucion con el metodo expuesto anteriormente.

37

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 49: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Programacion en matlab

Los archivos de los problemas de prueba con extension .mps, para ser usados en

Matlab, necesitan de una funcion especial para su lectura. Dicha funcion es: READMPS;

la cual arroja una estructura de datos del problema (matrices y vectores), de este

modo se puede guardar estos datos del workspace de matlab y luego ser usados en los

algoritmos programados. READMPS aplicada al problema aflow40b resulto en una

estructura la cual se ha nombrado como “problem”, mostrando la siguiente ventana:

Figura 4.1: Estructura de aflow40b

Otras funciones que se usaron de la librerıa de Matlab fueron:

- rref(E).- para encontrar columnas basicas de la matriz E.

- inv(B)

- norm(A)

Los algoritmos de inicializacion fueron programados en Matlab y su codificacion se

encuentra en el apendice A, al final del presente trabajo.

38

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 50: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Antes de aplicar los algoritmos de inicializacion en problemas de gran escala, se

probo con problemas de pocas variables 1 los cuales son introducidos manualmente

en su forma estandar al programa de Matlab; luego se aplico los tres metodos de

inicializacion en cada problema y se obtuvo el valor objetivo. Por ejemplo:

Problema 01:

(P01)

min −2x1 − 4x2 − x3

s.a: 2x1 + x2 + x3 ≤ 10

x1 + x2 − x3 ≤ 4

0 ≤ x1 ≤ 4

0 ≤ x2 ≤ 6

1 ≤ x3 ≤ 4

El valor objetivo es Z = −28. Veamos como funciona con los tres metodos de

inicializacion.

o Con el metodo modificacion de costos:

1Ejemplo 5.6 y Ejercicios 5.10 y 5.11 de [3] paginas 255 y 270

39

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 51: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.2: Solucion de (P01) con modificacion de costos

o Con el metodo de P.Q. Pan

40

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 52: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.3: Solucion de (P01) con base inicial segun PQ-Pan

o Con el metodo de minimizar la suma de infactibilidades

41

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 53: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.4: Solucion de (P01) con base inicial segun el metodo minimizar suma de infactibilidades

Se obtienen soluciones iniciales diferentes con cada uno de los metodos, pero al final

se llega al mismo valor objetivo Z = −28.

Problema 02:

(P02)

min −2x1 − x2 − 3x3

s.a: 3x1 + x2 + x3 ≤ 12

−x1 + x2 ≤ 5

x2 + 2x3 ≤ 8

0 ≤ x1 ≤ 3

0 ≤ x2 ≤ 6

0 ≤ x3 ≤ 4

El valor objetivo de este problema es Z = −17,333. Sabiendo que el metodo de

modificacion de costos podrıa generar una base dual infactible pero factible primal,

si esto sucede debemos pasar a usar el algoritmo primal simplex para llegar al valor

optimo. En el problema 02; ocurre este caso, la base se transformo en dual infactible

pero no se ejecuto el algoritmo primal simplex, puesto que el problema fue resuelto

42

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 54: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

de forma mas directa por los otros dos metodos, como se muestra en las siguientes

figuras.

o Con el metodo modificacion de costos

Figura 4.5: Modificacion de costos de (P02) y valor objetivo con base dual infactible

43

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 55: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.6: Comprobacion de infactibilidad dual en el ındice 2

o Con el metodo de reducir de infactibilidades o PQ-Pan

Figura 4.7: Base inicial xc dada por PQ-Pan

44

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 56: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.8: Solucion del problema (P02) con la base inicial xc

o Con el metodo de minimizar la suma de infactibilidades

Figura 4.9: Base inicial xc = [4, 5, 6] dada por la mınima suma de infactibilidades

45

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 57: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.10: Solucion del problema (P02) y valor de la incognita X = (x1, x2, x3)

Problema 03:

(P03)

min x1 + 2x2 + 3x3 − x4

s.a: 2x1 − x2 + x3 − 2x4 ≤ 6

−x1 + 2x2 − x3 + x4 ≤ 8

−2x1 − x2 + x3 ≤ −2

0 ≤ x1 ≤ 3

1 ≤ x2 ≤ 4

0 ≤ x3 ≤ 10

2 ≤ x4 ≤ 5

El valor objetivo de este problema es Z = −2,5. Al igual que el problema anterior, el

metodo modificacion de costos para este problema finaliza con una base dual infac-

tible y por tanto debe ejecutarse el algoritmo primal simplex; por eso solo se aplico a

este problema los metodos de PQ-Pan y Minimizar la suma de infactibilidades, como

se muestra en las siguientes figuras:

o Con el metodo de reducir de infactibilidades o PQ-Pan

46

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 58: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.11: Datos del problema (P03) e inicio del metodo de PQ-Pan

Figura 4.12: Solucion del problema (P03) con la base inicial xc

o Con el metodo de minimizar la suma de infactibilidades

47

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 59: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.13: Base inicial xc = [5, 6, 7] dada por Mınima suma de infactibilidades

Figura 4.14: Solucion del problema (P03) y valor de la incognita X = (x1, x2, x3, x4)

Despues de estas pequenas pruebas, pasamos a resolver el problema de gran escala

aflow40b, del cual sus datos fueron guardados en Matlab.

48

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 60: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Solucion del problema aflow40b

Despues de obtener los datos del problema aflow40b en la estructura “problem”,

y asumiendo que esta dado en forma estandar, se tiene que todas sus variables

estan acotadas, por tanto no fue necesario introducir variables de holgura; de este

modo cualquier base inicial de la matriz de restricciobes, es posible que sea dual

factible llevando las variables no basicas a uno de los valores de sus cotas. Finalmente

ejecutamos el programa del algoritmo dual simplex, el cual muestra la siguiente

ventana:

Figura 4.15: Solucion de aflow40b

Dicha solucion fue comprobada con la solucion dada por el comando linprog que

matlab usa para optimizacion lineal, la cual se muestra en las siguientes figuras:

49

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 61: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.16: Solucion de alow40b con Linprog

Al solucionar el problema aflow40b sin agregar variables de holgura, no fueron ne-

cesarios los metodos de inicializacion puesto que todas las variables son acotadas;

ası cualquier base fue posible hacer que sea dual factible.

Solucion de aflow40b con restricciones de desigualdad

La matriz del problema Aflow40b es de rango 1442 y tiene 78 restricciones de igual-

dad y 1364 restricciones de desigualdad, por tal razon fue necesario agregar variables

de holgura para tener el problema en forma estandar. Tales variables de holgura son

50

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 62: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

no negativas, es decir acotadas inferiormente por cero, pero no son acotadas supe-

riormente. Con estos datos, para solucionar el problema se tiene que usar los metodos

de inicializacion expuestos anteriormente.

El metodo que se uso para dar una solucion inicial a este problema fue minimizar

la suma de infactibilidades, del siguiente modo: puesto que la base que resulta de

este metodo esta formada por columnas correspondientes a variables no encajadas;

y en el problema aflow40b se agregaron 1364 variables no encajadas pero acotadas

inferiormente, entonces a estas columnas le agregamos 78 columnas mas correspon-

dientes a variables encajadas con el comnado de matlab “rref(A)”para lograr las

1442 columnas cuyas correspondientes variables formaran las variables basicas dual

factibles iniciales; debido a que las variables no basicas iniciales pueden fijarse en

cualquiera de sus cotas inferior o superior.

Figura 4.17: Datos de problema con base inicial xxe

51

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 63: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.18: Comprueba que la base xxe es dual factible

Luego se ejecuta el algoritmo dual simplex, al principio la sub-matriz basica se volvıa

no invertible. Pero se realizaron algunos ajustes hasta conseguir que no sucediera

este incidente.

Figura 4.19: Primer valor objetivo

Se ejecuto el algoritmo hasta conseguir el valor objetivo: Z= 1005.7

52

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 64: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Figura 4.20: Solucion de aflow40b con metodo dual simplex. Valor objetivo Z= 1005.7

El valor objetivo encontrado, corresponde tambien al que muestra la pagina de

internet de la librerıa MIPLIB 2 , cuyos datos fueron actualizados en el ano 2014

por Gerald Gamrath.

4.5. Tecnicas para implementar el algoritmo dual

simplex

Algunas de estas tecnicas fueron usadas para obtener una implementacion eficiente:

1. Steepest Edge Pricing

2. Bound Flipping Ratio Test

3. Factorizacion LU y actualizar

2http://miplib.zib.de/miplib2010/aflow40b.php

53

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 65: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Conclusiones

� Dado el problema (PL)

min z = ctx

s.a. Ax = b

l ≤ x ≤ u

(4.4)

donde A es una matriz de m × n con rango m y m < n, hallar su solucion

usando el metodo simplex considerando las variables acotadas como restricciones

adicionales, resulta inadecuado debido a la cantidad de memoria que se necesita.

El metodo dual simplex para problemas generales, con alguna de las tecnicas de

inicializacion descritas es una alternativa para resolver este tipo de problemas

(PL), sin aumentar la dimension de la matriz A.

� De los tres metodos descritos, la combinacion del metodo de PQ-Pan con el meto-

do de minimizar la suma de infactibilidades es lo mas adecuado, puesto que el

primero va cambiando las columnas que hacen dual infactible a la matriz basica

del problema y luego, si en alguna iteracion no llega a cambiar ninguna columna,

se pasa a minimizar la suma de infactibilidades resolviendo un problema auxiliar,

para conseguir una solucion dual factible.

� Del metodo de minimizar la suma de infactibilidades, se dedujo que dada una base

inicial B, si todas las columnas no basicas A\B corresponden a variables acotadas,

entonces es posible hacer B dual factible, intercambiando dichas variables no

basicas de una cota a otra. Luego, se aplica el metodo dual simplex para problemas

generales y se obtiene la solucion del problema determinado.

� Recomendaciones:

Para resolver problemas de gran escala de manera eficiente se recomienda realizar

un preproceso antes de aplicar algun metodo, puesto que una parte significativa del

54

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 66: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

problema podrıa ser redundante. Los objetivos de un preproceso son los siguientes:

Eliminar resticciones redundantes, encontrar variables que podrıan fijarse, relajar

o estrechar las cotas de las variables del problema, y reducir el numero de variables

y restricciones mediante elimininacion. Despues del preproceso se aplica algun

metodo escogido y se resuelve el problema.

55

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 67: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Bibliografıa

[1] Balbas A. A y Gil F J. Programacion Matematica, 2da ed, AC, Madrid,

1990.

[2] Bazaraa Mokhtar, Sherali Hanif.D and Shetty C.M, Nonlinear Pro-

gramming Theory and algorithms, 3era ed, Jhon Wiley Sons, Inc 2006.

[3] Bazaraa M.S, Sherali H.D y JARVIS J.J, Programacion Lineal y Flujo

en Redes, Limusa, Mexico, 2007.

[4] Koberstein A, Suhl U.H, Progress in the dual simplex method for large

scale LP problems, Computational Optimization and Applications vol 37 N° 1, 2007.

[5] Lemke, C.E. The dual method of solving the linear programming problem, Naval

Research Logistics Quarterly vol. 1, 1954.

[6] Leon S. Lasdon, Optimization Theory for Large Systems, Dover Publications,

Mineola, N.Y, 2002.

[7] Minoux .M, Mathematical Programming Theory and Algorithms, Jhon Wiley Sons,

New York, 1986.

[8] Pan , P. Q. Practical finite pivoting rules for the simplex method . OR Spectrum

12, 219 - 225, 1990.

[9] Pan, P. Q. The most-obtuse-angle row pivot rule for achieving dual feasibility: a

computational study. Eur . J. Oper. Res. 101 (1), 167- 176. 1997

−−−−−−−−−−−−− −−−−−−−−−−−−−Yessica Evelin Zarate Pedrera Dr. Edmundo Vergara Moreno

Alumna Asesor

56

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 68: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Apencide A

Codigos de programas en matlab

A continuacion se presentan los codigos programados en matlab

de los siguientes metodos:

Programa 1: Metodo modificacion de costos

Programa 2: Metodo de Ping-Qi Pan

Programa 3: Metodo de minimizar la suma de infactibili-

dades

Programa 4: Fase dual 2 del metodo dual simplex

Otras funciones programadas en matlab

57

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 69: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Programa 1: Metodo modificacion de costos

% FASE DUAL 1

F= input ('ingrese vector de costos ');

A= input ('ingrese matriz de restricciones ');

b= input ('ingrese vector columna de recursos ');

lo= input ('ingrese vector columna de cotas inferiores ');

up= input ('ingrese vector columna de cotas superiores ');

Jb= input('ingrese índices de variables acotadas ');

Jl=input('ingrese índices de variables acotadas inferiormente ');

Ju= input('ingrese índices de variables acotadas superiormente ');

Jf= input('ingrese índices de variables libres ');

xc=input('índices de base inicial');

[m,n]= size(A);

J=1:n;

xn= setdiff(J,xc);

B=A(:,xc);

AN= A(:,xn);

z= intersect(xn,Jb);

y= intersect(Jl,xn);

w= intersect(xn,Ju);

v= intersect(xn,Jf);

X(z,1)=lo(z,1);

X(y,1)= lo(y,1);

X(w,1)=up(w,1);

X(v,1)=0;

Bi=inv(B);

Bf=Bi;

pi=F(1,xc)*Bf;

d(1,xn)=F(1,xn)-(pi*AN);

58

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 70: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

%primero evaluar si una base es dual factible

for i=z

if (d(1,i)<0)

X(i,1)=up(i,1);

end

end

%METODO DE MODIFICACIÓN DE COSTOS

for i=y

if (d(1,i)<0)

F(1,i)= F(1,i)-d(1,i);

end

end

for i=w

if (d(1,i)>0)

F(1,i)= F(1,i)-d(1,i);

end

end

for i=v

if (d(1,v)~=0)

F(1,i)= F(1,i)-d(1,i);

end

end

disp('nuevo vector costo: ')

disp(F)

%perturbar valores de costo por un pequeño margen epsilon

epsi=10^-6;

for i=1:n

F(1,i)=F(1,i)+ epsi;

end

disp('perturbado')

disp(F)

%empezar la FASE DUAL 2

59

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 71: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Programa 2: Metodo de Ping-Qi Pan

% FASE DUAL 1;

F= input ('ingrese vector de costos');

A= input ('ingrese matriz de restricciones');

b= input ('ingrese vector de recursos');

lo= input ('ingrese vector de cotas inferiores');

up= input ('ingrese vector de cotas superiores');

Jb= input('ingrese índices de variables acotadas');

Jl=input('ingrese índices de variables acotadas inferiormente');

Ju= input('ingrese índices de variables acotadas superiormente');

Jf= input('ingrese índices de variables libres');

xc=input('ingrese base inicial ');

[m,n]= size(A);

J=1:n;

xn= setdiff(J,xc);

B=A(:,xc);

AN= A(:,xn);

z= intersect(xn,Jb);

y= intersect(Jl,xn);

w= intersect(xn,Ju);

v= intersect(xn,Jf);

X(y,1)=lo(y,1);

X(w,1)=up(w,1);

X(v,1)=0;

X(z,1)=lo(z,1);

Bi=inv(B);

Bf=Bi;

pi=F(1,xc)*Bf;

d(1,xn)=F(1,xn)-(pi*AN);

%primero evaluar si una base es dual factible

for i=z

if (d(1,i)>= 0)

continue

else X(i,1)=up(i,1);

end

end

%METODO DE Eliminar infactibilidad

Q=zeros(1,n);

for i=y

if (d(1,i)< 0)

Q(1,i)=i;

end

end

for i=w

60

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 72: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

if (d(1,i)>0)

Q(1,i)=i;

end

end

for i=v

if (d(1,v)~=0)

Q(1,i)=i;

end

end

zer=zeros(1,n);

qui=setdiff(Q,zer); %indices de las infactibilidades

while (~isempty(qui))

t=qui(1,1);

mxma=abs(d(1,t));

q=t;

for i=qui

if (abs(d(1,i))>mxma)

mxma=abs(d(1,i));

q=i;

end

end

aaa =Bf*A(:,q);

if (d(1,q)<0)

aaab=-aaa;

else aaab=aaa; %esta es la modificación para la eleccion de p de salida

end

I=zeros(1,m);

for i=1:m

if (xc(1,i)>~inf && aaab(i,1)<0)

I(1,i)=i;

end

if (xc(1,i)<inf && aaab(i,1)>0)

I(1,i)=i;

end

end

si=length(I);

cer=zeros(1,si);

ies=setdiff(I,cer);%superindices que marcan candidatos a salir de la base.

tt=ies(1,1);

mxmx=aaab(tt,1);

r=tt;

for j=ies

if (abs(aaab(j,1))>mxmx)

mxmx=abs(aaab(j,1));

r=j;

end

end

61

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 73: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

p=xc(1,r);

fiD=(d(1,q)/aaa(r,1));

ccc=zeros(1,m);

ccc(1,r)=1;

ror=ccc*Bf;

alfar=zeros(1,n);%aqui damos dimension n a alfa para poder multiplicar luego.

for i=1:n

for j=xn

if (i==j)

alfar(1,i)=ror*A(:,i);

end

end

end

for i=xn %aqui actualizamos los costos reducidos d

d(1,i)=d(1,i)-(fiD*alfar(1,i));

end

d(1,p)=-fiD;

if (d(1,p)>0)

X(p,1)=lo(p,1);

end

if (d(1,p)<0)

X(p,1)=up(p,1);

end

xc=setdiff(xc,p);

xc=union(xc,q);

xn=setdiff(xn,q);

xn=union(xn,p);

aa=intersect(xn,Jl);

w= intersect(xn,Ju);

v= intersect(xn,Jf);

Q=zeros(1,n);

for i=aa

if (d(1,i)< 0)

Q(1,i)=i;

end

end

for i=w

if (d(1,i)>0)

Q(1,i)=i;

end

end

for i=v

if (d(1,v)~=0)

Q(1,i)=i;

end

end

zer=zeros(1,n);

qui=setdiff(Q,zer);

qui=setdiff(qui,q);

B=A(:,xc);

Bi=inv(B);

Bf=Bi;

end

disp('la base es dual factible');

disp(B);

%empezar la FASE DUAL 2

62

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 74: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Programa 3: Metodo de minimizar la suma de infactibilidades

% FASE DUAL 1;

F= input ('ingrese vector de costos ');

A= input ('ingrese matriz de restricciones ');

b= input ('ingrese vector columna de recursos ');

lo= input ('ingrese vector columna de cotas inferiores ');

up= input ('ingrese vector columna de cotas superiores ');

Jb= input('ingrese indices de variables acotadas ');

Jl=input('ingrese indices de variables acotadas inferiormente ');

Ju= input('ingrese indices de variables acotadas superiormente ');

Jf= input('ingrese indices de variables libres ');

xc= input('ingrese base inicial ');

[m,n]= size(A);

if(length(Jl)+length(Ju)+length(Jf)>=m)

else error('no puedo aplicar suma infac')

end

J=1:n;

xn= setdiff(J,xc);

B=A(:,xc);

AN= A(:,xn);

z= intersect(xn,Jb);

y= intersect(Jl,xn);

w= intersect(xn,Ju);

v= intersect(xn,Jf);

X(y,1)= lo(y,1);

X(w,1)=up(w,1);

X(v,1)=0;

X(z,1)=lo(z,1);

Bi=inv(B);

Bf=lu(Bi);

pi=F(1,xc)*Bf;

d(1,xn)=F(1,xn)-(pi*AN);

%primero evaluar si una base es dual factible

for i=z

if (d(1,i)<0)

X(i,1)=up(i,1);

end

end

%Conjunto de índices dual infactibles

Q=zeros(1,n);

for i=y

if (d(1,i)< 0)

Q(1,i)=i;

end

end

for i=w

if (d(1,i)>0)

63

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 75: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Q(1,i)=i;

end

end

for i=v

if (d(1,v)~=0)

Q(1,i)=i;

end

end

zer=zeros(1,n);

qui=setdiff(Q,zer); %índices de las infactibilidades

if (~isempty(qui)) %Resolvemos el problema auxiliar

suminf=setdiff(J,Jb);

b=zeros(m,1);

for i=intersect(suminf,Ju)

lo(i,1)=-1;

up(i,1)=0;

end

for i=intersect(suminf,Jl)

lo(i,1)=0;

up(i,1)=1;

end

for i=intersect(suminf,Jf)

lo(i,1)=-1;

up(i,1)=1;

end

for i=setdiff(J,suminf)

A(:,i)=zeros(m,1);

end

[Ae, xc]= rref(A); %xc tendrá elementos solo de suminf

xn= setdiff(suminf,xc);

B=A(:,xc);

AN= A(:,xn);

X(xn,1)=lo(xn,1);

Bi=inv(B);

Bf=Bi;

pi=F(1,xc)*Bf;

d(1,xn)=F(1,xn)-(pi*AN);

%primero evaluar si una base es dual factible

for i=xn

if (d(1,i)<0)

X(i,1)=up(i,1);

end

end

%Esta base ya es dual factible para el auxiliar

CV=AN*X(xn,1);

CV= b - CV;

CV=Bf*CV; %formar valores de variables básicas

for i=1:m

j=xc(i);

X(j,1)=CV(i,1);

end

Zo=0;

for i=suminf

Zo=Zo+(F(1,i)*X(i,1));

end

%Comprobar si es primal factible

pp=zeros(1,m);

64

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 76: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

for i=1:m

j=xc(i);

if (lo(j,1)<=X(j,1) && X(j,1)<=up(j,1))

else pp(1,i)=i;

end

end

pp=setdiff(pp,zeros(1,m));

p=0;

if(~isempty(pp))

k=pp(1,1);

p=xc(1,k);

mmii=(X(p,1)/nnnorm(m,k,Bf));

t=length(pp);

for ll=1:t

ind=pp(1,ll);

i=xc(1,ind);

if(mmii>(X(i,1)/nnnorm(m,ind,Bf)))

mmii=(X(i,1)/nnnorm(m,ind,Bf));

k=ind;

p=i;

end

end

else disp('Factible')

end

while (p~=0)

if (X(p,1)<lo(p,1))

delta=X(p,1)-lo(p,1);

end

if(X(p,1)>up(p,1))

delta=X(p,1)-up(p,1);

end

r=0;

for i=1:length(xc)

if(xc(1,i)==p)

r=i;

end

end

ccc=zeros(1,m);

ccc(1,r)=1;

ror=ccc*Bf;

alfar=zeros(1,n);%aquí damos dimensión n a alfa para poder multiplicar luego.

for i=1:n

for j=xn

if (i==j)

alfar(1,i)=ror*A(:,i);

end

end

end

if (X(p,1)<lo(p,1)) %esto es para elección de q de entrada

alfarb=-alfar;

else alfarb=alfar;

end

FF=zeros(1,n);

for i=xn

if(X(i,1)==lo(i,1) && alfarb(1,i)>0)

FF(1,i)=i;

65

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 77: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

end

if (X(i,1)==up(i,1) && alfarb(1,i)<0)

FF(1,i)=i;

end

end

f=setdiff(FF,zeros(1,n));

%agregar implementación de ratio test

S=[];

detap=zeros(1,n);

pro=0;

while(pro==0)

if (~isempty(f))

q=f(1,1);

mimin=abs(d(1,q)/alfar(1,q));

for i=f

if (abs(d(1,i)/alfar(1,i))< mimin)

mimin=abs(d(1,i)/alfar(1,i));

q=i;

end

end

if (q==intersect(q,Jb))

if(X(q,1)==lo(q,1))

detap(1,q)=up(q,1)-lo(q,1);

end

if (X(q,1)==up(q,1))

detap(1,q)=lo(q,1)-up(q,1);

end

ssig=sign(cri);

cri=cri-(detap(1,q)*alfar(1,q));

if(ssig==sign(cri))

S=union(S,q);

f=setdiff(f,q);

pro=0;

else for j=S

if(X(j,1)==lo(j,1))

X(j,1)=up(j,1);

else if (X(j,1)==up(j,1))

X(j,1)=lo(j,1);

end

end

end

amon=zeros(m,1);

for j=S

amon=amon+detap(1,j)*A(:,j);

end

rre=Bf*amon;

for h=1:m

i=xc(1,h);

X(i,1)=X(i,1)-rre(h,1);

end

if (X(p,1)<lo(p,1))

delta=X(p,1)-lo(p,1);

else if(X(p,1)>up(p,1))

delta=X(p,1)-up(p,1);

end

end

66

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 78: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Zo=0;

for i=1:n

Zo=Zo+(F(1,i)*X(i,1));

end

pro=1;

end

else for j=S

if(X(j,1)==lo(j,1))

X(j,1)=up(j,1);

else if (X(j,1)==up(j,1))

X(j,1)=lo(j,1);

end

end

end

amon=zeros(m,1);

for j=S

amon=amon+detap(1,j)*A(:,j);

end

rre=Bf*amon;

for h=1:m

i=xc(1,h);

X(i,1)=X(i,1)-rre(h,1);

end

if (X(p,1)<lo(p,1))

delta=X(p,1)-lo(p,1);

end

if(X(p,1)>up(p,1))

delta=X(p,1)-up(p,1);

end

Zo=0;

for i=1:n

Zo=Zo+(F(1,i)*X(i,1));

end

pro=1;

end

else disp ('problema casi factible')

disp('las columnas básicas son: ');

disp(xc);

pro=2;

end

end

if(pro==2)

%disp('dual no acotado')

p=0;

else

fiD=(d(1,q)/alfar(1,q));

aaa =Bf*A(:,q);

%Aqui actualizamos.

Zo=Zo+(fiD*delta);

tetap=(delta/alfar(1,q));

X(xc,1)=X(xc,1)-(tetap*aaa);

X(q,1)=X(q,1)+tetap;

for j=xn

d(1,j)=d(1,j)-(fiD*alfar(1,j));

end

67

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 79: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

d(1,p)=-fiD;

xc=setdiff(xc,p);

xc=union(xc,q);

xn=setdiff(xn,q);

xn=union(xn,p);

%añadimos actualización

B=A(:,xc);

AN= A(:,xn);

Bi=inv(B);

Bf=Bi;

%Comprobar si es primal factible

pp=zeros(1,m);

for i=1:m

j=xc(i);

if (lo(j,1)-(10^(-12))<=X(j,1) && X(j,1)<=up(j,1)+ 10^(-12))

else pp(1,i)=i;

end

end

pp=setdiff(pp,zeros(1,m));

p=0;

if(~isempty(pp))

k=pp(1,1);

p=xc(1,k);

mmii=(X(p,1)/nnnorm(m,k,Bf));

t=length(pp);

for ll=1:t

ind=pp(1,ll);

i=xc(1,ind);

if(mmii>(X(i,1)/nnnorm(m,ind,Bf)))

mmii=(X(i,1)/nnnorm(m,ind,Bf));

k=ind;

p=i;

end

end

else disp('Factible O')

end

end

end

if (Zo==0)

xn=union(xn,Jb);

xn=setdiff(xn,0);

%las variables acotadas en sus cotas inferiores, sino a sus superiores

disp('el valor de Zo es: ');

disp(Zo);

disp('la base es dual factible B= ');

disp(B);

disp('las columnas básicas son: ');

disp(xc);

disp('las columnas NO básicas son: ');

disp(xn);

else disp('el problema original es dual infactible')

end

else disp('la base inicial es dual factible B= ')

disp(B)

end

%empezar la FASE DUAL 2

68

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 80: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Programa 4: Fase dual 2 del metodo dual simplex

%Empezar la FASE DUAL 2

%Ya se tiene una base Dual Factible

F= input ('ingrese vector de costos ');

A= input ('ingrese matriz de restricciones ');

b= input ('ingrese vector columna de recursos ');

lo= input ('ingrese vector columna de cotas inferiores ');

up= input ('ingrese vector columna de cotas superiores ');

Jb= input('ingrese índices de variables acotadas ');

Jl=input('ingrese índices de variables acotadas inferiormente ');

Ju= input('ingrese índices de variables acotadas superiormente ');

Jf= input('ingrese índices de variables libres ');

xc=input('índices básicos ');

xn=input('índices No básicos ');

[m,n]= size(A);

J=1:n;

B=A(:,xc);

AN= A(:,xn);

y= intersect(Jl,xn);

w= intersect(xn,Ju);

v= intersect(xn,Jf);

az=intersect(xn,Jb);

X(y,1)=lo(y,1);

X(w,1)=up(w,1);

X(v,1)=0;

X(az,1)=lo(az,1);

d=zeros(1,n);

Bi=inv(B);

Bf=Bi;

pi=F(1,xc)*Bf;

d(1,xn)=F(1,xn)-(pi*AN);

for i=az

if (d(1,i)< 0)

X(i,1)=up(i,1);

end

end

CV=AN*X(xn,1);

CV= b - CV;

CV=Bf*CV; %Calcular valores de variables básicas

for i=1:m

j=xc(i);

X(j,1)=CV(i,1);

end

Zo=0;

for i=1:n

Zo=Zo+(F(1,i)*X(i,1));

end

%Comprobar si es primal factiblle

pp=zeros(1,m);

for i=1:m

j=xc(i);

if (lo(j,1)<=X(j,1) && X(j,1)<=up(j,1))

else pp(1,i)=i;

end

end

69

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 81: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

pp=setdiff(pp,zeros(1,m));

p=0;

if(~isempty(pp))

k=pp(1,1);

p=xc(1,k);

mmii=(X(p,1)/nnnorm(m,k,Bf));

t=length(pp);

for ll=1:t

ind=pp(1,ll);

i=xc(1,ind);

if(mmii>(X(i,1)/nnnorm(m,ind,Bf)))

mmii=(X(i,1)/nnnorm(m,ind,Bf));

k=ind;

p=i;

end

end

else disp('Factible')

end

if (p~=0)

if (X(p,1)<lo(p,1))

delta=X(p,1)-lo(p,1);

end

if(X(p,1)>up(p,1))

delta=X(p,1)-up(p,1);

end

cri=delta;

r=k;

ccc=zeros(1,m);

ccc(1,r)=1;

ror=ccc*Bf;

afr=ror*AN;

alfar=zeros(1,n);%aqui damos dimension n a alfa para poder multiplicar luego.

iy=n-m;

for j=1:iy

i=xn(j);

alfar(1,i)=afr(1,j);

end

if (X(p,1)<lo(p,1)) %esto es para eleccion de q de entrada

alfarb=-alfar;

else alfarb=alfar;

end

FF=zeros(1,n);

for i=xn

if(X(i,1)==lo(i,1) && alfarb(1,i)>0)

FF(1,i)=i;

end

if (X(i,1)==up(i,1) && alfarb(1,i)<0)

FF(1,i)=i;

end

end

f=setdiff(FF,zeros(1,n));

%agregar implementacion de ratio test

S=[];

detap=zeros(1,n);

pro=0;

while(pro==0)

70

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 82: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

if (~isempty(f))

q=f(1,1);

mimin=abs(d(1,q)/alfar(1,q));

for i=f

if (abs(d(1,i)/alfar(1,i))< mimin)

mimin=abs(d(1,i)/alfar(1,i));

q=i;

end

end if (q==intersect(q,Jb)) if(X(q,1)==lo(q,1)) detap(1,q)=up(q,1)-lo(q,1); end if (X(q,1)==up(q,1)) detap(1,q)=lo(q,1)-up(q,1); end ssig=sign(cri); cri=cri-(detap(1,q)*alfar(1,q));

if(ssig==sign(cri)) S=union(S,q); f=setdiff(f,q); pro=0; else for j=S if(X(j,1)==lo(j,1)) X(j,1)=up(j,1); else if (X(j,1)==up(j,1)) X(j,1)=lo(j,1); end end end amon=zeros(m,1); for j=S amon=amon+detap(1,j)*A(:,j); end rre=Bf*amon; for h=1:m i=xc(1,h); X(i,1)=X(i,1)-rre(h,1); end if (X(p,1)<lo(p,1)) delta=X(p,1)-lo(p,1); else if(X(p,1)>up(p,1)) delta=X(p,1)-up(p,1); end end Zo=0; for i=1:n Zo=Zo+(F(1,i)*X(i,1)); end pro=1; end else for j=S if(X(j,1)==lo(j,1)) X(j,1)=up(j,1); else if (X(j,1)==up(j,1)) X(j,1)=lo(j,1); end end end amon=zeros(m,1); for j=S amon=amon+detap(1,j)*A(:,j); end

71

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 83: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

rre=Bf*amon; for h=1:m i=xc(1,h); X(i,1)=X(i,1)-rre(h,1); end

if (X(p,1)<lo(p,1)) delta=X(p,1)-lo(p,1); end if(X(p,1)>up(p,1)) delta=X(p,1)-up(p,1); end Zo=0; for i=1:n Zo=Zo+(F(1,i)*X(i,1)); end pro=1; end else disp ('el problema es dual no acotado') pro=2;

end end if(pro==2) disp('dual no acotado') p=0; else fiD=(d(1,q)/alfar(1,q));

aaa =Bf*A(:,q);

%Aqui actualizamos. Zo=Zo+(fiD*delta);

tetap=(delta/alfar(1,q));

X(xc,1)=X(xc,1)-(tetap*aaa);

X(q,1)=X(q,1)+tetap;

for j=xn

d(1,j)=d(1,j)-(fiD*alfar(1,j)); end

d(1,p)=-fiD;

xc=setdiff(xc,p); xc=union(xc,q); xn=setdiff(xn,q); xn=union(xn,p);

%añadimos actualizacion B=A(:,xc); AN= A(:,xn);

Bi=inv(B); Bf=Bi;

%Comprobar si es primal factiblle

pp=zeros(1,m); for i=1:m

72

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 84: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

j=xc(i); if (lo(j,1)-(10^(-12))<=X(j,1) && X(j,1)<=up(j,1)) else pp(1,i)=i; end end

pp=setdiff(pp,zeros(1,m)); p=0; if(~isempty(pp)) k=pp(1,1); p=xc(1,k); mmii=(X(p,1)/nnnorm(m,k,Bf)); t=length(pp); for ll=1:t ind=pp(1,ll); i=xc(1,ind); if(mmii>(X(i,1)/nnnorm(m,ind,Bf))) mmii=(X(i,1)/nnnorm(m,ind,Bf)); k=ind; p=i; end end

else disp('Factible O')

end

end end

while (p~=0) if (X(p,1)<lo(p,1)) delta=X(p,1)-lo(p,1); end if(X(p,1)>up(p,1)) delta=X(p,1)-up(p,1); end

cri=delta;

r=k;

ccc=zeros(1,m); ccc(1,r)=1;

ror=ccc*Bf;

afr=ror*AN;

alfar=zeros(1,n);%aqui damos dimension n a alfa para poder multiplicar luego. iy=n-m; for j=1:iy i=xn(j); alfar(1,i)=afr(1,j); end

if (X(p,1)<lo(p,1)) %esto es para eleccion de q de entrada alfarb=-alfar; else alfarb=alfar; end

FF=zeros(1,n);

73

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 85: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

for i=xn if(X(i,1)==lo(i,1) && alfarb(1,i)>0) FF(1,i)=i; end if (X(i,1)==up(i,1) && alfarb(1,i)<0) FF(1,i)=i; end end

f=setdiff(FF,zeros(1,n)); %agregar implementacion de ratio test

S=[];

detap=zeros(1,n);

pro=0;

while(pro==0)

if (~isempty(f)) q=f(1,1); mimin=abs(d(1,q)/alfar(1,q));

for i=f if (abs(d(1,i)/alfar(1,i))< mimin) mimin=abs(d(1,i)/alfar(1,i)); q=i; end end if (q==intersect(q,Jb)) if(X(q,1)==lo(q,1)) detap(1,q)=up(q,1)-lo(q,1); end if (X(q,1)==up(q,1)) detap(1,q)=lo(q,1)-up(q,1); end ssig=sign(cri); cri=cri-(detap(1,q)*alfar(1,q));

if(ssig==sign(cri)) S=union(S,q); f=setdiff(f,q); pro=0;

else for j=S if(X(j,1)==lo(j,1)) X(j,1)=up(j,1); else if (X(j,1)==up(j,1)) X(j,1)=lo(j,1); end end end

amon=zeros(m,1); for j=S amon=amon+detap(1,j)*A(:,j); end rre=Bf*amon; for h=1:m i=xc(1,h); X(i,1)=X(i,1)-rre(h,1);

74

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 86: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

end if (X(p,1)<lo(p,1)) delta=X(p,1)-lo(p,1); else if(X(p,1)>up(p,1)) delta=X(p,1)-up(p,1); end end Zo=0;

for i=1:n Zo=Zo+(F(1,i)*X(i,1)); end pro=1; end else for j=S if(X(j,1)==lo(j,1)) X(j,1)=up(j,1); else if (X(j,1)==up(j,1)) X(j,1)=lo(j,1); end end end

amon=zeros(m,1); for j=S amon=amon+detap(1,j)*A(:,j); end rre=Bf*amon; for h=1:m i=xc(1,h); X(i,1)=X(i,1)-rre(h,1); end

if (X(p,1)<lo(p,1)) delta=X(p,1)-lo(p,1); end if(X(p,1)>up(p,1)) delta=X(p,1)-up(p,1); end Zo=0;

for i=1:n Zo=Zo+(F(1,i)*X(i,1)); end pro=1;

end else disp ('el problema es dual no acotado') pro=2;

end end

if(pro==2) disp('dual no acotado') p=0;

else fiD=(d(1,q)/alfar(1,q));

aaa =Bf*A(:,q);

%Aqui actualizamos.

75

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 87: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Zo=Zo+(fiD*delta);

tetap=(delta/alfar(1,q));

X(xc,1)=X(xc,1)-(tetap*aaa);

X(q,1)=X(q,1)+tetap;

for j=xn

d(1,j)=d(1,j)-(fiD*alfar(1,j)); end

d(1,p)=-fiD;

xc=setdiff(xc,p); xc=union(xc,q); xn=setdiff(xn,q); xn=union(xn,p);

%añadimos actualizacion B=A(:,xc); AN= A(:,xn);

Bi=inv(B); Bf=Bi;

%Comprobar si es primal factiblle

pp=zeros(1,m); for i=1:m j=xc(i); if (lo(j,1)-(10^(-12))<=X(j,1) && X(j,1)<=up(j,1)) else pp(1,i)=i; end end

pp=setdiff(pp,zeros(1,m)); p=0; if(~isempty(pp)) k=pp(1,1); p=xc(1,k); mmii=(X(p,1)/nnnorm(m,k,Bf)); t=length(pp); for ll=1:t ind=pp(1,ll); i=xc(1,ind); if(mmii>(X(i,1)/nnnorm(m,ind,Bf))) mmii=(X(i,1)/nnnorm(m,ind,Bf)); k=ind; p=i; end end

else disp('Factible O '); end

end end disp('el valor de Zo es: '); disp(Zo);

76

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/

Page 88: CONSTRUCCION DE M ETODOS PARA CALCULAR UNA …

Otras funciones programadas en matlab

Funcion 1: nnnorm

Funcion 2: uunn

77

Biblioteca Digital. Dirección de Sistemas de Informática y Comunicación - UNT

Esta obra ha sido publicada bajo la licencia Creative Commons Atribucion-No Comecial-Compartir igual bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/