3.2.
ALGORITMO
GENÉTICO
DE
BÚSQUEDA
ÓPTIMA:
UN SUBCONJUNTO DE K-VARIABLES
3.2.1.
Descripción
Dado un conjunto de variables, un AG del algoritmo busca un subconjunto k-
variable que sea óptimo, como sustituto para el sistema del conjunto, con respecto
a
un criterio dado.
3.2.2.
Uso
genetic( mat, kmin, kmax = kmin, popsize = 100, nger = 100,
mutate = FALSE,
mutprob = 0.01, maxclone = 5, exclude =
NULL,
include = NULL, improvement = TRUE, setseed= FALSE, criterion =
RM",
pcindices = 1:kmax, initialpop=NULL )
3.2.3.
Argumentos
mat:
Una
matriz
de
covarianza
o
de
correlación
de
las
variables
de
las
cuales
el
k-subconjunto debe ser seleccionado.
kmin:
Valor del subconjunto más pequeño que se desea.
kmax:
Valor del subconjunto más grande que se desea.
popsize: variable de número entero que indica el tamaño de la población.
nger:
Variable
de
número
entero
que
da
el
número
de
las
generaciones
para
las
cuales el
AG funcionará.
mutate: Variable lógica que indica si cada hijo experimenta una mutación, con el
mutprob de la probabilidad. Por defecto, FALSE.
mutprob:
Variable
que
da
la
probabilidad
de
cada
hijo
que
experimenta
una
mu-
tación, si el mutate es TRUE. Por defecto ES 0.01. Los altos valores retrasaron el
algoritmo considerablemente y tienden a replegar la misma solución.
maxclone: Variable de número entero que especifica el número
máximo
de répli-
cas idénticas (clones) de individuos que son aceptables en la población. Sirve para
asegurarse
de
que
la
población
tiene
suficiente
diversidad
genética.
Sin
embargo,
incluso
maxclone=0
no
garantiza
que
no
hayan
repeticiones:
solamente
prueban
al descendiente de pares para clones. Si cualquiera se reproduce se rechazan, y son
substituidos
por
un
subconjunto
k-variable
elegido
al
azar,
sin
fomentar
cloness
de la copia.
exclude: Un vector de las variables (referidas por su fila/columna numeros en mat
de la
matriz) que deben ser excluidas fuertemente de los subconjuntos.
include: Un vector de las variables (referidas por su fila/columna numeros en mat
de
la
matriz)
que
deben
ser
incluidas
fuertemente
en
los
subconjuntos.
improve-
ment
un
variable
lógico
que
indica
si
o
no,
el
mejor
subconjunto
(para
cada
valor) debe ser pasado como entrada a un algoritmo local de la mejora.
setseed:
La
variable
lógica
que
indica
si
fijar
una
semilla
inicial
para
el
genera-
dor del número al azar, que será reutilizado en las llamadas futuras a esta función
siempre que setseed tome nuevamente el valor de verdad, TRUE.
Criterion: Variable char, que indica qué criterio debe ser utilizado en la sentencia
de
la
calidad
de
los
subconjuntos.
Actualmente,
los
criterios
solamente
de
RM,
RV
y
de GCD se apoyan, y se refieren como RM, RV o GCD.
pcindices:
Un
vector
de
las
filas
de
los
componentes
principales
que
deben
ser
utilizados para la comparación con los subconjuntos.
initialpop:
Vector o matriz tridimensional de población inicial para el
AG.
3.2.4.
Detalles
Para
cada
valor
k
(con
k
extendiéndose
de
kmin
al
kmax),
una
población
inicial
de
popsize
k-variables
se
selecciona
aleatoriamente
de
un
sistema
completo
de
variables
de
p
(p
que
no
excede
de
300).
En
cada
iteración,
los
pares
popsize/2
se
forman
entre
la
población
y
cada
par
genera
a
hijo
(un
nuevo
subconjunto
de
k-variable)
que
hereda
las
características
de
sus
padres
(específicamente,
hereda
todas
las
variables
comunes
a
padres
y
a
una
selección
al
azar
de
variables
en
la
diferencia
simétrica
del
maquillaje
genético
de
sus
padres).
Cada
descendiente
puede experimentar
opcionalmente
una
mutación
(bajo
la
forma
de
algoritmo
lo-
cal de la mejora). Alinean a los padres y al descendiente según su valor de criterio,
y
el mejores popsize de estos k-subconjuntos compondrán la generación siguien-
te, que se utiliza como la población actual en la iteración subsecuente. La
regla que para el algoritmo es el número de las generaciones (nger).
El
usuario
puede
forzar
variables
para
ser
incluidas
y/o
para
ser excluidas
de
los
k-subconjuntos, y puede especificar a una población inicial.
Para cada valor k, el número total de llamadas al procedimiento
que computa los
valores del criterio es popsize + el nger x popsize/2.
3.2.5.
Ejemplo
para
la
ilustración
del
uso,
una
pequeña
base
de
datos
con
pocas
iteraciones
del
algoritmo.
data(swiss)
genetic(cor(swiss),3,4,popsize=10,nger=5,criterion=Rv")
For cardinality k=
4
there is not enough genetic diversity in generation number
5
for acceptable levels of consanguinity (couples differing by at
least 2 genes).
Try
reducing
the
maximum
acceptable
number
of
clones
(maxclone)
or
increa-
sing the population size (popsize)
Best criterion value found so far:
0.9590526
$subsets
.
Var.1
Var.2
Var.3
Solution 1
1
2
3
Solution 2
1
2
3
Solution 3
1
2
5
Solution 4
1
2
6
Solution 5
3
4
6
Solution 6
3
4
5
Solution 7
3
4
5
Solution 8
1
3
6
Solution 9
2
4
5
Solution 10
1
3
4
$values
Solution 1 Solution 2 Solution 3 Solution 4 Solution 5 Solution 6
0.9141995 0.9141995 0.9098502 0.9074543 0.9034868 0.9020271
Solution 7 Solution 8 Solution 9 Solution 10
0.9020271 0.8988192 0.8982510 0.8940945
$bestvalues
Card.3
0.9141995
$bestsets
Var.1
Var.2
Var.3
1
2
3
3.3.
FUNCIÓN PLOT
3.3.1.
Descripción
Traza
características
del
funcionamiento
genético
de
la
optimización
del
algorit-
mo.
El
diagrama
del
defecto
indica
el
mínimo
valor
de
la
evaluación,
indicando
hasta dónde ha progresado el GA.
El
diagrama
del
"hist"demuestra
para
el
cromosoma
binario
la
frecuencia
de
la
selección del gene, es decir, el tiempo en el que un gen en el cromosoma fue
seleccionado
en
la
población
actual.
En
caso
de
los
cromosomas
float,
hará
los
histogramas para cada una
de las variables para indicar los valores seleccionados
en la población.
Los "vars"trazan la función de la evaluación contra el valor de la variable. Esto es
útil para
mirar correlaciones entre las variables y los valores de la evaluación.
3.3.2.
Uso
plot.rbga (x, type= "default", breaks=10,...)
3.3.3.
Argumentos
x:
Un objeto del rbga.
type:
Un "hist", "vars o "default".
breaks: El número de breaks en un histograma.
3.3.4.
Ejemplos
evaluate <- function(string=c()) {
returnVal = 1 / sum(string);
returnVal
}
rbga.results = rbga.bin(size=10, mutationChance=0.01, zeroToOneRatio=0.5, eval-
Func=evaluate)
plot(rbga.results)
plot(rbga.results, type="hist")
3.4.
CROMOSOMA FLOTANTE
3.4.1.
Descripción
Un
AG
basado
en
R
que
optimiza,
con
una
función
determinada
de
la
evaluación
del
usuario,
un
conjunto
de
valores
flotantes.
Toma
el
mínimo
y
los
valores
má-
ximos
de
la
entrada
para
los
valores
flotantes
a
optimiza.
El
grado
óptimo
es
el
cromosoma para el cual el valor de la evaluación es el
mínimo.
Requiere
un
método
de evalFunc
,
función
que
toma
como
argumento
el
cromo-
soma,
y
un
vector
de
valores
flotantes.
Además,
la
optimización
de
un
AG
puede
ser
supervisada
fijando
un
monitorFunc
que
tome
un
objeto
del
rbga
como
argu-
mento.
Los resultados se pueden visualizar con plot.rbga y resumir con summary.rbga.
3.4.2.
Uso
rbga(stringMin=c(), stringMax=c(),
suggestions=NULL,
popSize=200, iters=100,
mutationChance=NA,
elitism=NA,
monitorFunc=NULL, evalFunc=NULL,
showSettings=FALSE, verbose=FALSE)
rbga (stringMin=c (), stringMax=c (), suggestions=NULL, popSize=200, iters=100,
mutationChance=NA,
elitism=NA,
monitorFunc=NULL,
evalFunc=NULL,
show-
Settings=FALSE,
verbose=FALSE)
3.4.3.
Argumentos
stringMin:
Vector con los valores mínimos para cada gen.
stringMax: Vector con los valores máximos para cada gen.
suggestions: Lista opcional de cromosomas sugeridos
popSize: Tamaño de la población.
iters:
Número de iteraciones.
mutationChance:
En
el
caso
de
un
gen
en
la
mutación
del
cromosoma.
Por
el
defecto
1/
(size+1).
Afecta
el
tipo
de
convergencia
y
el
espacio
de
la
búsqueda:
resultados bajos indican una convergencia
más rápida, mientras que resultados al-
tos aumenta el espacio de la búsqueda.
elitism: El número de los cromosomas que se guardan en la generación siguiente.
Por defecto está cerca del 20 %
del tamaño de la población.
monitorFunc: Funcionamiento del método después de cada generación para per-
mitir la supervisión de la optimización.
evalFunc:
El
usuario
proveyó
método
para
calcular
la
función
de
la
evaluación
para el cromosoma dado.
showSettings: Si es TRUE los ajustes serán impresos los screen. Por defecto FAL-
SE. verbose: Si es TRUE el algoritmo será más verbose. Por defecto FALSE.
3.4.4.
Ejemplos
#
optimiza dos valores para emparejar pi y sqrt(50)
evaluate <- function(string=c()) {
returnVal =
NA;
if (length(string) == 2) {
returnVal = abs(string[1]-pi) + abs(string[2]-sqrt(50));
}