Está en la página 1de 44

Optimización No Lineal

Optimización No Lineal

César Augusto Suárez Parra


Universidad Distrital Francisco José de Caldas

Bogotá D.C., Julio 2019


CONTENIDO

1. OPTIMIZACIÓN NO LINEAL – ENFOQUE CLÁSICO 4

1.1. FUNCIONES CONVEXAS Y CÓNCAVAS 4


1.2. OPTIMIZACIÓN NO RESTRINGIDA DE UNA VARIABLE 5
1.3. PROCEDIMIENTO DE BÚSQUEDA EN UNA DIMENSIÓN 5
1.4. OPTIMIZACIÓN NO RESTRINGIDA CON VARIAS VARIABLES 7
1.5. MÉTODO DEL GRADIENTE 10
1.6. OPTIMIZACIÓN RESTRINGIDA CON RESTRICCIONES DE IGUALDAD 13
1.7. CONDICIONES KARUSH-KUHN-TUCKER (KKT) 14
1.7.1. CONDICIONES NECESARIAS 16
1.7.2. CONDICIONES SUFICIENTES 16
1.8. PROGRAMACIÓN CUADRÁTICA 17
1.9. PROGRAMACIÓN SEPARABLE 20

2. OPTIMIZACION NO LINEAL – ENFOQUE BIOINSPIRADO 24

2.1. ALGORITMOS GENÉTICOS (GENETIC ALGORITHM- GA) 24


2.1.1. SELECCIÓN 25
2.1.2. CRUCE 25
2.1.3. MUTACIÓN 25
2.1.4. ALGORITMO 25
2.2. RECOCIDO SIMULADO (SIMULATED ANNEALING – SA) 32
2.2.1. ALGORITMO 33
2.3. ENJAMBRE DE PARTICULAS (PARTICLE SWARM OPTIMIZATION – PSO) 38
2.3.1. PROCEDIMIENTO 38
2.4. COLONIA DE HORMIGAS (ANT COLONY OPTIMIZATION – ACO) 40
2.4.1. PROCEDIMIENTO 40
REFERENCIAS 44
OPTIMIZACIÓN NO LINEAL.
Los problemas de optimización no lineal se caracterizan porque su función objetivo es no lineal o
por lo menos una de sus restricciones es no lineal.

1 OPTIMIZACIÓN NO LINEAL – ENFOQUE CLÁSICO.


1.1 FUNCIONES CONVEXAS Y CÓNCAVAS
La función 𝑓(𝑥1 , 𝑥2 , …. , 𝑥𝑛 ) es una función convexa si:
𝑓[(1 − 𝜃)𝑥1 + 𝜃𝑥2 ] ≤ [(1 − 𝜃)𝑓(𝑥1 ) + 𝜃𝑓(𝑥2 )]; 0 ≤ 𝜃 ≤ 1 (1.1)
Lo anterior significa que la función 𝑓(𝒙) es una función convexa si el segmento de línea recta
que une dos puntos cualesquiera de la curva 𝑦 = 𝑓(𝒙) ), nunca está debajo de la curva.
Ejemplo 1
Dada la función:
y = 4𝑥 2 − 5𝑥 + 2
Dos puntos de la curva son (0, 2) y (2, 8), luego:
𝑓[(1 − 𝜃)(0) + 𝜃(2)] ≤ [(1 − 𝜃)𝑓(0) + 𝜃𝑓(2)]
𝑓(1 + 2𝜃) ≤ [2 + 6𝜃]

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.

La función 𝑓(𝑥1 , 𝑥2 , …. , 𝑥𝑛 ) es una función cóncava si:


𝑓[(1 − 𝜃)𝑥1 + 𝜃𝑥2 ] ≥ [(1 − 𝜃)𝑓(𝑥1 ) + 𝜃𝑓(𝑥2 )]; 0 ≤ 𝜃 ≤ 1
Lo anterior indica que la función 𝑓(𝒙) es una función cóncava si el segmento de línea recta
que une dos puntos cualesquiera de la curva 𝑦 = 𝑓(𝒙), nunca está arriba de la curva.
Ejemplo 2
Dada la función:
𝑦 = −𝑥 2 + 7𝑥
Dos puntos de la curva son (1,5) y (4,12), luego:
𝑓[(1 − 𝜃)(1) + 𝜃(4)] ≥ [(1 − 𝜃)𝑓(1) + 𝜃𝑓(4)]
𝑓(1 + 3𝜃) ≥ [1 + 6𝜃]

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, 𝑒𝑛 𝑥 = 𝑥 ∗

Si 𝑓 ′′ (𝑥 ∗ ) < 0, hay un máximo local.


Si 𝑓 ′′ (𝑥 ∗ ) > 0, hay un mínimo local.
Ejemplo 3
Los costos fijos de mantener en funcionamiento un hospital son de $ 300.000.000 y los costos
variables son de $ 400𝑥 2 , donde 𝑥 es el número de camas ocupadas por día. ¿Qué tamaño de
hospital minimiza el costo total por paciente?
El costo total por paciente es:
300.000.000 + 400𝑥 2
𝑦=
𝑥
El tamaño del hospital que minimiza el costo de hospitalización por paciente es:
𝑑𝑦 400𝑥 2 −300000000
= = 0; 𝑥 = 866.025
𝑑𝑥 𝑥2

