Anda di halaman 1dari 256

Programación No Lineal

6
Postgrado de Investigación de Operaciones

Prof. Gonzalo Müller


gmullerb@mail.com
Facultad de Ingeniería
Universidad Central de Venezuela
Clase Anterior
 Mínimo de una función f: x*∈S y inf(f(x))=f(x*).
 Teorema de Weierstrass (Condición de suficiencia
para la existencia de un mínimo): S es compacto y f
función continua.
 Función Convexa.
 Función Estrictamente Convexa: no admite
segmentos rectos.
 Función Cóncava.
 Si f(x) es convexa entonces –f(x) es cóncava, y
viceversa.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 2
Clase Anterior
 Propiedades de un función convexa:
 Si una función f es convexa y k ≥ 0 entonces kf es
convexa.
 La suma de dos funciones convexas es una función
convexa.
 Composición de funciones convexas
 Todo mínimo local de una función convexa f es un
mínimo global de f.
 Todo mínimo local de una función estrictamente es
el único mínimo global sobre todo S.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 3
Clase Anterior
 Problema de optimización convexa: OC(f, S).
 Teorema de Kuhn-Tucker.
 Condición de Slater.
 Función Convexa Diferenciable.
 Función Estrictamente Convexa Diferenciable.
 Si x* es una solución óptima.
Entonces ∇f(x*)T(x–x*) ≥ 0 para todos los x∈S
Si S es un conjunto abierto:
Entonces ∇f(x*) = 0
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 4
Clase Anterior
 Función Cuasiconvexa.
 Función Fuertemente Cuasiconvexa: no admite
segmentos horizontales
 Un mínimo local es el único mínimo y por ende el
único mínimo global.
 Función Estrictamente Cuasiconvexa: solo admite un
segmento horizontal en el mínimo.
 Todo mínimo local es un mínimo global.
 Función Cuasiconvexa Diferenciable.
 Función Cuasicóncava Diferenciable,
 Hessiano Bordeado ∇2f(x).
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 5
Clase Anterior
 Teorema de Kuhn-Tucker: gk cuasicóncavas .
 Función Pseudoconvexa: similar a una estrictamente
cuasiconvexa.
 Todo mínimo local es un mínimo global.
 Si x* es el mínimo entonces ∇f(x*) = 0.
 Teorema de Kuhn-Tucker: f es pseudoconvexa, hj son
cuasiconvexas y cuasiconcavas.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 6


Optimización
 Optimización: Búsqueda de la configuración factible
de atributos que alcance el mejor objetivo.
 Métodos analíticos:
analíticos: Cálculo diferencial
diferencial..
 Métodos gráficos.
gráficos.
 Métodos numéricos: Algoritmos.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 7


Optimización
 Optimización: Búsqueda de la configuración factible
de atributos que alcance el mejor objetivo.
 Métodos analíticos: Cálculo diferencial.
 Métodos gráficos.
 Métodos numéricos
numéricos:: Algoritmos
Algoritmos..

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 8


Optimización
 Optimización: Búsqueda de la configuración factible
de atributos que alcance el mejor objetivo.
 Métodos analíticos: Cálculo diferencial.
 Métodos gráficos.
 Métodos numéricos
numéricos:: Algoritmos
Algoritmos..
 Los problemas de optimización son cada vez más
complejos.
 Surgen métodos iterativos y cuya convergencia
depende de un estudio matemático de la función.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 9


Optimización
 Optimización: Búsqueda de la configuración factible
de atributos que alcance el mejor objetivo.
 Métodos analíticos: Cálculo diferencial.
 Métodos gráficos.
 Métodos numéricos
numéricos:: Algoritmos
Algoritmos..
 Los problemas de optimización son cada vez más
complejos.
 Surgen métodos iterativos y cuya convergencia
depende de un estudio matemático de la función.
 No siempre se garantiza la optimalidad.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 10
Metodología para resolución de un problema
 Pasos a seguir en la resolución de un problema:
Definición del problema

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 11


Metodología para resolución de un problema
 Pasos a seguir en la resolución de un problema:
Definición del problema

Formulación del modelo matemático

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 12


Metodología para resolución de un problema
 Pasos a seguir en la resolución de un problema:
Definición del problema

Formulación del modelo matemático

Desarrollo de un método numérico para resolución

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 13


Metodología para resolución de un problema
 Pasos a seguir en la resolución de un problema:
Definición del problema

Formulación del modelo matemático

Desarrollo de un método numérico para resolución

Implementación computacional del método

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 14


Metodología para resolución de un problema
 Pasos a seguir en la resolución de un problema:
Definición del problema

Formulación del modelo matemático

Desarrollo de un método numérico para resolución

Implementación computacional del método

Búsqueda y evaluación de la solución

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 15


Algoritmo
 Algoritmo
Algoritmo: Es el conjunto detallado de pasos
secuénciales, ordenados y detallados que permiten
lograr un objetivo.
 Secuenciales: Deben ser ejecutados uno detrás de
otro.
 Ordenados: Ya que la posición del paso es
fundamental.
 Detallados: Deben estar lo suficientemente
detallado para que no exista ninguna duda en su
puesta en marcha.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 16


Algoritmo
 Características de un algoritmo:
algoritmo
 Finito: Siempre termina luego de la ejecución de un
número finito de pasos.
 Definido: Se obtiene el mismo resultado a partir de
los mismos datos.
 Preciso: No debe contener ambigüedades, no pude
ser sujeto de interpretación.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 17


Algoritmo
 Partes de un algoritmo:
algoritmo
 Entrada: Datos necesarios para comenzar el
proceso.
 Proceso: Se realizan todas las operaciones y cálculos
necesarios con los datos de entrada.
 Salida: Se obtiene un resultado.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 18


Algoritmo

Una Solución
Entrada xk

Proceso
Algoritmo para
bajar de peso
Algoritmo

Salida xk+1
Una Mejor
Solución

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 19


Representación de un algoritmo
 Símbolos Básico de un Diagramas de Flujo:
Flujo
 Líneas de Flujo: Establece la dirección de la
secuencia de pasos
 Una línea de flujo con la dirección saliendo de un
bloque, se conoce como una línea de flujo de salida
del bloque.
 Una línea de flujo con la dirección entrando en un
bloque, se conoce como una línea de flujo de
entrada del bloque.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 20


Representación de un algoritmo

 Bloque Terminal: Señala el inicio o el fin del


algoritmo.

Inicio

Fin

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 21


Representación de un algoritmo

 Bloque Terminal: Señala el inicio o el fin del


algoritmo.

Inicio

El bloque inicio siempre tiene El bloque fin siempre tiene


solo una línea y es de salida solo líneas de entrada

Fin

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 22


Representación de un algoritmo

 Bloque Proceso: Se utiliza para indicar un proceso ó


operación.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 23


Representación de un algoritmo

 Bloque Proceso: Se utiliza para indicar un proceso ó


operación.

El bloque de proceso siempre tiene una línea


de salida (puede tener varias de entrada)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 24
Representación de un algoritmo

 Bloque de Decisión: Establece la dirección de los


subsecuentes pasos en función de una condición
dada.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 25


Representación de un algoritmo

 Bloque de Decisión: Establece la dirección de los


subsecuentes pasos en función de una condición
dada.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 26


Representación de un algoritmo

 Bloque de Decisión: Establece la dirección de los


subsecuentes pasos en función de una condición
dada.

El bloque de decisión siempre tiene dos


de salida (puede tener varias de entrada)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 27
Representación de un algoritmo

 Conectores: Establece la conexión entre dos


bloques que espacialmente no puede ser
conectados.
 Se usan en pares.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 28


Representación de un algoritmo
 Reglas de construcción de Diagramas de Flujo:
Flujo
 Contiene un único bloque terminal que indica
inicio.
 Puede contener varios bloques terminal que indican
el final.
 Debe ser organizado de tal forma que la secuencia
sea leída de arriba abajo y de izquierda a derecha.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 29


Representación de un algoritmo

 Cada bloque puede tener a lo sumo una línea de


flujo de entrada.
 Cada bloque puede tener a lo sumo una línea de
flujo de salida, exceptuando el bloque de decisión.
 El bloque de decisión debe tener dos líneas de flujo
de salida.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 30


Representación de un algoritmo

 Las líneas siempre debe ir del lado derecho.

… … …

DERECHA IZQUIERDA
DERECHA
ÚNICA EXCEPCIÓN

 LAS LÍNEAS DE FLUJO NO PUEDEN


CRUZARSE.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 31
Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 32


Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 33


Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S

k =N
S = ∑k
k =0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 34


Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N k debe tener un valor inicial de 0
 Salida: Sumatoria S

k =N k=0
S = ∑k
k =0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 35


Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S

k =N k=0
S = ∑k k<N
k =0 Verdadero
Se incrementa k hasta N k=k+1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 36


Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S

k =N k=0
S = ∑k k<N
k =0 Verdadero
k=k+1

Se suma k a S S=S+k
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 37
Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N S debe tener un valor inicial de 0
 Salida: Sumatoria S

k =N k = 0, S = 0
S = ∑k k<N
k =0 Verdadero
k=k+1

S=S+k
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 38
Representación de un algoritmo
Ejemplo 6.1: Construir un algoritmo que sume los
primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S Comienzo

k =N k = 0, S = 0
S = ∑k k<N Falso
Fin
k =0 Verdadero
k=k+1

S=S+k
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 39
Matlab
 Matlab: Matrix Laboratory, Herramienta de
investigación, desarrollo y análisis que permite
expresar en notación matemática familiar el problema,
el método de resolución y la solución.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 40


Matlab
 Matlab permite realizar una gran variedad de tareas
destinadas a la resolución numérica de distintos
problemas:
 Operaciones con matrices.
 Graficación.
 Calculo estadístico.
 Desarrollo de algoritmos.
 Simulación.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 41


