Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1- Introducción ………………………………………………………………...iii
2- Objetivo 8.………………………………………………………………..... 4
Planteamiento ………………………………………………………..... 4-6
3- Solución del Problema………………………………………………… 6
4- Generación de números aleatorios………………………………….. 7
5- Cambio de alelos ………………………………………………..... 7
6- Generación de número de Interacciones ………………………......... 9
7- Listado de iteraciones ………………………………………………….. 10
8- Respuestas planteamientos realizados ……………………………… 12
9- Listado de programa fuentes ……………………………………… 12-23
10- Conclusión……………………………………….....................................24
ii
Introducción.
En los años 1970, de la mano de John Henry Holland, surgió una de las
líneas más prometedoras de la inteligencia artificial, la de los algoritmos
genéticos, (AG). Son llamados así porque se inspiran en la evolución
biológica y su base genético-molecular.
Estos algoritmos hacen evolucionar una población de individuos
sometiéndola a acciones aleatorias semejantes a las que actúan en
la evolución biológica (mutaciones y recombinaciones genéticas), así como
también a una selección de acuerdo con algún criterio, en función del cual se
decide cuáles son los individuos más adaptados, que sobreviven, y cuáles los
menos aptos, que son descartados.
Los algoritmos genéticos se enmarcan dentro de los algoritmos
evolutivos, que incluyen también las estrategias evolutivas, la programación
evolutiva y la programación genética.
La Universidad Nacional Abierta ofrece a los cursantes de la carrera
Ingeniería de Sistemas la materia computación evolutiva, la misma dentro de
su contenido deja claro el concepto de la programación de los cromosomas
con el objeto de crear individuos en torno a ciertas características que se
esperan, se ha elaborado una práctica que tiene como esencia mostrar en el
presente informe parte de los conocimientos adquiridos durante el estudio de
su contenido, la misma concluye con la elaboración de un programa que
satisface el planteamiento contenido en el mismo.
iii
TRABAJO PRÁCTICO COMPUTACIÓN EVOLUTIVA (350)
OBJETIVO N° 8
Numeración Ciudad
0 Caracas
1 Maracaibo
2 Barquisimeto
3 Valencia
4 Maracay
5 Mérida
6 Ciudad Bolívar
7 Los Teques
8 Barinas
9 Pto. La Cruz
Tabla 1
CIUDAD DESTINO
(Km)
0 1 2 3 4 5 6 7 8 9
0 0 694 351 145 96 674 585 26 512 339
1 694 0 343 549 596 413 1178 668 455 1033
2 351 343 0 206 255 419 835 325 264 690
CIUDAD ORIGEN
6
Como se generaron los números aleatorios
Se desea generar una ruta aleatoria, sin repetir las rutas y sumar sus
distancias para generar el fitness, esto se evidencia a través de una de las
opciones la cual utiliza en principio el algoritmo suministrado con algunas
variantes ajustadas al diseño de arreglos, la generación de números aleatorios
se lleva a cabo a través de librerías propias de cada lenguaje, por lo general
las mimas se fundamentan en los algoritmos de Montecarlo, la función
aleatorio del lenguaje python, se basa en lo antes descrito. En el programa
que se entrega, esta función se utilizó para generar las diez ciudades a visitar
por el viajero calculando la distancia total, (ver figura N° 3).
8
Listado de Resultado de las diez iteraciones
9
10
Como se observa al aplicar las diez simulaciones se obtiene la ruta más
económica como mejor fitness, ya que el objetivo es minimizar las distancias
a recorrer.
Respuestas planteamientos realizados
A continuación se da respuesta a las formulaciones presentes en la
propuesta realizada.
En lo que respecta a como se puede diseñar y emplear otra función
fitness, se sugiere crear y utilizar la función fitness al tratar de minimizar los
tiempos de ejecución de alguna obra o labor específica, identificando cada
uno de los procesos necesarios y el personal calificado para culminar la obra,
asignándoles el tiempo de realización por cada trabajador, de esta manera al
observar los tiempos de manufactura, teniendo la certeza de minimizar el
costo de elaboración.
En lo que se refiere al problema del agente viajero, el mismo se puede
resolver a través del uso del algoritmo de cumulo de partículas PSO, ya que
en el mismo se observa, que posee la estructura con datos que se necesitan
para resolver el mismo, esto es debido a que el PSO guarda el histórico de las
mejores rutas a seguir, en base a los sitios de mejores beneficios, En el mismo
se le indica al viajero cual es la mejor ruta que debe seguir, debido a la
experiencia que se guarda en los históricos, las variantes en dicho algoritmo
estarán marcadas en torno a las restricciones por los beneficios que se
desean conseguir.
El lenguaje utilizado para la ejecución del trabajo es Python 3.4.4, es
necesario indicar que a la fecha python posee una nueva versión python 3.6.1,
y en ambas se observan diferencias de sintaxis con mejoras hechas en la más
reciente, pero con el inconveniente que no trae compilador, el mismo es propio
de cada versión, el compilador que se utilizó es py2exe.exe, ambos se
encuentran en la página web, propia de python.
https://www.python.org/downloads/.
11
Listado de programa fuente
#------------------------------------------------------------
# UNIVERSIDAD NACIONAL ABIERTA
# CENTRO LOCAL PORTUGUESA LAPSO ACADEMICO 2017-1
# ASIGNATURA :350-COMPUTACION EVOLUTIVA - TRABAJO PRACTICO
# ALUMNO:OSWALDO JOSE PEREZ MENDEZ CEDULA V-5.364.021
#------------------------------------------------------------
import os
from random import randrange
from _rutinas import
_iniarr,_dat0,_aleat,_tit0,_tab01,_tab02,_tab03_4,_tab05,_tab10,pause,opcion,_opcnum
#-----------------------------------------------------
_99ale,_ale00,_ale11,_alenw,_Ciud,_rtas,_Dist,_Fitn0 = _iniarr()
#-----------------------------------------------------
#------------- se crean arrays
_Ciud,_rtas,_Dist = _dat0(_Ciud,_rtas,_Dist)
#-------------------------------------------
#--- CREAN RUTA A PARTIR DE N° ALEATORIOS
#---------------------------------------
_ale00=_aleat(_ale00,randrange)
#---------------------------------------
# CALCULA Y MUESTRA
# REPORTES TABLA 1,2,3,4,5
#---------------------------------------
_0resp=0;_salir=False
while _salir==False:
os.system('cls')
_tit0()
print (" ----------------------")
print (" - <1> GENERA DATOS -")
print (" ----------------------")
print (" - <2> Tabla 1 -")
print (" - <3> Tabla 2 -")
print (" - <4> Tabla 3 y 4 -")
print (" - <5> Tabla 5 -")
print (" ----------------------")
print (" - <6> Genera -")
print (" - Iteracciones -")
print (" ----------------------")
print (" - <7> Fin <esc> -")
print (" ----------------------")
_sal=False
_opc=""
while _sal==False:
_opc=opcion()
if (_opc>chr(48) and _opc<chr(56)) or _opc<chr(27):
_sal=True
if _opc==chr(49):
#-------- GENERA DATOS
os.system('cls')
12
pause()
if _opc==chr(50):
#-------- tablas 1
os.system('cls')
_tit0()
_tab01(_Ciud)
pause()
elif _opc==chr(51):
#-------- tablas 2
os.system('cls')
_tit0()
_tab02(_Dist)
pause()
elif _opc==chr(52):
#-------- tablas 3 y 4
os.system('cls')
_tit0()
_tab03_4(_ale00,_Ciud,_Dist,_rtas)
pause()
elif _opc==chr(53):
#-------- tablas 5
os.system('cls')
_tit0()
_tab05(_Dist,_ale00,_alenw,_Fitn0,randrange)
pause()
elif _opc==chr(54):
#-------- tablas 10
os.system('cls')
_tit0()
print ("------------------------------")
print ("- Indique N° de Interacciones-")
print ("------------------------------")
_Nointer=0
_Nointer=_opcnum()
_xx = _Nointer + 1
for x in range(_xx):
_ale00,_alenw=_tab10(_Dist,_ale00,_alenw,_Fitn0,randrange,x,_xx,os)
pause()
elif _opc==chr(55)or _opc==chr(27):
_salir=True
else:
_salir=False
13
#------------------------------------------------------------
# UNIVERSIDAD NACIONAL ABIERTA
# CENTRO LOCAL PORTUGUESA LAPSO ACADEMICO 2017-1
# ASIGNATURA :350-COMPUTACION EVOLUTIVA - TRABAJO PRACTICO
# ALUMNO:OSWALDO JOSE PEREZ MENDEZ CEDULA V-5.364.021
#------------------------------------------------------------
#--- MUESTRA ENCABEZADO
#---
def _tit0():
_titx=['','','','','']
_titx[0]='UNIVERSIDAD NACIONAL ABIERTA '
_titx[1]='CENTRO LOCAL PORTUGUESA LAPSO ACADEMICO 2017-1'
_titx[2]='ASIGNATURA :350-COMPUTACION EVOLUTIVA - TRABAJO PRACTICO'
_titx[3]='ALUMNO:OSWALDO JOSE PEREZ MENDEZ CEDULA V-5.364.021'
_titx[4]='--------------------------------------------------------'
for x in range(5):
print(_titx[x])
return _titx
#-----------------------------------------------
#-------- PAUSA
#-----------------------------------------------
def pause():
return input('Presiona ENTER para continuar')
def opcion():
return input("")
def _opcnum():
while True:
valor = input("")
try:
valor = int(valor)
return valor
except ValueError:
print("ATENCIÓN: Debe ingresar un número entero.")
return valor
#-----------------------------------------------
#---- inicializa arreglos
#-----------------------------------------------
def _iniarr():
_ale00= ['','','','','','','','','','']
_99ale= ['','','','','','','','','','']
_Fitn0= ['','','','','','','','','','']
_Ciud = ['','','','','','','','','','']
_rtas =[['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','','']]
_Dist =[['','','','','','','','','',''],
14
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','','']]
_ale11 =[['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','','']]
_alenw =[['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','',''],
['','','','','','','','','','']]
return _99ale,_ale00,_ale11,_alenw,_Ciud,_rtas,_Dist,_Fitn0
#--------------------
#--- CREAN LOS ARRAYS
#--------------------
def _dat0(_Ciud,_rtas,_Dist):
_Ciud = ['Caracas ',
'Maracaibo ',
'Barquisimeto ',
'Valencia ',
'Maracay ',
'Merida ',
'Ciudad Bolivar',
'Los Teques ',
'Barinas ',
'Pto.la cruz ']
#---------------------------------------
#--- CREAN RUTA A PARTIR DE UN ALEATORIO
#---------------------------------------
def _aleat(_ale00,randrange):
#i=_ale00
#from random import randrange
x=0
while x<10:
cierto = True
while cierto and x<11:
_00ale = randrange(0,10); y = 0 ; cierto = False
while y<10:
if _00ale == _ale00[y]:
cierto = True
y=11
17
else:
y=y+1
_ale00[x] = _00ale
x = x+1
return _ale00
#-------------------------------------
#-------- Tabla 1
def _tab01(_Ciud):
x =0
print ('- Numeracion Ciudad -- <----(TABLA 1)')
print ('-------------------------------')
x=0
for x in range(10):
print ('-- ',str(x).rjust(2," "),' ',_Ciud[x],' --')
print ('-------------------------------')
return
#-------------------------------------
#-------- Tabla 2
def _tab02(_Dist):
print (' Ciudad ! Ciudad Destino (TABLA 2) --')
print (' origen ! 0 1 2 3 4 5 6 7 8 9 --')
print ('-----------------------------------------------------------------------')
for x in range(10):
print( '--',
str(x).rjust(4),'!',
str(_Dist[x][0]).rjust(4," "),'',
str(_Dist[x][1]).rjust(4," "),'',
str(_Dist[x][2]).rjust(4," "),'',
str(_Dist[x][3]).rjust(4," "),'',
str(_Dist[x][4]).rjust(4," "),'',
str(_Dist[x][5]).rjust(4," "),'',
str(_Dist[x][6]).rjust(4," "),'',
str(_Dist[x][7]).rjust(4," "),'',
str(_Dist[x][8]).rjust(4," "),'',
str(_Dist[x][9]).rjust(4," "),'--')
print ('-----------------------------------------------------------------------')
return
#--------------------------------------------------------------------------------------
#-------- Tabla 3 y Tabla 4
#--------------------------------------------------------------------------------------
def _tab03_4(i,_Ciud,_Dist,_rtas):
print ('- N° (Tabla 3) -----------------------------------------------')
print ('- N° Aleatorio --- (Tabla 4) --')
print ('-- Orden Generado Ciudad ----------- Recorrido ----------- Distancia --')
print ('-------------------------------------------------------------------------------')
Fitn=0
for x in range(10):
_Enc =''
if x<1:
_Enc = '-- '+str(x+1).rjust(2," ")+' '+str(i[x]).rjust(2," ")+' '+_Ciud[i[x]]+' --- '
else:
_Enc = '-- '+str(x+1).rjust(2," ")+' '+str(i[x]).rjust(2," ")+' '+_Ciud[i[x]]+' '+(str(i[x-1])+'->'+str(i[x])).rjust(4)+'
'+_rtas[i[x-1]][i[x]]+' '+str(_Dist[i[x-1]][i[x]]).rjust(4)+' --'
Fitn= Fitn + _Dist[i[x-1]][i[x]]
print (_Enc)
print ('-------------------------------------------------------------------------------')
print (' Calculo del Fitness ---> ',str(Fitn).rjust(4),'Kms')
return
18
#---------------------------------
#--- Genera 2 N° Aleatorios
#--- para crear un nuevo individuo
#---------------------------------
def _Cnuev_i(_alenw,randrange):
#-------------------------
x0 =''; x1 =''
_c1=0;_c2 =0
#-------------------------
_inic = randrange(0,10)
_salida=False
while _salida==False:
_fin = randrange(0,10)
_salida=True
if _inic==_fin:
_salida=False
#---------------------------------
#-- ordenacion ascendente
#---------------------------------
x=0
if _inic > _fin:
x = _inic
_inic = _fin
_fin = x
#---------------------------------
_c1 = _inic
_c2 = _fin
#---------------------------------
#-- crea un nuevo individuo
#---------------------------------
x0 = _inic
x1 = _alenw[_inic]
#---------------------------------
for x0 in range(_inic,_fin):
_alenw[x0] = _alenw[x0+1]
_alenw[_fin] = x1
return _alenw,_c1,_c2
#-------------------------------------------------------
#----- Tabla 5
#-----
def _tab05(_Dist,_ale00,_alenw,_Fitn0,randrange):
#-----------------------------
#--------- totaliza el fitness
#---------
Fitn=0
E_Dist0='- '
for x in range(10):
if x < 9:
_Guion = " -"
if x==8:
_Guion = ""
Fitn = Fitn + _Dist[_ale00[x]][_ale00[x+1]]
E_Dist0= E_Dist0 + str(_Dist[_ale00[x]][_ale00[x+1]]).rjust(4," ") + _Guion
_Fitn0[0] = Fitn
x=0
#for x in range(1,10):
# _aletmp=["","","","","","","","","",""]
19
# _aletmp=_aleat(_aletmp,randrange)
# y=0
#----------------------------------------
#--- Genera 2 N° Aleatorios ----
#--- para crear un nuevo individuo ----
#--- ----
_alenw=["","","","","","","","","",""]
_c1 = 0; _c2 = 0
for x in range(10):
_alenw[x] = _ale00[x]
_alenw,_c1,_c2 = _Cnuev_i(_alenw,randrange)
#-------------------------------------------------------------
#-- facilita la muestra del cambio genetico en los alelos
#-------------------------------------------------------------
E_stit = ''
_aevol=['____','____','____','____','____','____','____','____','____','____']
if _c1==0:
_aevol[0]="[xx]"
if _c1==1 or _c2==1:
_aevol[1]="[xx]"
if _c1==2 or _c2==2:
_aevol[2]="[xx]"
if _c1==3 or _c2==3:
_aevol[3]="[xx]"
if _c1==4 or _c2==4:
_aevol[4]="[xx]"
if _c1==5 or _c2==5:
_aevol[5]="[xx]"
if _c1==6 or _c2==6:
_aevol[6]="[xx]"
if _c1==7 or _c2==7:
_aevol[7]="[xx]"
if _c1==8 or _c2==8:
_aevol[8]="[xx]"
if _c2==9:
_aevol[9]="[xx]"
#-------------------------------------------------------------
Fitn = 0
E_Distn = '- '
for x in range(10):
#---------------------------------------------------------------
E_stit = E_stit + '__' + _aevol[x] # <- ubica el cambio genetico
#---------------------------------------------------------------
for x in range(9):
_Guion = " -"
if x==8:
_Guion = ""
Fitn = Fitn + _Dist[_alenw[x]][_alenw[x+1]]
E_Distn= E_Distn + str(_Dist[_alenw[x]][_alenw[x+1]]).rjust(4," ") + _Guion
_Fitn0[1] = Fitn
#---------------------------------------
#---- CREACION DE REPORTES
#---- PARA INDIVIDUO ORIGINAL
#---- PARA NUEVO INDIVIDUO
#---------------------------------------
#-----
#----- ALELO DEL INDIVIDUO ORIGINAL
_0Enc = ''
20
_0Enc = '- ' + str(_ale00[0]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[1]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[2]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[3]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[4]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[5]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[6]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[7]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[8]).center(4," ")
_0Enc = _0Enc + '->' + str(_ale00[9]).center(4," ")
#------------------------------------------------
#---- ALELO DEL NUEVO INDIVIDUO
_1Enc =''
_1Enc = '- ' + str(_alenw[0]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[1]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[2]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[3]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[4]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[5]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[6]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[7]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[8]).center(4," ")
_1Enc = _1Enc + '->' + str(_alenw[9]).center(4," ")
#--------------------------------------------------
#---- Escoje el mejor Fitness de los dos individuos
#---- la ruta mas corta y crea mensaje
#----
if _Fitn0[0]<_Fitn0[1]:
E_Dist0 = E_Dist0 + '=' + str(_Fitn0[0]).rjust(4," ") + '<-Mejor Fitness'
E_Distn = E_Distn + '=' + str(_Fitn0[1]).rjust(4," ") + '<-Rechazado'
else:
E_Dist0 = E_Dist0 + '=' + str(_Fitn0[0]).rjust(4," ") + '<-Rechazado'
E_Distn = E_Distn + '=' + str(_Fitn0[1]).rjust(4," ") + '<-Mejor Fitness'
#---------------------------------------------------------------------------
#- cromosoma (Tabla 5) -Fitness-
#0123456789012345678901234567890123456789012345678901234567890123456789
# 1 2 3 4 5 6 66
#---------------------------------------------------------------------------
print ('- cromosoma (Tabla 5) -Fitness-')
print (E_stit)
print (_0Enc)
print (E_Dist0)
print ('Nuevo Individuo'.center(66," "))
print (_1Enc)
print (E_Distn)
print ('----------------------------------------------------')
return
#-------------------------------------------------------
#----- Tabla 10
#-----
def _tab10(_Dist,_ale00,_alenw,_Fitn0,randrange,_Iter,_Niter,os):
#---------------
os.system('cls')
_tit0()
#-----------------------------
#--------- totaliza el fitness
#---------
#------------------------------------------------------------------------------
21
_Fitn0=0;_xxx=0;
E_Dist0=["","","","","","","","","",""]
E_Dist0[0]=0
for x in range(10):
_xxx = x;_xxx = _xxx + 1;
if x < 9:
_Fitn0 = _Fitn0 + _Dist[_ale00[x]][_ale00[x+1]]
E_Dist0[_xxx]= str(_Dist[_ale00[x]][_ale00[x+1]]).rjust(5," ")
#------------------------------------------------------------------------------
#-- crea nueva ruta
#----------------------------------------------
#for x in range(1,10):
# _aletmp=["","","","","","","","","",""]
# _aletmp=_aleat(_aletmp,randrange)
# y=0
#----------------------------------------
#--- Genera 2 N° Aleatorios ----
#--- para crear un nuevo individuo ----
#--- ----
_alenw=["","","","","","","","","",""]
_c1 = 0; _c2 = 0
for x in range(10):
_alenw[x] = _ale00[x]
_alenw,_c1,_c2 = _Cnuev_i(_alenw,randrange)
#-------------------------------------------------------------
#-- facilita la muestra del cambio genetico en los alelos
#-------------------------------------------------------------
_aevol=[' ',' ',' ',' ',' ',' ',' ',' ',' ',' ']
if _c1==0:
_aevol[0]="XX"
if _c1==1 or _c2==1:
_aevol[1]="XX"
if _c1==2 or _c2==2:
_aevol[2]="XX"
if _c1==3 or _c2==3:
_aevol[3]="XX"
if _c1==4 or _c2==4:
_aevol[4]="XX"
if _c1==5 or _c2==5:
_aevol[5]="XX"
if _c1==6 or _c2==6:
_aevol[6]="XX"
if _c1==7 or _c2==7:
_aevol[7]="XX"
if _c1==8 or _c2==8:
_aevol[8]="XX"
if _c2==9:
_aevol[9]="XX"
_Fitn1 = 0
E_Distn=["","","","","","","","","",""]
_xxx = 0;
E_Distn[0]=0
for x in range(10):
if x<9:
_Fitn1 = _Fitn1 + _Dist[_alenw[x]][_alenw[x+1]]
_xxx = x; _xxx=_xxx + 1;
E_Distn[_xxx]= str(_Dist[_alenw[x]][_alenw[x+1]]).rjust(5," ")
#--------------------------------------------------
#---- Escoje el mejor Fitness de los dos individuos
22
#---- la ruta mas corta y crea mensaje
if _Fitn0<=_Fitn1:
E_Fitn0 = 'Mejor Fitness'
E_Fitnn = '- Rechazado -'
else:
E_Fitn0 = '- Rechazado -'
E_Fitnn = 'Mejor Fitness'
#---------------------------------------
#---- CREACION DE REPORTES
#---- PARA PADRES E HIJOS
#-----
#----- ALELO DEL INDIVIDUO ORIGINAL
_0Enc=["","","","","","","","","","","","",""]
_x=0;_xx="";
for x in range(10):
_x=x; _x = _x+1;
_xx = '-- ' + str(_x).rjust(2," ") + ' - ';
if x<10:
_0Enc[x] = _xx + _aevol[x] + ' -> ' + str(_ale00[x]).center(4," ") + ' ' + str(E_Dist0[x]).rjust(4," ") + '
->' + str(_alenw[x]).center(4," ") + ' ' + str(E_Distn[x]).rjust(4," ") + ' --';
_0Enc[10] ='----------------------------------------------------------'
_0Enc[11] =' ' + E_Fitn0 +' ' + str(_Fitn0).rjust(4," ") +' '+ E_Fitnn + ' ' + str(_Fitn1).rjust(4," ") +'--'
_0Enc[12] ='----------------------------------------------------------'
#- imprime reporte creado
#------------------------------------------------------------------
print ('-- Iteracción N°->',str(_Iter).center(4," "),' --')
print ('-- N° Padre Hijo --')
print ('-- Alelo - N.A. - Cromosomas Fitnes - Cromosomas Fitnes --')
print ('----------------------------------------------------------')
for x in range(13):
print (_0Enc[x])
print ('----------------------------------------------------------')
if _Fitn0>=_Fitn1:
_ale00= [0,0,0,0,0,0,0,0,0,0]
for x in range(10):
_ale00[x]=_alenw[x];
else:
_alenw = [0,0,0,0,0,0,0,0,0,0]
return _ale00,_alenw ////// FIN DE LISTADO
23
Conclusiones
En el transcurso del semestre se pudo evidenciar la utilidad que se
logra en la búsqueda de obtener respuesta favorable en torno de cualquier
dificultad que se presente, al tener conocimientos de los innumerables
estudios realizados en torno a la implementación de esa inteligencia propia de
las especies que nos rodean, y que es proporcionada por la naturaleza, esta
habilidad se refleja en la aptitud presentada por las especies existentes, al
momento de afrontar alguna adversidad, por ejemplo al observar a las
hormigas o los insectos, como se comunican en la búsqueda de recursos,
minimizando el costo, esto lo logran a través de la feromona que segregan al
momento de buscar recursos, se concluye que a menor distancia, mayor será
la concentración de feromona, lo cual indicara cual será la ruta de menor costo
a seguir, en caso contrario si la distancia es mayor la misma se dispersara.
Otro caso que vale la pena reflexionar es el de las aves al observar el
comportamiento de ellas en el medio ambiente, una característica que resalta
es el liderazgo presente en todas, aunque su conducta refleja la necesidad de
un líder en su población, que tendrá como finalidad orientar a la especie en la
búsqueda de recursos en base a la experiencia acumulada.
Se indagó en el campo de la genética donde la incidencia que tienen
los cromosomas con sus alelos al definir los fenotipos y genotipos de las
especies, se observa al producir los cambios necesarios en sus alelos definen
la futura generación de excelencia, llama la atención como detrás de la
evolución de las especies existe la habilidad que tienen algunas a sobrevivir
a las condiciones ambientales y a las situaciones adversas, esta habilidad en
gran parte se debe a la programación de sus cromosomas que le permite
perdurar en el tiempo.
Las estrategias evolutivas serán los métodos a utilizar al generar
población, al seleccionar las muestras, y al aplicar la mutación en ellas,
seleccionando los mejores padres e hijos que cumplan con la condición de
estudio, este método se resume en sus tipos (1 + 1), (µ + 1), (µ + λ), (µ, λ).
Para finalizar los estudios realizados en el campo de la computación
evolutiva, tienen un punto de convergencia que es el algoritmo genético,
diseñado para imitar el comportamiento de las especies en estudio, estos
algoritmos son de mucha utilidad al ser implementados en la búsqueda de
soluciones para resolver, muchas de las problemáticas que se presentan en
labores cotidianas, en fin dichas secuencias no son nada despreciables en la
realización y puesta en marcha de futuros proyectos.
24