1.3 PROCEDIMIENTO DE BÚSQUEDA EN UNA DIMENSIÓN


Es un procedimiento iterativo donde se busca el acercamiento a un máximo o un mínimo. El
procedimiento consiste en:
1. Se eligen la cota inferior, la cota superior y se calcula una solución de prueba actual.

𝑥̅ + 𝑥̿
𝑥′ =
2
(1.2)
Donde:

𝑥 ′ : Solución de prueba actual.


𝑥̅ : Cota inferior.
𝑥̿ : Cota superior.

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 𝑥̿ = 𝑥 ′ .
𝑑𝑥

3. Se evalúa la regla de detención:


(𝑥̅ − 𝑥̿ ) ≤ 2𝜀

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

Evaluando el criterio de detención, se tiene:


𝑥̿ − 𝑥̅ = 1300 − 850 = 450
Como: 450 > 2𝜀 = 2(0.001) = 0.002, se halla una nueva solución de prueba.

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

Evaluando el criterio de detención, se tiene:


𝑥̿ − 𝑥̅ = 1075 − 850 = 225
Como: 225 > 2𝜀 = 0.002, se debe seguir iterando.
1.4 OPTIMIZACIÓN NO RESTRINGIDA CON VARIAS VARIABLES
Dada una función 𝑓(𝑥1 ,𝑥2 , … . , 𝑥𝑛 ) con derivadas parciales de primero y segundo orden, hay
un extremo local si:
𝑑𝑓(𝑥̅ )
= 0; 𝑝𝑎𝑟𝑎 𝑖 = 1,2, … , , 𝑛.
𝑑(𝑥𝑖 )
(1.3)
Los extremos locales se denominan puntos estacionarios. La ecuación anterior indica que hay
un punto estacionario si las derivadas parciales de la función 𝑓(𝑥1 ,𝑥2 , … . , 𝑥𝑛 ) con respecto
a cada una de las variables, evaluadas en el punto estacionario 𝑥̅ = (𝑥̅1 , 𝑥̅ 2 , … , 𝑥̅𝑛 ), son
iguales a cero. Las siguientes condiciones indican si el punto estacionario 𝑥̅ , es un mínimo
local, un máximo local o no es un extremo local.
1. Si 𝐻𝑘 (𝑥̅ ) > 0, 𝑘 = 1,2, … , 𝑛, 𝑥̅ es un mínimo local.
2. Si 𝐻𝑘 (𝑥̅ ) ≠ 0, 𝑘 = 1,2, … , 𝑛 y tiene el mismo signo que (−1)𝑘 , 𝑥̅ es un máximo local.
3. Si 𝐻𝑘 (𝑥̅ ) ≠ 0 y no se cumplen las condiciones anteriores, 𝑥̅ no es un extremo local y
se denomina punto de silla.
4. Si 𝐻𝑛 (𝑥̅ ) = 0 para un punto estacionario 𝑥̅ , no se puede definir si el punto
estacionario 𝑥̅ es un máximo local, un mínimo local o un punto de silla.
𝐻𝑘 (𝑥̅ ) es el k-ésimo menor principal del Hessiano de la función 𝑓(𝑥1 ,𝑥2 , … . , 𝑥𝑛 ). El
𝜕2 𝑓
Hessiano es la matriz 𝑛 × 𝑛 cuyo 𝑖𝑗 elemento es: . El k-ésimo menor principal de una
𝜕𝑥𝑖 𝑥𝑗
matriz 𝑛 × 𝑛 es elemento de la matriz 𝑘 × 𝑘 obtenida al eliminar 𝑛 − 𝑘 filas y columnas de
la matriz.
Ejemplo 5.
Encontrar los puntos estacionarios de la función y determinar si son máximos, mínimos o
puntos de silla.

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

La matriz Hessiana de una función de dos variables es:


𝜕 2𝑓 𝜕 2𝑓
𝜕𝑥12 𝜕𝑥1 𝑥2
𝐻(𝑥1 , 𝑥2 ) =
𝜕 2𝑓 𝜕 2𝑓
[𝜕𝑥2 𝑥1 𝜕𝑥22 ]
(1.4)
Así la matriz Hessiana de la función dada es:
6𝑥1 𝑥2 8𝑥2 + 3𝑥12 − 3
𝐻=[ ]
8𝑥2 + 3𝑥12 − 3 8𝑥1

Analizando el punto estacionario (0, 0), se tiene:


0 −3
𝐻(0,0) = [ ]
−3 0

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.

𝑓(𝑥1 , 𝑥2, 𝑥3 ) = 3𝑥12 + 2𝑥22 + 𝑥32 − 4𝑥1 𝑥2

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

El tercer menor principal es:


6 −4 0
det [−4 4 0] = 16
0 0 2

De acuerdo con la condición 1 la función es cóncava, luego punto estacionario (0,0,0) es un


mínimo global.
1.5 MÉTODO DEL GRADIENTE
Es un método iterativo para la solución de problemas de optimización de varias variables no
restringidos; se basa en el gradiente de la función que indica, para el punto donde se evalúe,
la dirección de la mayor tasa de crecimiento o decrecimiento de la función. El siguiente es
su procedimiento:
1. Se define margen de error que se aceptará en la solución (𝜀) y la solución de prueba
inicial.
2. Se calcula el gradiente de la función y se evalúa en la solución de prueba.