Ambiente de trabajo Matlab
 El ambiente de trabajo consta de diferentes ventanas:

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 42


Ambiente de trabajo Matlab
 Ventana de comandos: ingresar variables y ejecución
de funciones.

Ventana
de
comandos

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 43


Ambiente de trabajo Matlab
 Ventana de variables: contiene una lista de todas las
variables utilizadas.

Ventana
de
variables

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 44


Ambiente de trabajo Matlab
 Ventana de historia: contiene una lista de todos los
comandos ejecutados.

Ventana
de
historia

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 45


Conceptos Básicos de Matlab
 Matrices:
 Toda la matriz debe estar encerrada entre llaves.
A = [Matriz]
 Cada fila esta definida por un conjunto de
elementos separados con espacios o tabulaciones y
un punto y coma que indica el final de la fila.
A = [A11 A12 A13 … ; A21 A22 A23 … ; ]

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 46


Conceptos Básicos de Matlab
 Matrices:
 Toda la matriz debe estar encerrada entre llaves.
A = [Matriz]
 Cada fila esta definida por un conjunto de
elementos separados con espacios o tabulaciones y
un punto y coma que indica el final de la fila.
A = [A11 A12 A13 … ; A21 A22 A23 … ; ]
2 1
A = 3 5 
6 2 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 47
Conceptos Básicos de Matlab
 Matrices:
 Toda la matriz debe estar encerrada entre llaves.
A = [Matriz]
 Cada fila esta definida por un conjunto de
elementos separados con espacios o tabulaciones y
un punto y coma que indica el final de la fila.
A = [A11 A12 A13 … ; A21 A22 A23 … ; ]
2 1
A = 3 5  A = [2 1; 3 5; 6 2]
6 2 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 48
Conceptos Básicos de Matlab
 Todo es una matriz.
 Escalar es una matriz 1x1.
A = [Escalar] = Escalar

 Un elemento especifico de la matriz.


A(Fila, Columna)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 49


Conceptos Básicos de Matlab
 Todo es una matriz.
 Escalar es una matriz 1x1.
A = [Escalar] = Escalar

 Un elemento especifico de la matriz.


A(Fila, Columna)

2 1
A = 3 5 
6 2 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 50
Conceptos Básicos de Matlab
 Todo es una matriz.
 Escalar es una matriz 1x1.
A = [Escalar] = Escalar

 Un elemento especifico de la matriz.


A(Fila, Columna)

2 1 A(1,1)
A = 3 5 
6 2 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 51
Conceptos Básicos de Matlab
 Todo es una matriz.
 Escalar es una matriz 1x1.
A = [Escalar] = Escalar

 Un elemento especifico de la matriz.


A(Fila, Columna)

2 1
A = 3 5 
6 2  A(3,1)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 52
Operadores Aritméticos
 Operadores Aritméticos:
 Suma: +
 Resta: -
 Multiplicación: *
 División: /
 Exponenciación: ^
 Transpuesta: '

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 53


Operadores Aritméticos
 Operadores Aritméticos:
 Suma: +
 Resta: -
 Multiplicación: *
 División: /
 Exponenciación: ^
 Transpuesta: '
2 1
A = 3 5  B = A'
6 2
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 54
Operadores Aritméticos
 Operadores Aritméticos:
 Suma: +
 Resta: -
 Multiplicación: *
 División: /
 Exponenciación: ^
 Transpuesta: '
2 1
2 3 6 
A = 3 5  B = A' B=
1 6 2 
 
6 2
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 55
Funciones Matemáticas Básicas
 Funciones Matemáticas Básicas:
Básicas
 Valor Absoluto: abs(x) x
 Raíz Cuadrada: sqrt(x) 2
x
x
 Exponencial: exp(x) e
 Logaritmo neperiano: log(x) log e x
 Logaritmo base 10: log10(x) log 10 x
 Signo: sign(x):-1 si x < 0, 0 si x = 0,1 si x > 0.

help elfun permite obtener una lista detallada de las funciones

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 56


Estructuras Básicas de Programación
 Estructura Condicional Sencilla
Sencilla: Se ejecutan cierta
secuencia de instrucciones dependiendo de la
condición dada.
DF MATLAB

F
Condición if Condición
V Paso 1
Paso 1 …
Paso N
Paso n end

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 57


Estructuras Básicas de Programación
 Estructura Condicional Sencilla
Sencilla: Se ejecutan cierta
secuencia de instrucciones dependiendo de la
condición dada.
DF MATLAB

F
Condición if Condición
V Paso 1
Paso 1 …
Paso N
Paso n end

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 58


Estructuras Básicas de Programación
 Estructura Condicional Doble
Doble: Se ejecutan alguna de
dos secuencias de instrucciones dependiendo de la
condición dada. MATLAB
DF if Condición
Paso 1
V F
Condición …
Paso N
Paso 1 Paso 1’ else
Paso 1’
Paso n Paso n’ …
Paso N’
end
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 59
Estructuras Básicas de Programación
 Estructura Repetitiva Mientras:
Mientras Una secuencia de paso
se repite en forma consecutiva mientras se cumpla una
condición dada.
DF MATLAB

Condición while Condición


Paso 1
V

Paso 1
Paso N
end
Paso n

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 60


Estructuras Básicas de Programación
 Estructura Repetitiva Mientras:
Mientras Una secuencia de paso
se repite en forma consecutiva mientras se cumpla una
condición dada.
DF MATLAB

Condición while Condición


Paso 1
V

Paso 1
Paso N
end
Paso n

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 61


Expresiones Lógicas
 Operadores Relaciónales:
Relaciónales Permiten establecer la
relación entre dos valores numéricos.
 Mayor que: >
 Menor que: <
 Igual que: ==
 Mayor o igual que: >=
 Menor o igual que: <=
 Distinto que: ~=
Se utilizan para construir la expresión lógica que
constituye la condición.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 62
Operadores Lógicos
 Operadores Lógicos:
 Y: &
 O: |

 Se utilizan para combinar expresiones lógicas.

 Negación: ~

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 63


Operadores Lógicos
 Operadores Lógicos:
 Y: &
 O: |

 Se utilizan para combinar expresiones lógicas.


(A == 5)&(B > 0)
 Negación: ~

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 64


Operadores Lógicos
 Operadores Lógicos:
 Y: &
 O: |

 Se utilizan para combinar expresiones lógicas.


(A ~= 5)|(B <= 0)
 Negación: ~

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 65


Variables
 Reglas para definir nombre de las variables:
variables
1. Se forma con un secuencia de los siguientes
caracteres:
a bcdefghijklmnopqrstuvwxyz
A BCDEFGHIJKLMNOPQRST
UVWXYZ
0 123456789
_

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 66


Variables
2. No puede contener espacios en blanco, ni ningún
otro carácter diferente de los indicados en
anteriormente.
3. El primer carácter no puede ser un dígito.
4. Hay distinción entre las letras mayúsculas y
minúsculas.
5. Puede tener hasta 31 caracteres.

Recomendación: utilizar un nombre que tengan


un significado para el dato que representa.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 67


Algoritmos en Matlab
Ejemplo 6.1: Construir un programa en Matlab que
sume los primeros N números enteros:

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 68


Algoritmos en Matlab
Ejemplo 6.1: Construir un programa en Matlab que
sume los primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S Comienzo

k =N k = 0, S = 0
S = ∑k k<N Falso
Fin
k =0 Verdadero
k=k+1

S=S+k
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 69
Algoritmos en Matlab
Ejemplo 6.1: Construir un programa en Matlab que
sume los primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S Comienzo

k =N k = 0, S = 0
S = ∑k k<N Falso
Fin
k =0 Verdadero
Estructura repetitiva
k=k+1
while
S=S+k
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 70
Algoritmos en Matlab
Ejemplo 6.1: Construir un programa en Matlab que
sume los primeros N números enteros:
 Entrada: N
 Salida: Sumatoria S Comienzo
N=5
k = 0, S = 0
k=0
S=0 Falso
k<N Fin
while k < N Verdadero
k=k+1
k=k+1
S=S+1
end S=S+k
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 71
Operaciones útiles en Matlab
 Otras operaciones útiles:
 ; : se coloca al final de una instrucción para evitar la
presentación en pantalla del resultado.
 disp(variable): instrucción que presenta en pantalla el
valor de la variable sin incluir el nombre.
 : : genera una fila de valores
 comienzo:final
 comienzo:delta:final

 clear: Elimina todas las variable de memoria.


 Ctrl+C: Combinación de teclas que detiene la ejecución
de una instrucción.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 72
Operaciones útiles en Matlab
 Otras operaciones útiles:
 ; : se coloca al final de una instrucción para evitar la
presentación en pantalla del resultado.
 disp(variable): instrucción que presenta en pantalla el
valor de la variable sin incluir el nombre.
 : : genera una fila de valores
 comienzo:final A = [1:3] ≡ A = [1 2 3]
 comienzo:delta:final

 clear: Elimina todas las variable de memoria.


 Ctrl+C: Combinación de teclas que detiene la ejecución
de una instrucción.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 73
Operaciones útiles en Matlab
 Otras operaciones útiles:
 ; : se coloca al final de una instrucción para evitar la
presentación en pantalla del resultado.
 disp(variable): instrucción que presenta en pantalla el
valor de la variable sin incluir el nombre.
 : : genera una fila de valores
 comienzo:final A = [1:3] ≡ A = [1 2 3]
 comienzo:delta:final A = [1:0.3:2] ≡ A = [1 1.3 1.6 1.9]

 clear: Elimina todas las variable de memoria.


 Ctrl+C: Combinación de teclas que detiene la ejecución
