Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Opt No Lineal Notas de Clase-3 PDF
Opt No Lineal Notas de Clase-3 PDF
Optimización No Lineal
Esta desigualdad se cumple para todo: 0 ≤ 𝜃 ≤ 1, lo cual indica que la recta que une los
dos puntos está arriba de la curva que los une y esto se cumple para cualquier recta que una
dos puntos cualesquiera de la curva, luego la función es convexa.
4
La anterior desigualdad se cumple para todo: 0 ≤ 𝜃 ≤ 1, lo cual indica que la recta que une
los dos puntos está por debajo de la curva que los une y esto se cumple para cualquier recta
que una dos puntos cualesquiera de la curva, luego la función es cóncava.
1.2 OPTIMIZACIÓN NO RESTRINGIDA DE UNA VARIABLE
La condición necesaria y suficiente para que una solución particular 𝑥 = 𝑥 ∗ , sea un máximo
𝑑𝑓
o un mínimo local es: 𝑑𝑥 = 0, 𝑒𝑛 𝑥 = 𝑥 ∗
𝑥̅ + 𝑥̿
𝑥′ =
2
(1.2)
Donde:
5
2. Se calcula.
𝑑𝑓(𝑥)
, en 𝑥 = 𝑥 ′ .
𝑑𝑥
Para maximizar:
𝑑𝑓(𝑥)
Si ≥ 0 se hace 𝑥̅ = 𝑥 ′ .
𝑑𝑥
𝑑𝑓(𝑥)
Si ≤ 0 se hace 𝑥̿ = 𝑥 ′ .
𝑑𝑥
Para minimizar:
𝑑𝑓(𝑥)
Si ≤ 0 se hace 𝑥̅ = 𝑥 ′ .
𝑑𝑥
𝑑𝑓(𝑥)
Si ≥ 0 se hace 𝑥̿ = 𝑥 ′ .
𝑑𝑥
Lo cual significa que si la solución actual 𝑥 ′ se encuentra a una distancia menor que
un valor 𝜀 , que es la tolerancia del error, el proceso termina de lo contrario se vuelve
al paso 1.
Ejemplo 4
Presentar las primeras dos iteraciones del procedimiento de búsqueda en una dimensión para
el ejemplo 3, con un margen de error 𝜀 = 0.001 y teniendo en cuenta que el número de
camas disponibles para hospitalización debe estar en el intervalo: 400 ≤ 𝑥 ≤ 1300.
Solución de prueba inicial.
400 + 1300
𝑥′ = = 850
2
La derivada de la función a optimizar evaluada en el punto solución es:
𝑑𝑦 400(850)2 − 300000000
| = = −15.2249
𝑑𝑥 𝑥=850 8502
𝑑𝑦
Como 𝑑𝑥 | ≤ 0, 𝑥̅ = 𝑥 ′ = 850.
𝑥=850
6
850 + 1300
𝑥′ = = 1075
2
La derivada de la función a optimizar evaluada en la solución de prueba es:
𝑑𝑦 400(10752 ) − 300000000
| = = 140.4
𝑑𝑥 𝑥=1075 10752
𝑑𝑦
Como 𝑑𝑥 | > 0, 𝑥̿ = 𝑥 ′ = 1075.
𝑥=1075
7
𝑓(𝑥1 , 𝑥2 ) = 4𝑥1 𝑥22 + 𝑥13 𝑥2 − 3𝑥1 𝑥2
𝜕𝑓 𝜕𝑓
= 4𝑥22 + 3𝑥12 − 3𝑥2 = 0; = 8𝑥1 𝑥2 + 𝑥13 − 3𝑥1 = 0
𝜕𝑥1 𝜕𝑥2
Los puntos estacionarios de la función son:
3 3 3 3 3
(0, 0), (0, ) , (√3, 0), (−√3, 0), (√ , ) 𝑦 (−√ , )
4 5 10 5 10
Los primeros menores principales son los elementos de la diagonal, es decir, los valores 0 y
0. El segundo menor principal es el determinante de la matriz.
0 −3
𝑑𝑒𝑡 [ ] = −9
−3 0
Como el n-ésimo Hessiano, en este caso el segundo menor principal, es diferente de cero y
no se cumplen las dos primeras condiciones, el punto estacionario (0, 0) es un punto de silla.
3
Las matrices Hessianas de los puntos estacionarios (0, 4), (√3, 0) y (−√3, 0) son:
0 3 0 6 0 6
𝐻(0, 3 =[ ], 𝐻(√3,0) = [ ] y 𝐻(−√3,0) = [ ]
4
) 3 0 6 8√3 6 − 8√3
Para 𝐻(0, 3
)
los menores principales son 0 y 0, y el segundo menor principal es -9, en 𝐻(√3,0)
4
los menores principales son 0 y 8√3 , y el segundo menor principal es -36 y para el punto
8
(−√3, 0) los primeros menores principales son (0, − 8√3) y el segundo menor principal es
-36. En los tres casos no se cumplen las condiciones 1 y 2 pero se cumple la condición 3, así
3
los puntos (0, 4), (√3, 0) y (−√3, 0)son puntos de silla.
3 3
En el punto estacionario (√5 , 10).
9 3 6
(√ )
5 5 5
𝐻 3 3 =
(√ , )
5 10 6 3
8 (√ )
5 5
[ ]
9 3 3
Los primeros menores principales son: 5 (√5) y 8 (√5) y el segundo menor principal es
7.2; como todos los menores principales son mayores que cero, el punto estacionario
3 3
(√5 , 10) es un mínimo local, de acuerdo con la condición 1.
3 3
Para el punto estacionario (−√ , ).
5 10
9 3 6
− (√ )
5 5 5
𝐻 3 3 =
(−√ , )
5 10 6 3
− 8 (√ )
5 5
[ ]
9 3 3
Los primeros menores principales son: − (√ ) y −8 (√ ) y el segundo menor principal
5 5 5
3 3
es 7.2, luego el punto estacionario (−√5 , 10 )es un máximo local, por la condición 2.
Ejemplo 6
Hallar el punto estacionario de la siguiente función y determinar si es un máximo, un mínimo
o un punto de silla.
9
𝜕𝑓 𝜕𝑓 𝜕𝑓
= 6𝑥1 − 4𝑥2 = 0; = 4𝑥2 − 4𝑥1 = 0; = 2𝑥3 = 0
𝜕𝑥1 𝜕𝑥2 𝜕𝑥3
Así el punto estacionario es: (0,0,0)
𝜕 2𝑓 𝜕 2𝑓 𝜕 2𝑓
𝜕𝑥12 𝜕𝑥1 𝑥2 𝜕𝑥1 𝑥3
𝜕 2𝑓 𝜕 2𝑓 𝜕 2𝑓 6 −4 0
𝐻(𝑥1 ,𝑥2,𝑥3) = = [−4 4 0]
𝜕𝑥2 𝑥1 𝜕𝑥22 𝜕𝑥2 𝑥3
0 0 2
𝜕 2𝑓 𝜕 2𝑓 𝜕 2𝑓
[𝜕𝑥3 𝑥1 𝜕𝑥3 𝑥2 𝜕𝑥32 ]
Los primeros menores principales son: 6, 4 y 2.
Los segundos menores principales son:
4 0 6 0 6 −4
𝑑𝑒𝑡 [ ] = 8; 𝑑𝑒𝑡 [ ] = 12; 𝑑𝑒𝑡 [ ]=8
0 2 0 2 −4 4
𝜕𝑓 𝜕𝑓 𝜕𝑓
∇𝑓(𝑥 ′ ) = ( , ,…, )|
𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛 𝑥=𝑥 ′
(1.5)
3. Se hallan los 𝑥𝑗 en función de 𝑡, cuyo valor indica el avance que se hará en la dirección
del gradiente. Para minimizar el gradiente se debe multiplicar por -1.
10
𝜕𝑓
𝑥𝑗 (𝑡) = 𝑥𝑗′ + 𝑡 ( ) , 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑛
𝜕𝑥𝑗 𝑥 ′
𝑗 =𝑥𝑗
(1.6)
4. Se expresa la función en términos de los 𝑥𝑗 (𝑡) encontrados y se halla el valor de t
igualando la derivada de esta función a cero.
𝜕𝑓(𝑥 ′ + 𝑡∇𝑓(𝑥 ′ ))
= 0; 𝑡 ≥ 0
𝜕𝑡
(1.7)
5. Se reemplaza el valor de t en los 𝑥𝑗 y se halla una nueva solución de prueba.
𝜕𝑓
𝑥𝑗 = 𝑥𝑗′ + 𝑡 ( )
𝜕𝑥𝑗 𝑥=𝑥 ′
(1.8)
6. Se evalúa el criterio de detención. El proceso se detiene si:
𝜕𝑓
| | ≤ 𝜀, 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑛.
𝜕𝑥𝑗 𝑥 ′
𝑗 =𝑥𝑗
(1.9)
7. Si el criterio de detención no se cumple se vuelve al paso 2.
Ejemplo 7
Hallar, mediante el método del gradiente, el mínimo de la función:
Se escoge por ejemplo una tolerancia de error 𝜀 = 0.001 y una solución de prueba inicial
(𝑥1′ , 𝑥2′ , 𝑥3′ ) = (10,10,10).
𝜕𝑓 𝜕𝑓 𝜕𝑓
= 2𝑥1 − 𝑥2 − 𝑥3 ; = 2𝑥2 − 𝑥1 − 𝑥3 ; = 4𝑥3 − 𝑥2 − 𝑥1
𝜕𝑥1 𝜕𝑥2 𝜕𝑥3
∇𝑓(10,10,10) = (0,0,20)
Como cada uno de los valores del gradiente evaluados en la solución de prueba inicial es
mayor que la tolerancia de error (𝜀 = 0.001), se inicia el proceso iterativo.
11
Iteración 1.
𝜕𝑓
𝑥1 = 𝑥1′ + 𝑡 (− ) = 10 + 𝑡(0) = 10
𝜕𝑥1 𝑥 ′
1
𝜕𝑓
𝑥2 = 𝑥2′ + 𝑡 (− ) = 10 + 𝑡(0) = 10
𝜕𝑥1 𝑥 ′
1
𝜕𝑓
𝑥3 = 𝑥3′ + 𝑡 (− ) = 10 + 𝑡(−20) = 10 − 20𝑡
𝜕𝑥3 𝑥 ′
3
𝑓(𝑥1 (𝑡),𝑥2 (𝑡),𝑥3 (𝑡)) = 102 + 102 + 2(10 + 20𝑡)2 − 102 − 10(10 − 20𝑡) − 10(10 − 20𝑡)
𝑑𝑓 1
= 400 − 1600𝑡 = 0; ⟹, 𝑡 =
𝑑𝑡 4
1
𝑥1 = 10, 𝑥2 = 10, 𝑥3 = 10 − 20 ( ) = 5
4
𝑓(𝑥1 , 𝑥2, 𝑥3 ) = 50
∇𝑓(10,10,5) = (5,5,0)
𝜕𝑓 𝜕𝑓 𝜕𝑓
| | = 5 > 0.001; | | = 5 > 0.001; | | = 0 < 0.001
𝜕𝑥1 𝒙 ′ 𝜕𝑥2 𝒙 ′ 𝜕𝑥3 𝒙 ′
𝑗 =𝒙𝑗 𝑗 =𝒙𝑗 𝑗 =𝒙𝑗
Iteración 2.
𝜕𝑓
𝑥1 = 𝑥1′ + 𝑡 (− ) = 10 − 5𝑡
𝜕𝑥1 𝑥 ′
1
𝜕𝑓
𝑥2 = 𝑥2′ + 𝑡 (− ) = 10 − 5𝑡
𝜕𝑥1 𝑥 ′
1
𝜕𝑓
𝑥3 = 𝑥3′ + 𝑡 (− ) = 5 + 𝑡(0) = 5
𝜕𝑥3 𝑥 ′
3
𝑑𝑓
𝑓(𝑥1 (𝑡),𝑥2 (𝑡),𝑥3 (𝑡)) = 50 − 50𝑡 + 25𝑡 2 ; = −50 + 50𝑡 = 0; ⟹, 𝑡 = 1
𝑑𝑡
𝑥1 = 5; 𝑥2 = 5; 𝑥3 = 5; 𝑓(𝑥1 , 𝑥2, 𝑥3 ) = 25
∇𝑓(5,5,5) = (0,0,10)
12
𝜕𝑓 𝜕𝑓 𝜕𝑓
| | = 0 < 0.001; | | = 0 < 0.001; | | = 10 > 0.001
𝜕𝑥1 𝒙 ′ 𝜕𝑥2 𝒙 ′ 𝜕𝑥3 𝒙 ′
𝑗 =𝒙𝑗 𝑗 =𝒙𝑗 𝑗 =𝒙𝑗
El proceso iterativo debe continuar hasta que ninguno de los valores del gradiente sea mayor
que la tolerancia de error deseada.
Implementando el algoritmo para este problema en un programa de computador, se
requirieron 33 iteraciones para lograr el desarrollo dentro del margen de error deseado,
obteniendo los siguientes resultados:
5 5 5 25
𝑥1 = ; 𝑥2 = ; 𝑥3 = ; 𝑓(𝑥1 , 𝑥2, 𝑥3 ) =
32768 32768 65536 2147483648
Sujeto a:
𝑔1 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) = 𝑏1
𝑔2 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) = 𝑏2
⋮
𝑔𝑛 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) = 𝑏𝑛 (1.11)
Si (𝑥̅1 , 𝑥̅2 , … , 𝑥̅𝑛 , 𝜆1̅ , 𝜆̅2 , … , 𝜆̅𝑚 ) es una solución óptima entonces:
𝜕𝐿
= 𝑏𝑖 − 𝑔𝑖 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0 𝑒𝑛 (𝑥̅1 , 𝑥̅2 , … , 𝑥̅𝑛 , 𝜆1̅ , 𝜆̅2 , … , 𝜆̅𝑚 )
𝜕𝜆𝑖
(1.13)
13
Si 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 )es una función cóncava y todas las restricciones (𝑔𝑖 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 𝑏𝑖 ,
𝑖 = 1,2, … , 𝑚) son funciones lineales, cualquier punto (𝑥̅1 , 𝑥̅2 , … , 𝑥̅ 𝑛 , 𝜆1̅ , 𝜆̅2 , … , 𝜆̅𝑚 ) que
𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿
satisface las ecuaciones: = = ,… , = = =, … , 𝜕𝜆 = 0, generará una
𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛 𝜕𝜆1 𝜕𝜆2 𝑛
solución (𝑥̅1 , 𝑥̅2 , … , 𝑥̅ 𝑛 ) óptima para el problema.
Si 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 )es una función convexa y todas las restricciones (𝑔𝑖 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 𝑏𝑖 ,
𝑖 = 1,2, … , 𝑚) son funciones lineales, cualquier punto (𝑥̅1 , 𝑥̅2 , … , 𝑥̅𝑛 , 𝜆1̅ , 𝜆̅2 , … , 𝜆̅𝑚 ) que
𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿
satisface las ecuaciones: = = ,… , = = =, … , 𝜕𝜆 = 0, generará una
𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛 𝜕𝜆1 𝜕𝜆2 𝑛
solución (𝑥̅1 , 𝑥̅2 , … , 𝑥̅ 𝑛 ) óptima para el problema.
Ejemplo 8
A una compañía fabricante de equipos de soldadura cada hora de mano de obra le cuesta $
12.500.oo y sus costos de financiamiento son de $ 150000.oo anuales por cada millón de
pesos. Si la compañía utiliza 𝑥 horas de trabajo y 𝑦 millones de pesos de financiación, el
número el número de equipos que puede producir está dado por: 𝑥 (1/3) 𝑦 (3/5) . ¿Cuál es el
plan de producción y financiamiento que le permitirá a la compañía maximizar el número de
equipos a producir, si dispone de $ 100.000.000.oo para el pago de mano de obra y costos de
financiamiento?
14
Sujeto a:
𝑔1 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏1
𝑔2 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏2
⋮
𝑔𝑛 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏𝑛 (1.15)
Si hay restricciones de la forma 𝑔(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) ≥ 𝑏 se deben escribir como −𝑔(𝑥1,
𝑥2 , … , 𝑥𝑛 ) ≤ −𝑏 y si hay restricciones de la forma 𝑔(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 𝑏 se debe reemplazar
cada una de ellas por las restricciones 𝑔(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) ≤ 𝑏 y −𝑔(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) ≤ −𝑏.
Para problemas de maximización habrá una solución óptima (𝑥̅1 , 𝑥̅2 , … , 𝑥̅𝑛 ), si se cumplen
las m restricciones del problema y los multiplicadores de Lagrange (𝜆 ̅ 1 , 𝜆̅2 , … , 𝜆̅𝑚 )
satisfacen:
𝑖=𝑚
𝜕𝑓(𝑥̅ ) 𝜕𝑔𝑖 (𝑥̅ )
− ∑ 𝜆1̅ = 0, 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑛
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1
Sujeto a:
𝑔1 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏1
𝑔2 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏2
⋮
𝑔𝑚 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏𝑚
−𝑥1 ≤ 0; −𝑥2 ≤ 0; … ; −𝑥𝑛 ≤ 0 (1.19)
15
1.7.1 Condiciones necesarias
Para problemas de maximización los multiplicadores de Lagrange 𝜆1 , 𝜆2 , … , 𝜆𝑚 , deben
satisfacer:
𝑖=𝑚
𝜕𝑓(𝑥̅ ) 𝜕𝑔𝑖 (𝑥̅ )
− ∑ 𝜆1̅ ≤ 0, 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑛
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1
16
1.8 PROGRAMACIÓN CUADRÁTICA
Los problemas de programación cuadrática difieren de los problemas de programación lineal
en que la función objetivo incluye términos 𝑥𝑗2 𝑦 𝑥𝑖 𝑥𝑗 (𝑖 ≠ 𝑗). Estos problemas se pueden
presentar de la forma matricial:
1
𝑍max(𝑜 min) = 𝑪𝑿 − 𝑿𝑻 𝑸𝑿
2
(1.22)
Sujeto a:
𝑨𝑿 ≤ 𝒃
𝑿≥0 (1.23)
La función objetivo es cóncava si cumple:
𝑿𝑻 𝑸𝑿 ≥ 0 (1.24)
La función objetivo es convexa si cumple:
𝑿𝑻 𝑸𝑿 ≤ 0 (1.25)
Para la solución de estos problemas se aplican las condiciones KKT y el sistema resultante
se puede resolver mediante una modificación del método simplex de doble fase utilizado en
programación lineal, donde se incluyen las restricciones de complementariedad y se aplica
solo la primera fase.
Ejemplo 9
Hallar la solución óptima del siguiente problema, mediante programación cuadrática:
𝑍(𝑚𝑖𝑛) = 10𝑥12 + 7𝑥22 − 𝑥1 + 4𝑥2 − 2𝑥1 𝑥2
Sujeto a:
3𝑥1 + 5𝑥2 ≤ 15
𝑥1 , 𝑥2 ≥ 0
Solución:
1. Se aplican las condiciones KKT.
1.1
𝑚
𝜕𝑓 𝜕𝑔𝑖
+ ∑ 𝜆𝑖 ≥ 0; 𝑗 = 1,2, … , 𝑛
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1
17
𝜕𝑓 𝜕𝑓 𝜕𝑔 𝜕𝑔
= 20𝑥1 − 1 − 2𝑥2 ; = 14𝑥2 + 4 − 2𝑥1 ; = 3; =5
𝜕𝑥1 𝜕𝑥2 𝜕𝑥1 𝜕𝑥2
1.1.1
𝜕𝑓 𝜕𝑔
+𝜆 = 20𝑥1 − 1 − 2𝑥2 + 3𝜆 ≥ 0
𝜕𝑥1 𝜕𝑥1
1.1.2
𝜕𝑓 𝜕𝑔
+𝜆 = 14𝑥2 + 4 − 2𝑥1 + 5𝜆 ≥ 0
𝜕𝑥2 𝜕𝑥2
1.2
𝑚
𝜕𝑓 𝜕𝑔𝑖
𝑥𝑗 [ − ∑ 𝜆𝑖 ]=0
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1
1.2.1
𝜕𝑓 𝜕𝑔
𝑥1 [ −𝜆 ] = 𝑥1 [20𝑥1 − 1 − 2𝑥2 + 3𝜆] = 0
𝜕𝑥1 𝜕𝑥1
1.2.2
𝜕𝑓 𝜕𝑔
𝑥2 [ −𝜆 ] = 𝑥2 [−2𝑥1 + 14𝑥2 + 5𝜆 + 4] = 0
𝜕𝑥2 𝜕𝑥2
1.3
𝑔𝑖 (𝑥) − 𝑏𝑗 ≤ 0
𝑔(𝑥) − 𝑏 = 3𝑥1 + 5𝑥2 − 15 ≤ 0
1.4
𝜆𝑖 [𝑔𝑖 (𝑥) − 𝑏𝑗 ] = 0
𝜆[𝑔(𝑥) − 𝑏] = 𝜆[3𝑥1 + 5𝑥2 − 15] = 0
1.5
𝑥𝑗 ≥ 0
𝑥1 ≥ 0; 𝑥2 ≥ 0
1.6
𝜆𝑖 ≥ 0
𝜆≥0
18
2. Solucionar el problema mediante la modificación del método Simplex de doble fase,
que implica incluir las restricciones de complementariedad.
20𝑥1 − 2𝑥2 + 3𝜆 − ℎ1 = 1,
2𝑥1 − 14𝑥2 − 5𝜆 + ℎ2 = 4
3𝑥1 + 5𝑥2 + ℎ3 = 15
2.2 Agregar las variables artificiales, que permitirán la solución inicial en el tablero
Simplex.
20𝑥1 − 2𝑥2 + 3𝜆 − ℎ1 + 𝑎1 = 1
2𝑥1 − 14𝑥2 − 5𝜆 + ℎ2 = 4
3𝑥1 + 5𝑥2 + ℎ3 = 15
Considerando que:
De manera similar:
Lo anterior significa que las dos variables de cada sumando no pueden ser a la vez
variables básicas en una iteración.
VB Z 𝑥1 𝑥2 𝜆 ℎ1 ℎ2 ℎ3 𝑎 𝑏
𝑍 -1 -20 2 -3 1 0 0 0 -1
𝑎 0 20 -2 3 -1 0 0 1 1
ℎ2 0 2 -14 -5 0 1 0 0 4
ℎ3 0 3 5 0 0 0 1 0 15
2.5 realizar las iteraciones hasta terminar la primera fase del método Simplex de doble
fase.
19
VB Z 𝑥1 𝑥2 𝜆 ℎ1 ℎ2 ℎ3 𝑎 𝑏
𝑍 -1 0 0 0 0 0 0 1 0
𝑥1 0 1 2 3 1 0 0 1 1
− −
20 20 20 20 20
ℎ2 0 0 138 106 1 1 0 1 39
− − −
10 20 10 10 10
ℎ3 0 0 106 9 3 0 1 3 297
− −
20 20 20 20 20
1 39 297
𝑥1 = , 𝑥2 = 0, ℎ1 = 0, ℎ2 = , ℎ3 =
20 10 20
𝑍(𝑚𝑖𝑛) = 10𝑥12 + 7𝑥22 − 𝑥1 + 4𝑥2 − 2𝑥1 𝑥2 = −0.025
−20 2 𝑥1
𝐶 = [−1 4]; 𝑄 = [ ] ; 𝐴 = [3 5]; 𝑏 = [15]; 𝑋 = [𝑥 ]
2 −14 2
1 𝑥1 𝑇 −20 2 𝑥1
𝑓(𝑥) = [−1 4] − [𝑥 ] [ ] [𝑥 ]
2 2 2 −14 2
𝑥1 1 1
1
𝑋 𝑇 𝑄𝑋 = [𝑥1 𝑥2 ] [−20 2
] [𝑥 ] = [ 0] [
−20 2
] [20] = − <0
2 −14 2 20 2 −14 20
0
1.9 PROGRAMACIÓN SEPARABLE
La programación separable permite obtener soluciones de problemas de programación no
lineal cercanas al óptimo. En este método se separan en varias funciones, una por cada
variable, los términos de la función objetivo y las restricciones; modificando la estructura de
los problemas de la siguiente forma:
𝑛
(1.26)
Sujeto a:
𝑛
(1.27)
20
En la programación separable se analizan los problemas para un determinado rango de
valores de cada variable y cada una de las variables (𝑥𝑗 ) se reemplaza por un conjunto de
nuevas variables (𝛿𝑗𝑟 ), cuyo número corresponde al número de puntos escogidos (𝑝𝑗𝑟 ) dentro
del rango seleccionado, así:
𝑥𝑗 = 𝛿𝑗1 𝑝𝑗1 + 𝛿𝑗2 𝑝𝑗2 +, … , +𝛿𝑗𝑘 𝑝𝑗𝑘 ; (𝑗 = 1,2, … , 𝑛; 𝑟 = 1,2, … , 𝑘) (1.28)
(1.30)
Sujeto a:
𝑛
∑[𝛿𝑗1 𝑔𝑖𝑗 (𝑝𝑗1) + 𝛿𝑗2 𝑔𝑖𝑗 (𝑝𝑗2) + ⋯ + 𝛿𝑗𝑘 𝑔𝑖𝑗 (𝑝𝑗𝑘) ] ≤ 𝑏𝑗 ; (𝑖 = 1,2, … , 𝑚)
𝑗=1
Como 𝑥𝑗 = 𝛿𝑗1 𝑝𝑗1 + 𝛿𝑗2 𝑝𝑗2 +, … , +𝛿𝑗𝑘 𝑝𝑗𝑘 ; (𝑗 = 1,2, … , 𝑛; 𝑟 = 1,2, … , 𝑘), para un j dado, a
lo más dos de los 𝛿𝑗𝑘 pueden ser positivos en cada solución y ellos deben ser adyacentes, es
decir, si 𝛿𝑗𝑘 es positivo solo podrá haber otro positivo y deberá ser 𝛿𝑗𝑘−1 ó 𝛿𝑗𝑘+1 , lo cual se
denomina condición de adyacencia.
En resumen, la programación separable permite resolver los problemas de programación no
lineal como problemas lineales, mediante análisis lineales a trozos teniendo en cuenta la
condición de adyacencia.
21
Ejemplo 10.
Hallar, mediante programación separable, la solución óptima del siguiente problema:
𝑍(𝑚𝑎𝑥) = 3𝑥12 − 2𝑥1 + 𝑥22 − 2𝑥2 − 𝑥3
Sujeto a:
𝑥1 + 𝑥22 + 𝑥3 ≤ 10
𝑥1 + 𝑥2 + 𝑥3 ≤ 5
𝑥1 , 𝑥2 , 𝑥3 ≥ 0
Solución:
1. Se separan la función objetivo y las restricciones en diferentes funciones por variables.
2. Se escoge el rango de valores, el número puntos y el valor de los puntos de cada variable.
Para este ejercicio, de acuerdo con la segunda restricción, se puede observar que el valor
de las variables debe estar entre cero y cinco, luego se pueden considerar los mismos
seis puntos para cada una de las variables.
𝑝1 = 0; 𝑝2 = 1; 𝑝3 = 2; 𝑝4 = 3; 𝑝5 = 4; 𝑝6 = 5
3. Se evalúan las nuevas funciones de acuerdo con los valores de los puntos escogidos.
22
Tabla 1 Evaluación de la función objetivo y las restricciones para los valores
seleccionados de las variables.
𝑝1 𝑝2 𝑝3 𝑝4 𝑝5 𝑝6
𝑓1 (0) 𝑓1 (1) 𝑓1 (2) 𝑓1 (3) 𝑓1 (4) 𝑓1 (5)
=0 =1 =8 = 21 = 40 = 65
𝑓2 (0) 𝑓2 (1) 𝑓2 (2) 𝑓2 (3) 𝑓2 (4) = 8 𝑓2 (5)
=0 = −1 =0 =3 = 15
𝑓3 (0) 𝑓3 (1) 𝑓3 (2) 𝑓3 (3) 𝑓3 (4) 𝑓3 (5) = −5
=0 = −1 = −2 = −3 = −4
𝑔11 (0) 𝑔11 (1) 𝑔11 (2) 𝑔11 (3) 𝑔11 (4) 𝑔11 (5)
=0 =1 =2 =3 =4 =5
𝑔12 (0) 𝑔12 (1) 𝑔12 (2) 𝑔12 (3) 𝑔12 (4) 𝑔12 (5)
=0 =1 =4 =9 = 16 = 25
𝑔13 (0) 𝑔13 (1) 𝑔13 (2) 𝑔13 (3) 𝑔13 (4) 𝑔13 (5)
=0 =1 =2 =3 =4 =5
𝑔21 (0) 𝑔21 (1) 𝑔21 (2) 𝑔21 (3) 𝑔21 (4) 𝑔21 (5)
=0 =1 =2 =3 =4 =5
𝑔22 (0) 𝑔22 (1) 𝑔22 (2) 𝑔22 (3) 𝑔22 (4) 𝑔22 (5)
=0 =1 =2 =3 =4 =5
𝑔23 (0) 𝑔23 (1) 𝑔23 (2) 𝑔23 (3) 𝑔23 (4) 𝑔23 (5)
=0 =1 =2 =3 =4 =5
23
de la base, las variables que pueden entrar a la base en la siguiente iteración son 𝛿𝑗𝑘−1ó
𝛿𝑗𝑘+1. Solucionando el problema de programación separable, mediante Simplex, se
obtienen los siguientes resultados:
𝛿11 = 0, 𝛿12 = 0, 𝛿13 = 0, 𝛿14 = 0, 𝛿15 = 0, 𝛿16 = 1, 𝛿21 = 0, 𝛿22 = 0, 𝛿23 = 0,
𝛿24 = 0, 𝛿25 = 0, 𝛿26 = 0, 𝛿31 = 0, 𝛿32 = 0, 𝛿33 = 0, 𝛿34 = 0, 𝛿35 = 0, 𝛿36 = 0
Pero: 𝑥1 = 𝛿11 𝑝11 + 𝛿12 𝑝12 + 𝛿13 𝑝13 + 𝛿14 𝑝14 + 𝛿15 𝑝15 + 𝛿16 𝑝16 ; ⟹, 𝑥1 = 𝛿16 𝑝16 = 5
𝑥2 = 𝛿21 𝑝21 + 𝛿22 𝑝22 + 𝛿23 𝑝23 + 𝛿24 𝑝24 + 𝛿25 𝑝25 + 𝛿26 𝑝26 ; ⟹, 𝑥2 = 0
𝑥3 = 𝛿31 𝑝31 + 𝛿32 𝑝32 + 𝛿33 𝑝33 + 𝛿34 𝑝34 + 𝛿35 𝑝35 + 𝛿36 𝑝36 ; ⟹, 𝑥3 = 0
𝑍(𝑚𝑎𝑥) = 3𝑥12 − 2𝑥1 + 𝑥22 − 2𝑥2 − 𝑥3 = 3(52 ) − 2(5) = 65
2.3.1 Selección
24
Procedimiento rueda de ruleta: Se diseña una rueda con base en las probabilidades de los
“fitness” de la población, es decir, la probabilidad que una solución de la población sea
seleccionada.
𝐹𝑖
𝑝𝑖 = 𝑗=𝑛
, 𝑖 = 1,2, … , 𝑛.
∑𝑗=1 𝐹𝑗
(2.1)
La rueda se divide en porciones proporcionales al valor de probabilidad de cada solución
(cromosoma), se calculan las probabilidades acumuladas y luego generando números
aleatorios y de acuerdo con el tamaño de población seleccionada se define la nueva población
seleccionada.
2.3.2 Cruce
El propósito del cruce es crear nuevos cromosomas o soluciones intercambiando información
entre los cromosomas de la población que se seleccionan como padres La cantidad de cruces
que se realizan en una generación depende de la probabilidad de cruce (𝑝𝑐 ) que se haya
definido, luego el porcentaje de cruces que se realizan es de 100(𝑝𝑐 ) y el porcentaje de
cromosomas que se mantiene para la próxima generación es 100(1 − 𝑝𝑐 ).
2.3.3 Mutación
El operador mutación cambia la información de los alelos, por ejemplo: si la información de
la población se está manejando en binarios, cada bit de información es un alelo y si a ese bit
le corresponde mutar significa que cambiará su información de 1 a 0 o de 0 a 1. El número
de mutaciones que se realizan en cada generación depende de la probabilidad de mutación
(𝑝𝑚 ) que se asuma.
2.3.4 Algoritmo
25
Si los problemas son a maximizar y no tienen restricciones la función de aptitud se toma igual
a la función objetivo, si los problemas son a minimizar y no tienen restricciones la función
de aptitud es igual a:
1
𝐹𝑖𝑡𝑛𝑒𝑠𝑠(𝑖) =
1 + 𝑍(𝑖)
(2.2)
Cuando los problemas tienen restricciones se pueden manejar mediante funciones de
penalización, que se agregan a la función objetivo de la siguiente forma:
𝑛 𝑝
∅(𝑥) = 𝑓(𝑥)+
− (∑ 𝑟𝑖 𝐺𝑖 (𝑔𝑖 (𝑥)) + ∑ 𝑐𝑗 𝐻𝑗 (ℎ𝑗 (𝑥)))
𝑖=1 𝑗=1
(2.3)
donde:
La función ∅(𝑥)es la función objetivo afectada por las funciones de penalización, 𝑓(𝑥) es la
función objetivo sin modificaciones; las funciones de penalización se suman o restan
dependiendo si el problema es a minimizar o a maximizar respectivamente. Las 𝑔𝑖 (𝑥) son
las restricciones con desigualdades ≤, (las restricciones con desigualdades ≥ se multiplican
por -1) y ℎ𝑗 (𝑥) son las restricciones de igualdad. Los parámetros 𝑟𝑗 y 𝑐𝑗 son factores de
penalización, los exponentes 𝛽 y 𝜎 se trabajan comúnmente como 1 o 2 y 𝛿 es el parámetro
de tolerancia de las restricciones de igualdad.
Trabajando con funciones de penalización, la función de aptitud o “fitness” para los
problemas a maximizar con restricciones es:
𝐹(𝑥) = ∅(𝑥) (2.5)
y para los problemas a minimizar con restricciones la función de aptitud es:
1
𝐹(𝑥) =
1 + ∅(𝑥)
(2.6)
Ejemplo 11 (Problema sin restricciones)
Una compañía desea determinar la mejor ubicación de su almacén de despachos. La
ubicación de sus clientes, de acuerdo con un plano coordenado 𝑥 − 𝑦, con distancias en
kilómetros, y el número de envíos que se realizan anualmente a cada cliente se muestran en
26
la Tabla 2. Encontrar mediante algoritmos genéticos, la ubicación del almacén de manera que
se minimice la distancia total que recorren los camiones repartidores al año.
Tabla 2 Ubicación Clientes y Número de envíos anuales ejemplo 11
CLIENTE COORDENDA X COORDENADA Y NÚMERO DE
(km) (km) ENVIOS
1 6 12 180
2 11 7 140
3 0 8 250
4 9 2 310
Solución.
1. Formulación del problema.
𝑍(𝑚𝑖𝑛) = 2 (180√(6 − 𝑥)2 + (12 − 𝑦)2 + 140√(11 − 𝑥)2 + (7 − 𝑦)2
+ 250√𝑥 2 + (8 − 𝑦)2 + 310√(9 − 𝑥)2 + (2 − 𝑦)2 )
2. Población inicial.
Elegir un tamaño de población (posibles ubicaciones del almacén) y generarla
aleatoriamente. En este ejercicio se trabajará con un tamaño de población de diez
cromosomas.
27
Tabla 4 Evaluación de la Función Objetivo para la población inicial.
Evaluación Valor
Función Objetivo
Z1 1.1328 ∗ 104
Z2 1.5541 ∗ 104
Z3 1.1550 ∗ 104
Z4 1.2332 ∗ 104
Z5 1.7134 ∗ 104
Z6 1.2271 ∗ 104
Z7 1.0709 ∗ 104
Z8 1.0921 ∗ 104
Z9 1.7845 ∗ 104
Z10 1.2252 ∗ 104
4. Para mejorar el desempeño del algoritmo se sugiere en cada iteración guardar de cada
nueva población que se evalúa, la mejor función objetivo y los valores de las variables
que la generan, con lo cual se conseguirá encontrar el óptimo en un menor número de
iteraciones.
5. Proceso de selección.
6. En este ejercicio se hará el proceso de selección mediante rueda de ruleta.
6.1 Calculo de “Fitness”.
Como el problema es a minimizar y no hay restricciones, se utiliza la siguiente
función para calcular los “Fitness”.
1
𝐹𝑖𝑡𝑛𝑒𝑠𝑠(𝑖) =
1 + 𝑍(𝑖)
Tabla 5 Valores de “Fitness”
“Fitness” Valor
F1 8.8269044 ∗ 10−5
F2 6.4341784 ∗ 10−5
F3 8.6572591 ∗ 10−5
F4 8.1083273 ∗ 10−5
F5 5.8360082 ∗ 10−5
F6 8.1486310 ∗ 10−5
F7 9.3370682 ∗ 10−5
F8 9.1558323 ∗ 10−5
F9 5.6034966 ∗ 10−5
F10 8.1612666 ∗ 10−5
28
La probabilidad de selección de cada cromosoma corresponde a:
𝐹𝑖𝑡𝑛𝑒𝑠𝑠(𝑖)
𝑃(𝑖) =
𝑇𝑜𝑡𝑎𝑙
10
𝑇𝑜𝑡𝑎𝑙 = ∑ 𝐹𝑖𝑛𝑒𝑠𝑠(𝑖)
𝑖=1
29
7. Proceso de cruce.
7.1 Selección de padres.
Se generan números aleatorios, entre 0-1, de acuerdo con el tamaño de la
población, para este ejercicio diez; si el número aleatorio es menor que la
probabilidad de cruce definida, el cromosoma que corresponde a ese número se
selecciona como padre.
Tabla 8 Selección Padres Proceso de Cruce
Cromosoma Número Aleatorio Padres Seleccionados
(𝑝𝑐 = 0.3)
C1 0.8147
C2 0.9058
C3 0.1270 Seleccionado
C4 0.9134
C5 0.6324
C6 0.0975 Seleccionado
C7 0.2785 Seleccionado
C8 0.5469
C9 0.9575
C10 0.9649
7.2 Cruce entre padres seleccionados.
En este caso como solo hay dos genes (dos variables) por cada cromosoma, en la
operación cruce se toma el primer gen del padre uno y segundo gen del padre dos.
Los cromosomas que no se cruzan no se modifican en la nueva población.
C3 = C3 x C6 = [1, 9] x [5, 11] = [1, 11]
C6 = C6 x C7 = [5, 11] x [2,10] = [5, 10]
C7 = C7 x C3 = [2, 10] x [1, 9] = [2, 9]
Tabla 9 Población después del Proceso de Cruce
Cromosomas Genes (Coordenadas)
Gen 1 ( X ) Gen 2 ( Y )
C1 1 9
C2 13 2
C3 1 11
C4 10 5
C5 8 10
C6 5 10
C7 2 9
C8 1 9
C9 1 9
C10 13 2
30
8. Proceso de Mutación.
Luego se vuelve al paso 3, para una nueva iteración. Implementando el algoritmo en Matlab
para este problema se obtuvo la solución óptima con trescientas iteraciones, es decir
evaluando trescientas generaciones, así: Z(min)=9757, con x=7, y=6.
Ejemplo 11 (Problema con restricciones).
Un inversionista tiene una cantidad fija de dinero para invertir de $ 1000 y tres posibles
opciones de inversión. Los siguientes son los rendimientos anuales esperados de las
diferentes opciones: la opción 1 el 14%, en la opción 2 el 11% y la opción 3 el 10%. Las
varianzas de los rendimientos de las diferentes opciones son: var (Op1) = 0.2, var(Op2) =
0.08 y var(Op3) = 0.18; las covarianzas entre las opciones son: cov (Op1,Op2) = 0.05,
cov(Op1,Op3) = 0.02 y cov(Op2, Op3) = 0.03. El inversionista espera que en conjunto sus
inversiones le generen por lo menos un rendimiento anual del 12%. Utilizando algoritmos
31
genéticos encontrar la solución que le permita obtener el rendimiento esperado con el mínimo
riesgo.
Solución:
Para solucionar el problema se utiliza el modelo cuadrático de Markowitz para minimizar el
riesgo de cartera, de acuerdo con este modelo la función objetivo para el presente problema
está dada por:
𝑍(𝑚𝑖𝑛) = 𝑣𝑎𝑟(𝑥1 𝑂𝑝1) + 𝑣𝑎𝑟(𝑥2 𝑂𝑝2) + 𝑣𝑎𝑟(𝑥3 𝑂𝑝3) + 2 𝑐𝑜𝑣(𝑥1 𝑂𝑝1, 𝑥2 𝑂𝑝2)
+ 2 𝑐𝑜𝑣(𝑥1 𝑂𝑝1, 𝑥3 𝑂𝑝3) + 2 𝑐𝑜𝑣(𝑥2 𝑂𝑝2, 𝑥3 𝑂𝑝3)
= 𝑥12 𝑣𝑎𝑟𝑂𝑝1 + 𝑥22 𝑣𝑎𝑟𝑂𝑝2 + 𝑥32 𝑣𝑎𝑟𝑂𝑝3 + 2𝑥1 𝑥2 𝑐𝑜𝑣(𝑂𝑝1, 𝑂𝑝2)
+ 2𝑥1 𝑥3 𝑐𝑜𝑣(𝑂𝑝1, 𝑂𝑝3) + 2𝑥2 𝑥3 𝑐𝑜𝑣(𝑂𝑝2, 𝑂𝑝3)
La formulación del problema incluyendo las restricciones es:
𝑍(𝑚𝑖𝑛) = 0.2𝑥12 + 0.08𝑥22 + 0.18𝑥32 + 0.1𝑥1 𝑥2 + 0.04𝑥1 𝑥3 + 0.06𝑥2 𝑥3
Sujeto a:
0.14𝑥1 + 0.11𝑥2 + 0.1𝑥3 ≥ 120
𝑥1 + 𝑥2 + 𝑥3 = 1000
𝑥1 , 𝑥2 , 𝑥3 ≥ 0
Utilizando funciones de penalización para el manejo de las restricciones, la función ∅(𝑥)
para este problema es:
∅(𝑥) = (0.2𝑥12 + 0.08𝑥22 + 0.18𝑥32 + 0.1𝑥1 𝑥2 + 0.04𝑥1 𝑥3 + 0.06𝑥2 𝑥3 )
+ (−0.14𝑥1 − 0.11𝑥2 − 0.1𝑥3 + 120) + (|𝑥1 + 𝑥2 + 𝑥3 − 1000| − 𝛿)
Teniendo en cuenta la función anterior se implementa el algoritmo genético en un programa
de computador, con una población fija para todas las generaciones de 800 cromosomas,
probabilidad de cruce 𝑝𝑐 = 0.3, probabilidad de mutación 𝑝𝑚 = 0.2, factores de penalización
𝑟 = 80000 y 𝑐 = 50000 y el parámetro de tolerancia 𝛿 = 10. Después de 100000
generaciones se obtuvo la siguiente solución:
𝑍𝑚𝑖𝑛 = 75238.095110, 𝑥1 = 380.952379, 𝑥2 = 476.190470 𝑦 𝑥3 = 142.857151.
RECOCIDO SIMULADO (SIMULATED ANNEALING – SA)
Este método está basado en el tratamiento térmico de recocido de los materiales sólidos
críticamente calentados. Cuando un material sólido es llevado a un estado fundido por
calentamiento a alta temperatura, los átomos del material se mueven con gran libertad unos
con respecto a otros, sin embargo, este movimiento se restringe a medida que la temperatura
se reduce y los átomos tienden a ordenarse hasta que finalmente forman cristales. El tipo de
cristales que se forman depende de la tasa de enfriamiento, si la tasa de enfriamiento es lenta
se genera un estado cristalino, que tiene el mínimo de energía interna posible, este estado se
caracteriza por tener formas ordenadas, regulares y repetitivas tridimensionalmente; pero
32
cuando la tasa de enfriamiento es rápida no se alcanza un estado cristalino sino un estado
policristalino, cuya energía interna es mayor que la del estado cristalino y se generan defectos
en los materiales. Para evitar estados policristalinos y la introducción de defectos en los
materiales, la temperatura de los metales críticamente calentados debe reducirse en forma
lenta y controlada, este proceso de enfriamiento lento, que asegura la formación de estados
cristalinos, se denomina recocido.
El algoritmo de recocido Simulado se basa en la distribución de probabilidad de Boltzman;
la cual indica que la energía (E), de un sistema en equilibrio térmico a una temperatura (T),
es distribuida probabilísticamente de acuerdo con la ecuación (#).
𝐸 𝑅
𝑃(𝐸) = 𝑒 −𝑘𝑇 ; 𝑘 =
𝑁𝑎
(2.7)
Donde 𝑃(𝐸) es la probabilidad de alcanzar el nivel de energía E y 𝑘 es la constante de
Boltzman, R es la constante universal de los gases y Na es el número de Abogadro; esta
ecuación muestra que a altas temperaturas el sistema tiene casi una probabilidad uniforme de
estar en cualquier estado de energía, sin embargo a temperaturas bajas el sistema tiene una
pequeña probabilidad de estar en un estado de alta energía.
Para simular los sistemas termodinámicos en el algoritmo de optimización de recocido
simulado se utiliza el criterio de Metropolis, este criterio se basa en la probabilidad de
Boltzman y permite aceptar o rechazar una nueva solución en el proceso del algoritmo. La
probabilidad de Boltzman y su adecuación en el algoritmo de optimización se muestra en la
ecuación (#)
∆𝐸
𝑃(𝐸𝑖+1 ) = min [1, 𝑒 −𝑘𝑇 ] ; ∆𝐸 = 𝐸𝑖+1 − 𝐸𝑖 ; ∆𝐸 = ∆𝑓 = 𝑓(𝑥𝑖+1 ) − 𝑓(𝑥𝑖 )
(2.8)
La probabilidad de Boltzman permite calcular la probabilidad de un próximo estado, la cual
depende de los valores de energía del estado anterior, si el estado de energía siguiente es
menor o igual al estado de energía anterior el nuevo estado se acepta como estado actual, en
caso contrario si el nuevo estado es mayor que el estado anterior el nuevo estado se acepta
con la probabilidad dada por la ecuación (#). Cuando se utiliza en optimización de funciones
indica la probabilidad de aceptar una nueva solución, que dependerá del valor de la función
objetivo solución anterior ( 𝑓(𝑥𝑖 )) y el valor de la función objetivo de la nueva solución que
se plantea (𝑓(𝑥𝑖+1 )), donde la constante de Boltzman (k) se utiliza como factor de escala.
2.3.5 Algoritmo
El algoritmo de recocido simulado se resume en el diagrama de flujo de la figura #.
Inicialmente se escoge un factor de reducción de temperatura 𝑐, el rango de variación de las
variables 𝑅, el número máximo de iteraciones que se van a realizar y se define la temperatura
inicial. La temperatura inicial se puede obtener generando cuatro soluciones aleatorias,
33
evaluándolas mediante la función objetivo y el promedio de las cuatro funciones objetivo se
toma como temperatura inicial. Después, se genera aleatoriamente la solución inicial y se
evalúa su función objetivo, luego se genera una nueva solución en la vecindad de la solución
inicial, a la que también se evalúa su función objetivo; al valor de la segunda función objetivo
se le resta el valor de la primera función objetivo, si la diferencia es negativa se rechaza la
segunda solución y si la diferencia es positiva se aplica el criterio de Metropolis para definir
si se acepta o rechaza la segunda solución. Si se acepta la segunda solución se genera una
nueva solución en la vecindad de la segunda solución y se evalúa su función objetivo, la cual
se aceptará si es menor que la segunda solución o se aplicará el criterio de metrópolis para
definir si se acepta o rechaza. Hasta aquí se ha realizado una iteración, luego se disminuye la
temperatura multiplicando la temperatura actual por el factor de temperatura y realiza una
nueva iteración y así sucesivamente hasta alcanzar el número de iteraciones definido.
34
Figura 2 Esquema de proceso del Algoritmo Genético
35
Ejemplo 12
Una compañía está definiendo como realizar su inversión en publicidad en radio y televisión.
Cada minuto en radio cuesta $1.000.000.oo y cada minuto en televisión cuesta $
5.000.000.oo. Si la empresa invierte 𝑥 minutos en radio y 𝑦 minutos televisión el incremento
en ventas, en millones de pesos, que se genera por la publicidad está dado por: 𝑓(𝑥, 𝑦) =
9𝑥 + 24𝑦 + 𝑥𝑦 − 𝑥 2 − 6𝑦 2 . ¿Cómo puede la empresa maximizar su incremento en ventas,
si tiene $ 30.000.000.oo para invertir en publicidad?
Solución:
1. Formulación del problema.
𝑍(𝑚𝑎𝑥) = 9𝑥 + 24𝑦 + 𝑥𝑦 − 𝑥 2 − 6𝑦 2
Sujeto a:
x + 5y = 30
x, y ≥ 0
2. Se eligen el factor de reducción de temperatura 𝑐, el rango de variación de las
variables 𝑅𝑎, el valor de la constante de Boltzman 𝑘, el valor de la constante de
penalización de la restricción 𝑞 y el número de iteraciones que se realizarán n.
Se hará una iteración manual para mostrar en detalle el proceso del algoritmo y luego
éste se implementará computacionalmente para hallar la solución del problema.
3. Se halla la temperatura inicial, eligiendo cuatro soluciones al azar a las que se les
evalúa la función objetivo y el promedio de las cuatro funciones objetivo se toma
como temperatura inicial.
x 24.4417 27.1738 3.8096 27.4013
y 3.7942 0.5852 1.6710 3.2813
F.O. -280.0001 -465.9553 49.4897 -400.1571
4. Se elige una solución inicial al azar y se le evalúa la función objetivo pero restándole
la restricción penalizada, por ejemplo si: 𝑥 = 23.8572, 𝑦 = 0.7642, ⟹, 𝑓(𝑥, 𝑦) =
9𝑥 + 24𝑦 + 𝑥𝑦 − 𝑥 2 − 6𝑦 2 − 𝑞 ∗ 𝑎𝑏𝑠(𝑥 + 5𝑦 − 30) = −323.7046
5. Se busca una solución vecina a la solución anterior, a partir de números aleatorios y
el rango definido de variación de las variables.
Teniendo en cuenta que el rango de variación de las variables es 𝑅𝑎 = (−0.5, 0.5),
se puede establecer la siguiente matriz:
36
23.8572 − 0.5 23.8572 + 0.5
𝑉=[ ]
0.7642 − 0.5 0.7642 + 0.5
Como son dos variables se generan dos números aleatorios entre 0-1, 𝑢1 𝑦 𝑢2 , por
ejemplo: 𝑢1 = 0.25 𝑦 𝑢2 = 0.14.
Como 𝑓(𝑟1 , 𝑟2 ) > 𝑓(𝑥, 𝑦); −370.2905 < −323.7046, no se acepta la solución
vecina y se aplica el criterio de Metropolis para definir si se acepta o no la solución
vecina como nuevo punto de diseño.
−∆𝑓 −(−370.2905−(−323.7046))
𝑃 = 𝑒 𝑘𝑇 = 𝑒 (1)∗(−274.1557) = 0.84373
7. Ahora se halla una solución vecina a la solución aceptada, para lo cual se generan dos
nuevos números aleatorios entre 0 y 1, por ejemplo: 𝑢1 = 0.63 𝑦 𝑢2 = 0.14.
37
𝑓(𝑟1 , 𝑟2 ) = 9 ∗ 23.7372 + 24 ∗ 0.0442 + 23.7372 ∗ 0.0442 − 23.73722 − 6
∗ 0.04422 − 10 ∗ 𝑎𝑏𝑠(23.7372 + 5 ∗ 0.0442 − 30)
𝑓(𝑟1 , 𝑟2 ) = −587.3036
Como 𝑓(𝑟1 , 𝑟2 ) < 𝑓(𝑥, 𝑦) no se acepta la nueva solución vecina y se usa el criterio
de Metropolis para aceptarla o rechazarla.
−∆𝑓 −(−280.80345−(−205.4473))
𝑃(𝑥2 ) = 𝑒 𝑘𝑇 = 𝑒 (1)∗(−274.1557) = 0.75967372
1. Asumir el tamaño del enjambre: no debe ser ni muy pequeño ni muy grande,
generalmente se asumen tamaños entre 20 y 30 partículas (individuos).
3. Evaluar la función objetivo para cada una de las partículas de la población inicial.
4. Asumir las velocidades de las partículas; se asume que todas las partículas de la
población inicial tienen velocidad cero.
38
5. Seleccionar el 𝑃𝑏𝑒𝑠𝑡 y el 𝐺𝑏𝑒𝑠𝑡 . El 𝑃𝑏𝑒𝑠𝑡 corresponde al vector de partículas que
históricamente presenta las mejores soluciones de cada partícula, es decir los valores
de las partículas que generan los mayores valores o los menores valores de la función
objetivo dependiendo si el problema es a maximizar o a minimizar respectivamente.
El 𝐺𝑏𝑒𝑠𝑡 es el valor de la partícula que históricamente genera la mejor solución.
(2.9)
Donde 𝑐1 y 𝑐2 son los ritmos de aprendizaje individuales y sociales respectivamente,
un buen valor heurístico para estos parámetros es 2. Además, 𝑟1 y 𝑟2 son valores de
probabilidad aleatorios.
7. Encontrar los nuevos valores de las partículas y evaluar la función objetivo con estos
nuevos valores.
𝑥𝑗 (𝑖) = 𝑥𝑗 (𝑖 − 1) + 𝑉𝑗 (𝑖); 𝑗 = 1,2, … , 𝑁
(2.10)
(2.11)
La ecuación (#) permite reducir la velocidad de las partículas aumentando el número de
iteraciones necesarias para la convergencia de la solución del problema, logrando una
convergencia más precisa y eficiente que la obtenida con el algoritmo original. Un valor
alto de 𝜃 promueve una exploración de valores global y valor pequeño de 𝜃 promueve
una exploración de valores local, para alcanzar un balance entre las dos exploraciones se
acostumbra a usar un peso de inercia cuyo valor decrece linealmente con el número de
iteraciones.
𝜃𝑚𝑎𝑥 − 𝜃𝑚𝑖𝑛
𝜃(𝑖) = 𝜃𝑚𝑎𝑥 − ( )𝑖
𝑖𝑚𝑎𝑥
(2.12)
39
Donde 𝜃𝑚𝑎𝑥 y 𝜃𝑚𝑖𝑛 son los valores inicial y final del peso de inercia respectivamente y
𝑖𝑚𝑎𝑥 es el máximo número de iteraciones del algoritmo que se desean; los valores
comúnmente usados son: 𝜃𝑚𝑎𝑥 = 0.9 y 𝜃𝑚𝑖𝑛 = 0.4.
Ejemplo 13
Resolver el siguiente problema de programación no lineal utilizando el algoritmo PSO.
𝑍(𝑚𝑎𝑥) = 7𝑥 + 15 − 2𝑥 2
Solución:
1. Definir el tamaño del enjambre. Se utilizará un enjambre de cuatro partículas.
2. Generar la población inicial. Se genera un valor inicial aleatorio para cada partícula
dentro de un rango definido. Por ejemplo se establece el rango −2 ≤ 𝑥 ≤ 6 ,con
valores iniciales:
3. Evaluar la función objetivo para cada una de las partículas de la población inicial.
5. Seleccionar el Pbest y el Gbest. Como las partículas solo han tenido un valor se toma
ese valor como el Pbest inicial de cada partícula.
𝐺𝑏𝑒𝑠𝑡 = 1.9181
6. Hallar las velocidades de las particulas para la primera iteración. Se trabajará con
ritmos de aprendizaje 𝑐1 = 1 y 𝑐2 = 1, pesos de inercia 𝜃𝑚𝑖𝑛 = 0.4 y 𝜃𝑚𝑎𝑥 = 0.9 y
con un número de iteraciones 𝑖𝑚𝑎𝑥 = 20.
De acuerdo con la ecuación # el primer peso de inercia corresponde a:
0.9 − 0.4
𝜃(1) = 0.9 − ( ) ∗ 1 = 0.875
20
40
Utilizando la ecuación # y probabilidades aleatorias 𝑟1 = 0.43 y 𝑟2 = 0.75 las
velocidades de las partículas para la primera iteración son:
7. Calcular los nuevos valores de las partículas de acuerdo con la ecuación # y evaluar
la función objetivo con estos nuevos valores de partículas.
41
2.5 COLONIA DE HORMIGAS (ANT COLONY OPTIMIZATION – ACO)
Estos algoritmos se basan en el comportamiento cooperativo de las colonias de hormigas,
las cuales son capaces de encontrar el camino más corto entre el hormiguero y la fuente
de comida. Este método fue desarrollado por Marco Dorigo, A. Colorni y V. Maniezzo
entre 1992 y 1996.
2.5.1 Procedimiento
3. Cada hormiga puede seleccionar únicamente un nodo en cada capa, esto se hace de
acuerdo con la regla de transición de estados dado por la ecuación (2.13) y el
procedimiento de rueda de ruleta.
𝛼
𝜏𝑖𝑗 (𝑘)
(𝑘) 𝛼 𝑖𝑓 𝑗𝜖𝑁𝑖
𝑝𝑖𝑗 = { ∑ 𝜏𝑖𝑗
(𝑘)
0 𝑖𝑓 𝑗 ∉ 𝑁𝑖
(2.13)
4. Se evalúa la función objetivo de cada una de las hormigas de acuerdo con el camino
que hayan escogido y se determinan el mejor y el peor camino.
𝑘=𝑁 𝑘=𝑁
(𝑘)
𝜁𝑓𝑏𝑒𝑠𝑡
∑ ∆𝜏 =∑
𝑓𝑤𝑜𝑟𝑠𝑡
𝑘=1 𝑘=1
(2.14)
Donde 𝜁es un factor de escala.
6. Se actualiza la cantidad de feromona.
𝑘=𝑁
(𝑙) (𝑙−1)
𝜏𝑖𝑗 = 𝜏𝑖𝑗 + ∑ ∆𝜏 (𝑘)
𝑘=1
(2.15)
7. Se calcula el decaimiento de feromona.
42
(𝑙) (𝑙−1)
𝜏𝑖𝑗 = (1 − 𝜌)𝜏𝑖𝑗
(2.16)
𝛼 (𝑘)
Cuando la hormiga 𝑘 localizada en el nodo 𝑖 usa una huella de feromona 𝜏𝑖𝑗 , 𝑝𝑖𝑗 indica
la probabilidad que la hormiga k pase del 𝑖 al nodo 𝑗 para la siguiente capa o variable,∝
indica el grado de importancia de las feromonas, se puede asumir 𝛼 = 1 o un mayor
(𝑘)
valor; 𝑁𝑖 es el conjunto de nodos vecinos de la hormiga 𝑘, es decir, el conjunto de
nodos directamente conectados al nodo i excepto el último nodo visitado antes de 𝑖.
Los nodos visitados por una hormiga representan un camino, es decir, una solución
candidata. Una vez un camino se completa la hormiga aumenta o disminuye la cantidad
de feromona de acuerdo con las ecuaciones (2.17) y (2.18) respectivamente.
43
REFRENCIAS
Hilier, F. S., Lieberman, G. J. (1994). Introducción a la investigación de operaciones. 5ta
Ed. Mc Graw Hill.
Winstons, W. L. (2004). Investigación de operaciones aplicaciones y algoritmos. 4ta Ed.
Thomson.
Sundaram, R. (2009). A firts course in optimization theory. 15 Ed. Cambridge University
Press.
Mora, H. M. Optimización no lineal y dinámica. Universidad Nacional de Colombia.
Ravindran, A., Don T. P., Solberg, J. J. (1987). 2da Ed. Operations research-principles
and practice. John Wiley & Sons.
Singeresu, S. R. (2009). Engineering optimization-Theory and practice. Jhon Wiley &
Sons Inc.
Apellido, A. A. (Ed.). (Año). Título. Ciudad, País: Editorial.
Wilber, K. (Ed.). (1997). El
paradigma holográfico. Barcelona, España: Editorial Kairós
44