𝜕𝑓 𝜕𝑓 𝜕𝑓
∇𝑓(𝑥 ′ ) = ( , ,…, )|
𝜕𝑥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:

𝑓(𝑥1 , 𝑥2, 𝑥3 ) = 𝑥12 + 𝑥22 + 2𝑥32 − 𝑥1 𝑥2 − 𝑥2 𝑥3 − 𝑥1 𝑥3

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 (𝑡),𝑥2 (𝑡),𝑥3 (𝑡)) = 200 − 400𝑡 + 800𝑡 2

𝑑𝑓 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

∇𝑓(𝑥1 , 𝑥2 , 𝑥3 ) = (0.000076294, 0.000076294, 0)

1.6 OPTIMIZACIÓN RESTRINGIDA CON RESTRICCIONES DE IGUALDAD


Dado un problema de la forma:
𝑍máx (o mín) = 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) (1.10)

Sujeto a:
𝑔1 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) = 𝑏1
𝑔2 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) = 𝑏2

𝑔𝑛 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) = 𝑏𝑛 (1.11)

Para la solución de este tipo de problemas se asocia la siguiente función Lagrangiana:


𝐿(𝑥1 , 𝑥2 , … , 𝑥𝑛 , 𝜆1 , 𝜆2 , … , 𝜆𝑚 ) = 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) + ∑𝑚
𝑖=1 𝜆𝑖 (𝑏𝑖 − 𝑔𝑖 (𝑥1 , 𝑥2 , … , 𝑥𝑛 )).
(1.12)

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?

𝑧(𝑚𝑎𝑥) = 𝑥 (1/3) 𝑦 (3/5)


Sujeto a:
12500𝑥 + 150000𝑦 = 100000000
1 3
𝐿(𝑥, 𝑦, 𝜆) = 𝑥 (3) 𝑦 (5) + 𝜆(100000000 − (12500𝑥 + 150000𝑦))
𝜕𝐿 1 −2 3
= 𝑥 3 𝑦 5 − 12500𝜆 = 0
𝜕𝑥 3
𝜕𝐿 3 1 −2
= 𝑥 3 𝑦 5 − 150000𝜆 = 0
𝜕𝑦 5
𝜕𝐿
= 100000000 − 12500𝑥 − 150000𝑦 = 0
𝜕𝜆
𝑥 = 2857.143; 𝑦 = 428.571; 𝜆 = 5.0261(10−6 ); 𝑧 = 538.507

1.7 CONDICIONES KARUSH-KUHN-TUCKER (KKT)


Dado un problema de la forma:
𝑍máx (o mín) = 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) (1.14)

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

𝜆̅𝑖 [𝑏𝑖 − 𝑔𝑖 (𝑥̅ )] = 0, (𝑖 = 1,2, … , 𝑚)


𝜆̅𝑖 ≥ 0, (𝑖 = 1,2, … , 𝑚) (1.16)
Para problemas de minimización habrá una solución óptima (𝑥̅1 , 𝑥̅ 2 , … , 𝑥̅𝑛 ) si se cumplen las
̅ 1 , 𝜆̅2 , … , 𝜆̅𝑚 ) satisfacen:
m restricciones del problema y los multiplicadores de Lagrange (𝜆
𝑖=𝑚
𝜕𝑓(𝑥̅ ) 𝜕𝑔𝑖 (𝑥̅ )
+ ∑ 𝜆1̅ = 0, 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑛
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1

𝜆̅𝑖 [𝑏𝑖 − 𝑔𝑖 (𝑥̅ )] = 0, (𝑖 = 1,2, … , 𝑚)


𝜆̅𝑖 ≥ 0, (𝑖 = 1,2, … , 𝑚) (1.17)
Si los problemas además deben satisfacer condiciones de no negatividad para sus variables,
es decir son de la forma:
𝑍máx (o mín) = 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) (1.18)

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

𝜆̅𝑖 [𝑏𝑖 − 𝑔𝑖 (𝑥̅ )] = 0, (𝑖 = 1,2, … , 𝑚)


𝑖=𝑚
𝜕𝑓(𝑥̅ ) 𝜕𝑔𝑖 (𝑥̅ )
[ − ∑ 𝜆1̅ ] 𝑥̅𝑗 = 0, (𝑖 = 1,2, … , 𝑚)
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1

𝜆̅𝑖 ≥ 0, (𝑖 = 1,2, … , 𝑚) (1.20)


Para problemas de minimización los multiplicadores de Lagrange 𝜆1 , 𝜆2 , … , 𝜆𝑚 , deben
satisfacer:
𝑖=𝑚
𝜕𝑓(𝑥̅ ) 𝜕𝑔𝑖 (𝑥̅ )
+ ∑ 𝜆1̅ ≥ 0, 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑛
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1

𝜆̅𝑖 [𝑏𝑖 − 𝑔𝑖 (𝑥̅ )] = 0, (𝑖 = 1,2, … , 𝑚)