de una instrucción.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 74
Operaciones útiles en Matlab
 Otras operaciones útiles:
 plot: permite realizar graficas 2D:
1. Definir el vector de valores de x.
x = –3:0.5:3
2. Definir el vector de valores de y.
y = sin(x)
3. Graficar.
plot(x, y)
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-3 -2 -1 0 1 2 3

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 75


Operaciones útiles en Matlab
 Otras operaciones útiles:
 mesh: permite realizar graficas 3D:
1. Definir el vector de valores de x, y.
[x,y] = meshgrid(–3:0.5:3, –3:0.25:3);
(meshgrid → define la malla de puntos: dos matrices, una con filas
iguales para x y otra con columnas iguales para y)
2. Definir el vector de valores de z.
z = x.^2 + y.^2
(Matriz. → Operación de elemento por elemento)
3. Graficar. mesh(x,y,z) 20

15

10

0
4
2 4
0 2
0
-2 -2
-4 -4

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 76


Mapa algorítmico
 Mapa algorítmico:
algorítmico constituye la secuencia de
soluciones obtenidas al utilizar el algoritmo:

x0 Algoritmo x1 Algoritmo Algoritmo xn

x0, x1,…, xn ∈A(x)


A: Mapa algorítmico

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 77


Mapa algorítmico
 Iteración
Iteración: representa una transformación de xk a xk+1
en el mapa:

Iteración 2

x0 Algoritmo x1 Algoritmo Algoritmo xn

Iteración 1 Iteración n

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 78


Mapa algorítmico
Ejemplo 6.2: Resolver el siguiente problema:
min (x2 – 1)
Sujeto a:
x≥1
 Utilizando el siguiente mapa algorítmico
[1, 1/2 (x + 1)], si x ≥ 1
A(x) =
[3/2(x – 1/3), 1], si x < 1
Construir el mapa partiendo de x0 = 3.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 79
Mapa algorítmico

x0 ≥ 1 → [1, 1/2 (x + 1)] → x1 ∈ [1, 2]



x1 = 3/2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 80


Mapa algorítmico

x0 ≥ 1 → [1, 1/2 (x + 1)] → x1 ∈ [1, 2]



x1 = 3/2
x1 ≥ 1 → [1, 1/2 (x + 1)] → x2 ∈ [1, 5/4]

x2 = 9/8

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 81


Mapa algorítmico
x2 ≥ 1 → [1, 1/2 (x + 1)] → x3 ∈ [1, 17/16]

x3 = 33/32


xn = 1

A(3) : 3, 3/2, 9/8, 33/32, …, 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 82


Mapa algorítmico
 Mapa Cerrado:
Cerrado A(x) es un mapa cerrado si no
presenta discontinuidades.

 Un mapa A(x) es un mapa cerrado en x si:


A: X → Y
xk ∈ X
yk ∈ A(xk)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 83


Mapa algorítmico
Ejemplo 6.3:

[1.5 + 0.25 * x, 1+0.5 x], si x ≥ 2


A(x) =
1.5 (x + 1), si x < 2

No es cerrado, debido a la discontinuidad presente


en x = 2.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 84


Mapa algorítmico
 Si un mapa es cerrado es tal que α(xk+1) < α(xk),
siendo α(x) la función objetivo de un problema de
minimización.
Entonces:
 El algoritmo se detiene en un número finito de
iteraciones a un punto x ∈ Ω.
ó
 Se genera un número infinito de puntos x ∈ Ω.

Ω: Conjunto de soluciones óptimas global


Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 85
Algoritmo de Optimización
 Características Necesarias para un algoritmo de
optimización:
optimización
 Dado xk factible cualquier sucesor xk+1 generado
por el algoritmo debe ser factible.
 Dado xk factible cualquier sucesor xk+1 generado
debe mejorar el objetivo:
 Minimización: f(xk+1) < f(xk).
 Maximización: f(xk+1) > f(xk).

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 86


Algoritmo de Optimización

Comienzo

x 0 ∈ S, k = 0

x∈Ω Fin
F

V
xk+1 ∈ A(xk)
k=k+1

Ω: Conjunto de soluciones óptimas global

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 87


Algoritmo de Optimización

Comienzo
Inicialización x 0 ∈ S, k = 0

x∈Ω Fin
F

Búsqueda V
xk+1 ∈ A(xk)
k=k+1

Ω: Conjunto de soluciones óptimas global

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 88


Algoritmo de Optimización
 El algoritmo se detiene cuando se alcanza un vector
perteneciente a el conjunto Ω.
 En la práctica no siempre es posible alcanzar esta
convergencia o establecer si pertenece al conjunto
por lo que se definen reglas de parada.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 89


Algoritmo de Optimización
 Reglas de parada:
 Distancia alcanza en N iteraciones:
║xk – xk – N║ < ε
 Distancia relativa en una iteración:
║xk+1 – xk║/║ xk ║ < ε
 Mejora en el objetivo luego de N iteraciones
|f(xk) – f(xk – N)| < ε
 Mejora relativa en el objetivo en una iteración:
|f(xk) – f(xk + 1)| / |f(xk)| < ε
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 90
Algoritmo de Optimización

Comienzo
Inicialización x 0 ∈ S, k = 0

║xk – xk – N║≥ε Fin


F

Búsqueda V
xk+1 ∈ A(xk)
k=k+1

ε : Error aceptable

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 91


Uso del Algoritmo
 El uso de un algoritmo de optimización va a depender
principalmente de dos factores:

 Requerimientos del Algoritmo.

 Parámetros del Algoritmo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 92


Uso del Algoritmo
 Requerimientos del Algoritmo:
 Función diferenciable.
 Función convexa.
 Problema sin restricciones.
 Problema con restricciones.
 Problema con restricciones lineales.
…

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 93


Uso del Algoritmo
 Parámetros del Algoritmo:
 Vector inicial.
 Tamaño del paso.
 Factor de aceleración.
…

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 94


Uso del Algoritmo
 Sensibilidad de los parámetros:
→ Parada prematura.
→ Otros efectos.
 Eficiencia del algoritmo:
 Maquina.
 Eficiencia del código.
 Desempeño del algoritmo:
 Nº de iteraciones.
 Costo computacional.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 95
Desempeño de un Algoritmo
 Algoritmo constituyen una secuencia de pasos que
permiten resolver un problema.
 Un algoritmo es totalmente inútil si no es capaz de
resolver en un tiempo finito (tiempo aceptable) el
problema para el que fue diseñado.
 Hoy en día se han popularizado debido a la evolución
de las computadoras, lo que permite gran velocidad de
cálculo, y sin ellas sería imposible resolver problemas
reales los cuales poseen gran cantidad de variables y
restricciones.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 96


Desempeño de un Algoritmo
 Factores del Desempeño:
 El tiempo dependerá en gran parte del computador
utilizado, es por ello que el desempeño de un
algoritmo generalmente es medido por la cantidad
de operaciones elementales requeridas por éste es
un computador hipotético.
 También el desempeño se verá afectado por la
cantidad de atributos que deba manejar para
resolver el problema.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 97


Desempeño de un Algoritmo
 Dado estos factores, al describir el desempeño de un
algoritmo se define un número de n atributos,
variables o entradas y se expresa el desempeño como
el numero de operaciones elementales requeridas en
función de un número de entradas n.
 A esto se le conoce como complejidad del
algoritmo.
 Normalmente la complejidad se expresa como el
limite superior número de pasos requeridos.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 98


Desempeño de un Algoritmo
 La función O (de orden) permite expresar la
complejidad de un algoritmo:
Dada dos funciones f(n), f: N→R y g(n), g:N→R
f(n): Número de paso requeridos por el algoritmo.
g(n): Limite superior de la complejidad del algoritmo.
Se dice que el algoritmo tiene complejidad O(g(n))
cuando n → ∞ si existe K > 0 y n0 tal que:
|f(n)| ≤ K |g(n)| ∀n > n0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 99


Desempeño de un Algoritmo

K g(n)

f(n)

n0

Ejemplo 6.4: Determinar la complejidad de un


algoritmo que requiere n5 – 2 n2 + 2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 100


Desempeño de un Algoritmo

K g(n)

f(n)

n0

Ejemplo 6.4: Determinar la complejidad de un


algoritmo que requiere n5 – 2 n2 + 2
|n5 – 2 n2 + 2|≤ n5 + 2 n2 + 2 para n0 > 1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 101


Desempeño de un Algoritmo

K g(n)

f(n)

n0

Ejemplo 6.4: Determinar la complejidad de un


algoritmo que requiere n5 – 2 n2 + 2
|n5 – 2 n2 + 2|≤ n5 + 2 n2 + 2 para n0 > 1
|n5 – 2 n2 + 2|≤ n5 + 2 n5 + 2 n5

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 102


Desempeño de un Algoritmo

K g(n)

f(n)

n0

Ejemplo 6.4: Determinar la complejidad de un


algoritmo que requiere n5 – 2 n2 + 2
|n5 – 2 n2 + 2|≤ n5 + 2 n2 + 2 para n0 > 1
|n5 – 2 n2 + 2|≤ n5 + 2 n5 + 2 n5
|n5 – 2 n2 + 2|≤ 5 n5 → O(n5)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 103
Desempeño de un Algoritmo
 Propiedades:
 Suma:
O(g(n)+ h(n)) = O(max{g(n),h(n)})

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 104


Desempeño de un Algoritmo
 Propiedades:
 Suma:
O(g(n)+ h(n)) = O(max{g(n),h(n)})
 Suma una constante:
O(K+g(n)) = O(g(n))

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 105


Desempeño de un Algoritmo
 Propiedades:
 Suma:
O(g(n)+ h(n)) = O(max{g(n),h(n)})
 Suma una constante:
O(K+g(n)) = O(g(n))
 Producto:
