Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 111 [warning: Documents this large are best viewed by clicking the View PDF Link!]

Manual T´
ecnico de M.O.E.A. Software
Dra. Katya Rodr´
ıguez V´
azquez
katya.rodriguez@iimas.unam.mx
Aar´
on Mart´
ın Castillo Medina
amcm329@hotmail.com
El presente manual contiene la informaci´
on t´
ecnica relacionada con el producto de soft-
ware denominado M.O.E.A. Software, la cual consiste en un compendio de las funciona-
lidades creadas.
Este documento pretende ser una extensi´
on especializada exclusivamente en implemen-
taciones algor´
ıtmicas del mencionado producto con la finalidad de familiarizar al usuario
con el contenido subyacente en el c´
odigo fuente para que pueda interaccionar con ´
este a
su merced, pudiendo reproducirlo o modificarlo seg´
un sea el caso.
Es importante mencionar que al ser el producto de software mismo una fusi´
on entre la
teor´
ıa comprendida en el trabajo escrito y sus correspondientes implementaciones t´
ecni-
cas, el manual por ende tambi´
en incluye referencias que manifiestan la teor´
ıa detr´
as de
cada una de las caracter´
ıticas creadas.
Para esto se ofrece al usuario una explicaci´
on precisa y concisa de los t´
erminos t´
ecnicos
que se usar´
an a lo largo del manual.
Comenzando por un breve se˜
nalamiento de la arquitectura de dise˜
no, ´
esta se refiere al es-
quema o plantilla que se suele usar para adecuar la organizaci´
on del c´
odigo y as´
ı agrupar-
lo en m´
odulos con caracter´
ısticas similares con la finalidad de optimizar tiempos de de-
tecci´
on y correcci´
on de errores, am´
en de la facilidad de lectura del c´
odigo gracias a la es-
tructura del mismo.
Entonces se hace notar el uso de la as´
ı denominada MVC (Model-View-Controller ´
o
Modelo-Vista-Controlador).
Siguiendo este tipo de organizaci´
on, se colocan las funcionalidades en tres categor´
ıas
principales, que son:
Model (´
o Modelo), se almacenan todos los elementos que realizan el proceso anal´
ıti-
co, en este caso todo lo relacionado con la ejecuci´
on de M.O.E.A.s y la recolecci´
on
de resultados.
View (´
o Vista), se coloca todo aqu´
ello asociado a la interfaz gr´
afica del programa y
1
2Manual T´
ecnico
en el caso del proyecto, la graficaci´
on apropiada de resultados.
Controller (´
o Controlador), se guarda toda la parafernalia relativa al control de las
comunicaciones entre la Vista y el Modelo.
El proceso usual de interacci´
on entre dichas categor´
ıas es el siguiente:
1. El usuario inserta las configuraciones pertinentes en la Vista, las cuales permitir´
an
obtener resultados detallados del M.O.E.A. que se fuera a ejecutar.
2. El Controlador obtiene las configuraciones previamente insertadas por el usuario;
durante esta etapa se realiza una verificaci´
on y saneamiento de dichas configura-
ciones. Si el proceso fue exitoso se procede ir al paso (3), en cualquier otro caso se
retrocede al paso (1) con una notificaci´
on de error.
3. El Modelo se encarga de ejecutar el algoritmo precisado por el usuario en (1), para
ello se le proporcionan todas las configuraciones adjuntas. Una vez concluido el
proceso el Modelo le regresa los resultados al Controlador.
4. El Controlador toma los resultados y a su vez los transfiere a la Vista, la cual se en-
carga de mostrar al usuario los datos finales de manera gr´
afica.
Ahora, haciendo ´
enfasis en el contenido del programa, M.O.E.A. Software consta de 60
archivos ´
utiles con un promedio de 200 l´
ıneas de c´
odigo por cada uno aproximadamente
sin considerar las l´
ıneas de comentarios.
Se resalta la denominaci´
on ´
utiles porque el usuario encontrar´
a archivos adicionales cuyo
´
unico fin es el de proporcionar meta-informaci´
on del programa o habilitar detalles t´
ecni-
cos muy espec´
ıficos que escapan al enfoque de desarrollo.
Dirigiendo la atenci´
on hacia el interior del c´
odigo fuente el usuario notar´
a que todos
los archivos est´
an debidamente comentados, adem´
as se incluyen explicaciones t´
ecnicas
breves para que ´
este pueda familiarizarse no s´
olo con el c´
odigo sino con conceptos o ele-
mentos de programaci´
on utilizados en el producto de software.
Con respecto del formato de enunciamiento de comentarios se distingue una sintaxis lige-
ramente diferente al lenguaje natural. Esto se debe a que se ha usado la correspondiente a
Sphinx (http://www.sphinx-doc.org/en/stable/), el cual es un programa que automa-
tiza la creaci´
on visualmente apropiada de documentaci´
on para productos de software.
A´
un teniendo esto en cuenta no se debe tener dificultad en la interpretaci´
on de la informa-
ci´
on basada en los comentarios y en el caso de encontrarse con alguna incomodidad el si-
tio de Sphinx ofrece referencias b´
asicas de traducci´
on entre su sintaxis y el lenguaje coti-
diano.
En lo concerniente a los tipos de archivos creados, se muestran las siguientes clasifica-
ciones (de menor a mayor jerarqu´
ıa):
UNAM Facultad de Ciencias
Manual T´
ecnico 3
Script, el archivo b´
asico de implementaci´
on, por lo general en ´
este se describe in-
fraestructura simple como m´
etodos o variables; su creaci´
on se atribuye a concebir
el uso de t´
ecnicas disponibles para el usuario de una manera m´
as eficiente y menos
burocr´
atica.
Por lo general, este tipo de archivos se encuentran en el Modelo ya que su uso alu-
de a entornos m´
as din´
amicos que requieran de una r´
apida respuesta.
Clase, similar a los Scripts con la salvedad de que las Clases contienen una estruc-
tura m´
as robusta pero tambi´
en m´
as est´
atica. Su uso se limita en este proyecto a la
generaci´
on de la interfaz gr´
afica (en la Vista) y en el Controlador ya que, por regla
general ´
estos deben estar predispuestos a las necesidades del usuario, ante lo cual
se tiene el menester de destinar mayores recursos.
M´
odulo, corresponde principalmente a una agrupaci´
on de Clases y/o Scripts con
caracter´
ısticas en com´
un.
Secci´
on, mantiene relaci´
on directa con las categor´
ıas mencionadas en la arquitectu-
ra MVC. Contiene a todos los elementos anteriores.
Conviene mencionar que en algunas partes del manual se establecen sugerencias de re-
ferencias anteponiendo la palabra v´
ease como identificador; en este caso se aclara que
se trata de rutas relacionadas con el c´
odigo fuente por lo que el usuario debe localizar-
las en las secciones pertinentes (usando el archivo Begin.py como punto de referen-
cia) para poder acceder al contenido y entonces asociar el c´
odigo entre distintos archivos.
A continuaci´
on de muestra el diagrama del contenido del producto de software, donde se
ven desplegadas tanto la jerarqu´
ıa de los elementos como las relaciones entre ´
estos:
Begin (script)
Model (secci´
on)
ChromosomalRepresentation (m´
odulo)
IBinaryRepresentation (script)
IFloatPointRepresentation (script)
Community (clase)
IPopulation (clase)
Individual (clase)
Fitness (m´
odulo)
ILinearRankingFitness (script)
INonLinearRankingFitness (script)
UNAM Facultad de Ciencias
4Manual T´
ecnico
IProportionalFitness (script)
Operator (m´
odulo)
ISelection (m´
odulo)
Roulette (script)
ProbabilisticTournament (script)
StochasticUniversalSampling (script)
ICrossover (m´
odulo)
NPointsCrossover (script)
UniformCrossover (script)
IMutation (m´
odulo)
BinaryMutation (script)
FloatPointMutation (script)
SharingFunction (m´
odulo)
IGenotypicSimilarity (m´
odulo)
HammingDistance (script)
IPhenotypicSimilarity (m´
odulo)
EuclideanDistance (script)
MOEA (m´
odulo)
IVEGA (script)
ISPEAII (script)
IMOGA (script)
INSGAII (script)
View (secci´
on)
MainWindow (clase)
Main (m´
odulo)
IHome (m´
odulo)
HomeFrame (clase)
IntroductionFrame (clase)
UNAM Facultad de Ciencias
Manual T´
ecnico 5
IDecisionVariable (m´
odulo)
DecisionVariableFrame (clase)
VariableFrame (clase)
IObjectiveFunction (m´
odulo)
ObjectiveFunctionFrame (clase)
FunctionFrame (clase)
IPopulation (m´
odulo)
PopulationFrame (clase)
TemplatePopulationFrame (clase)
PopulaceFrame (clase)
FitnessFrame (clase)
IGeneticOperator (m´
odulo)
GeneticOperatorFrame (clase)
TemplateGeneticOperatorFrame (clase)
SelectionFrame (clase)
CrossoverFrame (clase)
MutationFrame (clase)
IMOEA (m´
odulo)
MOEAFrame (clase)
AlgorithmFrame (clase)
SharingFunctionFrame (clase)
Additional (m´
odulo)
IGenerationSignalToplevel (clase)
IMenuInternalOption (m´
odulo)
MenuInternalOption (clase)
InternalOptionToplevel (clase)
InternalOptionTab (m´
odulo)
MOPExampleFrame (clase)
UNAM Facultad de Ciencias
6Manual T´
ecnico
MOPFrame (clase)
FeatureFrame (clase)
CharacteristicFrame (clase)
PythonExpressionFrame (clase)
ExpressionFrame (clase)
AboutToplevel (clase)
IResultsGrapher (m´
odulo)
ResultsGrapherToplevel (clase)
GraphFrame (clase)
CustomNavigationToolbar2TkAgg (clase)
SummaryFrame (clase)
ContentFrame (clase)
ErrorFrame (clase)
Controller (secci´
on)
Controller (clase)
XMLParser (clase)
Verifier (clase)
1. Begin (script)
Este archivo funge como un launcher (disparador) el cual simplemente crea y muestra la
ventana principal (v´
ease la secci´
on View).
2. Model (secci´
on)
La secci´
on Model (´
o Modelo) contiene toda la base l´
ogica del programa, m´
as en espec´
ıfi-
co, todas las caracter´
ısticas para poder ejecutar MOEAs apropiadamente alimentados con
los datos obtenidos por la secci´
on View (´
o Vista) usando la secci´
on Controller (´
o Con-
trolador) como intermediaria.
Una vez que se obtenga alg´
un resultado, ´
este ser´
a transmitido a la secci´
on View a trav´
es
del Controller.
UNAM Facultad de Ciencias
Manual T´
ecnico 7
A continuaci´
on se observan las subcategor´
ıas que conforman a la secci´
on en cuesti´
on:
2.1. ChromosomalRepresentation (m´
odulo)
Ofrece elementos para elaborar una codificaci´
on adecuada.
Enti´
endase por codificaci´
on a la forma de determinar el cromosoma y sus propiedades;
cabe mencionar que el cromosoma ser´
a portado por los Individuals (´
o Individuos).
Es importante mencionar que cualquier codificaci´
on implementada debe ser sustentada en
los m´
etodos correspondientes al Crossover (´
o Cruza) y Mutation (´
o Mutaci´
on),´
esto por-
que dichas operaciones funcionan con cromosomas.
De esta manera, la idea es que el usuario pueda crear sus propias codificaciones, por lo
que, adem´
as de agregar la descripci´
on de la codificaci´
on a Controller/XML/Features.xml
(v´
ease el archivo mencionado en la secci´
on de c´
odigo), deber´
a implementar por lo me-
nos las siguientes funciones:
calculate length subchromosomes(vector variables,num-
ber of decimals,representa-
tion parameters)
Por cada variable de decisi´
on se crea una porci´
on del cromosoma, entonces en esta
funci´
on se calcula el tama˜
no de cada porci´
on (´
o subcromosoma), ya que al final las
operaciones de cruza y mutaci´
on se realizar´
an sobre el s´
uper crosomoma, el cual es
la concatenacion de todos los subcromosomas.
Por eso es importante identificar el tama˜
no de cada subcromosoma, as´
ı como sus
l´
ımites dentro del s´
uper cromosoma.
Parameters
vector variables (List) – El vector de variables de de-
cisi´
on, donde cada variable trae consigo sus l´
ımites inferior y
superior.
number of decimals (Integer)–Eln´
umero de decima-
les que deber´
a traer cada variable de decisi´
on.
representation parameters (Dictionary) – Un
diccionario que contiene todas las opciones adicionales para
cada tipo de codificaci´
on.
Returns Una lista que contiene el tama˜
no del cromosoma por cada va-
riable de decisi´
on. Dado que el orden de las variables de decisi´
on es
inmutable, se preserva el mismo y por ello la lista contiene s´
olo los
tama˜
nos.
Return type List
UNAM Facultad de Ciencias
8Manual T´
ecnico
create chromosome(length subchromosomes,vector variables,num-
ber of decimals,representation parameters)
Funci´
on que crea el cromosoma. Se usa la como apoyo el m´
etodo
calculate length subchromosomes descrito con anterioridad.
Parameters
length subchromosomes (List) – La lista que contiene
los tama˜
nos de cada variable de decisi´
on.
vector variables (List) – La lista que contiene las va-
riables de decisi´
on, as´
ı como sus rangos.
number of decimals (Integer)–Eln´
umero de decima-
les que traer´
a cada variable de decisi´
on.
representation parameters (Dictionary) – Un
diccionario que contiene todas las opciones adicionales para
cada tipo de codificaci´
on.
Returns El cromosoma devuelto en forma de lista.
Return type List
evaluate subchromosomes(complete chromosome,
length subchromosomes,vec-
tor variables,number of decimals,repre-
sentation parameters)
Tomando en cuenta que el cromosoma ya ha sido creado usando los tama˜
nos de
los subcromosomas, en esta funci´
on se procede a evaluar el s´
uper cromosoma par-
ti´
endolo en los subcromosomas pertinentes y evaluando individualmente cada uno
de ´
estos.
Parameters
complete chromosome (List)–Els´
uper cromosoma a
ser evaluado.
length subchromosomes (List) – La lista que contiene
los tama˜
nos de cada variable de decisi´
on.
vector variables (List) – La lista que contiene las va-
riables de decisi´
on, as´
ı como sus rangos.
number of decimals (Integer)–Eln´
umero de decima-
les que traer´
a cada variable de decisi´
on.
representation parameters (Dictionary) – Un
diccionario que contiene todas las opciones adicionales para
UNAM Facultad de Ciencias
Manual T´
ecnico 9
cada tipo de codificaci´
on.
Returns Un diccionario que contiene como llave la variable de decisi´
on
y como valor la evaluaci´
on del subcromosoma correspondiente.
Return type Dictionary
S´
olo concierne a˜
nadir un detalle adicional; se asume por defecto que las funciones antes
mencionadas se encuentran implementadas en cada uno de los elementos de este m´
odulo,
por ello es que primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esque-
ma original, es decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
A continuaci´
on se develan los elementos que constituyen a este m´
odulo:
2.1.1. BinaryRepresentation (script)
Contiene todas las funcionalidades requeridas para que se pueda hacer uso de una codifi-
caci´
on de tipo Binary (´
o Binaria);´
esto significa que los alelos que conforman al cromo-
soma ser´
an exclusivamente 0 ´
o 1.
binary to decimal(chromosome)
M´
etodo que convierte un n´
umero binario a decimal.
Este es un ejemplo de m´
etodo que se puede agregar adicionalmente siempre y
cuando se implementen las funciones que se han mencionado ya.
Parameters
chromosome (List) – El cromosoma sobre el cual se har´
a la
evaluaci´
on.
Returns La representaci´
on en decimal del n´
umero binario.
Return type Integer
evaluate subchromosomes(complete chromosome,
length subchromosomes,vector variables,num-
ber of decimals,representation parameters)
Realiza una evaluaci´
on de los subcromosomas para la codificaci´
on binaria (´
o Bi-
nary).
En t´
erminos generales se toma cada porci´
on del subcrosomoma (tomando en cuen-
ta que previamente se calcularon sus longitudes) y as´
ı se convierte a decimal,
considerando la expansi´
on num´
erica.
Posteriormente para obtener el n´
umero final se hace lo siguiente:
𝐶𝑜𝑛𝑣𝑒𝑟𝑠𝑖´𝑜𝑛(𝑠𝑢𝑏𝑐𝑟𝑜𝑚𝑜𝑠𝑜𝑚𝑎) = 𝐴+𝐷𝑁(𝑠𝑢𝑏𝑐𝑟𝑜𝑚𝑜𝑠𝑜𝑚𝑎)·𝐵𝐴
2𝑀1
UNAM Facultad de Ciencias
10 Manual T´
ecnico
Donde:
Aes el l´
ımite inferior que toma la variable de decisi´
on.
Bes el l´
ımite superior que toma la variable de decisi´
on.
Mes la longitud del subcromosoma asociado a la variable de decisi´
on.
DN (Decimal number) es el n´
umero en decimal del subcromosoma asociado
a la variable de decisi´
on.
2.1.2. FloatPointRepresentation (script)
Este script contiene todas las funcionalidades requeridas para que se pueda hacer uso de
una codificaci´
on de tipo Float Point (´
o Punto Flotante);´
esto significa que los alelos que
conforman al cromosoma ser´
an n´
umeros de punto flotante.
Un n´
umero de punto flotante es aqu´
el que tiene una parte entera y una decimal; cabe
mencionar que si el n´
umero en cuesti´
on no tiene expansi´
on decimal, se le considera un
n´
umero de representaci´
on Integer (´
o Entera);´
esto porque en algunas fuentes se manejan
la representaci´
on de Punto Flotante y Entera por separado.
2.2. Community (clase)
Proporciona toda la infraestructura l´
ogica para poder construir poblaciones y operar
con ´
estas, adem´
as de transacciones relacionadas con sus elementos de manera indi-
vidual.
Se le llama Community porque aludiendo a su significado una Community (´
o Co-
munidad) consta de al menos una Population (o Poblaci´
on). De esta manera se
deduce que en alg´
un momento habr´
an m´
etodos que involucren a m´
as de una Pobla-
ci´
on.
Parameters
vector functions (List) – Lista que contiene las fun-
ciones objetivo previamente saneadas por Controller/Controller.py.
vector variables (List) – Lista que contiene las
variables de decisi´
on previamente saneadas por Contro-
ller/Controller.py.
available expressions (Dictionary) – Diccio-
nario que contiene algunas funciones escritas como az´
ucar
sint´
actica para que puedan ser utilizadas m´
as f´
acilmente
UNAM Facultad de Ciencias
Manual T´
ecnico 11
por el usuario y evaluadas m´
as ´
rapidamente en el programa
(v´
ease Controller/XML/PythonExpressions.xml).
number of decimals (Integer)–Eln´
umero de deci-
males que tendr´
an las soluciones; con este n´
umero se deter-
mina en gran medida el tama˜
no del cromosoma.
representation instance (Instance) – Instancia
de la t´
ecnica de representaci´
on que eligi´
o el usuario (v´
ease
Controller/Verifier.py).
representation parameters (Dictionary) – Dic-
cionario que contiene todos los par´
ametros adicionales a la
t´
ecnica de representaci´
on considerada por el usuario.
fitness instance (Instance) – Instancia de la t´
ecni-
ca de Fitness que eligi´
o el usuario (v´
ease Controller/Verifier.py).
fitness parameters (Dictionary) – Diccionario
que contiene todos los par´
ametros adicionales a la t´
ecnica de
Fitness seleccionada por el usuario.
sharing function instance (Instance) – Ins-
tancia de la t´
ecnica de Sharing Function seleccionada por el
usuario (v´
ease Controller/Verifier.py).
sharing function parameters (Dictionary) –
Diccionario que contiene todos los par´
ametros adicionales a
la t´
ecnica de Fitness seleccionada por el usuario.
selection instance (Instance) – Instancia de la
t´
ecnica de selecci´
on (Selection) elegida por el usuario (v´
ease
Controller/Verifier.py).
selection parameters (Dictionary) – Diccionario
que contiene todos los par´
ametros adicionales a la t´
ecnica de
selecci´
on (Selection) usada por el usuario.
crossover instance (Instance) – Instancia de la
t´
ecnica de cruza (Crossover) tomada por el usuario (v´
ease
Controller/Verifier.py).
crossover parameters (Dictionary) – Diccionario
que contiene todos los par´
ametros adicionales a la t´
ecnica de
cruza (Crossover) manejada por el usuario.
mutation instance (Instance) – Instancia de la
t´
ecnica de mutaci´
on (Mutation) tomada por el usuario (v´
ease
UNAM Facultad de Ciencias
12 Manual T´
ecnico
Controller/Verifier.py).
mutation parameters (Dictionary) – Diccionario
que contiene todos los par´
ametros adicionales a la t´
ecnica de
mutaci´
on (Mutation) seleccionada por el usuario.
Returns Model.Community.Community
Return type Instance
compare dominance(current,challenger,allowed functions)
Note: Este m´
etodo es privado.
Permite realizar la comparaci´
on de las funciones objetivo de los Individuos
current y challenger tomadas una a una para indicar as´
ı qui´
en es el dominado
y qui´
en es el que domina. Cabe mencionar que m´
as apropiadamente se le
conoce como dominancia fuerte de Pareto.
Parameters
current (Instance) – El Individuo inicial para com-
probar dominancia.
challenger (Instance) – El Individuo que reta al
inicial para comprobar dominancia.
allowed functions (List) – Lista que indica cu´
ales
son las funciones objetivo que deben compararse.
Returns True si current domina a challenger, False en otro caso.
Return type Boolean
get best individual results(population)
Note: Este m´
etodo es privado.
Obtiene los valores de las variables de decisi´
on y de las funciones objetivo
por cada Individuo.
Parameters
population (List) – Una lista que contiene los mejo-
res Individuos por generaci´
on.
Returns Una lista que contiene por un lado la tupla (generacion,
funciones) y por otro la tupla (generaci´
on, variables). Esto por
UNAM Facultad de Ciencias
Manual T´
ecnico 13
cada generaci´
on.
Return type List
get pareto results(population)
Note: Este m´
etodo es privado.
Obtiene el frente de Pareto, el complemento del frente de Pareto y el ´
optimo
de Pareto.
Para una mejor orientaci´
on l´
ease la parte escrita del proyecto.
Parameters
population (Instance) – La Poblaci´
on sobre la
cual se obtendr´
an estos elementos.
Returns Una lista que contiene el frente de Pareto, su comple-
mento y el ´
optimo de Pareto.
Return type List
using sharing function(individual i,individual j,alpha share,sig-
ma share)
Note: Este m´
etodo es privado.
Devuelve un valor que ayuda al c´
alculo del Sharing Function.
A grandes rasgos el sharing function sirve para hacer una selecci´
on m´
as pre-
cisa de los mejores Individuos cuando se da el caso de que tienen el mismo
n´
umero de Individuos dominados.
Parameters
individual i (Instance) – Individuo sobre el que
se har´
a la operaci´
on.
individual j (Instance) – Individuo sobre el que
se har´
a la operaci´
on.
alpha share (Float) – El valor necesario para poder
calcular la distancia entre Individuos.
sigma share (Float) – El valor necesario para poder
calcular la distancia entre Individuos.
Returns El resultado que contribuir´
a al sharing function.
Return type Float
UNAM Facultad de Ciencias
14 Manual T´
ecnico
assign fonseca and flemming pareto rank(population,allo-
wed functions=’All’)
Asigna una puntuaci´
on (´
o rank) a cada uno de los Individuos de una Pobla-
ci´
on con base en su dominancia de Pareto.
A grandes rasgos, el algoritmo asigna un rank que consiste en:
𝑟𝑎𝑛𝑘(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑛´𝑢𝑚𝑒𝑟𝑜 𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛𝑒𝑠 𝑞𝑢𝑒 𝑑𝑜𝑚𝑖𝑛𝑎𝑛(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)+1
Esta t´
ecnica es usada principalmente por M.O.G.A.
Parameters
population (Instance) – La Poblaci´
on sobre la que
se har´
a la operaci´
on.
allowed functions (List) – Lista que contiene las
posiciones de las funciones que son admisibles para hacer
comparaciones. Por defecto tiene el valor “All”.
assign goldberg pareto rank(population,additional info=False,
allowed functions=’All’)
Asigna una puntuaci´
on (´
o rank) a cada uno de los Individuos de una Pobla-
ci´
on con base en su dominancia de Pareto.
En t´
erminos generales, el algoritmo trabaja con niveles, es decir, primero to-
ma los Individuos no dominados y les asigna un valor 0, luego los elimina del
conjunto y nuevamente aplica la operaci´
on sobre los no dominados del nuevo
conjunto, a los que les asigna el valor 1, y as´
ı sucesivamente hasta no quedar
Individuos.
Esta t´
ecnica es usada principalmente por N.S.G.A. II.
Parameters
population (Instance) – La Poblaci´
on sobre la que
se har´
a la operaci´
on.
additional info (Boolean) – Un valor que le indi-
ca a la funci´
on que debe regresar informaci´
on adicional.
allowed functions (List) – Lista que contiene las
posiciones de las funciones que son admisibles para hacer
comparaciones. Por defecto tiene el valor “All”.
Returns Si additional info es True: un arreglo con dos elementos:
en el primero se almacena una lista con los niveles de domi-
nancia disponibles mientras que el segundo consta de una
estructura que contiene todos los posibles niveles y asociados
a´
estos, los cromosomas de los Individuos que los conforman.
UNAM Facultad de Ciencias
Manual T´
ecnico 15
Si additional info es False: el m´
etodo es void (no regresa na-
da).
Return type List
assign population fitness(population)
Aplica la asignaci´
on de Fitness para una Poblaci´
on dada usando como base
el Ranking de cada Individuo (v´
ease Model/Fitness).
Parameters
population (Instance) – La Poblaci´
on sobre la que
se har´
a la operaci´
on.
assign zitzler and thiele pareto rank(population,allo-
wed functions=’All’)
Asigna una puntuaci´
on (rank) a cada uno de los Individuos de una Poblaci´
on
con base en su dominancia de Pareto.
A manera de esbozo, el algoritmo asigna un rank que consiste en una raz´
on:
𝑟𝑎𝑛𝑘(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑛´𝑢𝑚𝑒𝑟𝑜 𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛𝑒𝑠 𝑑𝑜𝑚𝑖𝑛𝑎𝑑𝑎𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛 + 1
Esta t´
ecnica es usada principalmente por S.P.E.A. II
Parameters
population (Instance) – La Poblaci´
on sobre la que
se har´
a la operaci´
on.
allowed functions (List) – Lista que contiene las
posiciones de las funciones que son admisibles para hacer
comparaciones. Por defecto tiene el valor “All”.
calculate population niche count(population)
Calcula el valor conocido como niche count que no es mas que la suma de
los sharing function de todos los Individuos j con el Individuo i, con i != j.
Parameters
population (Instance) – Conjunto sobre el que se
har´
a la operaci´
on.
calculate population pareto dominance(population,allo-
wed functions)
Realiza la comparaci´
on de dominancia entre todos los elementos de la Po-
blaci´
on con base en la evaluaci´
on de sus funciones objetivo.
Parameters
UNAM Facultad de Ciencias
16 Manual T´
ecnico
population (Instance) – La Poblaci´
on sobre la que
se har´
a la operaci´
on.
allowed functions (List) – Lista que indica las
funciones objetivo permitidas para hacer la comparaci´
on.
calculate population shared fitness(population)
Calcula el Shared Fitness (´
o Fitness Compartido) de cada uno de los Indi-
viduos de la Poblaci´
on.
Parameters
population (Instance) – Conjunto sobre el que se
har´
a la operaci´
on.
create population(set chromosomes)
Crea una Poblaci´
on usando un conjunto de cromosomas como base.
Parameters
set chromosomes (List) – Conjunto de cromoso-
mas.
Returns Model.Community.Population
Return type Instance
evaluate population functions(population)
Eval´
ua cada uno de los subcromosomas de los Individuos de la Poblaci´
on
(Population).
De manera adicional obtiene el listado de los valores extremos tanto de varia-
bles de decisi´
on como de funciones objetivo para el c´
alculo del sigma share
(v´
ease el m´
etodo using sharing function).
Parameters
population (Instance) – La Poblaci´
on sobre la que
se har´
a la operaci´
on.
execute crossover and mutation(selected parents chromosomes)
Realiza la cruza y mutaci´
on de los Individuos. Para el caso de la cruza ´
esta
se lleva a cabo siempre entre dos Individuos, mientras que la mutaci´
on es
unaria.
Parameters
selected parents chromosomes (List) – El
conjunto de cromosomas sobre los cuales se aplicar´
an
dichos operadores gen´
eticos.
UNAM Facultad de Ciencias
Manual T´
ecnico 17
Returns Una instancia del tipo Model.Community.Population.
Return type Instance
execute selection(parents)
Realiza la ejecuci´
on de la t´
ecnica de selecci´
on por medio de una instancia
que se cre´
o previamente (v´
ease Controller/Verifier.py).
Parameters
parents (Instance) – El conjunto de Individuos so-
bre el cual se aplicar´
a la t´
ecnica
Returns Una lista con los cromosomas de aquellos Individuos
seleccionados.
Return type List
get best individual(population)
Obtiene el mejor Individuo dentro de una Poblaci´
on. Para estos fines el mejor
Individuo es aqu´
el que tenga mejor dominancia.
Parameters
population (Instance) – La Poblaci´
on sobre la
cual se har´
a la b´
usqueda.
Returns El Individuo que cumple con la caracter´
ıstica de la ma-
yor dominancia.
Return type Instance
get results(best individual along generations,exter-
nal set population)
Recolecta la informaci´
on y la almacena en una estructura que contiene dos
categor´
ıas principales: funciones objetivo y variables de decisi´
on. Por cada
una existen las subcategor´
ıas Pareto y mejor Individuo, en referencia al ´
opti-
mo o frente de Pareto (seg´
un corresponda) y a los valores del mejor Indivi-
duo por generaci´
on (v´
ease View/Additional/ResultsGrapher/GraphFrame.py).
Parameters
best individual along generations (List) –
Una lista que contiene los mejores Individuos por genera-
ci´
on.
external set population (Instance) – La Po-
blaci´
on sobre la cual se efectuar´
an las operaciones.
UNAM Facultad de Ciencias
18 Manual T´
ecnico
Returns Un diccionario con los elementos mostrados en la des-
cripci´
on.
Return type Dictionary
init population(population size)
Crea una Poblaci´
on de manera aleatoria.
Parameters
population size (Integer) – El tama˜
no de la Po-
blaci´
on.
Returns Model.Community.Community.Population
Return type Instance
La clase en cuesti´
on se apoya de los siguientes elementos:
2.2.1. Population (clase)
Consiste en un conjunto de instancias de la clase Individual, proporcionando adem´
as
m´
etodos y atributos que se manifiestan tanto en grupo como de manera individual.
Parameters
population size (Integer) – El tama˜
no de la Pobla-
ci´
on.
vector functions (List) – Lista con las funciones
objetivo.
vector variables (List) – Lista con las variables de
decisi´
on y sus rangos.
available expressions (Dictionary) – Diccio-
nario que contiene algunas funciones escritas como az´
ucar
sint´
actica para que puedan ser utilizadas m´
as f´
acilmente
por el usuario y evaluadas m´
as ´
rapidamente en el programa
(v´
ease Controller/XML/PythonExpressions.xml).
number of decimals (Integer)–N´
umero de de-
cimales que tendr´
a cada soluci´
on (tanto en variables de
decisi´
on como funciones objetivo).
Returns Model.Community.Population
Return type Instance
UNAM Facultad de Ciencias
Manual T´
ecnico 19
add individual(position,complete chromosome)
A˜
nade un Individuo a la Poblaci´
on.
Parameters
position (Integer) – La posici´
on dentro del arre-
glo de Individuos donde se colocar´
a el nuevo elemento.
complete chromosome (Array) – El cromosoma
del Individuo.
calculate population properties()
Calcula atributos individuales con base en los valores de toda la Poblaci´
on.
get decision variables extreme values()
Regresa el listado de los valores m´
aximo y m´
ınimo de las variables de de-
cisi´
on para el c´
alculo de sigma share.
Returns Una colecci´
on con los valores m´
aximo y m´
ınimo para
las variables de decisi´
on.
Return type Dictionary
get individuals()
Regresa los Individuos de la Poblaci´
on.
Returns Estructura que contiene a los Individuos de la Pobla-
ci´
on.
Return type Array
get length vector functions()
Regresa el n´
umero de elementos del vector de funciones objetivo.
Returns N´
umero de funciones objetivo.
Return type Integer
get objective functions extreme values()
Regresa el listado de los valores m´
aximo y m´
ınimo de las funciones objetivo
para el c´
alculo de sigma share.
Returns El listado con los valores m´
aximo y m´
ınimo para las
funciones objetivo.
Return type List
get size()
Otorga el tama˜
no de la Poblaci´
on.
Returns El tama˜
no de la Poblaci´
on.
UNAM Facultad de Ciencias
20 Manual T´
ecnico
Return type Integer
get total expected value()
Regresa el valor esperado de la Poblaci´
on.
Returns El valor esperado.
Return type Float
get total fitness()
Captura el Fitness total de la Poblaci´
on.
Returns El valor del Fitness poblacional.
Return type Float
get vector variables()
Regresa el vector de variables de decisi´
on.
Returns Conjunto que contiene las variables de decisi´
on con sus
rangos.
Return type List
print info()
Imprime en texto las caracter´
ısticas de los Individuos de la Poblaci´
on, tanto
grupales como individuales (en consola).
set decision variables extreme values(decision variables extreme values)
Actualiza el listado de valores m´
aximo y m´
ınimo de las variables de decisi´
on
para el c´
alculo de sigma share.
Parameters
decision variables extreme values (Dictionary)
– Un conjunto con los valores m´
aximo y m´
ınimo de
cada una de las variables de decisi´
on.
set objective functions extreme values(objective functions extreme values)
Actualiza el listado de valores m´
aximo y m´
ınimo de las funciones objetivo
para el c´
alculo de sigma share.
Parameters
objective functions extreme values (List)
– Una lista con los valores m´
aximo y m´
ınimo de cada
una de las funciones objetivo.
set total fitness(value)
Actualiza el Fitness total de la Poblaci´
on.
UNAM Facultad de Ciencias
Manual T´
ecnico 21
Parameters
value (Float) – El valor a actualizar.
shuffle individuals()
Desordena los elementos de la Poblaci´
on.
sort individuals(method,is descendent)
Ordena los Individuos de acuerdo a alg´
un criterio dado.
Parameters
method (String)–Elm´
etodo o atributo sobre el
cual se har´
a la comparaci´
on.
is descendent (Boolean) – Indica si el ordena-
miento es ascendente o descendente.
La clase actual tiene como base el siguiente elemento:
2.2.1.1. Individual (clase)
La base de toda operaci´
on l´
ogica.
Consiste en una abstracci´
on de un elemento simple en funci´
on de un ecosistema.
Si bien la parte esencial es el cromosoma, en esta implementaci´
on se a˜
naden algu-
nos elementos extra con la finalidad de facilitar ciertas operaciones.
Parameters
complete chromosome (Array) – El cromosoma que
conformar´
a al Individuo.
vector functions (List) – Lista que contiene a las
funciones objetivo.
available expressions (Dictionary) – Diccio-
nario que contiene algunas funciones escritas como az´
ucar
sint´
actica para que puedan ser utilizadas m´
as f´
acilmente
por el usuario y evaluadas m´
as ´
rapidamente en el programa
(v´
ease Controller/XML/PythonExpressions.xml).
number of decimals (Integer)–Eln´
umero de
decimales que deber´
a tener cada soluci´
on, influye en el
comportamiento del cromosoma.
Returns Model.Community.Population.Individual
Return type Instance
UNAM Facultad de Ciencias
22 Manual T´
ecnico
evaluate single function(function,expressions)
Note: Este m´
etodo es privado.
Eval´
ua una funci´
on objetivo.
Parameters
function (String) – La funci´
on que ser´
a evalua-
da.
expressions (Dictionary) – El diccionario
que ayuda a evaluar la funci´
on. Expressions = varia-
bles + constantes + funciones built-in.
Returns La funci´
on evaluada.
Return type Float
evaluate functions(decision variables)
Eval´
ua todas las funciones objetivo.
Parameters
decision variables (List) – El vector de
variables de decisi´
on.
get complete chromosome()
Regresa el cromosoma del Individuo.
Returns El cromosoma.
Return type Array
get decision variables()
Da el vector de variables de decisi´
on.
Returns El vector de variables de decisi´
on.
Return type List
get evaluated functions()
Regresa las funciones objetivo evaluadas.
Returns Las funciones objetivo evaluadas.
Return type List
get expected value()
UNAM Facultad de Ciencias
Manual T´
ecnico 23
Se obtiene el valor esperado del Individuo.
Por definici´
on, el valor esperado es el n´
umero de posibles hijos que puede
tener un Individuo. Mientras m´
as apto, m´
as hijos.
Returns El valor esperado.
Return type Float
get fitness()
Regresa el Fitness del Individuo.
Returns El Fitness.
Return type Float
get niche count()
Regresa el valor niche para el Individuo.
Returns El tama˜
no niche.
Return type Float
get pareto dominated()
Regresa el n´
umero de soluciones que dominan al Individuo actual.
Returns El n´
umero de soluciones que dominan a la actual.
Return type Integer
get pareto dominates()
Regresa el n´
umero de soluciones que son dominadas por el actual Individuo.
Returns El n´
umero de soluciones dominadas.
Return type Integer
get rank()
Regresa la puntuaci´
on (rank) que se le design´
o al Individuo (v´
ease Mo-
del/Community/Community.py).
Returns El rango.
Return type Float
get vector functions()
Obtiene el vector de funciones objetivo.
Returns El vector de funciones objetivo.
Return type List
UNAM Facultad de Ciencias
24 Manual T´
ecnico
print info()
Imprime las caracter´
ısticas b´
asicas del Individuo (en consola).
set expected value(value)
Actualiza el valor esperado del Individuo.
Parameters
value (Float) – El valor a actualizar.
set fitness(value)
Actualiza el valor del Fitness.
Parameters
value (Float) – El valor a actualizar.
set niche count(value)
Actualiza el valor niche.
Parameters
value (Float) – El valor a actualizar.
set pareto dominated(value)
Actualiza el n´
umero de soluciones que dominan a la soluci´
on actual.
Parameters
value (Integer) – El valor a actualizar.
set pareto dominates(value)
Actualiza el n´
umero de soluciones dominadas por el Individuo actual.
Parameters
value (Integer) – El valor a actualizar.
set rank(rank)
Actualiza el rango del Individuo.
Parameters
rank (Float) – El valor a actualizar.
2.3. Fitness (m´
odulo)
Este m´
odulo provee t´
ecnicas que calculan el Fitness (´
o Aptitud) de los Individuals (´
o In-
dividuos) de una Population (´
o Poblaci´
on).
Se entiende por Fitness a un n´
umero que indica la calidad del Individuo (en particular
UNAM Facultad de Ciencias
Manual T´
ecnico 25
de sus variables de decisi´
on) frente a las funciones objetivo al momento de ser evalua-
das, esto es, a mayor Fitness, mayor es la probalidad de que las variables de decisi´
on del
Individuo sean la soluci´
on ´
optima para las funciones objetivo.
La asignaci´
on del Fitness depende en gran medida del ranking que se les haya otorgado a
los Individuos previamente (v´
ease Model/Community/Community.py).
Indirectamente, esto nos indica que un Individuo con un Fitness alto tiene m´
as proba-
bilidades de ser elegido en los m´
etodos de Selection (´
o Selecci´
on) y propagar su carga
gen´
etica; as´
ı en las funciones de dicha secci´
on (Model/Operator/Selection) el criterio
para escoger a un Individuo est´
a basado com´
unmente en su Fitness.
Al final la meta es que el usuario cree sus propias versiones de asignaci´
on de Fitness,
para lo cual es imperativo que, adem´
as de agregar la descripci´
on de la codificaci´
on a Con-
troller/XML/Features.xml (v´
ease el archivo mencionado en la secci´
on de c´
odigo), se
implemente la siguiente funci´
on:
assign fitness(population,fitness parameters)
Realiza la asignaci´
on de Fitness de los Individuos.
Dentro de esta se suelen usar m´
etodos de la clase Population (v´
ease Model/
Community/Population/Population.py) y de la clase Individual (v´
ease Model/
Community/Population/Individual/Individual.py), por lo que es muy recomen-
dable que el usuario verifique las funciones disponibles. Algunas de las que se ocu-
pan m´
as frecuentemente son:
get rank (Individual)
set fitness (Individual).
set total fitness (Population)
calculate population properties (Population)
Parameters
population (Instance) – La Poblaci´
on sobre la cual
se har´
a el c´
alculo de Fitness por cada Individuo.
fitness parameters (Dictionary) – Un dicciona-
rio que puede contener opciones adicionales para el c´
alculo
de Fitness.
S´
olo concierne a˜
nadir un detalle adicional; se asume por defecto que las funciones antes
mencionadas se encuentran implementadas en cada uno de los elementos de este m´
odulo,
por ello es que primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esque-
ma original, es decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
Ahora se muestran los elementos que conforman el m´
odulo actual:
UNAM Facultad de Ciencias
26 Manual T´
ecnico
2.3.1. LinearRankingFitness (script)
Se implementa la asignaci´
on de Fitness conocida como Linear Ranking (´
o Ranking Li-
neal). Es denominada as´
ı porque el Fitness se asigna con una funci´
on lineal que tiene co-
mo fundamento la posici´
on que ocupa el Individuo dentro de la Poblaci´
on.
El procedimiento es: tomando en cuenta el ranking asignado a los Individuals (´
o Indi-
viduos) por la clase Community (v´
ease Model/Community/Community.py) se orde-
nan de acuerdo a este valor y entonces el Fitness se basa en la posici´
on que cada uno de
los Individuos ocupa. M´
as en espec´
ıfico, el Fitness est´
a proporcionado por la siguiente
f´
ormula:
𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)=2𝑆𝑃 +2·(𝑆𝑃 1)·𝑝𝑜𝑠𝑖𝑐𝑖´𝑜𝑛(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛1
Donde:
SP (Selective Pressure ´
o Presi´
on Selectiva) es un valor que oscila entre 1 y 2.
Posici´
on(Individuo) es la que ocupa el Individuo de acuerdo al rank.
Haciendo un an´
alisis somero en la f´
ormula, se puede apreciar que los Individuos con me-
jor Fitness ser´
an aqu´
ellos que se encuentren en las ´
ultimas posiciones, sin embargo los
rankings que se manejan en este proyecto son inversamente proporcionales a la calidad
de los Individuos (v´
ease Model/Community/Community.py); por ello es importan-
te ordenar a los Individuos de manera descendente para que la operaci´
on tenga sentido.
La funci´
on encargada de esto se llama sort individuals y est´
a en Model/Community/
Population/Population.py.
2.3.2. NonLinearRankingFitness (script)
Se implementa la asignaci´
on de Fitness conocida como Non-Linear Ranking (´
o Ranking
No Lineal) que, a diferencia de los dem´
as m´
etodos, la aplica usando como base la po-
sici´
on del Individual (´
o Individuo) en la Population (´
o Poblaci´
on) como resultado de las
operaciones de ranking (v´
ease Model/Community/Community.py).
Posteriormente el Fitness se constituye tomando la posici´
on del Individuo y una fun-
ci´
on polinomial (la cual es una funci´
on no lineal, de ah´
ı el nombre). La f´
ormula es la
siguiente:
𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑇 𝑃 ·𝑋𝑝𝑜𝑠𝑖𝑐𝑖´𝑜𝑛(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑇 𝑃
𝑖=1 𝑋𝑖1
Donde:
TP es el tama˜
no de la Poblaci´
on.
Posici´
on(Individuo) es la que ocupa ´
este de acuerdo al ranking previo.
UNAM Facultad de Ciencias
Manual T´
ecnico 27
Xes la soluci´
on al polinomio: (𝑆𝑃 𝑇 𝑃 )·𝑋𝑇 𝑃 1+𝑆𝑃 ·𝑋𝑇 𝑃 2+...+𝑆𝑃 ·𝑋+𝑆𝑃 =
0
SP (Selective Pressure ´
o Presi´
on Selectiva) var´
ıa entre 1 y 2.
Haciendo un an´
alisis somero en la f´
ormula, se puede apreciar que los Individuos con me-
jor Fitness ser´
an aqu´
ellos que se encuentren en las ´
ultimas posiciones, sin embargo los
rankings que se manejan en este proyecto son inversamente proporcionales a la calidad
de los Individuos (v´
ease Model/Community/Community.py); por ello es importan-
te ordenar a los Individuos de manera descendente para que la operaci´
on tenga sentido.
La funci´
on encargada de esto se llama sort individuals y est´
a en Model/Community/
Population/Population.py.
calculate root(polynome,x 0,epsilon)
Calcula la soluci´
on de un polinomio usando el m´
etodo Newton-Raphson.
A grandes rasgos el funcionamiento es el siguiente:
Tomando como base el punto 𝑥0se obtiene 𝑥1as´
ı:
𝑥1=𝑥0𝑓(𝑥0)
𝑓(𝑥0)
Una vez obtenido 𝑥1se calcula 𝑥2de la misma manera:
𝑥2=𝑥1𝑓(𝑥1)
𝑓(𝑥1)
El proceso se repite para ‘n’ iteraciones hasta que el valor alcance la precisi´
on de
epsilon ´
o el polinomio ya no tenga m´
as derivadas. Concretando lo anterior:
𝑥𝑛+1 =𝑥𝑛𝑓(𝑥𝑛)
𝑓(𝑥𝑛)
Cuando 𝑥𝑛+1 se acerque a epsilon ´
o cuando el polinomio no sea m´
as derivable el
m´
etodo se detendr´
a.
Parameters
polynome (List) – El polinomio en el que se buscar´
a la
soluci´
on.
x 0 (Float) – el punto sobre el que se har´
a la evaluaci´
on
del polinomio.
epsilon (Float) – La precisi´
on decimal que se necesita
para poder devolver el resultado.
Returns La soluci´
on al polinomio.
Return type Float
UNAM Facultad de Ciencias
28 Manual T´
ecnico
derivate(polynome)
M´
etodo que calcula la derivada de un polinomio, modificando directamente ´
este
sin regresar nada.
Parameters
polynome (List) – El polinomio inicial.
evaluate polynome(polynome,x)
Eval´
ua un polinomio en un cierto valor.
Parameters
polynome (List) – El polinomio a evaluar.
x(Float) – El valor sobre el que se evaluar´
a el polino-
mio.
Returns La evaluaci´
on del polinomio.
Return type Float
2.3.3. ProportionalFitness (script)
Se desarrolla la asignaci´
on de Fitness conocida como Proportional (´
o Proporcional).
La funci´
on (´
o f´
ormula) utilizada es la siguiente:
𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝐹0(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛
𝑖=1 𝐹0(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖)
Donde:
𝐹0es conocido como el valor de la funci´
on objetivo del Individuo. N´
otese que 𝐹0
debe ser proporcional al Fitness del Individuo.
De acuerdo a la informaci´
on provista anteriormente, la asignaci´
on es llamada as´
ı porque,
como dice el nombre, el Fitness de un Individuo corresponde a la parte proporcional de la
cantidad total de 𝐹0de la Population (´
o Poblaci´
on).
De esta manera es posible ajustar los valores para que no existan Fitness dispares. Con
respecto de 𝐹0es importante considerar que, dado que se est´
a manejando un sistema mul-
ti objetivo puede haber m´
as de un valor en existencia, por ello se necesita una cantidad
que conjunte estas evaluaciones el cual es el rank, sin embargo el rank es inversamente
proporcional a la calidad de un Individuo.
Entonces se debe hacer una modificaci´
on para garantizar que exista un valor proporcio-
nal al Fitness del Individuo, por lo cual 𝐹0se reescribe as´
ı:
𝐹0(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛 𝑟𝑎𝑛𝑘(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
Reescribiendo la f´
ormula inicial se tiene lo siguiente:
UNAM Facultad de Ciencias
Manual T´
ecnico 29
𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛𝑟𝑎𝑛𝑘(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛
𝑖=1 [𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛𝑟𝑎𝑛𝑘(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖)]
Con esta actualizaci´
on ya es posible obtener un Fitness acorde al rank del Individuo sin
alterar la esencia de la t´
ecnica.
2.4. Operator (m´
odulo)
En ´
este se encuentran implementadas todas aquellas funcionalidades que intervengan en
el proceso de la creaci´
on de una nueva Population (´
o Poblaci´
on) hija.
La finalidad de ´
esto es propagar y realizar combinaciones de la carga gen´
etica de los Indi-
viduals (´
o Individuos) m´
as aptos mediante el cromosoma (v´
ease Model/
ChromosomalRepresentation) para obtener soluciones con una mejor calidad que sus
predecesoras.
Para este punto es importante mencionar que la calidad de un Individuo es directamente
proporcional a su Fitness (v´
ease Model/Fitness).
En t´
erminos generales, la manera de construir una Poblaci´
on hija es la siguiente:
De la Poblaci´
on actual y tomando como base el Fitness de cada Individuo se selec-
cionan aqu´
ellos que ser´
an los elegidos para reproducirse. N´
otese que un Individuo
puede ser tomado en cuenta m´
as de una vez si se da el caso.
Con base en los elegidos, se toman sus respectivos cromosomas y se realiza la ope-
raci´
on de Crossover (´
o Cruza).´
Esta es una simulaci´
on de una reproducci´
on de tipo
sexual donde se toman dos padres para “procrear” dos hijos.
Las caracter´
ısticas de los hijos depender´
an de las t´
ecnicas usadas (v´
ease Model/
Operator/Crossover).
Se toman los hijos y uno a uno se les aplica la operaci´
on de mutaci´
on.
Al final Poblaci´
on hija constar´
a de los hijos “mutados”.
A continuaci´
on se muestran las siguientes subcategor´
ıas correspondientes a los pasos des-
critos anteriormente, cada una con sus respectivas t´
ecnicas desarrolladas:
2.4.1. Selection (m´
odulo)
En esta secci´
on se encuentran implementadas todas las t´
ecnicas relacionadas con la selec-
ci´
on de Individuos.
Como se ha mencionado antes, durante dicha operaci´
on la importancia de la elecci´
on ra-
dica en el Fitness de cada Individuo, adem´
as un Individuo puede ser seleccionado m´
as de
una vez si la causa lo amerita.
As´
ı, se elegir´
an tantos Individuos como elementos haya en la Poblaci´
on.
UNAM Facultad de Ciencias
30 Manual T´
ecnico
El objetivo radica en mantener el equilibrio entre una “selecci´
on justa” y la oportuni-
dad de permitir a los Individuos con una calidad media o baja la propagaci´
on de su carga
gen´
etica.
Al final se busca que el usuario desarrolle sus propias t´
ecnicas de selecci´
on, por lo cual,
adem´
as de a˜
nadir el m´
etodo en el listado localizado en Controller/XML/Features.xml,
deber´
a implementar la siguiente funci´
on:
execute selection technique(population,selection parameters)
Lleva a cabo la selecci´
on de Individuos de una Poblaci´
on. Es importante recalcar
que, la funci´
on que m´
as se ocupa es:
get fitness (Model/Community/Population/Individual.py)
Aunque existen otras que pueden tener relevancia para el usuario (v´
ease Model/
Community/Population.py).
Como medida adicional, para los eventos de Crossover (´
o Cruza) y Mutation (´
o Mu-
taci´
on) se recomienda ampliamente que este m´
etodo regrese ´
unicamente los cro-
mosomas asociados a los Individuos, ya que ´
esto facilita sobremaneralas operacio-
nes mencionadas.
Parameters
population (Instance) – La Poblaci´
on sobre la cual
se se seleccionar´
an los Individuos.
selection parameters (Dictionary) – Un dic-
cionario que puede contener opciones adicionales para la
selecci´
on de Individuos.
Returns Una lista que contiene los cromosomas de los Individuos se-
leccionados.
Return type List
Es conveniente mencionar que se asume por defecto que las funciones antes mencionadas
se encuentran implementadas en cada uno de los elementos de este m´
odulo, por ello es
que primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esquema original,
es decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
A continuaci´
on se vislumbran los elementos caracter´
ısticos de este m´
odulo:
2.4.1.1. Roulette (script)
UNAM Facultad de Ciencias
Manual T´
ecnico 31
Se implementa el m´
etodo de selecci´
on conocido como Roulette (´
o Ruleta).
Tambi´
en es llamado Proportional Selection (´
o Selecci´
on Proporcional).
En la funci´
on se distinguen dos etapas principales: construir la ruleta y “ponerla a
girar” para que se elija al elemento.
Para la primera etapa se toma como base el Valor Esperado (´
o Expected Value) de
cada Individuo (v´
ease Model/Community/Population/Individual.py).
El Valor Esperado para fines de este proyecto es el n´
umero de “hijos” que un In-
dividuo puede ofrecer. ´
Este se calcula de la siguiente forma:
𝑉 𝑎𝑙𝑜𝑟 𝐸𝑠𝑝𝑒𝑟𝑎𝑑𝑜(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛·𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛
𝑖=1 𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖)
Al final aqu´
ellos con Valores Esperados altos tendr´
an lugar a mayores espacios en
la ruleta y por ende su probabilidad de elecci´
on aumenta.
Para recorrer la ruleta en realidad se toma un valor aleatorio entre 0 y la suma de
los Valores Esperados. Entonces se van sumando los Valores Esperados de los In-
dividuos hasta que se exceda el valor aleatorio mencionado antes. Aquel elemento
cuyo Valor Esperado haya excedido la suma se considera el elegido y es selecciona-
do para la etapa de cruza.
Para la selecci´
on de Individuos se efect´
ua la segunda operaci´
on tantas veces como
el tama˜
no de la Poblaci´
on.
Cabe mencionar que el Valor Esperado ya se calcula de manera autom´
atica en es-
te proyecto (v´
ease Model/Community/Population/Population.py).
2.4.1.2. ProbabilisticTournament (script)
Se desarrolla la t´
ecnica conocida como Torneo Probabil´
ıstico (´
o Probabilistic
Tournament).
Tal como lo sugiere el nombre, la selecci´
on ser´
a llevada a cabo en forma de compe-
tencia directa entre los Individuos.
Tradicionalmente se comparan sus Fitness y de esta manera el Individuo ganador
es aqu´
el con la cantidad mayor de Fitness, pero dado que se maneja un esque-
ma probabil´
ıstico la decisi´
on no depende totalmente del factor antes mencionado.
De esta manera se pueden recapitular los siguientes pasos:
Tomar k (2 6𝑘6𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛)Individuos de la Poblaci´
on.
Realizar el torneo de manera secuencial entre los elementos seleccionados
anteriormente, esto es, tomar el elemento A y enfrentarlo con B, al resultado
de la batalla anterior enfrentarlo con C y as´
ı sucesivamente.
Para ello por cada encuentro se crea un n´
umero aleatorio entre 0 y 1, si el n´
umero
es menor a 0.5 se toma al elemento con menor Fitness, de lo contrario se elige al de
UNAM Facultad de Ciencias
32 Manual T´
ecnico
mayor Fitness.
La operaci´
on se lleva a cabo hasta que se tenga un ganador de los k Individuos.
Los dos pasos anteriores se repiten hasta que se hayan obtenido tantos Individuos
como el tama˜
no de la Poblaci´
on.
2.4.1.3. StochasticUniversalSampling (script)
Se determina la t´
ecnica conocida como Stochastic Universal Sampling (´
o Muestreo
Estoc´
astico Universal).
Primero que nada es menester mencionar que es necesario el uso del Expected Va-
lue (´
o Valor Esperado) de cada Individuo.
Para fines concernientes a este proyecto, se trata del n´
umero de “hijos” que un Indi-
viduo puede ofrecer. ´
Este se calcula de la siguiente forma:
𝑉 𝑎𝑙𝑜𝑟 𝐸𝑠𝑝𝑒𝑟𝑎𝑑𝑜(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛·𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛
𝑖=1 𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖)
Con base a lo anterior, el m´
etodo consiste en lo siguiente:
Se selecciona un valor aleatorio entre 0 y 1, a ´
este se le llamar´
a Pointer (´
o Pun-
tero)
De manera secuencial se seleccionar´
an tantos Individuos como el tama˜
no
de la Poblaci´
on, los cuales deben estar igualmente espaciados en su Valor
Esperado tomando como referencia el valor de Pointer.
Es importante aclarar el segundo punto, as´
ı que se abordar´
a desde una perspectiva
computacional:
Se deben tener variables adicionales que indiquen la acumulaci´
on tanto del
Pointer (CP, Cumulative Pointers) como de los Valores Esperados (CEV,
Cumulative Expected Value) as´
ı como al Individuo actual que est´
a siendo
seleccionado (I).
Para averiguar si un Individuo est´
a igualmente espaciado en su Valor Espe-
rado con respecto de los dem´
as bas´
andose en Pointer, basta con corroborar
que:
𝐶𝑃 +𝑃 𝑜𝑖𝑛𝑡𝑒𝑟 > 𝐶𝐸𝑉 +𝐸𝑉
Si la condici´
on descrita es verdadera los valores EV e I deben actualizarse
(I se ajusta al siguiente Individuo) ya que esto indica que se buscar´
a al si-
guiente Individuo espaciado equitativamente con el valor Pointer. No se hace
nada si la condici´
on es falsa.
Independientemente del valor de la condici´
on anterior, CP y CEV deben ac-
tualizarse durante todo el ciclo.
UNAM Facultad de Ciencias
Manual T´
ecnico 33
Cabe mencionar que si la lista de Individuos se agota, se puede volver a iterar desde
el inicio teniendo cautela en conservar CEV y CP.
2.4.2. Crossover (m´
odulo)
Aqu´
ı se desarrollan las t´
ecnicas de Crossover (´
o Cruza).
Prosiguiendo con el ciclo de creaci´
on de una nueva Poblaci´
on, es en este apartado donde
se lleva a cabo la concepci´
on de nuevos Individuos.
Debido a esto se busca crear “hijos” m´
as aptos que respondan mejor ante la problem´
atica
fundamentada, es decir, concebir soluciones que se adapten mejor a los criterios estable-
cidos por el usuario desde un inicio bas´
andose en las soluciones predecesoras.
Es menester mencionar que esta funci´
on es meramente binaria, lo cual significa que siem-
pre deben haber dos padres, adem´
as se debe hacer hincapi´
e en que la Cruza se ejecuta a
nivel cromos´
omico (v´
ease Model/ChromosomalRepresentation),por lo que se debe te-
ner mesura con el tratamiento de los m´
etodos, dicho de otra manera, cada Representaci´
on
Cromos´
omica debe ir acompa˜
nada de al menos una funci´
on de Cruza.
Como dato para posteriores referencias, un gen hace referencia a una casilla del cromoso-
ma mientras que un alelo es el valor que puede existir en un gen.
Entonces se persigue que el usuario construya sus propias funciones de Cruza, para lo
cual, adem´
as de a˜
nadir el m´
etodo en el listado localizado en Controller/XML/Features.xml,
deber´
a implementar la siguiente funci´
on:
execute crossover technique(chromosome a,chromosome b,crosso-
ver parameters)
Lleva a cabo la cruza de dos Individuos a nivel cromos´
omico.
Adem´
as esta funci´
on debe retornar siempre dos hijos los cuales ser´
an la cruza de A
con B y la cruza de B con A, esto nos indica que, con el objetivo de incrementar la
calidad de los Individuos sin perder la carga gen´
etica ganada o introducir elementos
riesgosos, la cruza consiste en generar un nuevo Individuo y su rec´
ıproco; as´
ı se ga-
rantiza una adecuada y controlada descendencia.
Finalmente, esta funci´
on debe contar con la probabilidad de Cruza, la cual indica
si se debe o no hacer la operaci´
on cromos´
omica; en caso de ser la respuesta negati-
va los hijos resultan en copias id´
enticas de los padres.
Parameters
chromosome a (List) – El cromosoma del Individuo
A.
chromosome b (List) – El cromosoma del Individuo
B.
UNAM Facultad de Ciencias
34 Manual T´
ecnico
crossover parameters (Dictionary) – Un dic-
cionario que puede contener opciones adicionales para la
cruza de Individuos.
Returns Un arreglo con dos cromososomas, el primero es la cruza de
A con B, mientras que el segundo es la cruza de B con A.
Return type Array
Es menester considerar que se asume por defecto que las funciones antes mencionadas se
encuentran implementadas en cada uno de los elementos de este m´
odulo, por ello es que
primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esquema original, es
decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
Se colocan los elementos alusivos a este m´
odulo:
2.4.2.1. NPointsCrossover (script)
Se implementa el m´
etodo que lleva por nombre N-Points Crossover (´
o Cruza en N-
Puntos).
Para comenzar, esta t´
ecnica est´
a elaborada para usarse tanto por Representaci´
on
Cromos´
omica (v´
ease Model/ChromosomalRepresentation) de tipo FloatPoint
(´
o de Punto Flotante) como Binary (´
o Binaria).
Su funcionamiento consiste en construir a los descendientes usando sub-bloques de
cromosomas de cada uno de los padres, determinados ´
estos por una cierta cantidad
de puntos de corte, de ah´
ı el nombre.
Aterrizando lo anterior de una manera concisa se tiene lo siguiente:
Consideremos a los cromosomas de los padres Padre I: 𝐼1𝐼2...𝐼𝑛y Padre J:
𝐽1𝐽2...𝐽𝑛
Posteriormente se determinan aleatoriamente los puntos de corte, cabe men-
cionar que si los cromosomas son de tama˜
no n, pueden existir m´
aximo n - 1
puntos. Supongamos que se crean k puntos (1 6𝑘6𝑛1) y por lo tanto ca-
da cromosoma queda separado en k + 1 bloques.
De esta manera obtenemos:
Padre I en bloques (BI):𝐵𝐼1𝐵𝐼2...𝐵𝐼𝑘+1;
Padre J en bloques (BJ):𝐵𝐽1𝐵𝐽2...𝐵𝐽𝑘+1.
Finalmente cada hijo constar´
a de la alternancia de bloques de manera secuen-
cial comenzando por el bloque inicial de un padre determinado, dicho de otra
forma, los hijos estar´
an constituidos de la siguiente manera:
UNAM Facultad de Ciencias
Manual T´
ecnico 35
Para el hijo 𝐻1:𝐵𝐼1𝐵𝐽2...𝐵𝐼𝑘+1
Para el hijo 𝐻2:𝐵𝐽1𝐵𝐼2...𝐵𝐽𝑘+1
S´
olo queda mencionar que hasta el cierre de este proyecto no existe una manera
transparente desde el View (´
o Vista) de conocer, dada una representaci´
on Binaria
y un conjunto de variables de decisi´
on y funciones objetivo, el n´
umero m´
aximo de
puntos de corte permitidos para este procedimiento, sin embargo, una manera de
mitigar esta situaci´
on fue contemplar alg´
un posible caso de error en esta secci´
on
y mandar un mensaje de error a la Vista por si llegase a suceder alg´
un desperfecto
durante el proceso.
2.4.2.2. UniformCrossover (script)
Se lleva a cabo la implementaci´
on de la t´
ecnica conocida como Uniform Crossover
(´
o Cruza Uniforme).
Primero que nada esta operaci´
on est´
a fabricada para usarse tanto con la Represen-
taci´
on Cromos´
omica (v´
ease Model/ChromosomalRepresentation) de tipo Float-
Point (´
o Punto Flotante) como Binary (´
o Binaria).
La caracter´
ıstica de este procedimiento es crear nuevos Individuos intercambian-
do secuencialmente los genes de sus padres; visto de una manera m´
as estructurada
consiste en lo siguiente:
Tenemos a los cromosomas de los padres Padre A: 𝐴1𝐴2...𝐴𝑛y Padre B:
𝐵1𝐵2...𝐵𝑛
Ahora, cada hijo ser´
a construido con genes de uno y s´
olo uno de los padres
a menos que se indique lo contrario; este movimiento ser´
a posible con una
variable denominada Pmask (Pm) que toma valores de 0 a 1 y una probabi-
lidad de Pmask (Pp) que tambi´
en toma valores de 0 a 1. Entonces lo anterior
se puede declarar as´
ı:
Para el hijo (𝐻1)que tomar´
a sus genes del padre A (PA):
Si 𝑃 𝑚 6𝑃 𝑝 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐻1(𝑖) = 𝐴𝑖, 𝑒𝑛 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜 𝐻1(𝑖) = 𝐵𝑖; 1 6𝑖6
𝑛
Para el hijo (𝐻2)que tomar´
a sus genes del padre B (PB):
Si 𝑃 𝑚 6𝑃 𝑝 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝐻2(𝑖) = 𝐵𝑖, 𝑒𝑛 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜 𝐻1(𝑖) = 𝐴𝑖; 1 6𝑖6
𝑛
UNAM Facultad de Ciencias
36 Manual T´
ecnico
2.4.3. Mutation (m´
odulo)
En esta parte se encuentran detalladas las t´
ecnicas relacionadas con Mutation (´
o Muta-
ci´
on).
Retomando el proceso de creaci´
on de una nueva Poblaci´
on, es aqu´
ı donde una vez obteni-
dos los hijos, se modifican peque˜
nas porciones (genes) de sus cromosomas de manera in-
dividual.
Con ´
esto se persigue principalmente que estas ´
ınfimas alteraciones permitan incrementar
la exploraci´
on del material gen´
etico y por ende otorgar Individuos a´
un m´
as aptos sin caer
en el peligro de perder caracter´
ısticas valiosas en la Poblaci´
on.
Considerando lo anterior, lo primero que hay que tomar en cuenta es que la operaci´
on de
Mutaci´
on es unaria, esto significa que s´
olo se puede mutar el cromosoma de un Individuo
a la vez.
Tambi´
en y reiterando la informaci´
on pasada, la Mutaci´
on es una operaci´
on que se lleva
a cabo a nivel cromos´
omico (v´
ease Model/ChromosomalRepresentation), por lo que
se debe tener mesura con el tratamiento de los m´
etodos, dicho de otra manera, cada Re-
presentaci´
on Cromos´
omica debe ir acompa˜
nada de al menos una funci´
on de Mutaci´
on.
Como dato para posteriores referencias, un gen hace referencia a una casilla del cromoso-
ma, mientras que un alelo es el valor que puede existir en un gen.
As´
ı, se invita a que el usuario construya sus propias versiones de Mutaci´
on, por lo cual,
adem´
as de a˜
nadir el m´
etodo en el listado localizado en Controller/XML/Features.xml,
deber´
a implementar la siguiente funci´
on:
execute mutation technique(chromosome,mutation parameters)
Lleva a cabo mutaci´
on del Individuo a nivel cromos´
omico.
A grandes rasgos, modifica los alelos de los genes tomando en cuenta la gama de
valores a los que se pueden transformar (por ejemplo, una mutaci´
on de represen-
taci´
on Binaria puede transformarse s´
olo en valores 0 ´
o 1).
El m´
etodo debe retornar siempre el cromosoma mutado.
Finalmente, esta funci´
on debe contar con la probabilidad de Mutaci´
on, la cual in-
dica si se debe o no hacer la operaci´
on cromos´
omica por cada gen; en caso de ser la
respuesta negativa el Individuo no experimenta modificaci´
on alguna en el gen y se
pasa al siguiente y as´
ı sucesivamente.
Parameters
chromosome (List) – El cromosoma para ser mutado.
mutation parameters (Dictionary) – Un dic-
cionario que puede contener opciones adicionales para la
mutaci´
on del cromosoma del Individuo.
Returns El cromosoma modificado.
UNAM Facultad de Ciencias
Manual T´
ecnico 37
Return type List
Se debe tomar en cuenta que se asume por defecto que las funciones antes mencionadas
se encuentran implementadas en cada uno de los elementos de este m´
odulo, por ello es
que primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esquema original,
es decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
A continuaci´
on se muestran los elementos concernientes a este m´
odulo:
2.4.3.1. BinaryMutation (script)
Se implementa el m´
etodo conocido como Binary Mutation (´
o Mutaci´
on Binaria).
El procedimiento es el siguiente:
Se trata cada gen individualmente y se modifica de acuerdo a una probabili-
dad de Mutaci´
on asignada, si ´
esta es suficiente se procede a hacer el cambio,
en otro caso se deja el alelo asociado al gen intacto.
Retomando el caso en que se puede modificar el alelo del gen se verifica su
valor actual y ya que se maneja una representaci´
on Binaria su transformaci´
on
es muy simple: si se encuentra un 0, el alelo toma el valor 1 y viceversa.
2.4.3.2. FloatPointMutation (script)
Se concreta el m´
etodo conocido como Float Point Mutation (´
o Mutaci´
on de Punto
Flotante).
El procedimiento es el siguiente:
Se trata cada gen individualmente y se modifica de acuerdo a una probabili-
dad de Mutaci´
on asignada, si ´
esta es suficiente se procede a hacer el cambio,
en otro caso se deja el alelo asociado al gen intacto.
Retomando el caso en que se puede modificar el alelo del gen se verifica los
l´
ımites de la variable de decisi´
on que est´
a ligada a ´
este, as´
ı como la precisi´
on
decimal. Entonces se crea el nuevo n´
umero con la precisi´
on decimal requeri-
da y se sustituye por el anterior.
2.5. SharingFunction (m´
odulo)
En esta secci´
on se almacenan las t´
ecnicas relativas al Sharing Function (´
o Funci´
on de
Compartici´
on).
El objetivo de estas t´
ecnicas se delega a un rol secundario pero a´
un as´
ı muy importante y
UNAM Facultad de Ciencias
38 Manual T´
ecnico
consiste en realizar un filtrado m´
as minucioso de los mejores Individuos y as´
ı tomar a los
candidatos elegidos para dejar descendencia.
La operaci´
on es ´
util en casos en el que la calidad de los Individuos es muy similar y en-
tonces se desea seleccionar a los que son superiores, sin embargo, es menester mencionar
que, en exceso, dicha selecci´
on parsimoniosa puede dar lugar a un efecto negativo del Se-
lective Pressure (´
o Presi´
on Selectiva, v´
ease Model/MOEA).
Esto provoca que, lejos de dar una Poblaci´
on de elementos ´
optimos, los Indviduos se que-
den estancados puesto que al tener todos cargas gen´
eticas muy similares, existe una pobre
exploraci´
on gen´
etica en sus cromosomas y entonces no se llegar´
a a una optimizaci´
on de
funciones objetivo adecuada.
Es por ello que no todos los MOEAS (v´
ease Model/MOEA) lo utilizan, sin embargo
se decidi´
o implementar esta secci´
on ya que extrapolando las circunstancias, en cualquier
momento se puede hacer uso de t´
ecnicas de esta ´
ındole.
Haciendo ´
enfasis en la parte matem´
atica, el Sharing Function funciona as´
ı:
Cada Individual (´
o Individuo) tendr´
a asociado un Shared Fitness (´
o Fitness Comparti-
do) que fungir´
a como el Fitness original asignado a cada Individo y el cual ser´
a obtenido
de la siguiente manera:
𝑆ℎ𝑎𝑟𝑒𝑑𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝐹 𝑖𝑡𝑛𝑒𝑠𝑠(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
𝑁𝑖𝑐ℎ𝑒𝐶𝑜𝑢𝑛𝑡(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜)
Para fines de implementaci´
on el Shared Fitness ser´
a colocado en la misma variable utili-
zada para almacenar el Fitness original, esto por cada Individuo.
El Niche Count es un valor que indica qu´
e tan cercano en calidad se encuentra un Indi-
viduo con respecto de los dem´
as. La forma de calcularlo es la siguiente:
𝑁𝑖𝑐ℎ𝑒𝐶𝑜𝑢𝑛𝑡(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜) = 𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛
𝑗=1 𝑆𝐹 (𝐷(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜, 𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑗))
Donde 𝐷(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖, 𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑗)es la distancia que existe entre el Individuo i y el In-
dividuo j; mientras que el SF es el Sharing Function.
Entonces el SF se define como:
𝑆𝐹 (𝐷(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖, 𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑗)) =
1(𝐷(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖,𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑗)
𝜎𝑠ℎ𝑎𝑟𝑒 )𝛼, 𝑠𝑖 𝐷 < 𝜎𝑠ℎ𝑎𝑟𝑒.
0, 𝑒𝑛 𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑜𝑡𝑟𝑜 𝑐𝑎𝑠𝑜.
Donde 𝛼es una variable que casi siempre se asigna a 1 (aunque en este proyecto se le
da la libertad al usuario de seleccionar valores distintos) y𝜎𝑠ℎ𝑎𝑟𝑒 marca el l´
ımite en el
cual dos Individuos se consideran cercanos en calidad, es decir, viven en el mismo Niche.
Llegados a este punto, si bien la parte que se utilizar´
a finalmente es el Shared Fitness,
s´
olo las t´
ecnicas concernientes a 𝐷(𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑖, 𝐼𝑛𝑑𝑖𝑣𝑖𝑑𝑢𝑜𝑗)ser´
an las que se implemen-
ten en esta secci´
on, pues lo dem´
as siempre se mantendr´
a est´
atico.
Siendo m´
as espec´
ıficos con base en lo anterior, existen dos tipos de funciones de Dis-
tancia:
UNAM Facultad de Ciencias
Manual T´
ecnico 39
De Similaridad Genot´
ıpica (´
o Genotypic Similarity).
De Similaridad Fenot´
ıpica (´
o Phenotypic Similarity).
La primera indica en pocas palabras que la comparaci´
on se har´
a usando ´
unicamente ca-
racter´
ısticas relacionadas con el cromosoma, mientras que la segunda implicar´
a la compa-
raci´
on de caracter´
ısticas externas como las funciones objetivo evaluadas con las variables
de decisi´
on de cada Individuo ´
o las variables de decisi´
on por s´
ı solas.
Eventualmente se desea que el usuario implemente sus propias funciones, por ello es que,
adem´
as de a˜
nadir el m´
etodo en el listado localizado en Controller/XML/Features.xml,
deber´
a implementar las siguientes funciones:
calculate sigma share(population,sharing function parameters)
Realiza el c´
alculo del factor 𝜎𝑠ℎ𝑎𝑟𝑒 sobre el cual se har´
a el cuestionamiento de Indi-
viduos cercanos en calidad.
Es importante mencionar que la funci´
on debe regresar un escalar que representa
el l´
ımite m´
aximo para el cual dos Individuos se consideran en el mismo Niche.
Parameters
population (Instance) – La Poblaci´
on sobre la cual
se har´
a el c´
alculo correspondiente.
sharing function parameters (Dictionary)
– Un diccionario que puede contener opciones adicionales
para el c´
alculo de la distancia entre Individuos.
Returns Un valor escalar que representa el l´
ımite de cercan´
ıa para
cualesquiera dos Individuos de una Poblaci´
on.
Return type Float
calculate distance(individual i,individual j,sha-
ring function parameters)
Calcula la distancia de calidad que existe entre dos Individuos cualesquiera.
Dada la simpleza del m´
etodo, se puede usar independientemente de las categor´
ıas
antes especificadas.
Es importante resaltar que la funci´
on debe regresar un escalar que aluda a la dis-
tancia entre los Individuos.
Parameters
individual i (Instance) – El Individuo para calcu-
lar distancia.
individual j (Instance) – El Individuo para calcu-
lar distancia.
UNAM Facultad de Ciencias
40 Manual T´
ecnico
sharing function parameters (Dictionary)
– Un diccionario que puede contener opciones adicionales
para el c´
alculo de la distancia entre Individuos.
Returns Un valor escalar que indica la distancia entre los Individuos.
Return type Float
A continuaci´
on se muestran las subcategor´
ıas correspondientes:
2.5.1. GenotypicSimilarity (m´
odulo)
La similaridad Genot´
ıpica (´
o Genotypic Similarity), es una subcategor´
ıa que calcula las
distancias entre dos Individuos cualesquiera usando para ello caracter´
ısticas Genot´
ıpicas
de ´
estos, lo cual quiere decir que se emplear´
an rasgos meramente internos end´
emicos de
los Individuos.
Para fines del proyecto t´
ıpicamente se utiliza el cromosoma y/o sus caracter´
ısticas asocia-
das, no obstante siendo sensatos con el t´
ermino, el cromosoma no es la ´
unica herramienta
que se puede usar sino cualquier rasgo interno.
Es necesario considerar que, por defecto las funciones antes mencionadas se encuentran
implementadas en cada uno de los elementos de este m´
odulo, por ello es que primordial-
mente se mostrar´
an aqu´
ellas que no se contemplen en el esquema original, es decir, fun-
ciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
Ahora se muestran los elementos implementados para esta subcategor´
ıa:
2.5.1.1. HammingDistance (script)
La Distancia de Hamming (´
o Hamming Distance) es una implementaci´
on perte-
neciente a la subcategor´
ıa Genotypic Similarity (´
o Similaridad Genot´
ıpica). Esta
consiste en comparar los alelos entre los cromosomas de los Individuos y devolver
un valor num´
erico que indica en cu´
antos alelos los cromosomas de los Individuos
resultaron tener valores diferentes.
Como consecuencia l´
ogica, la magnitud de la Distancia de Hamming es inversa-
mente proporcional a la calidad de los Individuos.
Es ampliamente usada para la Representaci´
on Cromos´
omica (v´
ease Model/
ChromosomalRepresentation) de tipo Binario (´
o Binary), aunque su uso no se li-
mita s´
olo a esta codificaci´
on.
Con respecto del c´
alculo del 𝜎𝑠ℎ𝑎𝑟𝑒,´
este se hace tomando en cuenta el n´
umero
m´
aximo permitido de genes diferentes entre dos cromosomas cualesquiera.
UNAM Facultad de Ciencias
Manual T´
ecnico 41
Dicha cantidad es deducida solicit´
andole al usuario ´
unicamente el porcentaje m´
axi-
mo permitido, con base en ´
este se determina entonces el n´
umero en concreto.
2.5.2. PhenotypicSimilarity (m´
odulo)
La Similaridad Fenot´
ıpica (´
o Phenotypic Similarity) es una subcategor´
ıa que calcula las
distancias entre cualesquiera dos Individuos usando caracter´
ısticas concernientes al Feno-
tipo, es decir, rasgos exteriores de los Individuos.
Para fines relativos al proyecto, dichos atributos tradicionalmente no son otra cosa que las
funciones objetivo evaluadas de cada Individuo, usando para ello las variables de decisi´
on
que cada uno lleva consigo.
A´
un considerando lo anterior, siendo m´
as generales, cualquier caracter´
ıstica externa que
se relacione con el Individuo puede ser utilizada.
Se hace menci´
on en el hecho de que por defecto las funciones antes mencionadas se en-
cuentran implementadas en cada uno de los elementos de este m´
odulo, por ello es que
primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esquema original, es
decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
maci´
on importante tambi´
en se adjuntar´
an en el documento.
El presente m´
odulo consta de los siguientes scripts:
2.5.2.1. EuclideanDistance (script)
La Distancia Euclidiana (´
o Euclidean Distance) es una implementaci´
on de c´
alculo
de distancia entre dos Individuos que pertenece a la subcategor´
ıa Phenotypic Simi-
larity (´
o Similaridad Fenot´
ıpica).
Esta versi´
on est´
a dirigida para las Funciones Objetivo (´
o Objective Functions) que
poseen cada uno de los Individuos (´
o Individuals) de una Poblaci´
on (´
o Popula-
tion).
Primero que nada para obtener el c´
alculo de 𝜎𝑠ℎ𝑎𝑟𝑒 la operaci´
on est´
a regida por la
siguiente f´
ormula:
𝜎𝑠ℎ𝑎𝑟𝑒 =𝑛´𝑢𝑚 𝑓 𝑢𝑛𝑐𝑖𝑜𝑛𝑒𝑠 𝑜𝑏𝑗𝑒𝑡𝑖𝑣𝑜
𝑗=1 (𝑚𝑎𝑥(𝐹𝑗)𝑚𝑖𝑛(𝐹𝑗))
𝑡𝑎𝑚𝑎˜𝑛𝑜 𝑝𝑜𝑏𝑙𝑎𝑐𝑖´𝑜𝑛1
Lo anterior significa que se van a obtener los valores m´
aximo y m´
ınimo de cada
funci´
on objetivo, se restan entre s´
ı y al resultado anterior se le divide entre el ta-
ma˜
no de la Poblaci´
on menos uno; esto por cada generaci´
on.
La forma de hacer el c´
alculo de la distancia es la siguiente:
Supongamos que tenemos los vectores 𝑈= (𝑢1, 𝑢2, ..., 𝑢𝑛)y𝑉= (𝑣1, 𝑣2, ..., 𝑣𝑛).
Entonces la Distancia Euclidiana se define como:
UNAM Facultad de Ciencias
42 Manual T´
ecnico
𝑑𝐸(𝑈, 𝑉 ) = (𝑣1𝑢1)2+ (𝑣2𝑢2)2+... + (𝑣𝑛𝑢𝑛)2
Para los fines que nos conciernen, los vectores 𝑈 𝑦 𝑉 ser´
an las evaluaciones en las
funciones objetivos de cada Individuo participante.
Finalmente es menester mencionar que, aunque tradicionalmente esta t´
ecnica se usa
para Representaciones Cromos´
omicas (v´
ease Model/ChromosomalRepresentation)
de tipo FloatPoint (´
o Punto Flotante), en sentido estricto no se encuentra limitada
s´
olo a este tipo de codificaci´
on.
2.6. MOEA (m´
odulo)
En esta parte se encuentran desarrolladas todas las t´
ecnicas concernientes al uso de M.O.E.A.s
(Multi-Objective Evolutionary Algorithms ´
o Algoritmos Evolutivos Multiobjetivo).
Un M.O.E.A. es la convergencia y culminaci´
on de todas las t´
ecnicas que se han imple-
mentado en la secci´
on Model (´
o Modelo) con la finalidad de ofrecer una soluci´
on ´
optima
ante un problema multiobjetivo mediante el uso de Algoritmos Evolutivos.
Primero, solucionar un problema multiobjetivo aterrizado en un lenguaje matem´
atico
consiste en lo siguiente:
Tenemos un vector de funciones objetivo:
𝐹(𝑥)=[𝑓1(𝑥), 𝑓2(𝑥), ..., 𝑓𝑛(𝑥)]𝑇;𝑐𝑜𝑛 𝑛 >1.
Donde:
𝑥 = [𝑥1, 𝑥2, ..., 𝑥𝑘]𝑇;𝑘>1.
Representa al vector de variables de decisi´
on que “alimenta” a cada funci´
on objetivo.
La meta es encontrar un vector especial de variables de decisi´
on, denominado:
𝑥*= [𝑥1*, 𝑥2*, ..., 𝑥𝑘*]𝑇;𝑘>1.
Tal que:
𝑓𝑖(
𝑥*)6𝑓𝑖(𝑥); 1 6𝑖6𝑛;𝑓𝐹.
Dicho de otra forma, se debe encontrar el vector de variables de decisi´
on que minimize
todas y cada una de las funciones objetivo en existencia.
Adicionalmente, todo vector de variables de decisi´
on debe estar sujeto a las restricciones:
𝑖(𝑥) = 0; 1 6𝑖6𝑝(𝑟𝑒𝑠𝑡𝑟𝑖𝑐𝑐𝑖𝑜𝑛𝑒𝑠 𝑑𝑒 𝑖𝑔𝑢𝑎𝑙𝑑𝑎𝑑).
𝑔𝑖(𝑥)60; 1 6𝑖6𝑚(𝑟𝑒𝑠𝑡𝑟𝑖𝑐𝑐𝑖𝑜𝑛𝑒𝑠 𝑑𝑒 𝑑𝑒𝑠𝑖𝑔𝑢𝑎𝑙𝑑𝑎𝑑).
Las cuales para fines de este proyecto son aqu´
ellas a las que se encuentran afianzadas
las variables de decisi´
on (v´
ease View/Main/DecisionVariable/VariableFrame.py).
UNAM Facultad de Ciencias
Manual T´
ecnico 43
Una definici´
on adicional que sin lugar a dudas se ver´
a utilizada es la de dominancia en-
tre vectores de variables de decisi´
on, para ello tomemos dos vectores 𝑈= (𝑢1, 𝑢2, ..., 𝑢𝑘)
y𝑉= (𝑣1, 𝑣2, ..., 𝑣𝑘), se dice que U domina a V ´
o V es dominada por U si:
𝑖∈ {1, ..., 𝑘}𝑢𝑖6𝑣𝑖∧ ∃𝑖∈ {1, ..., 𝑘};𝑢𝑖< 𝑣𝑖.
Lo anterior significa que 𝑈debe ser mejor que 𝑉en cada uno de sus componentes para
garantizar la dominancia.
La simbolog´
ıa que se suele usar para identificar este hecho es 𝑢𝑣.
Algo importante a mencionar es que en las definiciones se trata ´
unicamente la minimi-
zaci´
on de funciones objetivo porque, en caso de querer la maximizaci´
on, simplemente se
realiza la sustituci´
on:
𝑓
𝑖(𝑥) = 𝑓𝑖(𝑥); 1 6𝑖6𝑛, 𝑝𝑎𝑟𝑎 𝑎𝑙𝑔𝑢𝑛𝑎 𝑓 𝐹.
Es decir, minimizando la funci´
on negativa se obtiene el m´
aximo.
El proyecto ya contempla este tipo de casos (v´
ease View/Main/ObjectiveFunction/
FunctionFrame).
Como dato adicional, es menester a˜
nadir que, en un escenario t´
ıpico muchas de las fun-
ciones objetivo entrar´
an en conflicto, esto quiere decir que en algunas se buscar´
a el m´
ıni-
mo mientras que en otras, el m´
aximo.
Con base en lo anterior, el funcionamiento de un M.O.E.A. (resolver un problema de
optimizaci´
on multiobjetivo usando algoritmos gen´
eticos) generalmente se lleva a cabo
de la siguiente manera:
1. Usando una Representaci´
on Cromos´
omica (v´
ease Model/ChromosomalRepresentation),
crear la Poblaci´
on Padre y evaluar cada uno de los Individuos respecto a las funcio-
nes objetivo.
2. Asignar un Ranking a los Individuos de la Poblaci´
on Padre (v´
ease Model/
Community/Community.py).
3. Con base en el Ranking, asignar el Fitness a cada uno de los Individuos (v´
ease Mo-
del/Fitness).
4. Tomando en cuenta el Fitness, aplicar las operaciones de Selecci´
on, Cruza y Muta-
ci´
on con la finalidad de crear una Poblaci´
on Hija (v´
ease Model/GeneticOperator).
Todos los m´
etodos empleados en este punto deben funcionar acorde a la Represen-
taci´
on Cromos´
omica del punto 1.
5. (Opcional) Utilizar el Fitness Compartido para aplicar una elecci´
on m´
as minuciosa
de los mejores Individuos en la Poblaci´
on Hija (v´
ease Model/SharingFunction).
6. Designar a la Poblaci´
on Hija como la nueva Poblaci´
on Padre.
UNAM Facultad de Ciencias
44 Manual T´
ecnico
7. Repetir los pasos 2 a 6 hasta haber alcanzado un n´
umero l´
ımite de generaciones
(iteraciones).
A grandes rasgos la diferencia entre un M.O.E.A. y otro es la Presi´
on Selectiva (´
o Selec-
tive Pressure) que se aplica durante el procedimiento, para fines de este proyecto se trata
de la tolerancia para seleccionar a los Individuos de calidad media o baja frente a los me-
jores.
Una baja Presi´
on Selectiva permite elegir Individuos no tan aptos; el caso es an´
alogo para
una alta Presi´
on Selectiva.
Es por eso que se han tomado los M.O.E.A.s m´
as representativos, pues se desea ilustrar
la consistencia y eficacia de dichos m´
etodos en general a trav´
es de variadas circunstan-
cias.
Tomando en cuenta lo anterior, la finalidad es que el usuario desarrolle sus propios M.O.E.A.s,
por ello es que, adem´
as de a˜
nadir el m´
etodo en el listado localizado en Controller/
XML/Features.xml, deber´
a implementar la siguiente funci´
on:
execute moea(execution task count,generations queue,generations,po-
pulation size,vector functions,vector variables,availa-
ble expressions,number of decimals,community instance,
algorithm parameters,representation instance,representa-
tion parameters,fitness instance,fitness parameters,sha-
ring function instance,sharing function parameters,selec-
tion instance,selection parameters,crossover instance,cros-
sover parameters,mutation instance,mutation parameters)
Devuelve la soluci´
on ´
optima para un conjunto de funciones objetivo vector functions
ligadas a un conjunto de restricciones vector variables tomando como fundamento
el uso de algoritmos gen´
eticos.
El m´
etodo se apoya de las caracter´
ısticas subyacentes; en lo concerniente a la de-
voluci´
on de resultados se recomienda ver el m´
etodo get results localizado en Mo-
del/Community/Community.py.
Parameters
execute task count (Integer) – El identificador
que se utiliza para orquestar el orden en que el m´
etodo
ser´
a ejecutado con respecto de los dem´
as (v´
ease View/Additional/
ResultsGrapher/ResultsGrapherTopLevel.py).
generations queue (Instance) – Una estructura
auxiliar (Queue o Cola) que es necesaria para indicar a
la interfaz gr´
afica el progreso del m´
etodo (v´
ease Contro-
ller/Controller.py, View/MainWindow.py, View/Additional/
ResultsGrapher/ResultsGrapherTopLevel.py) .
UNAM Facultad de Ciencias
Manual T´
ecnico 45
generations (Integer)–Eln´
umero de generacio-
nes (iteraciones) que se emplear´
an para la ejecuci´
on del
m´
etodo.
population size (Integer) – El tama˜
no de la Po-
blaci´
on (n´
umero de Individuos).
vector functions (List) – El vector con las funcio-
nes objetivo insertadas por el usuario.
vector variables (List) – El vector con las varia-
bles de decisi´
on ingresadas por el usuario.
available expressions (Dictionary) – Un dic-
cionario con expresiones creadas para que la evaluaci´
on de
funciones objetivo sea mucho m´
as sencilla (v´
ease Contro-
ller/Verifier.py, Controller/XML/PythonExpressions.xml,
View/Additional/MenuInternalOption/InternalOptionTab/
PythonExpressionFrame.py).
number of decimals (Integer) – La precisi´
on de-
cimal (n´
umero de decimales) que tendr´
an las soluciones
inherentes a los Individuos.
community instance (Instance) – Una instancia
de la clase Community (v´
ease Controller/Verifier.py, Mo-
del/Community/Community.py).
algorithm parameters (Instance) – Un dicciona-
rio para a˜
nadir opciones adicionales para los M.O.E.A.s.
representation instance (Instance) – Una
instancia de la t´
ecnica de Representaci´
on Cromos´
omica
(´
o Chromosomal Representation) usada por el usuario
(v´
ease Controller/Verifier.py, Model/
ChromosomalRepresentation).
representation parameters (Dictionary) –
Un diccionario con opciones adicionales a la t´
ecnica de
Representaci´
on Cromos´
omica usada.
fitness instance (Instance) – Una instancia de
la t´
ecnica de Fitness seleccionada por el usuario (v´
ease
Controller/Verifier.py, Model/Fitness).
fitness parameters (Dictionary) – Un diccio-
nario con par´
ametros adicionales para la t´
ecnica de Fitness
UNAM Facultad de Ciencias
46 Manual T´
ecnico
utilizada.
sharing function instance (Instance) – Una
instancia de la t´
ecnica de Sharing Function (´
o Funci´
on
de Compartici´
on) usada por el usuario (v´
ease Contro-
ller/Verifier.py, Model/SharingFunction).
sharing function parameters (Dictionary) –
Un diccionario con opciones adicionales para la t´
ecnica de
Sharing Function seleccionada.
selection instance (Instance) – Una instancia
de la t´
ecnica de Selection (´
o Selecci´
on) seleccionada por el
usuario (v´
ease Controller/Verifier.py, Model/Operator/
Selection).
selection parameters (Dictionary) – Un dic-
cionario con opciones adicionales para la t´
ecnica de Selec-
tion empleada.
crossover instance (Instance) – Una instancia
de la t´
ecnica de Crossover (´
o Cruza) seleccionada por el
usuario (v´
ease Controller/Verifier.py, Model/Operator/
Crossover).
crossover parameters (Dictionary) – Un dic-
cionario con par´
ametros adicionales para la t´
ecnica de Cru-
za solicitada.
mutation instance (Instance) – Una instancia
de la t´
ecnica de Mutation (´
o Mutaci´
on) empleada por el
usuario (v´
ease Controller/Verifier.py, Model/Operator/
Mutation).
mutation parameters – Un diccionario con par´
ame-
tros adicionales para la t´
ecnica de Mutaci´
on usada.
Returns El diccionario que resulta de aplicar el m´
etodo get results
que se encuentra en Model/Community/Community.py.
Return type Dictionary
Se debe tomar en consideraci´
on que por defecto las funciones antes mencionadas se en-
cuentran implementadas en cada uno de los elementos de este m´
odulo, por ello es que
primordialmente se mostrar´
an aqu´
ellas que no se contemplen en el esquema original, es
decir, funciones auxiliares.
En el caso muy espec´
ıfico en el que alguna de las funciones obligatorias contenga infor-
UNAM Facultad de Ciencias
Manual T´
ecnico 47
maci´
on importante tambi´
en se adjuntar´
an en el documento.
A continuaci´
on se muestra la lista de los M.O.E.A.s implementados:
2.6.1. VEGA (script)
Se implementa la t´
ecnica M.O.E.A conocida como V.E.G.A. (Vector Evaluated Genetic
Algorithm ´
o Algoritmo Gen´
etico de Vectores Evaluados).
La forma de proceder del algoritmo es la siguiente:
1. Se crea la Poblaci´
on Padre (de tama˜
no 𝑛).
2. Tomando en cuenta las 𝑘funciones objetivo y la Poblaci´
on Padre, se crean 𝑘sub-
poblaciones de tama˜
no 𝑛/𝑘 cada una, si este n´
umero llega a ser irracional se pue-
den hacer ajustes con respecto de la distribuci´
on de los Individuos.
3. Por cada subpoblaci´
on, se aplica la t´
ecnica de Selecci´
on y obtienen los 𝑛/𝑘 Indi-
viduos, terminado esto se deben unificar todos los seleccionados de nuevo en una
s´
uper Poblaci´
on.
4. Con la s´
uper Poblaci´
on del paso 3, se crea a la Poblaci´
on Hija, la cual pasar´
a a con-
vertirse en la la nueva Poblaci´
on Padre.
5. Se repiten los pasos 2 a 4 hasta haber alcanzado el n´
umero de generaciones (itera-
ciones) l´
ımite.
Como se puede apreciar es una implementaci´
on muy sencilla de optimizaci´
on multiobje-
tivo, sin embargo el inconveniente que tiene es la f´
acil p´
erdida de material gen´
etico valio-
so.
Lo anterior significa que un Individuo que en una generaci´
on previa era el mejor para
una funci´
on objetivo 𝑖al momento de ser separado y seleccionado en una subpoblaci´
on 𝑗
(y por ende analizado bajo la funci´
on objetivo 𝑗)puede ser muy malo en calidad y por
tanto no ser seleccionado; perdi´
endose la ganancia gen´
etica hasta el momento obtenida
para la funci´
on objetivo 𝑖, donde 𝑖̸=𝑗.
Por ello es que se puede decir que V.E.G.A. genera soluciones promedio que destacan
con una calidad media para todas las funciones objetivo.
Finalmente hay que comentar que para este algoritmo no se requiere aplicar un Ranking
espec´
ıfico, no obstante se ha decidido utilizar el de Fonseca & Flemming (v´
ease Mo-
del/Community/Community.py) pues es el m´
as sencillo de implementar.
create subpopulations(comunidad,main population)
M´
etodo que divide a la Poblaci´
on principal en subpoblaciones de acuerdo al n´
ume-
ro de funciones objetivo.
Parameters
UNAM Facultad de Ciencias
48 Manual T´
ecnico
comunidad (Instance) – Una instancia de Commu-
nity para poder crear poblaciones..
main population (Instance) – La Poblaci´
on que
ser´
a dividida.
Returns Una lista con las subpoblaciones (de tipo Population).
Return type List
2.6.2. SPEAII (script)
Se desarrolla la implementaci´
on de la t´
ecnica M.O.E.A. conocida como S.P.E.A. II (Strength
Pareto Evolutionary Algorithm ´
o Algoritmo Evolutivo de Fuerza de Pareto).
El funcionamiento del algoritmo es el siguiente:
1. Se inicializa una Poblaci´
on llamada Py un conjunto inicialmente vac´
ıo llamado E
(E albergar´
a Individuos tambi´
en); ambos son de tama˜
no n.
2. Se asigna el Fitness a los Individuos de PyE(para ello se eval´
uan las funciones
objetivo de los Individuos de ambos conjuntos y se asigna el Ranking Zitzler &
Thiele).
3. A continuaci´
on se funden PyEen una s´
uper Poblaci´
on (denominado S tambi´
en
se˜
nalado en el algoritmo como Mating Pool, de tama˜
no n).Para ello primero se
a˜
naden los Individuos NO DOMINADOS de Pen Sy posteriormente los NO DO-
MINADOS de Een S.
Aqu´
ı se distinguen dos casos:
a) Si llegasen a faltar Individuos se a˜
naden al azar Individuos DOMINADOS de
Pen Shasta completar la demanda.
b) Si despu´
es de la fusi´
on el n´
umero de Individuos supera a n, entonces se hace
un truncamiento en Shasta ajustar su tama˜
no a n.
4. Sser´
a la nueva E, adem´
as se crea la Poblaci´
on Hija de la reci´
en creada E(E-Child).
5. E-Child ser´
a la nueva P.
6. Se repiten los pasos 2 a 5 hasta que se haya alcanzado el l´
ımite de generaciones
(iteraciones).
Finalmente lo que se regresa es E, ya que ah´
ı es donde se han almacenado los mejores In-
dividuos de todas las generaciones.
La caracter´
ıstica de este algoritmo es que tiene una Presi´
on Selectiva alta ya que se da
prioridad a los Individuos no dominados (de ah´
ı el nombre de Fuerza de Pareto ´
o los
m´
as fuertes con respecto al principio de Pareto), y el hecho de mezclar a EyPen
UNAM Facultad de Ciencias
Manual T´
ecnico 49
una s´
uper Poblaci´
on garantiza la conservaci´
on de los mejores Individuos sin importar
el transcurso de las generaciones (a eso se le conoce como Elitismo), pero tambi´
en da
una tolerancia, aunque m´
ınima, a los Individuos de menor calidad como en el punto 3.
Adem´
as al momento de actualizar SaEy E-Child a Pse tiene una especie de seguro de
vida, es decir, si en alg´
un momento la Poblaci´
on E-Child llegara a tener una calidad baja
se tiene el respaldo de Epara una generaci´
on posterior para formar S.
Se debe tener en cuenta que el algoritmo originalmente no contempla ni una s´
uper Pobla-
ci´
on Sni E-Child sino que en los pasos 3 y 4 se utiliza solamente Epara referirse tanto a
E-child como a S, sin embargo para no confundir al usuario en la funcionalidad del m´
eto-
do se decidi´
o colocar contenedores extra para poder diferenciar m´
as precisamente a los
elementos involucrados.
Algo muy importante a mencionar es que en el paso 1 y al momento de crear la Pobla-
ci´
on E-Child es necesario evaluar las funciones objetivo, asignar un Ranking y poste-
riormente un Fitness para que se puedan aplicar los operadores geneticos (v´
ease Mo-
del/GeneticOperator), para este caso el Ranking es estrictamente el de Zitzler & Thiele;
la descripci´
on completa de ´
este se encuentra en Model/Community/Community.py.
2.6.3. MOGA (script)
Se desarrolla la t´
ecnica M.O.E.A. que lleva por nombre M.O.G.A. (Multi Objective Ge-
netic Algorithm ´
o Algoritmo Gen´
etico Multi Objetivo).
Su funcionamiento es el siguiente:
1. Se crea la Poblaci´
on Padre, se eval´
uan las funciones objetivo de sus correspondien-
tes Individuos.
2. Se asigna a los Individuos un Ranking (Fonseca & Flemming) y posteriormente se
calcula el Niche Count de la Poblaci´
on Padre.
3. Tomando en cuenta los valores del punto 2 se obtiene el Fitness para cada Indivi-
duo y posteriormente su Shared Fitness.
4. Se aplica el operador de selecci´
on sobre la Poblaci´
on Padre para determinar los
elegidos para dejar descendencia.
5. Se crea la Poblaci´
on Hija, se eval´
uan las funciones objetivo de sus correspondientes
Individuos.
6. Se asigna a los Individuos un Ranking (Fonseca & Flemming) y posteriormente se
calcula el Niche Count de la Poblaci´
on Hija.
7. Tomando en cuenta los valores del punto 6 se obtiene el Fitness para cada Indivi-
duo y posteriormente su Shared Fitness.
8. La Poblaci´
on Hija pasar´
a a ser la nueva Poblaci´
on Padre.
UNAM Facultad de Ciencias
50 Manual T´
ecnico
9. Se repiten los pasos 4 a 8 hasta que se haya alcanzado el n´
umero l´
ımite de genera-
ciones (iteraciones).
Como se puede apreciar, la implementaci´
on de este algoritmo es muy sencilla, adem´
as
se rige casi en su totalidad por el Shared Fitness (´
o Fitness Compartido), por lo que
la Presi´
on Selectiva (´
o Selective Pressure) incluida depender´
a en gran medida de la
funci´
on de Distancia que se utilice, as´
ı como de la magnitud indicada por el usuario.
Finalmente es menester mencionar que para esta implementaci´
on el Ranking utilizado de-
be ser estrictamente el de Fonseca & Flemming (v´
ease Model/Community/Community.py).
2.6.4. NSGAII (script)
En esta parte se lleva a cabo la implementaci´
on del M.O.E.A. denominado N.S.G.A. II
(Non-dominated Sorting Genetic Algorithm ´
o Algoritmo Gen´
etico de Ordenamiento
No Dominado).
La forma de proceder del m´
etodo es la siguiente:
1. Se crea una Poblaci´
on Padre (de tama˜
no n), a la cual se le eval´
uan las funciones
objetivo de sus Individuos, se les asigna un Ranking (Goldberg) y posteriormente
se les otorga un Fitness.
2. Con base en la Poblaci´
on Padre se aplica el operador de Selecci´
on para elegir a los
Individuos que ser´
an aptos para reproducirse.
3. Usando a los elementos del punto 2, se crea una Poblaci´
on Hija (de tama˜
no n).
4. Se crea una s´
uper Poblaci´
on (denominado S, de tama˜
no 2n) que albergar´
a todos
los Individuos tanto de la Poblaci´
on Padre como Hija; a Sse le eval´
uan las funcio-
nes objetivo de sus Individuos, se les asigna un Ranking (Goldberg) y posterior-
mente se les otorga un Fitness.
5. La s´
uper Poblaci´
on Sse divide en subcategor´
ıas de acuerdo a los niveles de domi-
nancia que existan, es decir, existir´
a la categor´
ıa de dominancia 0, la cual almacena
Individuos que tengan una dominancia de 0 Individuos (ning ´
un Individuo los do-
mina), existir´
a la categor´
ıa de dominancia 1 con el significado an´
alogo y as´
ı sucesi-
vamente hasta haber cubierto todos los niveles de dominancia existentes.
6. Se construye la nueva Poblaci´
on Padre, pare ello constar´
a de los Individuos de S
donde la prioridad ser´
a el nivel de dominancia, es decir, primero se a˜
naden los ele-
mentos del nivel 0,luego los del nivel 1 y as´
ı en lo sucesivo hasta haber adquirido n
elementos. Se debe aclarar que la adquisici´
on de Individuos por nivel debe ser total,
esto significa que no se pueden dejar Individuos sueltos para el mismo nivel de do-
minancia.
Supongamos que a un nivel k existen tantos Individuos que su presunta adquisici´
on
supera el tama˜
no n, en este caso se debe hacer lo siguiente:
UNAM Facultad de Ciencias
Manual T´
ecnico 51
a) Se crea una Poblaci´
on provisional (Prov) con los Individuos del nivel k, se
eval´
uan las funciones objetivo a cada uno de sus Individuos, se les asigna un
Ranking (Goldberg) y posteriormente se les asigna el Fitness.
Con los valores anteriores se calcula el Niche Count (v´
ease Model/
SharingFunction) de los Individuos; una vez hecho ´
esto se seleccionan
desde Prov los Individuos faltantes con los mayores Niche Count, esto has-
ta completar el tama˜
no n de la nueva Poblaci´
on Padre.
7. Al haber conformado la nueva Poblaci´
on Padre, se eval´
uan las funciones objetivo
de sus Individuos, se les asigna el Ranking correspondiente (Goldberg) y se les
atribuye su Fitness.
8. Se repiten los pasos 2 a 7 hasta haber alcanzado el l´
ımite de generaciones (iteracio-
nes).
Como su nombre lo indica, la caracter´
ıstica de este algoritmo es la clasificaci´
on de los In-
dividuos en niveles para su posterior selecci´
on.
Esto al principio propicia una Presi´
on Selectiva moderada por la ausencia de elemen-
tos con dominancia baja que suele existir en las primeras generaciones, sin embargo
en iteraciones posteriores se agudiza la Presi´
on Selectiva ya que eventualmente la ma-
yor´
ıa de los Individuos ser´
an alojados en las primeras categor´
ıas de dominancia, cu-
briendo casi instant´
aneamente la demanda de Individuos necesaria en el paso 6, por lo
que las categor´
ıas posteriores ser´
an cada vez menos necesarias con el paso de los ciclos.
Por otra parte la fusi´
on de las Poblaciones en Sgarantiza que siempre se conserven a los
mejores Individuos independientemente de la generaci´
on transcurrida, a eso se le llama
Elitismo.
Por cierto que en el algoritmo original no existe un nombre oficial para Ssino m´
as bien se
se˜
nala como una estructura gen´
erica, sin embargo se le ha formalizado con un identifica-
dor para guiar apropiadamente al usuario en el flujo del algoritmo.
Para finalizar se se˜
nala que el uso del ranking de Goldberg (v´
ease Model/Community/
Community.py) es indispensable.
3. View (secci´
on)
La capa View (´
o Vista) contiene todos los elementos que ser´
an alusivos a la interfaz gr´
afi-
ca. De acuerdo al modelo MVC (Model-View-Controller), opera exclusivamente con la
capa Controller (´
o Controlador).
A continuaci´
on se muestran los elementos que conforman esta secci´
on.
UNAM Facultad de Ciencias
52 Manual T´
ecnico
3.1. MainWindow (clase)
Mezcla todas las estructuras gr´
aficas que forman parte de la secci´
on View (´
o vista).
Se trata de una Ventana que contendr´
a todas las opciones necesarias para que el
usuario pueda ejecutar a voluntad M.O.E.A.s (Multi Objective Evolutionary Al-
gorithm ´
o Algoritmo Evolutivo Multi Objetivo)
El flujo que se suele seguir es el siguiente:
El usuario ingresa las caracter´
ısticas que desea que contenga el M.O.E.A. que
ser´
a ejecutado.
Posteriormente el Controller (´
o Controlador, v´
ease Controller/Controller.py)
verifica la consistencia de los datos anteriores para que no haya conflicto en
el lado del Model (´
o Modelo).
Si no existe problema alguno se prosigue con el proceso, en otro caso se arro-
ja un mensaje de error.
Siguiendo con el flujo normal se ejecutar´
a una instancia del M.O.E.A. solici-
tado en la capa de Model (´
o Modelo), la cual tendr´
a una ventana asociada en
View (´
o Vista) que indicar´
a el progreso del primero.
Cuando una instancia termine de ejecutarse, la ventana del progreso desapa-
rece y en su lugar se muestra otra conteniendo los resultados del M.O.E.A.
(v´
ease View/Additional/ResultsGrapher/ResultsGrapherToplevel.py).
Es importante mencionar que esta clase y el proyecto en general est´
an dise˜
nados
para que se puedan crear varias instancias simult´
aneamente, con ello se espera
aprovechar al m´
aximo los recursos computacionales en los que el proyecto fuera
a ejecutarse.
Returns Tkinter.Frame
Return type Instance
change frame(current frame name)
Note: Este m´
etodo es privado.
Hace el cambio en la Ventana Principal ocultando un Frame y mostrando
otro.
Parameters
current frame name (Tkinter.Frame) – El
Frame que se va a mostrar en la Ventana Principal.
UNAM Facultad de Ciencias
Manual T´
ecnico 53
check queues()
Note: Este m´
etodo es privado.
Una vez iniciado un proceso que ejecuta un M.O.E.A., este m´
etodo revisa
peri´
odicamente las colas (Queues) sobre las cuales los procesos escribir´
an
todo tipo de informaci´
on pertinente.
get information()
Note: Este m´
etodo es privado.
M´
etodo que obtiene los datos ingresados por el usuario de cada uno de los
Frames asociados a esta Ventana Principal.
Returns Un diccionario con toda las preferencias del usuario
recolectadas para cada uno de los Frames disponibles.
Return type Dictionary
init procedure(event)
Note: Este m´
etodo es privado.
Inicia el procedimiento para ejecutar un M.O.E.A.
Los pasos que se realizan son:
Recolecta las preferencias ingresadas por el usuario en los Frames que
conforman la Ventana Principal.
Se sanitizan dichos datos con ayuda del Controller.
En caso de no haber problemas con la sanitizaci´
on, se ejecuta el pro-
ceso aloj´
andolo en un hilo (Thread) para que permita seguir teniendo
acceso a la Ventana Principal; por el contrario si hubo alguna falla re-
gresa un mensaje de error.
Gracias a este m´
etodo el proyecto entero tiene la caracter´
ıstica de ser Multi-
Hilo (´
o Multi-Threading), es decir, se pueden ejecutar varios procedimien-
tos de manera independiente.
Parameters
UNAM Facultad de Ciencias
54 Manual T´
ecnico
event (String) – El evento del elemento gr´
afico
que activa esta funci´
on.
initialize frames()
Note: Este m´
etodo es privado.
M´
etodo que inicializa los Frames que se colocar´
an en la Ventana Principal
como opciones.
load images()
Note: Este m´
etodo es privado.
Carga las im´
agenes que se encuentran en el directorio View/Images para que
puedan ser usadas por los Frames.
Es importante recalcar que el m´
etodo s´
olo carga im´
agenee .gif ya que son
la extensi´
on m´
as estable para que se muestren las im´
agenes en la interfaz
gr´
afica.
Returns Un diccionario con todas las im´
agenes cargadas.
Return type Dictionary
obtain results(execution task count,generations queue,gathe-
red information,sanitized information)
Note: Este m´
etodo es privado.
Ejecuta un M.O.E.A..
Esta es la funci´
on que se coloca en un hilo para ser llevada a cabo de manera
independiente con la finalidad de dejar libre la Ventana Principal y de manera
secundaria ejecutar varios procedimientos simult´
aneamente.
Parameters
execution task count (Integer)–Eln´
ume-
ro de proceso actual.
generations queue (Instance) – Una refe-
rencia a una cola (Queue) donde los procesos escri-
bir´
an su avance en cuanto a las generaciones transcu-
rridas.
UNAM Facultad de Ciencias
Manual T´
ecnico 55
gathered information (Dictionary) – La
informaci´
on que el usuario ingres´
o al momento de
iniciar el proceso actual.
sanitized information (Dictionary) –
La informaci´
on anterior sanitizada.
restore settings(event)
Note: Este m´
etodo es privado.
Limpia y deja por defecto los valores est´
andar del Frame mostrado actual-
mente en la Ventana Principal.
El m´
etodo no aplica para regresar a M.O.P.s (Multi Objective Problems)
cargados anteriormente.
Parameters
event (String) – El evento del elemento gr´
afico
que acciona esta funci´
on.
update frame(event)
Note: Este m´
etodo es privado.
Muestra en la Ventana Principal el Frame actual.
Parameters
event (String) – El evento del elemento gr´
afico
que activa la funci´
on.
load mop example(elements)
Carga el M.O.P (Multi Objective Problem) seleccionado a los Frames co-
rrespondientes (Objective Functions y Decision Variables).
Parameters
elements (Array) – Un arreglo que contiene dos
elementos, el primero son las funciones objetivo pre-
cargadas mientras que el segundo son las variables
de decisi´
on tambi´
en precargadas. Ambas provie-
nen del men´
u secundario (v´
ease View/Additional/
MenuInternalOption/InternalOptionTab/
UNAM Facultad de Ciencias
56 Manual T´
ecnico
MOPExampleFrame.py, Controller/XML/
MOPExamples.xml).
resource path(relative path)
Esta funci´
on se utiliza para poder crear ejecutables apropiadamente.
A grandes rasgos el ejecutable se empaqueta en un directorio llamado MEIPASS,
entonces aqu´
ı se implementa la b´
usqueda de dicho archivo devolviendo un
path (ruta).
Returns La ruta del directorio MEIPASS.
Return type String
run()
Lanza la Ventana Principal.
3.2. Main (m´
odulo)
Contiene todos los elementos gr´
aficos para que el usuario pueda configurar los atributos
que intervienen en la ejecuci´
on de un M.O.E.A.
A continuaci´
on se colocan todos los elementos que constituen el m´
odulo en cuesti´
on:
3.2.1. Home (m´
odulo)
Contiene toda la informaci´
on posible para poder describir tanto los elementos que confor-
man el programa como su correcto uso.
Los elementos que constituyen a este m´
odulo son:
3.2.1.1. HomeFrame (clase)
Unifica dos elementos: Canvas e IntroductionFrame.
La raz´
on de haber hecho esto es que, cuando se a˜
naden demasiados elementos al
IntroductionFrame, se tiene que agregar una barra de desplazamiento para poder
acceder a los que se encuentran hasta abajo.
Dentro del ambiente de Tkinter, el elemento m´
as sencillo para lograr esto es un
Canvas, por ello se anida el IntroductionFrame al Canvas.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
UNAM Facultad de Ciencias
Manual T´
ecnico 57
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
update scrollbar(event=None)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
move to section(y coordinate)
Mueve la barra de desplazamiento (y por ende el contenido) con base en la
coordenada (en Y) que se le pase como par´
ametro.
Parameters
y coordinate – Coordenada que se necesita para
hace el desplazamiento. Oscila entre 0 y 1.
restore settings()
Restaura la configuraci´
on del Frame a la que ten´
ıa por defecto.
La clase actual se apoya del elemento mostrado a continuaci´
on:
3.2.1.1.1. IntroductionFrame (clase)
Contiene informaci´
on b´
asica y concisa sobre el producto de software, la cual es or-
ganizada y mostrada de acuerdo al n´
umero de secciones existentes en ´
este.
De manera secundaria proporciona la infraestructura para poder darle al usuario
un desplazamiento m´
as r´
apido entre dichas secciones.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
UNAM Facultad de Ciencias
58 Manual T´
ecnico
canvas function (Instance) – Una funci´
on alusiva
al funcionamiento del Canvas.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame.
Returns Tkinter.Frame
Return type Instance
go to selected section(event)
Note: Este m´
etodo es privado.
Con base en la liga elegida por el usuario, realiza el desplazamiento hacia la
secci´
on correspondiente.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
3.2.2. DecisionVariable (m´
odulo)
Proporciona los elementos gr´
aficos para que el usuario pueda insertar, modificar y elimi-
nar variables de decisi´
on con sus respectivos rangos.
Los elementos que constituyen al m´
odulo son:
3.2.2.1. DecisionVariableFrame (clase)
Realiza la fusi´
on de Canvas y VariableFrame, debido a que, cuando se agregan nu-
merosas variables al VariableFrame, se debe insertar una barra de desplazamiento
para poder acceder a aqu´
ellos que se encuentren hasta abajo.
Dentro del ambiente de Tkinter, el elemento m´
as sencillo para lograr este efecto
es un Canvas, por ello se anida el VariableFrame al Canvas.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
UNAM Facultad de Ciencias
Manual T´
ecnico 59
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
activate scroll(event)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento y con base en esta acci´
on la activa o
desactiva.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
update scrollbar(event=None)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
get information()
Regresa la informaci´
on recabada en el Frame.
Returns
Return type Dictionary
insert mop example(variables)In-
serta un M.O.P (Multi Objective Problem ´
o Problema Multi Objetivo).
En este caso significa que se insertar´
an las variables con sus respectivos ran-
gos en el Frame para poder hacer pruebas r´
apidas en el programa, habiendo
antes limpiado por completo el contenido del Frame.
(v´
ease Controller/XML/MOPExample.xml)
UNAM Facultad de Ciencias
60 Manual T´
ecnico
(v´
ease View/Additional/MenuInternalOption/InternalOptionFrame.py).
Parameters
functions (List) – Lista de variables para ser
insertadas en el Frame.
restore settings()
Restaura el contenido del Frame, en este caso significa que se eliminar´
a todo
lo que est´
e en ´
este y se dejar´
a una casilla vac´
ıa libre.
La clase actual se basa en el siguiente elemento:
3.2.2.1.1. VariableFrame (clase)
Proporciona bases gr´
aficas para que el usuario pueda insertar variables de decisi´
on,
as´
ı como informaci´
on relativa a ´
estas.
En t´
erminos generales, el usuario insertar´
a casillas para ingresar variables de deci-
si´
on, indicando tambi´
en el valor m´
ınimo y m´
aximo que podr´
an tener.
Es importante comentar que todas las variables de decisi´
on deben contener rangos
finitos, es decir, no se contemplan valores infinitos, aunque algunos M.O.P.s (Multi
Objective Problems ´
o Problemas Multi Objetivo) manejan este tipo de rangos.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
add variable(event)
Note: Este m´
etodo es privado.
Agrega una casilla al Frame.
Esta funci´
on se usa si fue ejecutada por un evento.
Parameters
UNAM Facultad de Ciencias
Manual T´
ecnico 61
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
delete single variable(event)
Note: Este m´
etodo es privado.
Elimina una casilla y todos los elementos gr´
aficos que la acompa˜
nan.
Tambi´
en elimina todo rastro que se encuentre en las estructuras l´
ogicas.
Parameters
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
grid widgets()
Note: Este m´
etodo es privado.
Coloca elementos en el Frame.
get current elements()
Regresa el n´
umero actual de casillas en el Frame.
Returns Cantidad de elementos en la estructura rows, donde se
guardan las casillas (Entries).
Return type Integer
get information()
Toma la informaci´
on del Frame y regresa las variables con sus rangos que
el usuario ingres´
o.
Returns Un diccionario que contiene una lista con las variables
(y rangos) escritas.
Return type Dictionary
insert mop example(variables)
Inserta un M.O.P (Multi Objective Problem) que no es m´
as que un conjun-
to de variables con sus rangos para que se pueda hacer m´
as r´
apidamente una
prueba.
Previo a ´
esto se limpia el Frame para insertar ´
unicamente el M.O.P.
(v´
ease Controller/XML/MOPExample.xml)
(v´
ease View/Additional/MenuInternalOption/InternalOptionFrame.py).
UNAM Facultad de Ciencias
62 Manual T´
ecnico
Parameters
functions (List) – Conjunto de variables para
insertar en el Frame.
insert variable(variable=None)
Coloca en el Frame una colecci´
on de elementos:
[casilla para insertar variable ,casilla de rango minimo, casilla de rango m´
axi-
mo, bot´
on para eliminar]
Si el par´
ametro function es None, se a˜
nade la casilla vac´
ıa, de lo contrario
se agrega ´
esta con la variable y sus rangos.
Parameters
function (String) – Una terna (nombre de la
variable, rango m´
aximo, rango m´
ınimo) para ser in-
sertada en las casillas correspondientes.
restore settings()
Restaura el contenido del Frame a sus valores por defecto.
Esto significa que borrar´
a cualquier contenido que se encuentre en existen-
cia y dejar´
a una casilla vac´
ıa.
3.2.3. ObjectiveFunction (m´
odulo)
Proporciona los elementos gr´
aficos para que el usuario pueda insertar, modificar y elimi-
nar funciones objetivo.
Sus elementos que lo conforman son:
3.2.3.1. ObjectiveFunctionFrame (clase)
Unifica dos elementos: Canvas y FunctionFrame.
La raz´
on de haber hecho esto es que, cuando se agregan muchas funciones al Fun-
ctionFrame, se tiene que agregar una barra de desplazamiento para poder acceder a
los que se encuentran hasta abajo.
Dentro del ambiente de Tkinter, el elemento m´
as sencillo para lograr esto es un
Canvas, por ello se anida el FunctionFrame al Canvas.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
UNAM Facultad de Ciencias
Manual T´
ecnico 63
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
activate scroll(event)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento y con base en esta acci´
on la activa o
desactiva.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
update scrollbar(event=None)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
get information()
Regresa la informaci´
on recabada en el Frame.
Returns Un diccionario que contiene una lista con las funciones
escritas.
Return type Dictionary
insert mop example(functions)
Inserta un M.O.P (Multi Objective Problem).
En este caso significa que se insertar´
an funciones para poder hacer pruebas
r´
apidas en el programa.
UNAM Facultad de Ciencias
64 Manual T´
ecnico
(v´
ease Controller/XML/MOPExample.xml)
(v´
ease View/Additional/MenuInternalOption/InternalOptionFrame.py).
Parameters
functions (List) – Lista de funciones para ser
insertadas en el Frame.
restore settings()
Restaura el contenido del Frame, en este caso significa que se eliminar´
a todo
lo que est´
e en ´
este y se dejar´
a una casilla vac´
ıa libre.
La clase actual toma como fundamento lo siguiente:
3.2.3.1.1. FunctionFrame (clase)
Esta clase proporciona una base gr´
afica para que el usuario pueda agregar tantas
functiones objetivo como desee.
A grandes rasgos el usuario podr´
a agregar casillas donde se colocar´
an las funciones
objetivo, esto utilizando un bot´
on.
De igual manera, las casillas pueden ser eliminadas usando un ´
ıcono que estar´
a cer-
ca de cada una de ´
estas.
Importante es mencionar que las funciones deben estar escritas en sintaxis de Pyt-
hon.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
add function(event)
Note: Este m´
etodo es privado.
Agrega una casilla al Frame.
Esta funci´
on se usa si fue ejecutada por un evento.
Parameters
UNAM Facultad de Ciencias
Manual T´
ecnico 65
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
delete single function(event)
Note: Este m´
etodo es privado.
Elimina una casilla y todos los elementos gr´
aficos que la acompa˜
nan.
Tambi´
en elimina todo rastro que se encuentre en las estructuras l´
ogicas.
Parameters
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
grid widgets()
Note: Este m´
etodo es privado.
Coloca elementos en el Frame.
get current elements()
Regresa el n´
umero actual de casillas en el Frame.
Returns Cantidad de elementos en la estructura rows, donde se
guardan las casillas (Entries).
Return type Integer
get information()
Toma la informaci´
on del Frame y regresa las funciones objectivo que el usua-
rio insert´
o.
Returns Un diccionario que contiene una lista con las funciones
escritas.
Return type Dictionary
insert function(function=None)
Coloca en el Frame una colecci´
on de elementos:
[casilla para insertar funcion, opci´
on de maximizar, opci´
on de minimizar,
bot´
on para eliminar]
Si el par´
ametro function es None, se agrega la casilla vac´
ıa, de lo contrario
se a˜
nade ´
esta con la funci´
on.
Parameters
UNAM Facultad de Ciencias
66 Manual T´
ecnico
function (String) – Una funci´
on para ser inser-
tada en el primer elemento de la colecci´
on.
insert mop example(functions)
Inserta un M.O.P (Multi Objective Problem) que no es m´
as que un conjunto
de funciones para que se pueda hacer m´
as r´
apidamente una prueba.
Previo a ´
esto se limpia el Frame para insertar ´
unicamente el M.O.P.
(v´
ease Controller/XML/MOPExample.xml)
(v´
ease View/Additional/MenuInternalOption/InternalOptionFrame.py).
Parameters
functions (List) – Conjunto de funciones para
insertar en el Frame.
restore settings()
Restaura el contenido del Frame a sus valores por defecto.
Esto significa que borrar´
a cualquier contenido que se encuentre en existen-
cia y dejar´
a una casilla vac´
ıa.
3.2.4. Population (m´
odulo)
Proporciona las estructuras gr´
aficas para que el usuario pueda configurar atributos de la
Poblaci´
on.
Los elementos que conforman al m´
odulo son los siguientes:
3.2.4.1. PopulationFrame (clase)
Unifica y mantiene un control sobre las clases PopulaceFrame y FitnessFrame, esto
con el fin de poder colocar los elementos apropiadamente y agilizar el intercambio
de informaci´
on con el usuario.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
UNAM Facultad de Ciencias
Manual T´
ecnico 67
get information()
Toma la informaci´
on propiciada en cada Frame y despu´
es la unifica para re-
gresar un s´
olo conjunto de informaci´
on.
Returns Un diccionario con la informaci´
on de PopulaceFrame y
FitnessFrame.
Return type Dictionary
restore settings()
Restaura los valores por defecto en ambos Frames.
3.2.4.2. TemplatePopulationFrame (clase)
Esta clase proporciona la infraestructura gr´
afica para que el usuario pueda elegir
t´
ecnicas y configurar atributos concernientes al Fitness de una Poblaci´
on y a la Po-
blaci´
on en general.
A grandes rasgos se trata de una plantilla que deber´
an implementar las clases Fit-
nessFrame y PopulaceFrame.
La clase permite la selecci´
on de cada posible t´
ecnica disponible y autom´
aticamente
se muestran los par´
ametros necesarios (si los hay) para cada una de ´
estas.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
create dynamic widgets()
Note: Este m´
etodo es privado.
Inicializa los elementos din´
amicos del Frame, esto es, de acuerdo al tipo que
lleva cada par´
ametro se crear´
a un widget diferente.
update widgets(event=None)
UNAM Facultad de Ciencias
68 Manual T´
ecnico
Note: Este m´
etodo es privado.
Realiza solamente la actualizaci´
on y colocaci´
on de elementos din´
amicos en
el Frame.
Si el par´
ametro event es distinto de None, significa que se lanz´
o un evento
que provocar´
a que se actualicen los par´
ametros de acuerdo con la t´
ecnica se-
leccionada.
Parameters
event (String) – Contiene el valor del elemento
que ejecut´
o esta funci´
on.
get information()
Recolecta la informaci´
on que ha seleccionado e introducido el usuario, tam-
bi´
en la organiza para que se pueda utilizar apropiadamente.
Returns
Un diccionario que contiene:
Clase,
T´
ecnica,
Parametros
Return type Dictionary
grid widgets()
Permite la colocaci´
on adecuada de elementos est´
aticos y din´
amicos, conside-
rando adem´
as el espacio o caracter´
ısticas necesarias de redimensionamiento
para ´
estos ´
ultimos.
restore settings()
Asigna los valores por defecto tanto de las t´
ecnicas como de sus respectivos
par´
ametros, tambi´
en limpia aqu´
ellos en donde se hayan insertado valores.
Los siguientes elementos implementan la plantilla actual:
3.2.4.2.1. PopulaceFrame (clase)
Esta clase proporciona la infraestructura gr´
afica para que el usuario pueda ele-
gir m´
etodos y caracter´
ısticas concernientes a la conformaci´
on de la Poblaci´
on.
Tambi´
en hereda atributos de la clase TemplatePopulationFrame con el fin de es-
UNAM Facultad de Ciencias
Manual T´
ecnico 69
tablecer una forma m´
as r´
apida y ordenada de colocar componentes y recolectar la
informaci´
on de ´
estos.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
get information()
Recolecta la informaci´
on gen´
erica (usando el m´
etodo de la clase Padre),
y tambi´
en se le a˜
nade aqu´
ella recolectada exclusivamente en esta clase.
Returns
Un diccionario que contiene:
M´
etodos gen´
ericos,
N´
umero de Generaciones,
Tama ˜
no de la Poblaci´
on,
N´
umero de Decimales.
Return type Dictionary
restore settings()
Por un lado, restaura el contenido de los elementos pertenecientes s´
olo a esta
clase, y por el otro, activa el m´
etodo de la clase Padre que realiza una restau-
raci´
on de los elementos gen´
ericos.
3.2.4.2.2. FitnessFrame (clase)
Esta clase proporciona la infraestructura gr´
afica para que el usuario pueda elegir
m´
etodos concernientes a la asignaci´
on del Fitness para la Poblaci´
on.
Adem´
as hereda atributos de la clase TemplatePopulationFrame para facilitar la co-
locacion y extracci´
on de informaci´
on pertinente para el usuario.
Parameters
UNAM Facultad de Ciencias
70 Manual T´
ecnico
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
get information()
Llama al m´
etodo de la clase Padre, el cual recopila toda la informaci´
on elegi-
da por el usuario y la regresa en forma de diccionario.
Returns Diccionario con informaci´
on de los m´
etodos gen´
ericos.
Return type Dictionary
restore settings()
Llamar al m´
etodo de la clase Padre, el cual restaura los valores por defecto
de los elementos din´
amicos y est´
aticos del Frame.
3.2.5. GeneticOperator (m´
odulo)
Proporciona los elementos gr´
aficos para que el usuario pueda realizar operaciones rela-
cionadas con la Selecci´
on, Cruza y Mutaci´
on de Individuos de una Poblaci´
on.
Los elementos que lo conforman son:
3.2.5.1. GeneticOperatorFrame (clase)
Re´
une y controla las clases SelectionFrame, CrossoverFrame y MutationFrame con
la finalidad de colocar los elementos gr´
aficos apropiadamente y agilizar el inter-
cambio de informaci´
on con el usuario.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
UNAM Facultad de Ciencias
Manual T´
ecnico 71
Returns Tkinter.Frame
Return type Instance
get information()
Toma la informaci´
on propiciada en cada Frame y despu´
es la unifica para re-
gresar un s´
olo conjunto de informaci´
on.
Returns Un diccionario con la informaci´
on de SelectionFrame,
CrossoverFrame y MutationFrame.
Return type Dictionary
restore settings()
Realiza la restauraci´
on de informaci´
on y contenido en cada uno de los Fra-
mes.
3.2.5.2. TemplateGeneticOperatorFrame (clase)
Proporciona la infraestructura gr´
afica para que el usuario pueda elegir t´
ecnicas y
configurar atributos concernientes a la Selecci´
on, Cruza y Mutaci´
on de Individuos
de una Poblaci´
on.
A grandes rasgos se trata de una plantilla que deber´
an implementar las clases Se-
lectionFrame, CrossoverFrame y MutationFrame.
La clase permite la selecci´
on de cada posible t´
ecnica disponible y autom´
aticamente
se muestran los par´
ametros necesarios (si los hay) para cada una de ´
estas.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
sort techniques (Boolean) – Indica si las t´
ecnicas
disponibles se ordenan alfab´
eticamente o no.
Returns Tkinter.Frame
Return type Instance
dynamic widgets()
UNAM Facultad de Ciencias
72 Manual T´
ecnico
Note: Este m´
etodo es privado.
Inicializa los elementos din´
amicos del Frame, esto es, de acuerdo al tipo que
lleva cada par´
ametro se crear´
a un widget diferente.
update widgets(event=None)
Note: Este m´
etodo es privado.
Realiza solamente la actualizaci´
on y colocaci´
on de elementos din´
amicos en
el Frame.
Si el par´
ametro event es distinto de None, significa que se lanz´
o un evento
que provocar´
a que se actualicen los par´
ametros de acuerdo con la t´
ecnica se-
leccionada.
Parameters
event (String) – Contiene el valor del elemento
que ejecut´
o esta funci´
on.
get information()
Recolecta la informaci´
on que ha seleccionado e introducido el usuario, tam-
bi´
en la organiza para que se pueda utilizar apropiadamente.
Returns
Un diccionario que contiene:
Clase,
T´
ecnica,
Par´
ametros
Return type Dictionary
grid widgets()
Permite la colocaci´
on adecuada de elementos est´
aticos y din´
amicos, conside-
rando adem´
as el espacio o caracter´
ısticas necesarias de redimensionamiento
para ´
estos ´
ultimos.
restore settings()
Asigna los valores por defecto tanto de las t´
ecnicas como de sus respectivos
par´
ametros, tambi´
en limpia aqu´
ellos en donde se hayan insertado valores.
Las clases que implementan esta plantilla son las siguientes:
UNAM Facultad de Ciencias
Manual T´
ecnico 73
3.2.5.2.1. SelectionFrame (clase)
Esta clase proporciona la infraestructura gr´
afica para que el usuario pueda elegir
m´
etodos y caracter´
ısticas relacionadas con la selecci´
on de Individuos.
Tambi´
en hereda atributos de la clase TemplateGeneticOperatorFrame para facilitar
la carga de elementos en el Frame y su correspondiente recolecci´
on de informaci´
on.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
get information()
Recolecta la informaci´
on relativa a esta clase haciendo uso del m´
etodo de
la clase Padre.
Returns Diccionario con informaci´
on de los m´
etodos gen´
ericos.
Return type Dictionary
restore settings()
Ejecuta el m´
etodo de la clase Padre, el cual restaura los valores por defecto
de los elementos din´
amicos y est´
aticos del Frame.
3.2.5.2.2. CrossoverFrame (clase)
Esta clase proporciona la infraestructura gr´
afica para que el usuario pueda elegir
t´
ecnicas y caracter´
ısticas concernientes a la Cruza entre Individuos.
Tambi´
en hereda atributos de la clase TemplateGeneticOperatorFrame para facilitar
la carga de elementos en el Frame y su correspondiente recolecci´
on de informaci´
on.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
UNAM Facultad de Ciencias
74 Manual T´
ecnico
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
get information()
Recolecta la informaci´
on gen´
erica (usando el m´
etodo de la clase Padre),
y tambi´
en se le a˜
nade aqu´
ella recolectada exclusivamente en esta clase.
Returns
Un diccionario que contiene:
M´
etodos gen´
ericos,
Probabilidad de cruza.
Return type Dictionary
restore settings()
Ejecuta el m´
etodo de la clase Padre, el cual restaura los valores por defecto
de los elementos din´
amicos y est´
aticos del Frame.
3.2.5.2.3. MutationFrame (clase)
Esta clase proporciona la infraestructura gr´
afica para que el usuario pueda elegir
t´
ecnicas y caracter´
ısticas relativas a la Mutaci´
on de Individuos.
Tambi´
en hereda atributos de la clase TemplateGeneticOperatorFrame para facili-
tar la carga autom´
atica de elementos en el Frame y su consecuente recolecci´
on de
informaci´
on.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
UNAM Facultad de Ciencias
Manual T´
ecnico 75
get information()
Recolecta la informaci´
on gen´
erica (usando el m´
etodo de la clase Padre),
y tambi´
en se le a˜
nade aqu´
ella recolectada exclusivamente en esta clase.
Returns
Un diccionario que contiene:
M´
etodos gen´
ericos,
Probabilidad de mutaci´
on.
Return type Dictionary
restore settings()
Ejecuta el m´
etodo de la clase Padre, el cual restaura los valores por defecto
de los elementos din´
amicos y est´
aticos del Frame.
3.2.6. MOEA (m´
odulo)
Proporciona los elementos gr´
aficos para que el usuario realice configuraciones concer-
nientes a los M.O.E.A.s (Multi-Objective Evolutionary Algorithms ´
o Algoritmos Evo-
lutivos Multiobjetivo) y sus atributos relacionados.
Sus elementos son los siguientes:
3.2.6.1. MOEAFrame (clase)
Unifica los Frames AlgorithmFrame y SharingFunctionFrame, la raz´
on de ´
esto es
para facilitar el acomodo de componentes de manera individual, para as´
ı garantizar
un acceso asequible a la informaci´
on.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
get information()
Toma la informaci´
on solicitada en cada Frame y despu´
es la unifica para re-
gresar un s´
olo conjunto de informaci´
on.
UNAM Facultad de Ciencias
76 Manual T´
ecnico
Returns Un diccionario con la informaci´
on de AlgorithmFrame
y SharingFunctionFrame.
Return type Dictionary
restore settings()
Restaura los valores por defecto en cada Frame.
La clase actual se apoya de los siguientes elementos:
3.2.6.1.1. AlgorithmFrame (clase)
Esta clase proporciona una base gr´
afica para que el usuario pueda seleccionar t´
ecni-
cas con sus par´
ametros correspondientes (si es que tienen) referentes a los M.O.E.A.s
(Multi-Objective Evolutionary Algorithms ´
o Algoritmos Evolutivos Multiobje-
tivo).
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
create dynamic widgets()
Note: Este m´
etodo es privado.
Inicializa los elementos din´
amicos del Frame, esto es, de acuerdo al tipo que
lleva cada par´
ametro se crear´
a un widget diferente.
grid widgets()
Note: Este m´
etodo es privado.
Coloca elementos en el Frame, tanto est´
aticos como din´
amicos.
UNAM Facultad de Ciencias
Manual T´
ecnico 77
update widgets(event=None)
Note: Este m´
etodo es privado.
Realiza solamente la actualizaci´
on y colocaci´
on de elementos din´
amicos en
el Frame.
Si el par´
ametro event es distinto de None, significa que se lanz´
o un evento
que provocar´
a que se actualicen los par´
ametros de acuerdo con la t´
ecnica se-
leccionada.
Parameters
event (String) – Contiene el valor del elemento
que ejecut´
o esta funci´
on.
get information()
Recolecta la informaci´
on que ha seleccionado e introducido el usuario, tam-
bi´
en la organiza para que se pueda utilizar apropiadamente.
Returns
Un diccionario que contiene:
Clase,
T´
ecnica,
Par´
ametros.
Return type Dictionary
restore settings()
Asigna los valores por defecto tanto de las t´
ecnicas como de sus respectivos
par´
ametros, tambi´
en limpia aqu´
ellos en donde se hayan insertado valores.
3.2.6.1.2. SharingFunctionFrame (clase)
Esta clase proporciona una base gr´
afica para que el usuario pueda seleccionar m´
eto-
dos con sus respectivos par´
ametros (si es que tienen) referentes a Sharing Fun-
ction.
Una t´
ecnica de Sharing Function sirve para aplicar una selecci´
on m´
as intensiva de
Individuos en caso de haber un “empate” entre ´
estos.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
UNAM Facultad de Ciencias
78 Manual T´
ecnico
name (String) – Identificador (´
unico) que tendr´
a el Fra-
me.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XMLParser.py).
Returns Tkinter.Frame
Return type Instance
create dynamic widgets()
Note: Este m´
etodo es privado.
Inicializa los elementos din´
amicos del Frame, esto es, de acuerdo al tipo que
lleva cada par´
ametro se crear´
a un widget diferente.
grid widgets()
Note: Este m´
etodo es privado.
Coloca elementos en el Frame, tanto est´
aticos como din´
amicos.
update widgets(event=None)
Note: Este m´
etodo es privado.
Realiza solamente la actualizaci´
on y colocaci´
on de elementos din´
amicos en
el Frame.
Si el par´
ametro event es distinto de None, significa que se lanz´
o un evento
que provocar´
a que se actualicen los par´
ametros de acuerdo con la t´
ecnica se-
leccionada.
Parameters
event (String) – Contiene el valor del elemento
que ejecut´
o esta funci´
on.
get information()
Recolecta la informaci´
on que ha seleccionado e introducido el usuario, tam-
bi´
en la organiza para que se pueda utilizar apropiadamente.
Returns
UNAM Facultad de Ciencias
Manual T´
ecnico 79
Un diccionario que contiene:
Clase,
T´
ecnica,
Par´
ametros.
Return type Dictionary
restore settings()
Asigna los valores por defecto tanto de las t´
ecnicas como de sus respectivos
par´
ametros, tambi´
en limpia aqu´
ellos en donde se hayan insertado valores.
3.3. Additional (m´
odulo)
Proporciona elementos gr´
aficos que, aunque no tienen cabilda en la Ventana Principal,
s´
ı contienen herramientas auxiliares de importancia.
El m´
odulo consta de los siguientes elementos:
3.3.1. GenerationSignalToplevel (clase)
Se trata de un Toplevel (ventana independiente) que muestra el progreso de las
generaciones al momento de ejecutar un Task.
Esta ventana aunque es creada y mostrada en los procesos de la capa View, ser´
a en
Model/MOEA en donde se utilice y actualice, ya que la idea es crear una “se˜
nal”
que indique al usuario el progreso del MOEA en ejecuci´
on para que se d´
e una idea
del desempe˜
no del algoritmo.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
path image logo (String) – La ruta al logotipo que
se usa en esta ventana independiente.
execution task number (Integer)–N´
umero que
indica el actual Task en ejecuci´
on (v´
ease View/Additional/
ResultsGrapher/ResultsGrapherToplevel.py).
Returns Tkinter.Toplevel
Return type Instance
UNAM Facultad de Ciencias
80 Manual T´
ecnico
center()
Note: Este m´
etodo es privado.
Centra la ventana independiente con respecto de la Ventana Principal.
En otras palabras, la ventana independiente ser´
a colocada en el centro de la
Ventana Principal.
do nothing()
Note: Este m´
etodo es privado.
Simplemente es una funci´
on “dummy” que no realiza nada.
Es utilizada como sustituto de la funci´
on del ´
ıcono “Cerrar” y as´
ı evitar que
el usario intencionadamente intente ocluir la ventana del n´
umero de genera-
ciones.
close()
Oculta y elimina toda referencia gr´
afica y l´
ogica de la ventana independiente,
indicando as´
ı que el n´
umero de generaciones ha alcanzado su l´
ımite.
hide()
Oculta la ventana independiente de la pantalla pero no la elimina de los re-
gistros gr´
aficos.
show()
Reactiva la ventana independiente, realizando adem´
as durante esta ejecu-
ci´
on un par de consignas m´
as para dar una experiencia de usuario suficiente y
concisa.
update current generation(current generation)
Actualiza la generaci´
on actual en la ventana independiente.
T´
ıpicamente esta funci´
on ser´
a usada en todos los algoritmos de la capa Mo-
del/MOEA, pues es all´
ı donde se designar´
a el progreso del algoritmo que a su
vez se ver´
a reflejado en la capa de View.
Parameters
current generation (Integer) – La genera-
ci´
on que est´
a corriendo actualmente en el MOEA.s
Returns 1 si se ha alcanzado la generaci´
on l´
ımite, 0 en otro ca-
so.
Return type Integer
UNAM Facultad de Ciencias
Manual T´
ecnico 81
update number of generations(number of generations)
Actualiza el n´
umero total de generaciones.
Generalmente esta funci´
on ser´
a llamada desde Controller/Controller.py ya
que ah´
ı es donde se decide si las configuraciones iniciales son adecuadas para
poder ejecutar el algoritmo.
Parameters
number of generations (Integer.) – El
n´
umero de generaciones total que tendr´
a el MOEA.
3.4. MenuInternalOption (m´
odulo)
Contiene elementos gr´
aficos que permiten acceder a configuraciones internas del progra-
ma y tambi´
en a M.O.P.s (Multi-Objective Problems) previamente cargados para hacer
uso f´
acil de ellos.
3.4.1. MenuInternalOption (clase)
Se crea el Men´
u de Opciones Internas o Men´
u Secundario.
B´
asicamente se trata de una serie de caracter´
ısticas que, aunque no forman parte
esencial del programa, s´
ı ofrecen alternativas que pueden facilitar la experiencia de
usuario.
Este men´
u ser´
a atado al Frame Principal y desde all´
ı el usuario podr´
a tener acce-
so a las opciones que aqu´
ı se describen.
Parameters
parent (Tkinter.Frame) – El Frame Padre al que
pertenece esta implementaci´
on.
path image logo (String) – La ruta al logotipo que
se usa en esta ventana independiente.
features (Dictionary) – Un diccionario con las
caracter´
ısticas que deber´
a tener cada una de las opciones
listadas.
Returns Tkinter.Menu
Return type Instance
launch about toplevel()
UNAM Facultad de Ciencias
82 Manual T´
ecnico
Note: Este m´
etodo es privado.
Abre la ventana independiente (Toplevel) About. Tambi´
en verifica que se
abra una y s´
olo una instancia de dicha ventana.
launch internal option toplevel()
Note: Este m´
etodo es privado.
Abre la ventana independiente (Toplevel) Internal Options (o simplemente
Options).
Tambi´
en verifica que se abra una y s´
olo una instancia de dicha ventana.
about toplevel custom close()
Indica que la ´
unica instancia que debe crearse para la opci´
on About est´
a dis-
ponible.
internal option toplevel custom close()
Indica que la ´
unica instancia que debe crearse para la opci´
on Options est´
a dis-
ponible.
El m´
odulo consta de las siguientes caracter´
ısticas:
3.4.1.1. InternalOptionToplevel (clase)
Contiene un Men´
u peque˜
no con pesta˜
nas que indican las caracter´
ısticas internas del
sistema a las que puede tener acceso el usuario.
En su mayor´
ıa se trata de caracter´
ısticas que muestran los m´
etodos, t´
ecnicas y sis-
temas auxiliares que garantizan un manejo m´
as armonioso del programa y si as´
ı lo
desea el usuario, modificarlos para ajustar su desempe˜
no.
Parameters
parent (Tkinter.Menu) – El elemento Padre al que
pertenece la actual ventana independiente (Toplevel).
path image logo (String) – La ruta al logotipo que
se usa en esta ventana independiente.
features (Dictionary) – Un diccionario que con-
tiene las caracter´
ısticas necesarias que ser´
an mostradas en
esta ventana independiente.
UNAM Facultad de Ciencias
Manual T´
ecnico 83
custom function (Instance) – Una variable que
contiene una funci´
on, la cual redefinir´
a m´
as apropiadamen-
te el comportamiento de la actual Ventana Principal con
respecto de su Frame Padre.
Returns La ventana independiente que contiene la informaci´
on
Return type Tkinter.Toplevel
center()
Note: Este m´
etodo es privado.
Centra la ventana independiente con respecto de la Ventana Principal.
En otras palabras, la ventana independiente ser´
a colocada en el centro de la
Ventana Principal.
close()
Note: Este m´
etodo es privado.
Cierra y elimina todo rastro de esta ventana independiente.
3.4.1.2. InternalOptionTab (m´
odulo)
Contiene las partes gr´
aficas que conformar´
an cada una de las pesta˜
nas concernien-
tes al Toplevel (ventana independiente) de opciones internas (InternalOptionTo-
plevel).
Consta de los siguientes elementos:
3.4.1.2.1. MOPExampleFrame (clase)
Unifica dos elementos: Canvas y MOPFrame.
La raz´
on de esto es que, en promedio la informaci´
on mostrada por MOPFrame re-
basar´
a el tama˜
no de la ventana de la informaci´
on final (v´
ease View/Additional/
ResultsGrapher/ResultsGrapherTopLevel.py), es entonces que se deben agre-
gar barras de desplazamiento para poder acceder al contenido que quedar´
ıa oculto.
Uno de los elementos en Tkinter m´
as sencillos que cumplen con este cometido es
un Canvas. Luego entonces esa es la raz´
on de tal fusi´
on.
Parameters
UNAM Facultad de Ciencias
84 Manual T´
ecnico
parent (Tkinter.Toplevel) – El elemento Padre al
que pertenece el actual Frame.
features (Dictionary) – Un diccionario que con-
tiene las caracter´
ısticas necesarias que ser´
an mostradas en
este Frame.
Returns El Frame que contiene la informaci´
on se˜
nalada.
Return type Tkinter.Frame
update scrollbar(event)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
La clase actual tiene como base el siguiente elemento:
3.4.1.2.2. MOPFrame (clase)
Muestra la informaci´
on relativa a los M.O.P.s y provee de m´
etodos que facilitan la
carga de ´
estos en la Ventana Principal.
Un M.O.P. (Multi Objective Problem) es un conjunto de funciones y variables
bien definidas que ya han sido previamente estudiadas, as´
ı como su comportamien-
to en conjunto; la idea es proporcionarle al usuario un ambiente de carga f´
acil de
datos para que pueda probar los ejemplos ya tratados por muchos autores en los
libros que se citar´
an en el trabajo escrito.
Parameters
parent (Tkinter.Frame) – El elemento Padre al que
pertenece el actual Frame.
grandparent (Tkinter.Toplevel) – El elemento
Padre del Padre al que pertenece el actual Frame.
features (Dictionary) – Un diccionario que con-
tiene las caracter´
ısticas necesarias que ser´
an mostradas en
UNAM Facultad de Ciencias
Manual T´
ecnico 85
este Frame.
Returns El Frame que contiene la informaci´
on se˜
nalada.
Return type Tkinter.Frame
get mop example(event)
Note: Este m´
etodo es privado.
Con base en la selecci´
on de M.O.P. hecha por el usuario, se carga ´
este en la
Ventana Principal.
Parameters
event (String) – El evento del elemento gr´
afico
que activa esta funci´
on.
update current mop(event=None)
Note: Este m´
etodo es privado.
Despliega la informaci´
on relacionada con el M.O.P. seleccionado.
Parameters
event (String) – El evento del elemento gr´
afico
que activa esta funci´
on.
3.4.1.2.3. FeatureFrame (clase)
Unifica dos elementos: Canvas y CharacteristicFrame.
La raz´
on de esto es que, en promedio la informaci´
on mostrada por Characteris-
ticFrame rebasar´
a el tama˜
no de la ventana de la informaci´
on final (v´
ease View/
Additional/ResultsGrapher/ResultsGrapherTopLevel.py), es entonces que se
deben agregar barras de desplazamiento para poder acceder al contenido que que-
dar´
ıa oculto.
Uno de los elementos en Tkinter m´
as sencillos que cumplen con este cometido es
un Canvas. Luego entonces esa es la raz´
on de tal fusi´
on.
Parameters
parent (Tkinter.Toplevel) – El elemento Padre al
que pertenece el actual Frame.
UNAM Facultad de Ciencias
86 Manual T´
ecnico
features (Dictionary) – Un diccionario que con-
tiene las caracter´
ısticas necesarias que ser´
an mostradas en
este Frame.
Returns El Frame que contiene la informaci´
on se˜
nalada.
Return type Tkinter.Frame
update scrollbar(event)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
La clase actual se apoya del siguiente elemento:
3.4.1.2.4. CharacteristicFrame (clase)
Despliega informaci´
on concerniente a todas las t´
ecnicas (con sus respectivos par´
ame-
tros) disponibles para el usuario.
Se agrupan ´
estas en las mismas categor´
ıas que presenta el programa, m´
as en con-
creto, las secciones que conforman a la Ventana Principal (v´
ease View/
MainWindow.py).
Tambi´
en se˜
nala someramente las instrucciones necesarias para que el programa
pueda reconocer cualquier t´
ecnica que desarrolle el usuario.
Parameters
parent (Tkinter.Toplevel) – El elemento Padre al
que pertenece el actual Frame.
features (Dictionary) – Un diccionario que con-
tiene las caracter´
ısticas necesarias que ser´
an mostradas en
este Frame.
Returns El Frame que contiene la informaci´
on se˜
nalada.
Return type Tkinter.Frame
UNAM Facultad de Ciencias
Manual T´
ecnico 87
3.4.1.2.5. PythonExpressionFrame (clase)
Realiza la fusi´
on de Canvas y ExpressionFrame, debido a que, cuando se agregan
numerosas variables al ExpressionFrame, se debe insertar una barra de desplaza-
miento para poder acceder a aqu´
ellos que se encuentren hasta abajo.
Dentro del ambiente de Tkinter, el elemento m´
as sencillo para lograr este efecto
es un Canvas, por ello se anida el ExpressionFrame al Canvas.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
features (Dictionary) – Conjunto de t´
ecnicas con
sus respectivos par´
ametros para que se puedan cargar au-
tom´
aticamente en este Frame (v´
ease Controller/XML/
PythonExpressions.xml).
Returns Tkinter.Frame
Return type Instance
activate scroll(event=None)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento y con base en esta acci´
on la activa o
desactiva.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
update scrollbar(event=None)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
UNAM Facultad de Ciencias
88 Manual T´
ecnico
La clase actual toma como referencia el siguiente elemento:
3.4.1.2.6. ExpressionFrame (clase)
Ofrece opciones simples para mostrar y a˜
nadir expresiones de Python.
Lo anterior ocurre ya que al momento de crear y evaluar funciones objetivo hay
algunas palabras reservadas que no pueden ser usadas en Python directamente si no
se hace un renombramiento apropiado.
Dicha informaci´
on se encuentra en Controller/XML/PythonExpressions.xml
Parameters
parent (Tkinter.Toplevel) – El elemento Padre al
que pertenece el actual Frame.
features (Dictionary) – Un diccionario que con-
tiene las caracter´
ısticas necesarias que ser´
an mostradas en
este Frame.
Returns El Frame que contiene la informaci´
on se˜
nalada.
Return type Tkinter.Frame
add expression(event)
Note: Este m´
etodo es privado.
Inserta una casilla que conforma una expresi´
on dentro del Frame.
Parameters
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
delete single expression(event)
Note: Este m´
etodo es privado.
Elimina una expresi´
on y todos los elementos gr´
aficos que la acompa˜
nan.
Tambi´
en elimina todo rastro que se encuentre en las estructuras l´
ogicas.
Parameters
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
UNAM Facultad de Ciencias
Manual T´
ecnico 89
get information()
Note: Este m´
etodo es privado.
Toma la informaci´
on del Frame (en espec´
ıfico de las casillas) y regresa las
expresiones con sus respectivos equivalentes en Python.
Returns Una lista que contiene arreglos de dos elementos donde
el primero es la expresi´
on normal mientras que el segundo
es la expresi´
on equivalente en Python.
Return type List
insert expression(expression=None)
Note: Este m´
etodo es privado.
Coloca en el Frame una colecci´
on de elementos:
[etiqueta para expresi´
on normal, expresi´
on normal, etiqueta para expresi´
on de
Pyrhon, expresi´
on de Python, bot´
on para eliminar]
Si el par´
ametro expression es None, se a˜
nade la casilla vac´
ıa, de lo contrario
se agrega ´
esta con la informaci´
on pertinente.
Parameters
expression (Array) – Un arreglo con dos ele-
mentos, el primero contiene la expresi´
on normal
mientras que el segundo maneja la informaci´
on de
la expresi´
on equivalente en Python.
load expressions()
Note: Este m´
etodo es privado.
Carga las expresiones a manera de contenido gr´
afico en el Frame.
Dichas expresiones son tomadas del archivo Controller/XML/
PythonExpressions.xml.
save changes(event)
UNAM Facultad de Ciencias
90 Manual T´
ecnico
Note: Este m´
etodo es privado.
Toma la informaci´
on existente en las casillas y procede a sobreescribir el ar-
chivo Controller/XML/PythonExpressions.xml con la informaci´
on reci´
en
recabada.
Parameters
event (String) – Identificador del elemento
gr´
afico que activ´
o la funci´
on.
get current elements()
Regresa el n´
umero actual de casillas en el Frame.
Returns Cantidad de elementos en la estructura rows, donde se
guardan las casillas (Entry’s).
Return type Integer
3.4.1.3. AboutToplevel (clase)
Esta ventana independiente (Toplevel) proporciona informaci´
on b´
asica del progra-
ma as´
ı como de sus desarrolladores.
Parameters
parent (Tkinter.Menu) – El elemento Padre al que
pertenece la actual ventana independiente (Toplevel).
path image logo (String) – La ruta al logotipo que
se usa en esta ventana independiente.
custom function (Instance) – Una variable que
contiene una funci´
on, la cual redefinir´
a m´
as apropiadamen-
te el comportamiento de la actual Ventana Principal con
respecto de su Frame Padre.
Returns Tkinter.Toplevel
Return type Instance
center()
Note: Este m´
etodo es privado.
UNAM Facultad de Ciencias
Manual T´
ecnico 91
Centra la ventana independiente con respecto de la Ventana Principal.
En otras palabras, la ventana independiente ser´
a colocada en el centro de la
Ventana Principal.
close(custom function)
Note: Este m´
etodo es privado.
Cierra y elimina todo rastro de esta ventana independiente.
Parameters
custom function (Instance) – Una variable
que contiene una funci´
on que ha de ejecutarse dentro
de este m´
etodo.
3.4.2. ResultsGrapher (m´
odulo)
Proporciona los elementos gr´
aficos para poder presentar las gr´
aficas de los resultados que
ha arrojado la ejecuci´
on de alg´
un M.O.E.A.
Consta de los siguientes elementos:
3.4.2.1. ResultsGrapherToplevel (clase)
Esta clase lanza una ventana independiente que muestra los resultados arrojados
por una configuraci´
on previa del usuario.
Primero que nada es menester mencionar que una ventana independiente es un To-
plevel en Tkinter, la cual es casi ajena a la Ventana Principal (v´
ease View/Main/
MainWindow.py), pero si ´
esta ´
ultima es cerrada, se eliminar´
an tambi´
en las venta-
nas independientes creadas.
Cada ventana independiente mostrar´
a el n´
umero de Task, es decir, el orden en el
que fue procesada la informaci´
on con respecto de otros Tasks.
Enti´
endase por Task a una ejecuci´
on de alg´
un algoritmo MOEA bajo un cierto con-
junto de configuraciones iniciales.
As´
ı, los Tasks ser´
an mostrados en una ventana independiente. La numeraci´
on de los
Tasks ir´
a siempre en orden progresivo, lo que significa que el n´
umero ser´
a reinicia-
lizado s´
olamente volviendo a ejecutar el programa principal.
De esta manera es posible tener varias ventanas independientes abiertas y en cues-
tiones m´
as generales, es posible ejecutar varios Tasks simult´
aneamente, ya que el
programa es multi-threading en ese sentido.
UNAM Facultad de Ciencias
92 Manual T´
ecnico
Finalmente, la informaci´
on ser´
a mostrada en dos pesta˜
nas: en una (SummaryFra-
me) se otorga un resumen de todas las funciones objetivo, variables de decisi´
on,
MOEA usado y configuraciones adicionales en el Task.
En la otra (GraphFrame) se colocan todas las gr´
aficas pertinentes producto de
la ejecuci´
on del MOEA con las funciones objectivo, variables de decisi´
on y con-
figuraciones ingresadas (v´
ease Model/Community/Community.py) (v´
ease View/
Additional/ResultsGrapher/GraphFrame.py).
Si por cualquier circunstancia llega a haber una falla interna durante la ejecuci´
on
del proceso, ninguna de las dos pesta˜
nas ser´
a mostrada y en su lugar aparecer´
a una
de error (ErrorFrame), especificando adem´
as el tipo de error y en qu´
e parte de
Model (´
o Modelo) ocurri´
o.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
path image logo (String) – La ruta al logotipo que
se usa en esta ventana independiente.
execution task count (Integer)–N´
umero que
indica el actual Task en ejecuci´
on.
main features (Dictionary) – Diccionario que
contiene, entre otras cosas, los nombres de los par´
ametros
asociados a cada t´
ecnica.
gathered information (Dictionary) – Dicciona-
rio que contiene todas las configuraciones recabadas ingre-
sadas por el usuario (v´
ease View/Main/MainWindow.py).
final results (Dictionary) – Diccionario que
contiene la informaci´
on procesada lista para graficar(v´
ease
View/Additional/ResultsGrapher/GraphFrame.py).
Returns Tkinter.Toplevel
Return type Instance
center()
Note: Este m´
etodo es privado.
Centra la ventana independiente con respecto de la Ventana Principal.
En otras palabras, la ventana independiente ser´
a colocada en el centro de
Ventana Principal.
UNAM Facultad de Ciencias
Manual T´
ecnico 93
create renamed settings()
Note: Este m´
etodo es privado.
Tal como su nombre lo dice, renombra las funciones objetivo y variables de
decisi´
on para posteriormente almacenarlas en una estructura por cada tipo.
Renombrar una funci´
on o variable de decisi´
on es hacer un mapeo que consis-
ta en:
Elemento renombrado ->elemento original.
Para el caso de la funci´
on objetivo, el renombramiento se da anteponiendo
la letra Fseguido de la posici´
on en la que fue insertada originalmente por el
usuario.
El caso es an´
alogo para la variable de decisi´
on, s´
olo que la letra es V.
La idea de renombrar las funciones y variables surge como alternativa al
momento de graficar los datos (v´
ease View/Additional/ResultsGrapher/
GraphFrame.py), ya que el usuario puede ingresar funciones muy largas o
variables con identificadores muy complejos y esto en la parte gr´
afica se ver´
ıa
muy amontonado; por ello fue preferible mostrar la parte renombrada en la
secci´
on de GraphFrame y colocar la muestra original en el SummaryFrame.
La clase actual consta de los siguientes elementos:
3.4.2.1.1. GraphFrame (clase)
Proporciona un Frame que contiene gr´
aficas alimentadas por los resultados obteni-
dos al ejecutar alg´
un MOEA, el cual ha sido refinado por las configuraciones reca-
badas de la Ventana Principal (v´
ease Model/MOEA).
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
execution task count (Integer)–N´
umero que
indica el actual Task en ejecuci´
on.
objective functions (List) – Lista que contiene
las funciones objetivo renombradas.
decision variables (List) – Lista que contiene las
variables de decisi´
on renombradas.
final results (Dictionary) – Diccionario que
contiene la informaci´
on para graficar. Se divide en dos ca-
UNAM Facultad de Ciencias
94 Manual T´
ecnico
tegor´
ıas principales: Frente de Pareto y Mejor Individuo
por Generaci´
on.
Returns Tkinter.Frame
Return type Instance
change canvas category()
Note: Este m´
etodo es privado.
Realiza el cambio de Canvas de la categor´
ıa de funciones objetivo a la de va-
riables y decision y viceversa, tomando en cuenta factores como por ejemplo
si alguna de las dos categor´
ıas tiene un OptionMenu asociado (para enton-
ces colocarlo apropiadamente) e identificando siempre el ´
ultimo Canvas
seleccionado de la categor´
ıa anterior para que cuando sea oportuno se vuelva
a colocar.
change inner canvas(event)
Note: Este m´
etodo es privado.
Realiza el cambio de Canvas dentro de una misma categor´
ıa, esto en caso en
que los datos hayan arrojado m´
as de una gr´
afica.
El cambio se hace con ayuda de su OptionMenu asociado.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
create 2d canvas(x label,x index,y label,y index,collection points)
Note: Este m´
etodo es privado.
Crea una gr´
afica en 2 dimensiones que es envuelta en un Canvas.
Parameters
x label (String) – Nombre para el eje X de la
gr´
afica.
x index (Integer) – Posici´
on dentro de collec-
tion points para los datos del eje X.
UNAM Facultad de Ciencias
Manual T´
ecnico 95
y label (String) – Nombre para el eje Y de la
gr´
afica.
y index (Integer) – Posici´
on dentro de collec-
tion points para los datos del eje Y.
collection points (Dictionary) – Diccio-
nario que contiene los puntos a graficar.
Returns Canvas
Return type matplotlib.backends.backend tkagg.FigureCanvasTkAgg
create 3d canvas(x label,x index,y label,y index,z label,z index,
collection points)
Note: Este m´
etodo es privado.
Crea una gr´
afica en 3 dimensiones que es envuelta en un Canvas.
Parameters
x label (String) – Nombre para el eje X de la
gr´
afica.
x index (Integer) – Posici´
on dentro de collec-
tion points para los datos del eje X.
y label (String) – Nombre para el eje Y de la
gr´
afica.
y index (Integer) – Posici´
on dentro de collec-
tion points para los datos del eje Y.
z label (String) – Nombre para el eje Z de la
gr´
afica.
z index (Integer) – Posici´
on dentro de collec-
tion points para los datos del eje Z.
collection points (Dictionary) – Diccio-
nario que contiene los puntos a graficar.
Returns Canvas
Return type matplotlib.backends.backend tkagg.FigureCanvasTkAgg
create decision variables canvas(decision variables,collec-
tion points)
UNAM Facultad de Ciencias
96 Manual T´
ecnico
Note: Este m´
etodo es privado
Crea los Canvas para las variables de decisi´
on.
Parameters
decision variables (List) – Lista que con-
tiene las variables de decisi´
on renombradas.
collection points (Dictionary) – Dic-
cionario que contiene los valores de las funciones
objetivo de todos los Individuos en la Poblaci´
on fi-
nal.
create objective functions canvas(objective functions,collec-
tion points)
Note: Este m´
etodo es privado.
Crea los Canvas para las funciones objetivo.
Parameters
objective functions (List) – Lista que con-
tiene las funciones objetivo renombradas.
collection points (Dictionary) – Dic-
cionario que contiene los valores de las funciones
objetivo de todos los Individuos en la Poblaci´
on fi-
nal.
La clase actual toma como referencia el siguiente elemento:
3.4.2.1.2. CustomNavigationToolbar2TkAgg (clase)
Proporciona una Barra de Navegaci´
on (´
o NavigationToolbar) que se anexa a cada
una de las gr´
aficas con el fin de facilitar la exploraci´
on y almacenamiento de los da-
tos obtenidos.
Por defecto la barra de navegaci´
on original se encuentra obsoleta a las necesida-
des inherentes a este proyecto, por ello es que se crea una barra personalizada que
responde a requerimientos tales como la obtenci´
on apropiada de im´
agenes relativas
a las gr´
aficas as´
ı como su correcto funcionamiento sin importar el sistema operativo
empleado.
Parameters
UNAM Facultad de Ciencias
Manual T´
ecnico 97
canvas (matplotlib.backends.backend tkagg.
FigureCanvasTkAgg) – La estructura que contiene
tanto a la gr´
afica como a la Barra de Navegaci´
on.
window (Tkinter.Frame) – El Frame que contiene a
canvas.
parent frame (Tkinter.Frame) – El Frame que
contiene a window, en este caso ResultsGrapherTople-
vel.py.
execution task count (Integer) – Un identifi-
cador que precisa el n´
umero de tarea (Task) en ejecuci´
on
(v´
ease View/Additional/ResultsGrapher/
ResultsGrapherToplevel.py).
image text (String) – El nombre que tendr´
an por
defecto las im´
agenes resultantes al guardarse en el equipo
de c´
omputo.
Returns matplotlib.backends.backend tkagg.NavigationToolbar2TkAgg
Rype Instance
save figure(*args)
Note: Este m´
etodo sobreescribe al original.
Arroja una ventana emergente modificada para guardar archivos, en este caso
las gr´
aficas.
Las modificaciones con respecto de la funci´
on original consisten en agregar
un t´
ıtulo para tener conocimiento de las im´
agenes del Task que se van a guar-
dar.
Adem´
as se modifica el comportamiento de la ventana para adherirlo a la ven-
tana del Task y no a la Ventana Principal.
Parameters
args (Tuple) – Un listado con par´
ametros que
aunque no se ocupan en el m´
etodo se coloca porque
as´
ı lo estructuraron los desarrolladores originales de
la biblioteca.
3.4.2.1.3. SummaryFrame (clase)
UNAM Facultad de Ciencias
98 Manual T´
ecnico
Unifica dos elementos: Canvas y ContentFrame.
La raz´
on de esto es que, en promedio la informaci´
on mostrada por ContentFrame
rebasar´
a el tama˜
no de la ventana de la informaci´
on final (v´
ease View/Additional/
ResultsGrapher/ResultsGrapherTopLevel.py), es entonces que se deben agre-
gar barras de desplazamiento para poder acceder al contenido que quedar´
ıa oculto.
Uno de los elementos en Tkinter m´
as sencillos que cumplen con este cometido es
un Canvas. Luego entonces esa es la raz´
on de tal fusi´
on.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
renamed objective functions (Dictionary)
– Diccionario de funciones objetivo renombradas (v´
ease
View/Additional/ResultsGrapher/ResultsGrapherToplevel.py).
renamed decision variables (Dictionary) –
Diccionario de variables de decisi´
on renombradas (v´
ease
View/Additional/ResultsGrapher/ResultsGrapherToplevel.py).
main features (Dictionary) – Diccionario que
contiene, entre otras cosas, los nombres de los par´
ametros
asociados a cada t´
ecnica.
gathered information (Dictionary) – Dicciona-
rio que contiene todas las configuraciones recabadas ingre-
sadas por el usuario (v´
ease View/Main/MainWindow.py).
Returns Tkinter.Frame
Return type Instance
update scrollbar(event)
Note: Este m´
etodo es privado.
Actualiza la barra de desplazamiento de acuerdo al n´
umero de elementos
existentes en el Frame, esto para poder hacer un recorrido apropiado de la
barra.
Parameters
event (String) – Elemento que ejecut´
o esta fun-
ci´
on.
La clase actual toma como base el siguiente elemento:
UNAM Facultad de Ciencias
Manual T´
ecnico 99
3.4.2.1.4. ContentFrame (clase)
Recaba el contenido de todas las funciones objetivo, variables de decisi´
on y dem´
as
par´
ametros que el usuario ingres´
o para poder ejecutar un Task determinado.
Es entonces que plasma toda esta informaci´
on en un Frame para que el usuario pue-
da cotejar los datos ingresados con los resultados obtenidos (v´
ease View/Additional/
ResultsGrapher/GraphFrame.py).
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
renamed objective functions (Dictionary)
– Diccionario de funciones objetivo renombradas (v´
ease
View/Additional/ResultsGrapher/ResultsGrapherToplevel.py).
renamed decision variables (Dictionary) –
Diccionario de variables de decisi´
on renombradas (v´
ease
View/Additional/ResultsGrapher/ResultsGrapherToplevel.py).
main features (Dictionary) – Diccionario que
contiene, entre otras cosas, los nombres de los par´
ametros
asociados a cada t´
ecnica.
gathered information (Dictionary) – Dicciona-
rio que contiene todas las configuraciones recabadas ingre-
sadas por el usuario (v´
ease View/Main/MainWindow.py).
Returns Tkinter.Frame
Return type Instance
3.4.2.1.5. ErrorFrame (clase)
Este Frame surge si durante el proceso interno en el Modelo (v´
ease Model/MOEA)
se suscita alg´
un error del cual el m´
etodo no se pueda recuperar.
Entonces aqu´
ı se desplegar´
a toda la informaci´
on relativa a la falla, as´
ımismo fun-
ciona como medida de contingencia para darle una salida al programa y evitar que
se quede atorado.
Parameters
parent (Tkinter.Frame) – Frame padre al que perte-
nece.
final results (Dictionary) – Diccionario que
contiene en este caso las caracter´
ısticas alusivas a la falla
UNAM Facultad de Ciencias
100 Manual T´
ecnico
(v´
ease Model/MOEA).
Returns Tkinter.Frame
Return type Instance
4. Controller (secci´
on)
Su funci´
on principal es la de establecer medidas de comunicaci´
on entre la Vista (´
o View)
y el Modelo (´
o Model) de tal manera que el Controller (´
o Controlador) recibe los datos
recabados en la Vista y los transfiere al Modelo para que se puedan llevar a cabo las ope-
raciones pertinentes y una vez concluidas dichas labores los resultados pasan por ´
este pa-
ra llegar a la Vista y desde ah´
ı graficarse apropiadamente.
De manera secundaria el Controlador ofrece m´
etodos de saneamiento de los datos recaba-
dos en la Vista, con la finalidad de evitar al m´
aximo disturbios indeseables en la secci´
on
Modelo y que ´
este opere con total eficiencia, adem´
as de alimentar a la Vista con las t´
ecni-
cas (y sus respectivos par´
ametros) disponibles en la secci´
on Modelo para as´
ı permitirle
al usuario operar con ´
estas de manera expedita.
Dicho almac´
en se encuentra en la secci´
on Controller/XML, donde se deduce que las
t´
ecnicas y caracter´
ısticas secundarias se encuentran plasmadas en archivos .xml.
El proyecto contempla m´
etodos para operar con dichos archivos y el usuario entonces
s´
olo tendr´
a que preocuparse por dar de alta la t´
ecnica pertinente en el archivo .xml ade-
cuado (adem´
as de implementarla en Modelo) para que ´
esta sea reconocida en la sec-
ci´
on Vista y se pueda hacer uso de ella.
A continuaci´
on se muestran los componentes principales de la secci´
on Controller:
4.1. Controller (clase)
Proporciona la infraestructura adecuada para poder comunicar la secci´
on Vista
(´
o View) con la secci´
on Modelo (´
o Model), apoy´
andose de las clases XMLParser y
Verifier.
El ciclo normal consiste en otorgar a la capa Vista (´
o View) la informaci´
on recaba-
da en los archivos .xml con ayuda de la clase XMLParser con la finalidad de notifi-
car al usuario de todas las t´
ecnicas disponibles.
Una vez ejecutada la opci´
on de iniciar un proceso gen´
etico por el usuario, se re-
caban los datos ingresados por el usuario, los cuales pasan por un proceso de ve-
rificaci´
on y transformaci´
on empleando para ello los m´
etodos de la clase Verifier.
En caso de haber al menos una falla en alguno de los procedimientos mencionados
anteriormente se regresa un mensaje de error, en otro caso se pasa la informaci´
on
UNAM Facultad de Ciencias
Manual T´
ecnico 101
respectiva a la capa Model para que pueda operar con ´
esta.
En cualquiera de los dos casos anteriores se regresa la informaci´
on resultante a la
Vista.
Returns Controller.Controller
Return type Instance
execute procedure(execution task count,generations queue,saniti-
zed information)
Realiza la ejecuci´
on de alg´
un algoritmo M.O.E.A. (Multi-Objective Evolu-
tionary Algorithm) y se encarga de obtener los resultados apropiadamente.
Parameters
execution task count (Integer) – Una ca-
racter´
ıstica num´
erica que identifica inequ´
ıvocamente
a esta funci´
on que ser´
a ejecutada de las dem´
as, ya
que el objetivo del proyecto es poder ejecutar va-
rios de estos m´
etodos de manera concurrente (v´
ease
View/Additional/
ResultsGrapher/ResultsGrapherToplevel.py).
generations queue (Instance) – Una instan-
cia a una cola (Queue), la cual servir´
a para escribir a
esa estructura el n´
umero actual de generaci´
on por el
que cursa el algoritmo. Esta acci´
on es para fines de
concurrencia (v´
ease View/MainWindow.py).
sanitized information (Dictionary) –
Los par´
ametros que ingres´
o el usuario debidamente
verificados y saneados.
Returns Un diccionario con informaci´
on de los resultados de
haber ejecutado el M.O.E.A. seleccionado por el usuario,
la estructura del mismo puede verse en Model/Community/
Community.py.
Return type Dictionary
load features()
Regresa los datos correspondientes (debidamente verificados) a las
t´
ecnicas disponibles para el usuario, los cuales se mostrar´
an en
View/MainWindow.py (v´
ease View/Additional/MenuInternalOption/
InternalOptionTab/FeatureFrame.py).
Esta t´
ecnica tiene como base los s´
ımiles que se encuentran en Controller/
XMLParser.py yController/Verifier.py.
UNAM Facultad de Ciencias
102 Manual T´
ecnico
Returns Una estructura con los m´
etodos disponibles para el
usuario.
Return type Dictionary
load mop examples()
Obtiene los datos correspondientes (previamente verificados) a los M.O.P.s
(Multi-Objective Problems) que se utilizan en View/
MainWindow.py (v´
ease View/Additional/MenuInternalOption/
InternalOptionTab/MOPExampleFrame.py).
Esta t´
ecnica tiene como base las an´
alogas que se encuentran en Contro-
ller/XMLParser.py yController/Verifier.py.
Returns Una estructura con los M.O.P.s disponibles para el
usuario.
Return type Dictionary
load python expressions()
Obtiene los datos correspondientes (previamente verificados) a las expresio-
nes de Python, las cuales se usan para evaluar funciones objetivo m´
as eficien-
temente (v´
ease View/Additional/MenuInternalOption/
InternalOptionTab/PythonExpressionFrame.py).
Esta funci´
on se apoya de las hom´
onimas localizadas en
Controller/XMLParser.py yController/Verifier.py.
Returns Una estructura con las expresiones de Python disponi-
bles.
Return type Dictionary
sanitize settings(general information,features)
Lleva a cabo la verificaci´
on y saneamiento de todos los datos que ha ingre-
sado el usuario en la secci´
on View (v´
ease View/MainWindow).
Parameters
general information (Dictionary) – El
conjunto de datos que el usuario ha ingresado o se-
leccionado.
features (Dictionary) – Una colecci´
on de to-
dos los elementos con sus caracter´
ısticas disponibles
para el usuario.
Returns El diccionario que contiene todos los datos debidamen-
te saneados.
UNAM Facultad de Ciencias
Manual T´
ecnico 103
Return type Dictionary
save python expressions(data)
Inserta las expresiones de Python que ha ingresado el usuario en el archivo
.xml correspondiente.
Parameters
data (List) – Un conjunto de las expresiones que
ha ingresado el usuario. Cada elemento es a su vez
una lista con dos elementos, el primero es la expre-
si´
on original (la que es comprensible por el usua-
rio), mientras que la segunda es la expresi´
on equiva-
lente en Python.
Returns Mensaje “OK” si la inserci´
on ha sido exitosa, mien-
tras que en caso de que haya habido un error entonces el
mensaje es “ERROR”.
Return type String
4.2. XMLParser (clase)
Permite leer y escribir a archivos .xml (los que se localizan en Controller/XML),
los cuales tienen almacenados:
Los nombres de las t´
ecnicas con sus par´
ametros que se encuentran disponi-
bles en la secci´
on Model (Features.xml).
La colecci´
on de palabras reservadas para poder emplear funciones y constan-
tes auxiliares en las funciones objetivo
(PythonExpressions.xml).
El conjunto de M.O.P.s (Multi-Objective Problems, localizados en MO-
PExamples.xml).
Dichos archivos proporcionan la informaci´
on necesaria a la interfaz gr´
afica (v´
ease
View/MainWindow.py).
Returns Controller.XMLParser
Return type Instance
indent(element,level=0)
Indenta (coloca espacios) apropiadamente en un documento .xml para poder
distinguir m´
as r´
apidamente los distintos niveles que existen en ´
este.
Parameters
UNAM Facultad de Ciencias
104 Manual T´
ecnico
element (String) – Una l´
ınea del archivo .xml
level (Integer) – El nivel en el que se est´
a ha-
ciendo el proceso de identado.
load xml features(features filename)
Realiza la lectura del archivo que contenga el listado de t´
ecnicas y sus par´
ame-
tros disponibles (v´
ease Model) y carga todos los elementos que se encuen-
tran en ´
este.
Parameters
features filename (String) – Nombre del
archivo en cuesti´
on.
Returns Un diccionario que contiene todos los elementos del
archivo.
Return type Dictionary
load xml mop examples(features filename)
Lleva a cabo la lectura del archivo que contenga el listado de M.O.P.s (Multi-
Objective Problems) y carga todos los elementos que se encuentran en ´
este.
Un M.O.P es una mezcla de variables de decisi´
on y funciones objetivo ya
estudiadas, se utilizan para reproducir su comportamiento y as´
ı garantizar,
adem´
as de un correcto funcionamiento del programa, una opci´
on r´
apida para
probar las t´
ecnicas que se ofrecen.
Parameters
features filename (String) – Nombre del
archivo en cuesti´
on.
Returns Un diccionario que contiene todos los elementos del
archivo.
Return type Dictionary
load xml python expressions(features filename)
Realiza la lectura del archivo que contenga el listado de expresiones en Pyt-
hon y carga todos los elementos que se encuentran en ´
este.
La idea detr´
as de esto es que, al momento de crear y/o evaluar funciones ob-
jetivo existen algunas palabras reservadas que no pueden ser usadas directa-
mente como son las funciones trigonom´
etricas, por eso es que estas expre-
siones sirven como intermediarias entre el usuario y el int´
erprete de Python.
En ocasiones a este tipo de expresiones, no s´
olo en el ´
ambito actual sino en
general, se les conoce como az´
ucar sint´
actica.
UNAM Facultad de Ciencias
Manual T´
ecnico 105
Parameters
features filename (String) – Nombre del
archivo en cuesti´
on.
Returns Un diccionario que contiene todos los elementos del
archivo.
Return type Dictionary
write xml python expressions(features filename,features)
Sobreescribe el archivo donde se encuentra el listado de expresiones en Pyt-
hon.
El objetivo es que, una vez ejecut´
andose el programa y a trav´
es del men´
u per-
tinente (v´
ease View/Additional/MenuInternalOption/
InternalOptionTab/PythonExpressionFrame.py), el usuario pueda a˜
nadir
o eliminar las expresiones de Python que desee.
En ocasiones a este tipo de expresiones, no s´
olo en el ´
ambito actual sino en
general, se les conoce como az´
ucar sint´
actica.
Parameters
features filename (String) – Nombre del
archivo en cuesti´
on.
features (List) – La estructura que contiene las
expresiones para ser guardadas en el archivo .xml.
4.3. Verifier (clase)
Realiza principalmente la verificaci´
on y transformaci´
on adecuada de los datos
que el usuario introduce en View/MainWindow.py para alimentar a los algorit-
mos que se encuentran en la secci´
on Model (m´
as en concreto Model/MOEA).
En caso de haber alg´
un error regresa los mensajes de error adecuados para que pue-
dan ser interpretados por la capa Vista y precisar al usuario el acontecimiento ocu-
rrido.
Por otra parte si se ha llevado a cabo la verificaci´
on correctamente se obtiene la in-
formaci´
on transformada apropiadamente.
De manera secundaria tambi´
en ofrece m´
etodos de verificaci´
on para la extracci´
on y
colocaci´
on de datos en los archivos .xml (v´
ease XMLParser y el directorio Con-
troller/XML).
Returns Controller.Verifier
Return type Instance
UNAM Facultad de Ciencias
106 Manual T´
ecnico
cast parameter(parameter value,parameter settings)
Note: Este m´
etodo es privado.
Verifica un par´
ametro asociado a alguna t´
ecnica. Primero asegura que el
par´
ametro se pueda evaluar correctamente, posteriormente convierte apropia-
damente el tipo de dato pasando de String a Boolean, Integer ´
o Float seg´
un
corresponda.
Parameters
parameter value (Float) – El valor actual del
par´
ametro.
parameter settings (Dictionary) – Un
diccionario que contiene el tipo del par´
ametro (bool,
integer ´
o float) y el rango que debe tomar tanto infe-
rior como superior.
Returns El valor saneado del par´
ametro si no hay fallas, pero
si se encuentra alg´
un desperfecto entonces se regresa un
diccionario con la informaci´
on detallada del desperfecto.
Return type (Boolean, Integer, Float)/Dictionary
verify instance(name class)
Note: Este m´
etodo es privado.
Devuelve una instancia del nombre de la clase que se le pase como par´
ame-
tro.
Esta funcionalidad es ´
util sobre todo para la secci´
on Model ya que uno de los
objetivos es proporcionar al usuario de una infraestructura r´
apida con t´
ecni-
cas f´
acilmente intercambiables sin necesidad de estar importando expl´
ıcita-
mente cada una de ´
estas.
De esta forma con base en una instancia se puede ejecutar cualquier m´
eto-
do de manera din´
amica.
Parameters
name class (String) – el nombre de la clase
(con su ruta) de la cual se desea obtener una instan-
cia.
Returns Una instancia de la clase solicitada si el proceso es exi-
UNAM Facultad de Ciencias
Manual T´
ecnico 107
toso, en otro caso se obtiene un diccionario con los detalles
de la falla.
Return type Instance/Dictionary
get dynamic function(complete function)
Obtiene una instancia de una funci´
on en un String de la forma biblioteca.funci´
on.
Este m´
etodo se usa para convertir las expresiones de Python en instancias
que ser´
an utilizadas al momento de evaluar funciones objetivo (v´
ease View/
Additional/MenuInternalOption/InternalOptionTab/
PythonExpressionFrame.py, Controller/XML/PythonExpressions.xml)
Parameters
complete function (String) – un String
preferentemente de la forma biblioteca.funci´
on (el
punto debe ir incluido).
Returns Una instancia de la funci´
on asociada a la biblioteca.
Return type Instance
sanitize decision variables(vector variables)
Verifica el conjunto de elementos de la categor´
ıa “Decision Variables” (v´
ease
View/Main/DecisionVariable/DecisionVariableFrame.py), los cuales son
precisamente las variables de decisi´
on.
Primero se asegura que cada variable de decisi´
on se pueda evaluar correc-
tamente, posteriormente convierte apropiadamente el tipo de dato de sus res-
pectivos rangos, pasando de String a Float.
Parameters
vector variables (Dictionary) – El vector
que contiene las variables de decisi´
on con sus corres-
pondientes rangos.
Returns Un diccionario con las variables de decisi´
on y sus ran-
gos debidamente saneados.
Return type Dictionary
sanitize genetic operators settings(genetic operators settings,features,
vector variables,num-
ber of decimals)
Revisa la integridad y sanea los datos que ingres´
o el usuario concernientes a
la secci´
on “Genetic Operators Settings” (v´
ease View/Main
/GeneticOperator/GeneticOperatorFrame.py).
Parameters
UNAM Facultad de Ciencias
108 Manual T´
ecnico
genetic operators settings (Dictionary)
– El listado de t´
ecnicas y sus par´
ametros que el usua-
rio eligi´
o en la secci´
on correspondiente.
features (Dictionary) – El conjunto de las
opciones disponibles para esta secci´
on, as´
ı como sus
caracter´
ısticas.
vector variables (List) – El vector de varia-
bles de decisi´
on.
number of decimals (Integer)–Eln´
umero
de decimales que llevar´
a cada soluci´
on en Popula-
tion.
Returns Un diccionario que, dependiendo de los resultados,
puede contener o informaci´
on del error encontrado durante
el procedimiento o todos los datos debidamente verificados
y transformados.
Return type Dictionary
sanitize moeas settings(moeas settings,features)
Verifica integridad y lleva a cabo el saneamiento de los datos que ingres´
o el
usuario concernientes a la secci´
on “MOEAs Settings” (v´
ease View/Main/
MOEA/MOEAFrame.py).
Parameters
moeas settings (Dictionary) – El listado de
t´
ecnicas y sus par´
ametros que el usuario eligi´
o en la
secci´
on correspondiente.
features (Dictionary) – El conjunto de las
opciones disponibles para esta secci´
on, as´
ı como sus
caracter´
ısticas.
Returns Un diccionario que, dependiendo de los resultados,
puede contener o informaci´
on del error encontrado durante
el procedimiento o todos los datos debidamente verificados
y transformados.
Return type Dictionary
sanitize objective functions(vector variables,available expressions,
vector functions)
Lleva a cabo el saneamiento de los elementos correspondientes a la categor´
ıa
“Objective Functions” (v´
ease View/Main/ObjectiveFuncion/
UNAM Facultad de Ciencias
Manual T´
ecnico 109
ObjectiveFunctionFrame.py), los cuales son de hecho s´
olo las funciones
objetivo.
Parameters
vector variables (Dictionary) – El vector
de variables de decisi´
on que el usuario ha ingresado.
available expressions (Dictionary) –
Un listado con las expresiones de Python disponibles
(v´
ease Controller/XML/PythonExpressions.xml,
View/Additional/MenuInternalOption/
InternalOptionTab/PythonExpressionFrame.py).
vector functions (Dictionary) – El vector
de funciones objetivo ingresados por el usuario.
Returns Si el proceso fue exitoso, se obtiene el mismo vec-
tor functions, en otro caso se regresa un diccionario con
informaci´
on detallada sobre el errror encontrado.
Return type List/Dictionary
sanitize population settings(population settings,features)
Verifica la consistencia y realiza el saneamiento de los datos que ingres´
o el
usuario concernientes a la secci´
on “Population Settings” (v´
ease View/Main/
Population/PopulationFrame.py).
Parameters
population settings (Dictionary) – El
listado de t´
ecnicas y sus par´
ametros que el usuario
eligi´
o en la secci´
on correspondiente.
features (Dictionary) – El conjunto de las
opciones disponibles para esta secci´
on, as´
ı como sus
caracter´
ısticas.
Returns Un diccionario que, dependiendo de los resultados,
puede contener o informaci´
on del error encontrado durante
el procedimiento o todos los datos debidamente verificados
y transformados.
Return type Dictionary
sanitize techniques(general information,features)
Realiza una verificaci´
on adicional concerniente al tipo
de representaci´
on de todas las t´
ecnicas seleccionadas.
UNAM Facultad de Ciencias
110 Manual T´
ecnico
Lo anterior significa que, usando la Representaci´
on Cromos´
omica
(´
o Chromosomal Representation, v´
ease Model/
ChromosomalRepresentation, View/Main/Population/
PopulationFrame.py), todas las t´
ecnicas deben concordar con el mismo tipo
de representaci´
on cromos´
omica que se haya seleccionado.
Para esta versi´
on s´
olo est´
an disponibles las representaciones binaria y de pun-
to flotante.
Parameters
general information (Dictionary) – El
listado de caracter´
ısticas disponibles (v´
ease XML-
Parser.py).
features (Dictionary) – La colecci´
on de da-
tos que seleccion´
o el usuario en la secci´
on View.
Returns Un diccionario el cual, si la verificaci´
on es exitosa, es
el mismo general informacion, si por el contrario falla,
entonces es un diccionario que contiene detalles del error.
Return type Dictionary
verify load xml features(data)
Verifica que los datos obtenidos de las t´
ecnicas disponibles que alimentan a
la Ventana Principal (v´
ease View/MainWindow.py) no tengan defectos. Este
m´
etodo se apoya de load xml features localizado en Controller/
XMLParser.py.
Parameters
data (Dictionary) – Los datos que son le´
ıdos
por el m´
etodo load xml features mencionado pre-
viamente.
Returns Si los datos contienen alg´
un error, un diccionario con
las caracter´
ısticas de la falla, en otro caso los datos mis-
mos.
Return type Dictionary
verify load xml mop examples(data)
Revisa que los M.O.P.s (Multi-Objective Problems) que se muestran en
View/MainWindow.py a trav´
es de View/Additional/MenuInternalOption/
InternalOptionTab/MOPExampleFrame.py est´
en libres de errores.
Este m´
etodo se apoya de load mop examples localizado en Controller/
XMLParser.py.
UNAM Facultad de Ciencias
Manual T´
ecnico 111
Parameters
data (Dictionary) – Los datos que son le´
ıdos
por el m´
etodo load mop examples mencionado pre-
viamente.
Returns Si los datos contienen alg´
un error, un diccionario con
las caracter´
ısticas de la falla, en otro caso los datos mis-
mos.
Return type Dictionary
verify load xml python expressions(data)
Revisa que las expresiones de Python est´
en libres de errores.
Este m´
etodo se apoya de load python expressions localizado en Contro-
ller/XMLParser.py.
Parameters
data (Dictionary) – Los datos que son le´
ıdos
por el m´
etodo load python expressions menciona-
do previamente.
Returns Si los datos contienen alg´
un error, un diccionario con
las caracter´
ısticas de la falla, en otro caso los datos mis-
mos.
Return type Dictionary
verify write xml python expressions(data)
Verifica la consistencia de los datos relativos a las expresiones de Python an-
tes de ser escritos en el archivo .xml correspondiente.
Parameters
data (List) – El conjunto de expresiones que
ser´
an almacenadas.
Returns Un mensaje “OK” si la verificaci´
on fue satisfactoria, y
“ERROR” en caso de aparecer alguna falla.
Return type String
UNAM Facultad de Ciencias

Navigation menu