𝑖=𝑚
𝜕𝑓(𝑥̅ ) 𝜕𝑔𝑖 (𝑥̅ )
[ + ∑ 𝜆1̅ ] 𝑥̅𝑗 = 0, (𝑖 = 1,2, … , 𝑚)
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1

𝜆̅𝑖 ≥ 0, (𝑖 = 1,2, … , 𝑚) (1.21)

1.7.2 Condiciones suficientes


Si el problema es de maximización, la función objetivo 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) es una función
cóncava y las restricciones (𝑔𝑖 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏𝑖 , 𝑖 = 1,2, … , 𝑚) son funciones convexas
entonces cualquier punto 𝑥̅ = (𝑥̅1 , 𝑥̅2 , … , 𝑥̅𝑛 ) que satisface las condiciones necesarias para
maximización es una solución óptima.
Si el problema es de minimización, la función objetivo 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) es una función
convexa y las restricciones (𝑔𝑖 (𝑥1 , 𝑥2 ,…, 𝑥𝑛 ) ≤ 𝑏𝑖 , 𝑖 = 1,2, … , 𝑚) son funciones convexas
entonces cualquier punto 𝑥̅ = (𝑥̅1 , 𝑥̅2 , … , 𝑥̅𝑛 ) que satisface las condiciones necesarias para
minimización es una solución óptima.

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.

2.1 Agregar las variables de holgura, convirtiendo las inecuaciones en ecuaciones.

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

2.3 Agregar las restricciones de complementariedad.

Considerando que:

𝑥1 [20𝑥1 − 1 − 2𝑥2 + 3𝜆] = 0; ℎ1 = 20𝑥1 − 2𝑥2 + 3𝜆 − 1, ⟹, 𝑥1 ℎ1 = 0

De manera similar:

𝑥2 [−2𝑥1 + 14𝑥2 + 5𝜆 + 4] = 0; ℎ2 = −2𝑥1 + 14𝑥2 + 5𝜆 + 4, ⟹, 𝑥2 ℎ2 = 0

𝜆[3𝑥1 + 5𝑥2 − 15] = 0; ℎ3 = −3𝑥1 − 5𝑥2 + 15 = 0, ⟹, 𝜆ℎ3 = 0

Las restricciones de complementariedad se pueden presentar en forma resumida


como:
𝑥1 ℎ1 + 𝑥2 ℎ2 + 𝜆ℎ3 = 0

Lo anterior significa que las dos variables de cada sumando no pueden ser a la vez
variables básicas en una iteración.

2.4 Construir el tablero Simplex inicial.

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

Luego la solución óptima del problema es:

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

3. Reescribir la función objetivo en forma matricial y verificar su convexidad.


𝑛 𝑛 𝑛
1 1
𝑓(𝑥) = 𝑪𝑿 − 𝑿𝑻 𝑸𝑿 = ∑ 𝑐𝑗 𝑥𝑗 − ∑ ∑ 𝑞𝑖𝑗 𝑥𝑖 𝑥𝑗
2 2
𝑗=1 𝑖=1 𝑗=1

−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:
𝑛

𝑍(min 𝑜 max) = ∑ 𝑓𝑗 (𝑥𝑗 )


𝑗=1

(1.26)
Sujeto a:
𝑛

∑ 𝑔𝑖𝑗 (𝑥𝑗 ) ≤ 𝑏𝑖 (𝑖 = 1,2, … , 𝑚)


𝑗=1

(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)

Además, se incluyen las restricciones:


𝛿𝑗1 + 𝛿𝑗2 +, … , +𝛿𝑗𝑘 = 1; 𝛿𝑗𝑟 ≥ 0; (𝑗 = 1,2, … , 𝑛; 𝑟 = 1,2, … , 𝑘) (1.29)

La forma general de los problemas de programación separable es:


𝑛 𝑛 𝑛

𝑍(max ó min) = ∑ 𝛿𝑗1 𝑓𝑗 (𝑝𝑗1 ) + ∑ 𝛿𝑗2 𝑓𝑗 (𝑝𝑗2 ) + ⋯ + ∑ 𝛿𝑗𝑘 𝑓𝑗 (𝑝𝑗𝑘 )


𝑗=1 𝑗=1 𝑗=1

(1.30)
Sujeto a:
𝑛

∑[𝛿𝑗1 𝑔𝑖𝑗 (𝑝𝑗1) + 𝛿𝑗2 𝑔𝑖𝑗 (𝑝𝑗2) + ⋯ + 𝛿𝑗𝑘 𝑔𝑖𝑗 (𝑝𝑗𝑘) ] ≤ 𝑏𝑗 ; (𝑖 = 1,2, … , 𝑚)
𝑗=1

𝛿𝑗1 + 𝛿𝑗2 +, … , +𝛿𝑗𝑘 = 1; 𝑗 = (1,2, … , 𝑛)


𝛿𝑗𝑟 ≥ 0; 𝑗 = (1,2, … , 𝑛; 𝑟 = 1,2, … , 𝑘) (1.31)

La estructura de los problemas de programación separable es lineal pero se debe tener en