O(g(n) * h(n)) = O(g(n) * h(n))

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 106


Desempeño de un Algoritmo
 Propiedades:
 Suma:
O(g(n)+ h(n)) = O(max{g(n),h(n)})
 Suma una constante:
O(K+g(n)) = O(g(n))
 Producto:
O(g(n) * h(n)) = O(g(n) * h(n))
 Producto por una constante:
O(K*g(n)) = O(g(n))
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 107
Desempeño de un Algoritmo
Ejemplo 6.5:
Un algoritmo que requiere 3 bucles anidados donde el
número de operaciones realizadas en cada bucle es
igual al numero de entradas del algoritmo, se dice que
tiene complejidad O(n3):

V

F
V
… O(n3)
F
V

F
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 108
Desempeño de un Algoritmo
Ejemplo 6.6: Determinar la complejidad del algoritmo
del simplex:
1. Se realizan un máximo:
 n  iteraciones
 
m

2. En cada iteración se requiere el producto de una


matriz por un vector:
m * m operaciones

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 109


Desempeño de un Algoritmo
La complejidad será:

 n  
O  *m*m 
 m  

n m
  ≤ n
m

O(n m *m 2 )
O(n m
)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 110
Desempeño de un Algoritmo

Determinar la complejidad de un
algoritmo es una arte que requiere de
mucha destreza, ingenio y experiencia

La complejidad de un algoritmo
establecerá su utilidad práctica

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 111


Desempeño de un Algoritmo
 Un algoritmo se considera útil si su complejidad es
polinomial con respecto del número de entradas.
 Algoritmos de tiempo polinomial:
O(n), O(n3) , O(n2.5), O(n log n)
 Algoritmos de tiempo no polinomial:
O(n!), O(2n) , O(nn)
O(n3) es considerado el límite
aceptable para el tiempo polinomial
Generalmente el estudio de algoritmos no polinomiales
es abandonado por los investigadores al surgir
algoritmos polinomiales para el problema el cuestión
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 112
Uso del Algoritmo

Al aplicar un algoritmo, si se conoce la


naturaleza del problema es posible
garantizar si la solución obtenida es la
solución óptima del problema

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 113


Programación Lineal
Una clase especial de problema convexo es el
problema de programación lineal, cuya principal
propiedad es que la búsqueda del óptimo se reduce a
la selección entre un conjunto finito de posibles
soluciones.
 En este f, gk y hj son todas funciones lineales.

Programación No Lineal
Programación Convexa

Programación Lineal

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 114


Programación Lineal
 El conjunto finito de posibles soluciones la
constituyen los vértices del politope definidos por
las restricciones lineales.

Politope en R2

Los problemas de programación lineal forman parte


de los problemas de optimización combinatoria

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 115


Conjuntos poliédricos
 Conjunto Poliédrico: Sea S en En, S es un conjunto
poliédrico si S es la intersección de un número finito
de semiespacios cerrados.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 116


Conjuntos poliédricos
 Conjunto Poliédrico: Sea S en En, S es un conjunto
poliédrico si S es la intersección de un número finito
de semiespacios cerrados.

Esto es, si pk∈En, pk ≠ 0 ∀k = 1, 2, …, m, entonces


T
S = {x ∈ E : p x ≤ bk,∀k = 1, 2, …, m}
n k

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 117


Conjuntos poliédricos
 Conjunto Poliédrico: Sea S en En, S es un conjunto
poliédrico si S es la intersección de un número finito
de semiespacios cerrados.

Esto es, si pk∈En, pk ≠ 0 ∀k = 1, 2, …, m, entonces


T
S = {x ∈ E : p x ≤ bk,∀k = 1, 2, …, m}
n k

También se puede expresar en su forma matricial


S = {x ∈ En : A x ≤ b}
donde A∈Em,n y b∈Em.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 118
Conjuntos poliédricos
 Punto Extremo: Sea S un conjunto convexo no vacío
en En, un vector x ∈ S es un punto extremo de S, si
no puede ser expresado como una combinación
convexa estricta de dos vectores distintos x1 y x2 ∈ S.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 119


Conjuntos poliédricos
 Punto Extremo: Sea S un conjunto convexo no vacío
en En, un vector x ∈ S es un punto extremo de S, si
no puede ser expresado como una combinación
convexa estricta de dos vectores distintos x1 y x2 ∈ S.
Esto es, x es un punto extremo si x =αx1 + (1–α)x2
con x1 y x2 en En y α ∈ (0, 1), entonces se tiene
necesariamente que x = x1 = x2.

Punto Extremo
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 120
Conjuntos poliédricos
Ejemplo 6.7: Determinar el conjunto de puntos
extremos Eext del siguiente conjunto:
S={x∈R2:[1 1] x ≤ 2, [–1 2] x ≤ 2, [–1 0] x ≤ 0, [0 –1]
x ≤ 0}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 121


Conjuntos poliédricos
Ejemplo 6.7: Determinar el conjunto de puntos
extremos Eext del siguiente conjunto:
S={x∈R2:[1 1] x ≤ 2, [–1 2] x ≤ 2, [–1 0] x ≤ 0, [0 –1]
x ≤ 0}
Se realiza la intersección de los semiespacios que
conforman el conjunto poliédrico y se obtiene:
x3
x2
S
x1 x4

Eext = {[0 0]T, [0 1]T, [2/3 4/3]T, [2 0]T}


Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 122
Conjuntos poliédricos
Ejemplo 6.8: Determinar el conjunto de puntos
extremos Eext del siguiente conjunto:
S={x∈R2:[1 1] x ≤ 2, [–1 0] x ≤ 0, [0 –1] x ≤ 0}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 123


Conjuntos poliédricos
Ejemplo 6.8: Determinar el conjunto de puntos
extremos Eext del siguiente conjunto:
S={x∈R2:[1 1] x ≤ 2, [–1 0] x ≤ 0, [0 –1] x ≤ 0}
Se realiza la intersección de los semiespacios que
conforman el conjunto poliédrico y se obtiene:

x2
S
x1

Eext = {[0 0]T, [0 1]T}


Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 124
Conjuntos poliédricos
Ejemplo 6.9: Determinar el conjunto de puntos
extremos Eext del siguiente conjunto:
S={x∈R2: xTx ≤ 1}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 125


Conjuntos poliédricos
Ejemplo 6.9: Determinar el conjunto de puntos
extremos Eext del siguiente conjunto:
S={x∈R2: xTx ≤ 1}
Al graficar el conjunto convexo se obtiene:

cuyo puntos extremos están definidos por:


Eext ={x∈R2: xTx = 1}
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 126
Conjuntos poliédricos
 Rayo: Un rayo R en En es un conjunto de la forma
R = {x∈En: x = x0 + µd, µ ≥ 0}
siendo d∈En y d ≠ 0

d R
x=x0+µd

x0

El vector d recibe el nombre de dirección del rayo R y


el vector x0 recibe el nombre de vértice del rayo.
Si un conjunto incluye un rayo, entonces es no acotado
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 127
Conjuntos poliédricos
 Dirección de un conjunto: Sea S un conjunto convexo
cerrado no vacío en En, un vector d ∈ En, d ≠ 0 es
llamado una dirección de S, si se puede construir un
rayo incluido en S de vértice x, para todo x de S

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 128


Conjuntos poliédricos
 Dirección de un conjunto: Sea S un conjunto convexo
cerrado no vacío en En, un vector d ∈ En, d ≠ 0 es
llamado una dirección de S, si se puede construir un
rayo incluido en S de vértice x, para todo x de S

∀x∈S, x + µd ∈ S, ∀µ ≥ 0

Un conjunto que posee una dirección es no acotado,


si un conjunto es acotado no posee dirección alguna

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 129


Conjuntos poliédricos
 Dirección extrema: Se dice que una dirección d de S
es una dirección extrema de S, si ésta no puede ser
expresada como una combinación lineal positiva de
dos direcciones distintas d1 y d2 de S.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 130


Conjuntos poliédricos
 Dirección extrema: Se dice que una dirección d de S
es una dirección extrema de S, si ésta no puede ser
expresada como una combinación lineal positiva de
dos direcciones distintas d1 y d2 de S.
Esto es, d es una dirección extrema de S si:
d = µ1d1 + µ2d2 para µ1>0 y µ2>0 ⇒ d1 = k d2
para algún escalar k > 0
Dos direcciones d1 y d2 en En son distintas
si d1 ≠ k d2 para cualquier escalar k > 0
x2
d1 y d2 son direcciones extremas
d3
S d2
d3 no es una dirección extrema
x1 d1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 131
Conjuntos poliédricos
 Caracterización de puntos extremos: Sea el conjunto
poliédrico
S = {x∈En: A x ≤ b, x ≥ 0}
donde A∈Em,n, b∈Em y rgo(A) = m.
Los puntos extremos se encuentran en la intersección
del los hiperplanos definidos por el conjunto
poliédrico:
T
k
p x = bk

Ax=b
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 132
Conjuntos poliédricos
 La matriz A se puede particionar en [B N] con
B∈Em,m no singular y en forma concomitante
x = [xB xN]T, de esta forma se puede resolver de
forma única
B xB = b

xB = B-1b
 Una matriz H no singular
o regular es aquella que es
invertible → det(H) ≠ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 133


Conjuntos poliédricos
 Haciendo x = [xB xN]T = [xB 0]T, se obtiene una
solución para el sistema original:
Ax=b
 xB 
[B N ]⋅   = b → B ⋅ x B + N ⋅ x N = b
x N 

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 134


Conjuntos poliédricos
 Haciendo x = [xB xN]T = [xB 0]T, se obtiene una
solución para el sistema original:
Ax=b
 xB 
[B N ]⋅   = b → B ⋅ x B + N ⋅ x N = b
x N 
Se tiene lo que se conoce como una solución básica:
x = [B-1b 0]T

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 135


Conjuntos poliédricos
 Haciendo x = [xB xN]T = [xB 0]T, se obtiene una
solución para el sistema original:
Ax=b
 xB 
[B N ]⋅   = b → B ⋅ x B + N ⋅ x N = b
x N 
Se tiene lo que se conoce como una solución básica:
x = [B-1b 0]T
Si x ≥ 0 se tiene una solución básica factible:
x = [B-1b 0]T
B-1b ≥ 0
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 136
Conjuntos poliédricos
 Sea S = {x∈En: Ax = b, x ≥ 0} donde A es de
rango completo, es decir, es una matriz de m por n
de m filas linealmente independientes con m < n, y b
es un vector columna de m elementos.
Un punto x es un punto extremo de S sí y sólo sí A
puede ser particionada en [B N], con B no singular
y B-1b ≥ 0, tal que

 x B  B −1b
x= = 
x N   0 

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 137


Conjuntos poliédricos
 El número de puntos extremos es finito, está
acotado superiormente por el número de soluciones
básicas factibles, esto es, por el número de matrices
B no singulares de orden m que se pueden obtener
de A. El máximo número de tales matrices es
n n!
  =
 m  m! ( n − m )!
y no necesariamente todas cumplen B-1b ≥ 0.
Si el conjunto poliédrico S no es vacío,
entonces S tiene al menos un punto extremo

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 138


Conjuntos poliédricos
 Caracterización de las direcciones extremas:

Partiendo de una solución básica factible:


x = [B-1b 0]T
B-1b ≥ 0

x = [x1 x2 … xm 0]T
xj ≥ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 139


Conjuntos poliédricos
Ax=b
[B N] x = b

[B N] [x1 x2 … xm 0]T = b
La matriz A puede ser expresada como un conjunto
de vectores columna:
A =[B N] =[a1 a2 … am … an]

[a1 a2 … am … an] [x1 x2 … xm 0]T = b

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 140


Conjuntos poliédricos
La existencia de B-1 permite calcular xB:
B-1BxB + B-1NxN = B-1b

xB = B-1b – B-1NxN

xB = B-1b – B-1[am+1 am+2 … an]xN

xB = B-1b – B-1[am+1xm+1 + am+2xm+2 + … + anxn]

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 141


Conjuntos poliédricos
Si se varía el valor de alguna variable no básica xj en
xN se obtiene
xB = B-1b – B-1ajxj

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 142


Conjuntos poliédricos
Si se varía el valor de alguna variable no básica xj en
xN se obtiene
xB = B-1b – B-1ajxj

Si:
1. xj = 0, se obtiene la solución básica original.
xB = B-1b

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 143


Conjuntos poliédricos
Si se varía el valor de alguna variable no básica xj en
xN se obtiene
xB = B-1b – B-1ajxj

Si:
1. xj = 0, se obtiene la solución básica original.
xB = B-1b
2. A medida que xj aumenta se tienen soluciones
factibles más no básicas al desplazarse sobre B-1aj:
xB = B-1b – B-1ajxj
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 144
Conjuntos poliédricos

 Si alguna de las componentes de B-1aj > 0


xj puede incrementarse hasta un limite debido a
que xB ≥ 0. Recuerde que las variables de holgura
deben ≥ 0 y son estas las que permiten
transformar el sistema A x ≥ b en A x = b

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 145


Conjuntos poliédricos

 Si alguna de las componentes de B-1aj > 0


xj puede incrementarse hasta un limite debido a
que xB ≥ 0. Recuerde que las variables de holgura
deben ≥ 0 y son estas las que permiten
transformar el sistema A x ≥ b en A x = b
 Si B-1aj ≤ 0
xj puede incrementarse sin limite ya que
xB = B-1b – B-1ajxj ≥ 0 x2
S d2
x1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 146
Conjuntos poliédricos
 Sea el conjunto poliédrico

S = {x∈En: A x ≤ b, x ≥ 0}

donde A∈E
∈ m,n, b∈E
∈ m y rgo(A) = m.

Un vector d∈En es una dirección extrema de S, sí y


sólo sí A puede ser particionada en [B N] de forma tal
que B-1aj ≤ 0 para alguna columna aj de N.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 147
Conjuntos poliédricos
El vector d estaría dado por:
− B −1a j 
d= j 
 e 
siendo ej el j-ésimo vector unitario de En-m.
 El número de direcciones extremas es finito, su
cota superior es
n n!
( n − m )  =
 m  m! ( n − m − 1)!

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 148


Conjuntos poliédricos
El vector d estaría dado por:
− B −1a j 
d= j 
 e 
siendo ej el j-ésimo vector unitario de En-m.
 El número de direcciones extremas es finito, su
cota superior es Cantidad de posibles bases
n n!
( n − m )  =
 m  m! ( n − m − 1)!
Cantidad de variables no básicas
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 149
Conjuntos poliédricos
El vector d estaría dado por:
− B −1a j 
d= j 
 e 
siendo ej el j-ésimo vector unitario de En-m.
 El número de direcciones extremas es finito, su
cota superior es
n n!
( n − m )  =
 m  m! ( n − m − 1)!
Si S es no acotado, entonces tiene
al menos una dirección extrema
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 150
Conjuntos poliédricos
 Representación de conjuntos poliédricos en términos
de sus puntos y direcciones extremas: Sea el conjunto
poliédrico no vació
S = {x∈En: A x ≤ b, x ≥ 0}
donde A∈Em,n, b∈Em y rgo(A) = m.
Sean x1, x2, …, xk los puntos extremos de S y d1, d2,
…, dq las direcciones extremas de S, entonces x∈S sí
y sólo sí x puede expresarse
k
por
q
x = ∑ α j x j + ∑ µ jd j
j=1 j=1
con ∑αj = 1, αj ≥ 0 (j=1, …, k) y µj ≥ 0 (j=1, …, q)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 151
Conjuntos poliédricos
Por lo tanto, todo elemento x de S puede ser
expresado por una combinación convexa de los
puntos extremos de S más una combinación lineal no
negativa de las direcciones extremas de S.
Conjunto Acotado Conjunto No Acotado
x1
x5
x2
x
x’ S x
S x4
x2 x1
2 2
x3 x = ∑ α j x + ∑ µ jd j
j

j=1 j=1
5
x = ∑ α jx j
j=1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 152
Programación Lineal
 Problema de Programación Lineal (PL): Consiste en la
optimización de una función lineal sobre un conjunto
poliédrico.
Muchos problemas reales pueden formularse o
aproximarse mediante programas lineales. La PL se
utiliza con frecuencia en la resolución de problemas
no lineales y aún en casos discretos.
min cTx
s. a:
x∈S
siendo S un conjunto poliédrico en En.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 153
Programación Lineal
El problema PL puede expresarse como:
k q
min ∑ (
j=1
c T j
x )α j + ∑ d )µ j
( c T j

j=1

s. a: k

∑α
j=1
j =1
αj ≥ 0 (j = 1, 2,…,k)
µj ≥ 0 (j = 1, 2,…,q)

las variables de decisión son α1, α2,..., αk y µ1, µ2,..., µq.


Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 154
Programación Lineal
 Si cTdj < 0 para algún j (j =1,2,...,k).
 Se puede hacer µj tan grande como se desee.
 La solución óptima es no acotada.
 El óptimo es – ∞

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 155


Programación Lineal
 Si cTdj < 0 para algún j (j =1,2,...,k).
 Se puede hacer µj tan grande como se desee.
 La solución óptima es no acotada.
 El óptimo es – ∞
 Si cTdj ≥ 0 para toda j (i=1,2,...,q)
 En la solución óptima:
 La solución óptima es acotada.
 µj = 0 para toda j (j=1,2,...,q).

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 156


Programación Lineal
Si existe una solución óptima acotada, ésta tiene
asociado un punto extremo y no una dirección
extrema, por lo tanto:
k

s. a:
min ∑ x )α j
( c
j=1
T j

∑αj=1
j =1

αj ≥ 0 (j = 1, 2,…,k)
donde las variables de decisión son α1, α2, ..., αk
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 157
Programación Lineal
Sea xp un punto extremo que corresponde al mínimo
de z, entonces:
 αp = 1
 αj = 0 (j=1,2,...,p – 1,p + 1,...k).

Si un problema de PL admite una solución óptima


acotada, ésta corresponde a un punto extremo del
conjunto poliédrico definido por las restricciones

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 158


Programación Lineal
En caso de solución óptima finita es teóricamente
posible proceder por enumeración completa, esto es,
evaluar la función objetivo en cada punto extremo y
calcular

min{cTxj}

pero ello resulta en un cómputo muy costoso y, en


casos grandes, prohibitivo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 159


Método Simplex
El simplex, introducido en 1947 por G. Dantzyg, se
basa en la exploración (codiciosa) de los puntos y
direcciones extremas del poliedro. Para ello se mueve
en forma sistemática de un punto extremo a otro con
un mejor valor del objetivo (o al menos no peor),
hasta que se alcanza un punto extremo óptimo o bien
una dirección extrema d donde cTd < 0. En este
ultimo caso el objetivo es ilimitado.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 160


Método Simplex

x2
f
x3 x*
f*
x2
f(x3)
S f(x2)

x1 x1 f(x1)

x2
f* f
x3

x2
f(x3)
S f(x2)

x1 x1 f(x1)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 161


Método Simplex
Debe resultar claro que el no acotamiento de la región
factible es condición necesaria más no suficiente para
obtener una solución ilimitada al problema.

x2
f
x*

x2
f*
S f(x2)

x1 x1 f(x1)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 162


Método Simplex
Una solución factible cualquiera x, dada por:
 xB 
x= 
x N 
donde xB ≥ 0 y xN ≥ 0, entonces se puede expresar:

luego:
 x B
Ax = (B N )  = Bx B + Nx N = b
 x N
Por lo tanto:
−1 −1
xB = B b − B N xN
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 163
Método Simplex
Al evaluar el objetivo se llega a
T T  xB  T T
z = c x = [cB cN ] x  = c B x B + c N xN
 N

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 164


Método Simplex
Al evaluar el objetivo se llega a
T T  xB  T T
z = c x = [cB cN ] x  = c B x B + c N xN
 N
Si denotamos x’=B-1b a las componentes básicas del
punto extremo correspondiente se tiene
xB = x’ – B-1NxN
T T
z = c x = c B x' + c N − c B B N x N( T T −1
)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 165