cuenta que el método trabaja con aproximaciones lineales de las funciones 𝑓𝑗 𝑦 𝑔𝑖𝑗 en cada
intervalo [𝑝𝑗,𝑟−1 , 𝑝𝑗,𝑟 ]. Por lo tanto en las soluciones de prueba cada uno de los 𝑥𝑗 ≠ 0 se
analiza entre dos puntos consecutivos. Para un 𝑥𝑗 (𝑝𝑗,𝑟 ≤ 𝑥𝑗 ≤ 𝑝𝑗,𝑟+1 ) y un 𝛿 (0 ≤ 𝛿 ≤ 1),
𝑥𝑗 = 𝛿𝑝𝑗,𝑟 + (1 − 𝛿)𝑝𝑗,𝑟+1 , las aproximaciones lineales de 𝑓𝑗 (𝑥𝑗 ) y 𝑔𝑖𝑗 (𝑥𝑗 ) estarán dadas
por:
𝑓𝑗̅ (𝑥𝑗 ) = 𝛿𝑓𝑗 (𝑝𝑗,𝑟 ) + (1 − 𝛿)𝑓𝑗 (𝑝𝑗,𝑟+1 )

𝑔̅𝑖𝑗 (𝑥𝑗 ) = 𝛿𝑔𝑖𝑗 (𝑝𝑗,𝑟 ) + (1 − 𝛿)𝑔𝑖𝑗 (𝑝𝑗,𝑟+1 ) (1.32)

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.

𝑓1 (𝑥1 ) = 3𝑥12 − 2𝑥1 ; 𝑓2 (𝑥2 ) = 𝑥22 − 2𝑥2 ; 𝑓3 (𝑥3 ) = −𝑥3


𝑔11 (𝑥1 ) = 𝑥1 ; 𝑔12 (𝑥2 ) = 𝑥22 ; 𝑔13 (𝑥3 ) = 𝑥3
𝑔21 (𝑥1 ) = 𝑥1 ; 𝑔22 (𝑥2 ) = 𝑥2 ; 𝑔23 (𝑥3 ) = 𝑥3

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

4. De acuerdo con los puntos considerados, se formula el problema de programación


separable para este ejercicio.
𝑍(𝑚𝑎𝑥) = 𝛿12 + 8𝛿13 + 21𝛿14 + 40𝛿15 + 65𝛿16 − 𝛿22 + 3𝛿24 + 8𝛿25 + 15𝛿26 − 𝛿32
− 2𝛿33
Sujeto a:
𝛿12 + 2𝛿13 + 3𝛿14 + 4𝛿15 + 5𝛿16 +𝛿22 + 4𝛿23 + 9𝛿24 + 16𝛿25 + 25𝛿26 +𝛿32 + 2𝛿33
+ 3𝛿34 + 4𝛿35 + 5𝛿36 ≤ 10
𝛿12 + 2𝛿13 + 3𝛿14 + 4𝛿15 + 5𝛿16 +𝛿22 + 2𝛿23 + 3𝛿24 + 4𝛿25 + 5𝛿26 +𝛿32 + 2𝛿33
+ 3𝛿34 + 4𝛿35 + 5𝛿36 ≤ 5
𝛿11 +𝛿12 + 𝛿13 + 𝛿14 + 𝛿15 + 𝛿16 = 1
𝛿21 +𝛿22 + 𝛿23 + 𝛿24 + 𝛿25 + 𝛿26 = 1
𝛿31 +𝛿32 + 𝛿33 + 𝛿34 + 𝛿35 + 𝛿36 = 1
𝛿11 , 𝛿12 , 𝛿13 , 𝛿14 , 𝛿15 , 𝛿16 , 𝛿21 , 𝛿22 , 𝛿23 , 𝛿24 , 𝛿25 , 𝛿26 , 𝛿31 , 𝛿32 , 𝛿33 , 𝛿34 , 𝛿35 , 𝛿36 ≥ 0
5. Se soluciona el problema como si se tratara de un problema de programación lineal,
pero teniendo en cuenta la condición de adyacencia. En el caso de Simplex implica que
para un 𝑗 dado solo dos 𝛿𝑗𝑘 harán parte de las variables básicas y que si 𝛿𝑗𝑘 hace parte

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 OPTIMIZACION NO LINEAL – ENFOQUE BIOINSPIRADO.


2.3 ALGORITMOS GENÉTICOS (GENETIC ALGORITHM- GA)
Estos algoritmos se conocen como algoritmos evolutivos y modelan el proceso de evolución
como una sucesión de frecuentes cambios en los genes. Cada solución es representada por
un cromosoma, el cual compone de genes y corresponde a una secuencia de valores de las
variables de decisión, cada gen representa un variable de decisión.
El proceso de los AG se esquematiza en la Figura 1. Inicialmente se escoge al azar una
población inicial, generalmente el tamaño de la población se mantiene constante durante todo
el proceso, se evalúa la población con base en la función objetivo o función de aptitud, se
revisa si se cumple con los criterios de optimización, si no se cumplen se genera una nueva
población mediante los mecanismos de selección cruce y mutación.

Figura 1 Esquema de proceso de los Algoritmos Genéticos

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

1. Se escoge un tamaño de población, una probabilidad de cruce (𝑝𝑐 ), una probabilidad


de mutación (𝑝𝑚 ) y los criterios de detención o convergencia. Los criterios de
detención que se utilizan son: el valor permitido de desviación estándar de la solución
y el número de iteraciones o generaciones que se van a realizar.
2. Se genera una población inicial aleatoria y se evalúa cada solución o cromosoma de
acuerdo con la función de aptitud (“fitness”) o función objetivo.
3. Se realiza el proceso de selección.
4. Se realiza el proceso de cruzamiento.
5. Se realiza la operación de mutación.
6. Se evalúa la función “fitness” de cada solución o cromosoma de la nueva población.
7. Se revisan los criterios de detención o convergencia definiendo si el proceso se
detiene o se vuelve al paso 3.

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:

𝐺𝑖 (𝑔𝑖 (𝑥)) = max(0, 𝑔𝑖 (𝑥))𝛽


𝜎
𝐻𝑗 (ℎ𝑗 (𝑥)) = |ℎ𝑗 (𝑥)| − 𝛿 (2.4)

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.

Tabla 3 Población inicial (distancia en km)


Cromosomas Genes (Coordenadas)
Gen 1 ( X ) Gen 2 ( Y )
C1 8 10
C2 13 2
C3 5 11
C4 7 1
C5 0 1
C6 2 10
C7 10 5
C8 5 10
C9 14 11
C10 1 9

3. Evaluar la función objetivo para cada cromosoma de la población inicial.

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

6.2 Probabilidad de selección de cada cromosoma.

28
La probabilidad de selección de cada cromosoma corresponde a:
𝐹𝑖𝑡𝑛𝑒𝑠𝑠(𝑖)
𝑃(𝑖) =
𝑇𝑜𝑡𝑎𝑙
10

𝑇𝑜𝑡𝑎𝑙 = ∑ 𝐹𝑖𝑛𝑒𝑠𝑠(𝑖)
𝑖=1

Tabla 6 Probabilidad de selección de los cromosomas y probabilidades acumuladas.


Cromosoma Probabilidad de Probabilidad Rango de
selección acumulada probabilidades
acumuladas
1 0.1128 0.1128 0 – 0.1128
2 0.0822 0.1950 01128 – 0.1950
3 0.1106 0.3056 0.1950 – 0.3056
4 0.1036 0.4092 0.3056 – 0.4092
5 0.0746 0.4838 0.4092 – 0.4838
6 0.1041 0.5879 0.4838 – 0.5879
7 0.1193 0.7072 0.5879 – 0.7072
8 0.1170 0.8241 0.7072 – 0.8241
9 0.0716 0.8957 0.8241 – 0.8957
10 0.1043 1.0000 0.8957 – 1.0

6.3 Cambios de cromosomas en la población.


Con aleatorios entre 0-1, uno por cada cromosoma, se construye la nueva población
de acuerdo con las probabilidades acumuladas, si el número aleatorio está en el rango
entre dos probabilidades acumuladas se escoge el cromosoma que le corresponda de
acuerdo con la tabla 7.
Tabla 7 Población después del proceso de Selección.
Cromosomas Números Cromosomas Genes (Coordenadas)
Aleatorios seleccionados Gen 1 ( X ) Gen 2 ( Y )
C1 0.9058 C10 1 9
C2 0.1270 C2 13 2
C3 0.9134 C10 1 9
C4 0.6324 C7 10 5
C5 0.0975 C1 8 10
C6 0.2785 C3 5 11
C7 0.5469 C6 2 10
C8 0.9575 C10 1 9
C9 0.9649 C10 1 9
C10 0.1576 C2 13 2

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.

8.1 Definición del número de mutaciones.

𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑚𝑢𝑡𝑎𝑐𝑖𝑜𝑛𝑒𝑠 = 𝑇𝑜𝑡𝑎𝑙 𝑑𝑒 𝑔𝑒𝑛𝑒𝑠 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛 ∗ 𝑝𝑚 = 20 ∗ 0.15 = 3

8.2 Ejecución de las mutaciones.

Se generan tres números aleatorios entre cero y el total de genes de la población,


en este caso veinte, los cuales indicarán los genes que se van a mutar.
.
𝐺𝑒𝑛𝑒𝑠 𝑎 𝑚𝑢𝑡𝑎𝑟 = [4, 16, 7]
Se generan tres nuevos números aleatorios entre cero y dieciséis, que serán los
nuevos valores de los genes mutados.
𝑁𝑢𝑒𝑣𝑜𝑠 𝑉𝑎𝑙𝑜𝑟𝑒𝑠 𝑑𝑒 𝑙𝑜𝑠 𝑔𝑒𝑛𝑒𝑠 𝑚𝑢𝑡𝑎𝑑𝑜𝑠 = [13, 14, 2]
Tabla 10 Población después del Proceso de Mutación.
Cromosomas Genes (Coordenadas)
Gen 1 ( X ) Gen 2 ( Y )
C1 1 9
C2 13 13
C3 1 11
C4 2 5
C5 8 10
C6 5 10
C7 2 9
C8 1 14
C9 1 9
C10 13 2

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.

𝑐 = 0.8, 𝑅𝑎 = (−0.5, 0.5), 𝑘 = 1, 𝑞 = 10, 𝑛 = 1

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

Luego la temperatura inicial es: -274.1557.

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.

La solución vecina se define como:

𝑟1 = 𝑉11 + 𝑢1 ∗ (𝑉12 − 𝑉11 ); 𝑟2 = 𝑉21 + 𝑢2 ∗ (𝑉22 − 𝑉21 )