Método Simplex
Al evaluar el objetivo se llega a
T T  xB  T T
z = c x = [cB cN ] x  = c B x B + c N xN
 N
Si denotamos x’=B-1b a las componentes básicas del
punto extremo correspondiente se tiene
xB = x’ – B-1NxN
T T
z = c x = c B x' + c N − c B B N x N ( T T −1
)
Valor actual del objetivo
en el punto x’ Variación del valor del objetivo
al cambiar la solución actual
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 166
Método Simplex
 Dado que xN ≥ 0, se derivan dos casos:

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 167


Método Simplex
 Dado que xN ≥ 0, se derivan dos casos:

1. Si el vector cNT – cBTB-1N ≥ 0 entonces para todo


x de la región factible se tiene que z = cTx ≥ cBTx’ y
por tanto x’ es un óptimo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 168


Método Simplex
 Dado que xN ≥ 0, se derivan dos casos:

1. Si el vector cNT – cBTB-1N ≥ 0 entonces para todo


x de la región factible se tiene que z = cTx ≥ cBTx’ y
por tanto x’ es un óptimo.

2. Si alguna componente del vector cNT – cBTB-1N es


negativa, por ejemplo la j-ésima componente
correspondiente a la columna j de N denotada aj,
esto es cNj – cBTB-1aj < 0 se tiene que z = cTx <
cBTx’ y por tanto x’ (solución actual) no es un
punto extremo óptimo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 169


Método Simplex
 Dado yj = B-1aj pueden ocurrir dos subcasos:

1. Si yj ≤ 0, entonces dj ≥ 0 y es una dirección


extrema de la región factible, resultando ésta no
acotada, por tanto, ∀λ ≥ 0, x = x’ + λ dj ≥ 0, por
tanto el objetivo es ilimitado.  xB 
x =   − y j 
x N   0 
 
 M 
d= 
 1  j
 M 
 
 0 

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 170


Método Simplex
2. Si alguna componente de yj es positiva, se define λ
por
xB = x’ – yj xj ^ xB ≥ 0
x’ – yj xj ≥ 0
x’ ≥ yj xj
 x'h j 
λ = min  j ; y h > 0
1≤ h ≤ m y
 h 
entonces la nueva solución estará dada por:
x = x’ + λ dj
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 171
Método Simplex
 Algoritmo del Simplex:
 Entrada:
 La matriz A ∈ Rm,n que define el conjunto de
ecuaciones de las restricciones lineales.
 El vector de recursos b ∈ Rm.
 El vector de costos c ∈ Rn.
 Salida: Un vector x ∈ Rn tal que se satisfacen las
restricciones ó nada si no existe solución.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 172


Método Simplex
 Algoritmo Comienzo

B0=I, xB0 = b, k = 0

T k-1 k T F
k
cB B N - cN >
k 0T Fin
k= k + 1
V
T k-1 k T
Bk+1 = Bk cambiar k
max{cB B N - cN }=cj
k

br por aj de A
-1 j V
yk = k
B a ≤0 Fin
xk+1=xk+λdk
F
 − y k
  x kBh k  x kB r
k
d = k  λ = min  k : y h > 0 = k
1≤ h ≤ m  y  y r
 e   h

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 173


Método Simplex
 Algoritmo Comienzo
Inicialización
B0=I, xB0 = b, k = 0

T k-1 k T F
k
cB B N - cN >
k 0T Fin
k= k + 1
V
T k-1 k T
Bk+1 = Bk cambiar k
max{cB B N - cN }=cj
k

br por aj de A
Búsqueda

-1 j V
yk = k
B a ≤0 Fin
xk+1=xk+λdk
F
 − y k
  x kBh k  x kB r
k
d = k  λ = min  k : y h > 0 = k
1≤ h ≤ m  y  y r
 e   h

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 174


Método Simplex
 Algoritmo Comienzo
Inicialización
B0=I, xB0 = b, k = 0

T k-1 k T F
k
cB B N - cN >
k 0T Fin
k= k + 1
V Solución finita
T k-1 k T
Bk+1 = Bk cambiar k
max{cB B N - cN }=cj
k

br por aj de A
Búsqueda

-1 j V
yk = k
B a ≤0 Fin
xk+1=xk+λdk
F Solución ilimitada
 − y k
  x kBh k  x kB r − y j 
x = x + λ k 
k
k
d = k  λ = min  k : y h > 0 = k e 
1≤ h ≤ m  y  y r
 e   h

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 175


Método Simplex
Ejemplo 6.10: Resolver el siguiente problema
utilizando el algoritmo del Simplex:

max z = x1 + 2x2
s. a:
x1 + x2 ≤ 6
x2 ≤ 3
x1, x2 ≥ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 176


Método Simplex
 Se transforma el problema en uno de minimización:

min – x1 – 2x2
s. a:
x1 + x2 ≤ 6
x2 ≤ 3
x1, x2 ≥ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 177


Método Simplex
 Al introducir las holguras se tiene el sistema:

min – x1 – 2x2
s. a:
x1 + x2 + x3 = 6
x2 + x4 = 3
x1, x2, x3, x4 ≥ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 178


Método Simplex
 Entrada:
Matriz tecnológica: 1 1 1 0 
A= 
0 1 0 1 
Vector de recursos: 6
b= 
3
Vector de costos:  − 1
− 2
c= 
0
 
0
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 179
Método Simplex
 Salida:
Vector de variables:

 x1 
x 
x= 
2

x 3 
 
x 4 

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 180


Método Simplex
 Inicialización:
B0=I, xB0 = b, k = 0

1 0 
B = 0
 = a 3
[ a 4
]
0 1 

0  x 3   6
xB = = 
x 4   3

k=0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 181


Método Simplex
 Iteración 1: T -1 T F
cBkT Bk Nk - cNk > 0T Fin
Se calcula cB 0TB0-1N0 - cN0 : V

01 1 0 0  0  − 1
N =  cB =  cN = 
 0 1 0  − 2 
−1
1 0 1 1
[0 0]    − [− 1 − 2]
0 1 0 1

[1 2] > [0 0]
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 182
Método Simplex
T k-1 k T
k
max{cB B N - cN }=cj
k

Determinar max{cB 0TB0-1N0 - 0T


cN }:
max{1 2}= 2 = c2 → j = 2
-1 2
Calcular B a:
0
-1 V
yk = Bk aj ≤0 Fin

F
−1
0 1 0 1 1
y =    = 
0 1 1 1
0 0 
y > 
0 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 183
Método Simplex

 x kBh k  x kB r
Hallar λ: λ = min  k : y h > 0 = k
1≤ h ≤ m  y  y r
 h

0
B1  x 6 x 3  x
0
B2
0
B2
λ = min  = , = = = 3 → r=2
0
1≤h ≤ 2  y
1  1 y 1  y 0
2
0
2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 184


Método Simplex

 − y k

Calcular d0:
k
d = k 
0  e 
1 k=2
d = 
0
− 1
  y0
− 1
Hallar la nueva solución: xk+1=xk+λdk

 0  0   0  0 
 1  0   3   3 
x 1 = x 0 + 3  =   +   =  
− 1 6 − 3 3
       
− 1 3 − 3 0
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 185
Método Simplex

Calcular B1: r=2 Bk+1 = Bk cambiar


br por aj de A
B = a0
[ 3
a 4
]

1 1 x 3 
B = a1
[ 3
a =2

0 1
]
 xB 1
= 
  x 2 
Hacer k = k + 1 = 1
Siguiente Iteración
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 186
Método Simplex
F
 Iteración 2: T -1
cBk Bk Nk - cNk > 0T
T
Fin

Se calcula cB 1TB1-1N1 -
T
cN :
1 V

11 0  1 0 1 − 1
N =  cB =  cN = 
 0 1  − 2  0
−1
1 1 1 0
[0 − 2]    − [− 1 0]
0 1 0 1

[1 − 2] > [0 0]
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 187
Método Simplex
T -1 T
max{cBk Bk Nk - cNk }=cj

Determinar max{cB 1TB1-1N1 - 1T


cN }:
max{1 – 2}= 1 = c1 → j = 1
-1 1
Calcular B a:
1
-1 V
yk = Bk aj ≤0 Fin

F
−1
1 1 1 1
1
y =    = 
0 1 0 0
1 0 
y > 
0 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 188
Método Simplex

 x kBh k  x kB r
Hallar λ: λ = min  k : y h > 0 = k
1≤ h ≤ m  y  y r
 h

 x 1B1 3  x 1B1
λ = min  1 =  = 1 = 3 → r=1
 1 1  y1
1≤h ≤ 2  y

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 189


Método Simplex

 − y k

Calcular d1:
k
d = k 
1 k=1  e 
 0  y1
1   1
d =
− 1 y10
 
0
Hallar la nueva solución: xk+1=xk+λdk

 1  0   3   3 
 0   3  0   3
x 2 = x 1 + 3  =   +   =  
− 1 3 − 3 0
       
 0  0   0  0 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 190
Método Simplex