𝑟1 = 23.3572 + 0.25 ∗ (24.3572 − 23.3572) = 23.6072
𝑟2 = 0.2642 + 0.14 ∗ (1.2642 − 0.2642) = 0.4042

Se evalúa la función objetivo para la solución vecina.

𝑓(𝑟1 , 𝑟2 ) = 9𝑟1 + 24𝑟2 + 𝑟1 𝑟2 − 𝑟12 − 6𝑟22 − 𝑞 ∗ 𝑎𝑏𝑠(𝑟1 + 5𝑟2 − 30) = −370.2905

6. Se define si se acepta la solución vecina comparándola con la solución anterior; como


se está maximizando si la solución vecina es mayor la solución anterior se acepta la
solución vecina como nueva solución y si la solución vecina es menor que la solución
anterior se aplica el criterio de Metropolis para aceptar o rechazar la solución vecina.

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

Se genera un número aleatorio entre 0 y 1, por ejemplo: 𝐴 = 0.374, como 𝐴 < 𝑃 se


acepta esta solución vecina como nuevo punto de diseño.

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.

23.6072 − 0.5 23.6072 + 0.5


𝑉=[ ]
0.4042 − 0.5 0.4042 + 0.5
𝑟1 = 𝑉11 + 𝑢1 ∗ (𝑉12 − 𝑉11 ); 𝑟2 = 𝑉21 + 𝑢2 ∗ (𝑉22 − 𝑉21 )
𝑟1 = 23.1072 + 0.63 ∗ (24.1072 − 23.1072) = 23.7372
𝑟2 = −0.0958 + 0.14 ∗ (0.9042 − (−0.0958)) = 0.0442

8. Se evalúa la función objetivo para ésta solución vecina.

𝑓(𝑟1 , 𝑟2 ) = 9𝑟1 + 24𝑟2 + 𝑟1 𝑟2 − 𝑟12 − 6𝑟22 − 𝑞 ∗ 𝑎𝑏𝑠(𝑟1 + 5𝑟2 − 30)

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

Se genera un número aleatorio entre 0 y 1, por ejemplo: 𝐴 = 0.374, como 𝐴 < 𝑃 se


acepta esta solución vecina como nuevo punto de diseño, se disminuye la temperatura
multiplicando la temperatura actual por el factor de reducción de temperatura, se
verifica el criterio de detención y se inicia una nueva iteración regresando al paso 5.

𝑇 = 𝑇 ∗ 𝑐 = −280.8035 ∗ 0.8 = −224.6428

2.4 ENJAMBRE DE PARTICULAS (PARTICLE SWARM OPTIMIZATION – PSO)


A estos algoritmos también de les denomina conductualmente inspirados, porque están
basados en el comportamiento de las colonias o enjambres de insectos, bandadas de pájaros
o cardúmenes de peces. Cada individuo o partícula en una colonia o enjambre se comporta
utilizando su inteligencia individual y la inteligencia de colectiva o de grupo. El
comportamiento de una bandada o enjambre está basado en la combinación de tres factores:
cohesión, separación y alineación.
Cohesión: permanecer juntos.
Separación: no estar demasiado cerca de sus compañeros.
Alineación: seguir la dirección de la bandada.
2.4.1 Procedimiento

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).

2. Generar la población inicial de manera aleatoria, de acuerdo con el número de


partículas que se definió y dentro del rango establecido para el valor de la variable
(𝑥 𝑙 ≤ 𝑥 ≤ 𝑥 𝑢 ).

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.

6. Encontrar las velocidades de las partículas de acuerdo con la ecuación (2.9).

𝑉𝑗 (𝑖) = 𝑉𝑗 (𝑖 − 1) + 𝑐1 𝑟1 [𝑃𝑏𝑒𝑠𝑡,𝑗 − 𝑥𝑗 (𝑖 − 1)] + 𝑐2 𝑟2 [𝐺𝑏𝑒𝑠𝑡 − 𝑥𝑗 (𝑖 − 1)]; 𝑗 = 1,2, … , 𝑁

(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)

8. Chequear la convergencia de la solución. Si las posiciones de todas las partículas


convergen al mismo conjunto de valores se asume que hay convergencia. Si no hay
convergencia se vuelve al paso 5.
Mejoramiento al método de optimización de enjambre de partículas.
Esta mejora fue introducida originalmente por Shi y Ebarhart en 1999, consiste en
introducir un término de inercia (𝜃) en el cálculo de la velocidad de las partículas.

𝑉𝑗 (𝑖) = 𝜃(𝑖)𝑉𝑗 (𝑖 − 1) + 𝑐1 𝑟1 [𝑃𝑏𝑒𝑠𝑡,𝑗 − 𝑥𝑗 (𝑖 − 1)] + 𝑐2 𝑟2 [𝐺𝑏𝑒𝑠𝑡 − 𝑥𝑗 (𝑖 − 1)]; 𝑗 = 1,2, … , 𝑁