Calcular B2: r=1 Bk+1 = Bk cambiar


br por aj de A
2
B = a [ 3
a 2
]

1 1  x1 
B = a2
[ 1
a =2

0 1
]
 xB 2
= 
  x 2 
Hacer k = k + 1 = 2
Más Iteraciones
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 191
Método Simplex

T -
cBk Bk
yk = Bk
k
1 k T
Bk N - cNk yk -1 j
a ≤0 bk dk xk+1 Bk+1
> 0T
0 0 
1 0 1 6 1 3 1 1
0  F F    

1 1  3 0 1


− 1 3
0     
− 1
 
0  
1 3
1 1 1  3 0 3 1 1
1  F F    

1 0   3 0 1
− 1 0 
0      
0
 
0  
1 1
2   V - - - - - -
 0 1
Con 2 Iteraciones completas se obtuvo el óptimo
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 192
Método del Elipsoide
 El método del elipsoide desarrollado por los
matemáticos soviético Shor, Yudin y Nemirovskii, fue
propuesto en 1979 por el matemático soviético, L. G.
Khachian, como una solución de tiempo polinomial,
O(n2), para problemas de Programación Lineal.
 El método del Elipsoide consiste en mantener un
elipsoide que contenga una solución del problema
de PL, es decir utilizar un elipsoide cuyo centro sea
una solución factible del PL.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 193


Método del Elipsoide
 Parte de un elipsoide que contiene toda la región
factible.
 En cada iteración se sustituye el elipsoide por uno
más pequeño que contiene una solución factible.
Finalmente puede suceder uno de dos casos:
 Encontrar la solución óptima del problema.
 El elipsoide se redujo tanto que ya no es capaz de
albergar una solución.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 194


Método del Elipsoide
 Cuando el centro del elipsoide no es factible
entonces el método calcula un hiperplano separador
entre el punto de el conjunto de soluciones
factibles.
 El método es capaz de obtener una solución
aproximada, cuya vecindad estará constituida por el
elipsoide.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 195


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

x12 + x22 ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 196


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

x12 + x22 + x32 ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 197


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

x12 + x22 +···+ xN2 ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 198


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

∑xk2 ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 199


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

xT x ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 200


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

(x1 – x01) 2 + (x2 – x02) 2 +···+ (xN – x0N) 2 ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 201


Elipsoide
 Esfera unitaria: es un conjunto convexo que satisface:

(x – x0)T(x – x0) ≤ 1

en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 202


Elipsoide
 Elipsoide: es un conjunto convexo que satisface:
(x – x0)T B-1(x – x0) ≤ 1
donde:
B: es una matriz semidefinida positiva.
x0: centro del elipsoide.

S Una elipsoide constituye una


transformación afín de una esfera unitaria
en R2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 203


Funciones Convexas Diferenciables
 Función Convexa:
Convexa Una función f en E1 diferenciable
sobre un conjunto convexo S ⊆ En es convexa si para
dos puntos cualquiera x, x0∈S se satisface:

f(x) ≥ f(x0) + (x – x0)T∇f(x0)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 204


Funciones Convexas Diferenciables
 Función Convexa:
Convexa Una función f en E1 diferenciable
sobre un conjunto convexo S ⊆ En es convexa si para
dos puntos cualquiera x, x0∈S se satisface:

f(x) ≥ f(x0) + (x – x0)T∇f(x0)

f(x) ≥ f(x0) + ∇f(x0)T(x – x0)

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 205


Funciones Convexas Diferenciables
 Función Convexa:
Convexa Una función f en E1 diferenciable
sobre un conjunto convexo S ⊆ En es convexa si para
dos puntos cualquiera x, x0∈S se satisface:

f(x) ≥ f(x0) + (x – x0)T∇f(x0)

f(x) ≥ f(x0) + ∇f(x0)T(x – x0)

∇f(x0)T(x – x0) ≥ 0
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 206
Separación de Conjuntos Convexos
El gradiente ∇f(x0)T define un hiperplano que
establece dos semiespacios:
H + = {x ∈ En : ∇f(x0)T(x – x0) ≥ 0}
H – = {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 207


Separación de Conjuntos Convexos
El gradiente ∇f(x0)T define un hiperplano que
establece dos semiespacios:
H + = {x ∈ En : ∇f(x0)T(x – x0) ≥ 0}
H – = {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}
∇f(x0)
H+ H
∇f(x0)
x0
H x
x0
x H–

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 208


Separación de Conjuntos Convexos
El gradiente ∇f(x0)T define un hiperplano que
establece dos semiespacios:
H + = {x ∈ En : ∇f(x0)T(x – x0) ≥ 0}
H – = {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}
Semiespacio de
f(x) ≥ f(x0) ∇f(x0)
H+ H
∇f(x0)
x0
H x
x0
x H–
crece

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 209


Separación de Conjuntos Convexos
El gradiente ∇f(x0)T define un hiperplano que
establece dos semiespacios:
H + = {x ∈ En : ∇f(x0)T(x – x0) ≥ 0}
H – = {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}
Semiespacio de decrece
f(x) ≥ f(x0) ∇f(x0)
H+ H
∇f(x0)
x0
H x
x0
x H–
crece Semiespacio de
f(x) ≤ f(x0)
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 210
Método del Elipsoide
 Si se trata de un problema de minimización la solución
optima x* pertenece al semiespacio H – , es decir:

x* ∈ {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 211


Método del Elipsoide
 Si se trata de un problema de minimización la solución
optima x* pertenece al semiespacio H – , es decir:

x* ∈ {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}

Por lo tanto, se puede descartar el semiespacio


positivo:
{x ∈ En : ∇f(x0)T(x – x0) ≥ 0}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 212


Método del Elipsoide
 El método del elipsoide convierte el problema de
optimización a una serie de reducciones de la región
de factibilidad, es decir:
x* ∈ {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 213


Método del Elipsoide
 El método del elipsoide convierte el problema de
optimización a una serie de reducciones de la región
de factibilidad, es decir:
x* ∈ {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}
1. Se define un elipsoide E0 que contenga a S cuyo
centro sea x0, de esta manera al realizar el estudio
de factibilidad se reduce a la mitad el espacio de
posible soluciones para una siguiente iteración.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 214


Método del Elipsoide
 El método del elipsoide convierte el problema de
optimización a una serie de reducciones de la región
de factibilidad, es decir:
x* ∈ {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}
1. Se define un elipsoide E0 que contenga a S cuyo
centro sea x0, de esta manera al realizar el estudio
de factibilidad se reduce a la mitad el espacio de
posible soluciones para una siguiente iteración.
2. Se halla el mínimo elipsoide Ek, tal que:
Ek ∈ {E0 ∩ H – }
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 215
Método del Elipsoide
 El mínimo elipsoide Ek+1, tal que:
Ek+1 ∈ {Ek ∩ H – }
Esta dado por:
x k +1
= x + 1/( n + 1) ⋅ d
k k +1

2
k +1  k
n 2 k + 1 k +1 T 
B = 2 B − d ⋅ d
n − 1  n +1 

k +1 B • ∇f( x )
k 0
d =−
∇f( x ) B ∇f( x )0 T k 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 216


Método del Elipsoide
 El método del elipsoide reduce el problema de
optimización a una serie de problema de factibilidad:

min cTx
Ax≤b

cTx ≤ cTx0
Ax≤b
 cTx0: Costo en el centro del elipsoide inicial.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 217
Método del Elipsoide
 El método del elipsoide reduce el problema de
optimización a una serie de problema de factibilidad:

min cTx min f(x)


Ax≤b gk(x) ≤ 0

cTx ≤ cTx0 f(x) ≤ f(x0)


Ax≤b gk(x) ≤ 0
 cTx0: Costo en el centro del elipsoide inicial.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 218
Método del Elipsoide
 Al resolver el problema de factibilidad pueden ocurrir
dos situaciones:
 x0 es una solución factible.
 x0 no es una solución factible.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 219


Método del Elipsoide
 Si x0 es una solución factible, entonces:
 Se reduce el elipsoide con el semiespacio definido
por el objetivo:
x* ∈ {x ∈ En : ∇f(x0)T(x – x0) ≤ 0}

Por lo tanto, se puede descartar el semiespacio donde


la función tiene un mayor valor que la solución actual:

{x ∈ En : ∇f(x0)T(x – x0) ≥ 0}
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 220
Método del Elipsoide
En R2:

x2

(0,30)

(20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 221


Método del Elipsoide
En R2:

x2

(0,30)

x0
(x1, x2)
S
Solución óptima

(0,0) (20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 222


Método del Elipsoide
En R2:

x2

(0,30)

x0
(x1, x2)
cTx ≤ cTx0
S
Solución óptima

(0,0) (20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 223


Método del Elipsoide
En R2:

x2

(0,30)

x0
(x1, x2)
cTx ≤ cTx0
Sk
Solución óptima

(0,0) (20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 224


Método del Elipsoide
 Si x0 no es una solución factible, entonces:
 Se reduce el elipsoide con el semiespacio definido
por la restricción violada:
x* ∈ {x ∈ En : ∇gk(x0)T(x – x0) ≤ 0}

Por lo tanto, se puede descartar el semiespacio de las


soluciones no factibles:

{x ∈ En : ∇gk(x0)T(x – x0) ≥ 0}
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 225
Método del Elipsoide
En R2:

x2

(0,30)

(20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 226


Método del Elipsoide
En R2:

x2

(0,30)

x0
(x1, x2)

S
Solución óptima

(0,0) (20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 227


Método del Elipsoide
En R2:

x2
∇gk(x0)T(x – x0) ≥ 0
(0,30)

∇gk(x0)T(x – x0) ≤ 0 x0
(x1, x2)

S
Solución óptima ∇gk(x0)T(x – x0) )= 0
(0,0) (20,0) x1

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 228


Método del Elipsoide
 Tamaño de un problema de PL: El tamaño L de un
problema de PL, se define como:
L = m*n+log(|P|)
donde P = producto de todos los coeficientes no
nulos de A, b y c.(sin incluir la restricciones de no
negatividad en caso de que existan)
 Lema:
Las soluciones básicas factibles de PL son vectores
∈ Rn de números racionales donde el numerador y
los denominadores están limitados por 2L

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 229


Método del Elipsoide
 Algoritmo del Elipsoide:
 Entrada:
 La matriz A ∈ Rm,n que define el conjunto de
restricciones lineales.
 El vector de costos c ∈ Rn.
 El vector de recursos b ∈ Rm.
 Máximo error permisible ε.
 Salida: Un vector x ∈ Rn tal que se satisfacen las
restricciones ó nada si no existe solución.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 230


Método del Elipsoide
Comienzo
 Algoritmo k = 0, xk=0, Bk = n2 * 22L * I
V F
xk∈S
r= c r = aj
D = r T Bk r
F
D≥ε Fin
V
k= k + 1 Bk r
d k +1 =−
D
x k +1 = x k + 1/( n + 1) ⋅ d k +1

n2  k 2 k +1 k +1 T 
B k +1 = 2  B − d ⋅d 
n −1  n +1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 231
Método del Elipsoide
Comienzo
Inicialización k = 0, xk=0, Bk = n2 * 22L * I
V F
xk∈S
r= c r = aj
D = r T Bk r
F
D≥ε
Búsqueda

Fin
V
k= k + 1 Bk r
d k +1 =−
D
x k +1 = x k + 1/( n + 1) ⋅ d k +1

n2  k 2 k +1 k +1 T 
B k +1 = 2  B − d ⋅d 
n −1  n +1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 232
Método del Elipsoide
Comienzo
 Algoritmo k = 0, xk=0, Bk = n2 * 22L * I Se parte de un
esfera centra en 0
V F
xk∈S
r= c r = aj
a j fila j de la matriz A
T k
D constituye la D = r B r
Restricción j | xk∉S
distancia que F
separa los puntos D ≥ ε Fin
V Si xk∉S → PL no
k= k + 1 k +1 B k
r tiene solución factible
d =−
D
x k +1 = x k + 1/( n + 1) ⋅ d k +1

n2  k 2 k +1 k +1 T 
B k +1 = 2  B − d ⋅d 
n −1  n +1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 233
Método del Elipsoide
Ejemplo 6.12: Resolver el siguiente problema
utilizando el algoritmo del Elipsoide:

max x1 + 2x2
s. a:
x1 + x2 ≤ 6
x2 ≤ 3
x1, x2 ≥ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 234


Método del Elipsoide
 Se transforma el problema en uno de minimización:

min – x1 – 2x2
s. a:
x1 + x2 ≤ 6
x2 ≤ 3
x1, x2 ≥ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 235


Método del Elipsoide
 Al transformar el problema en uno de factibilidad
queda:
– x1 – 2x2 < 0
x1 + x2 ≤ 6
x2 ≤ 3
– x1 ≤ 0
– x2 ≤ 0

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 236


Método del Elipsoide
 Entrada:
Matriz tecnológica: 1 1
0 1
A= 
− 1 0 
 
Vector de costos:  0 − 1

 − 1
c= 
− 2

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 237


Método del Elipsoide
 Salida:
Vector de variables:

 x1 
x= 
x 2 

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 238


Método del Elipsoide
 Inicialización: k = 0, xk=0, Bk = n2 * 22L * I
m=2
n=2
P = 1*1*1*6*3*(– 1)*(– 2)= 36

L = 2*2 + log (|36|) = 5.5563

L=6

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 239


Método del Elipsoide

0  x 3  0 
xB = = 
 x 4  0 

1 0  14 
2 2⋅6
1 0
B =2 2 
0
 =2  
 0 1   0 1 

16384
0
0 
B = 
 0 16384 
k=0
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 240
Método del Elipsoide
V
xk ∈ S
 Iteración 1: r= c
Hallar la restricción violada:
Todas las restricciones se satisfacen.
 − 1
r =c= 
− 2 
Calcular la norma: D = r T Bk r

16384 0   − 1
D = [− 1 − 2]  − 2
 0 16384  
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 241
Método del Elipsoide

 − 16384 
D = [− 1 − 2]  = 16384 + 65536
− 32768
D = 81920
Determinar la dirección: k +1 Bk r
d =−
D

16384 0   − 1
 0 16384  − 2
1
d =−    
81920
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 242
Método del Elipsoide

 − 16384 
− 32768  16384 / 5 
1
d = 
d1 = −  
 65536 / 5 
81920
Hallar la nueva solución:
x k +1 = x k + 1/( n + 1) ⋅ d k +1

1 1  16384 5 
0
x =x +  
2 + 1  65536 5 

 16384 45  19.08111
1
1
x =  x ≅ 
 38. 16223
 65536 45 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 243
Método del Elipsoide
Calcular la matriz que define el elipsoide:

k +1 n2  k 2 k +1 k +1 T 
B = 2  B − d ⋅d 
n −1  n +1
4  16384 0  2  16384 5  
B = 1

4 − 1   0  −  
16384  3  65536 5 
16384 5 [ ]
65536 5 


4  16384 0  2 16384 5 32768 5 
B =  
1
 −   
3  0 16384  3 32768 5 65536 5  
4   212992 15 − 65536 15 
B =  
1
 
3  − 65536 15 114688 15   k= k + 1=1
1  851968 45 − 262144 45
B = 
 − 262144 45 458752 45 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 244
Método del Elipsoide
 Iteración 2:
F
Hallar la restricción violada: xk∈S
r = aj
x1 + x2 ≤ 6
1
1
a = 
1

Calcular la norma: D = r T Bk r

 851968 45 − 262144 45 1


D = [1 1]   
− 262144 45 458752 45  1
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 245
Método del Elipsoide

1114112 45
D = [1 1]  = 1114112 45 + 720896 45
 720896 45 
D = 1835008 45
Determinar la dirección: k +1 Bk r
d =−
D

851968 45 262144 45 1


262144 45 458752 45  1
d2 = −   
1835008 / 45
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 246
Método del Elipsoide

1114112 45
 720896 45 
d2 = −  
1835008 45
2
− 1114112 45 45 1835008 
d = 
 − 720896 45 45 1835008 
2
− 1114112 * 17 /( 28 * 45 ) 
d = 
 − 720896 * 11/( 28 * 45 ) 

2
− 278528 * 17 /( 7 * 45 )  − 278528 * 17 / 315 
d = = 
 − 180224 * 11/( 7 * 45 )   − 180224 * 11/ 315 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 247
Método del Elipsoide
Hallar la nueva solución:
x k +1 = x k + 1/( n + 1) ⋅ d k +1

2 1 − 278528 * 17 / 315 
1
x =x +  
3  − 180224 * 11/ 315 

2
 16384 45  1 − 278528 * 17 / 315 
x = +  
 65536 45  3  − 180224 * 11/ 315 

− 21.78679
2
x ≅ 
 11. 71829 
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 248
Método del Elipsoide
Calcular la matriz que define el elipsoide:

k +1 n2  k 2 k +1 k +1 T 
B = 2  B − d ⋅d 
n −1  n +1

 16505,363 − 10679,941
2
B ≅ 
 − 10679,941 12621, 748 

k= k + 1 = 2

Más Iteraciones
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 249
Método del Elipsoide

k xk ∈ S ak D D≥ε dk+1 xk+1 Bk+1

 − 1  57, 24  19,08   18932,62 − 5825,42


0 V − 2  286,21 V 114 ,48  36,16 − 5825,42 10194 ,49 
     
 
1  − 99,15   5,11   16505,363 − 10679,941
1 F 1 132,19 V − 33,05 − 11,02  − 10679,941 12621,748 
    

0 − 95,06 − 42,70   16505,36 − 10679,94 
2 F − 1 112,34 V  112,35   37,45  − 10679,94 12621,75 
 
 
Se continua hasta obtener una solución
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 250
Método del Elipsoide

Aunque teóricamente el Algoritmo del


Elipsoide (Algoritmo de Tiempo Polinomial) es
mejor que el Algoritmo del Simplex (Algoritmo
de Tiempo No Polinomial), es mucho más
lento en la práctica y no compite con el Simplex

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 251


Resumen
 Métodos numéricos: Algoritmos.
 Metodología para resolución de un problema.
 Algoritmo.
 Características de un algoritmo.
 Representación: Diagramas de Flujo.
 Matlab.
 Ambiente de trabajo.
 Conceptos Básicos: Matrices.
 Operadores Aritméticos.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 252
Resumen
 Funciones Matemáticas Básicas.
 Algoritmos.
 Estructuras Básicas de Programación.
 Operadores Relaciónales.
 Operadores Lógicos.
 Variables.
 Operaciones útiles.
 Mapa algorítmico.
 Mapa Cerrado.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 253
Resumen
 Algoritmo de Optimización.
 Características Necesarias.
 Reglas de parada.
 Uso.
 Requerimientos.
 Parámetros.
 Desempeño: función O (de orden).
 Programación Lineal.
 Conjuntos poliédricos.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 254
Resumen
 Punto Extremo.
 Rayo.
 Dirección extrema.
 Caracterización de puntos extremos.
 Caracterización de las direcciones extremas.
 Método Simplex.
 Algoritmo.
 Método del Elipsoide.
 Elipsoide.
Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 255
Resumen
 Funciones Convexas Diferenciables.
 Separación de Conjuntos Convexos.
 Algoritmo.

Programación No Lineal – Prof. Gonzalo Müller – Clase 6 – GM – 256

Anda mungkin juga menyukai