(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:

𝑥1(0) = −0.5050; 𝑥2(0) = 1.9181; 𝑥3(0) = 1.5647; 𝑥4(0) = 3.1705

3. Evaluar la función objetivo para cada una de las partículas de la población inicial.

𝑓𝑜1(0) = 10.9548; 𝑓𝑜2(0) = 21.0685; 𝑓𝑜3(0) = 21.0563; 𝑓𝑜4(0) = 17.0893

4. Asumir las velocidades iniciales de cada partícula.

V1(0) = 0; V2(0) = 0; V3(0) = 0; V4(0) = 0

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 = −0.5050; 𝑃𝑏𝑒𝑠𝑡2 = 1.9181; 𝑃𝑏𝑒𝑠𝑡3 = 1.5647; 𝑃𝑏𝑒𝑠𝑡4 = 3.1705

Teniendo en cuenta que el problema es a maximizar el mejor resultado de la función


objetivo lo genera la partícula dos, luego el valor de esta partícula es el Gbest inicial.

𝐺𝑏𝑒𝑠𝑡 = 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:

𝑉1(1) = 𝜃(1) V1(0) + 𝑐1 𝑟1 (𝑃𝑏𝑒𝑠𝑡1 − 𝑥1(0) ) + 𝑐2 𝑟2 (𝐺𝑏𝑒𝑠𝑡 − 𝑥1(0) ) = 1.8173


𝑉2(1) = 𝜃(1) V2(0) + 𝑐1 𝑟1 (𝑃𝑏𝑒𝑠𝑡2 − 𝑥2(0) ) + 𝑐2 𝑟2 (𝐺𝑏𝑒𝑠𝑡 − 𝑥2(0) ) = 0
𝑉3(1) = 𝜃(1) V3(0) + 𝑐1 𝑟1 (𝑃𝑏𝑒𝑠𝑡3 − 𝑥3(0) ) + 𝑐2 𝑟2 (𝐺𝑏𝑒𝑠𝑡 − 𝑥3(0) ) = 0.2651
𝑉4(1) = 𝜃(1) V4(0) + 𝑐1 𝑟1 (𝑃𝑏𝑒𝑠𝑡4 − 𝑥4(0) ) + 𝑐2 𝑟2 (𝐺𝑏𝑒𝑠𝑡 − 𝑥4(0) ) = −0.9393

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.

𝑥1(1) = 𝑥1(0) + 𝑉1(1) = −0.505 + 1.8173 = 1.3123


𝑥2(1) = 𝑥2(0) + 𝑉2(1) = 1.9181 + 0 = 1.9181
𝑥3(1) = 𝑥3(0) + 𝑉3(1) = 1.5647 + 0.2651 = 1.8298
𝑥4(1) = 𝑥4(0) + 𝑉4(1) = 3.1705 − 0.9393 = 2.2312
𝑓𝑜1(1) = 22.4640; 𝑓𝑜2(1) = 21.0685; 𝑓𝑜3(1) = 21.1123; 𝑓𝑜4(1) = 25.6401

8. Se evalúan los criterios de detención. Los criterios de detención utilizados son la


convergencia de las soluciones de las partículas y el número de iteraciones. La
convergencia de la soluciones se analiza a través de la desviación estándar de las
funciones objetivo de las partículas en cada iteración; para este ejemplo se elige una
desviación estándar mínima 𝜎 = 0.001 y un máximo veinte iteraciones, con una de
las dos condiciones de detención que se cumpla se detiene el proceso iterativo.

𝑓𝑜1(1) + 𝑓𝑜2(1) + 𝑓𝑜3(1) + 𝑓𝑜4(1)


𝑓𝑜(1) = = 22.5712
4
2 2 2 2
(𝑓𝑜1(1) − 𝑓𝑜(1) ) + (𝑓𝑜2(1) − 𝑓𝑜(1) ) + (𝑓𝑜3(1) − 𝑓𝑜(1) ) + (𝑓𝑜4(1) − 𝑓𝑜(1) )
𝜎=√
4
𝜎 = 1.8585

Con el paso anterior se cumple la primera iteración y como no se cumplen ninguno de


los dos criterios de detención establecidos se debe seguir iterando, es decir, se repite el
proceso a partir del paso 5 hasta que se cumpla uno o los dos criterios de detención.
Implementando el algoritmo computacionalmente para este problema se encontró la
siguiente solución:
𝑥 ≈ 1 y 𝑍 ≈ 12

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

1. Se genera un número de capas igual al número de variables de decisión del problema


a tratar y en cada capa se crean tantos nudos como el número de valores discretos que
se desea pueda tomar cada variable.

2. Se define el número de hormigas de la colonia.

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.

5. Se calcula el incremento de feromona para los mejores caminos.

𝑘=𝑁 𝑘=𝑁
(𝑘)
𝜁𝑓𝑏𝑒𝑠𝑡
∑ ∆𝜏 =∑
𝑓𝑤𝑜𝑟𝑠𝑡
𝑘=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.

𝜏𝑖𝑗 = 𝜏𝑖𝑗(𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟) + ∆𝜏 (𝑘) (2.17)

𝜏𝑖𝑗 = (1 − 𝑝)𝜏𝑖𝑗(𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟) ; ∀(𝑖, 𝑗) ∈ 𝐴 (2.18)

Donde, 𝑝 ∈ 0,1), indica la pérdida de feromona y 𝐴 denota los segmentos de arcos


seguidos por la hormiga 𝑘 desde el hormiguero a la comida.

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

También podría gustarte