Ir a Inicio

Colaboración entre individuos

Programa 5. Comparando el algoritmo genético contra una red neuronal (perceptrón multicapa).

En la comparación anterior, lo hizo mejor el algoritmo genético que mejora primero los individuos. En esta ocasión, se compara ese algoritmo genético contra una red neuronal (perceptrón multicapa).

1. Se genera al azar una ecuación.

2. Esta ecuación genera un conjunto de datos de tipo X, Y.

3. Se reescribieron los algoritmos para que usaran la misma cantidad de tiempo y así comparar cuál es más eficiente.

4. Tanto el algoritmo genético como la red neuronal intentarán cubrir todo el conjunto de datos con una sola ecuación.


Código fuente

Descargar el código fuente desarrollado en C#. Probado en Microsoft Visual Studio 2022 Community Edition


Resultados

Se hicieron 50 pruebas. Cada prueba genera un conjunto de datos de 200 registros (nacidos de una ecuación creada en forma aleatoria). En cada prueba, cada algoritmo tuvo 10 segundos para operar.

Cada valor de la tabla es la mejor aproximación que tuvo el mejor individuo en la población al conjunto de datos. Entre más cercano a cero es mejor.

Algoritmo Genético (población: 100 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
0,0564095870,050768058
0,0031121540,001861577
5,01E-052,367256871
0,0415256840,005296844
0,045587360,006861776
0,0062005710,001576744
0,1349191960,00552177
0,0914451510,00727422
0,0017998250,004657489
0,0408327690,011581341
0,3846646150,003653298
0,00011674511,93224729
0,3018657020,003891278
0,22974220,006171706
2,850742170,003277111
0,0287798890,006233412
0,9161006320,903040892
0,0026962520,001617391
0,0018973930,002337936
0,2126200970,005410461
0,0409705550,003883254
1,9612981820,000810018
0,0409161690,004052651
0,5973214210,386056736
0,0658962710,006635768
0,0123822730,007900692
0,0021924630,003200907
0,0339914810,00330776
0,04105920,005365516
0,0397123440,011473051
0,6197563450,626917069
0,0388583420,002719818
0,5915144080,366639355
0,6963654640,037309013
0,0034102730,001217354
8,7737577025,895568474
0,0468146270,006253101
0,0034638170,002035888
0,6458015050,001380191
0,0408390660,007058582
0,035976620,004449249
0,0978029520,014384295
0,7762447150,768370477
0,056845330,006116995
0,0409199580,012500529
0,0409351660,00788109
0,904191090,911076466
0,1638531560,011219462
0,0052227320,009794643
0,1025956740,007928003
Promedio: 0,437440348Promedio: 0,489280877




Algoritmo Genético (población: 250 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
0,0027388950,007435696
0,0532227150,010510213
0,0409885070,012803539
0,0055556350,004137448
0,0531087620,009026788
0,429171380,00259097
0,012658890,001895588
0,0391785980,005084603
0,9525832850,989763775
0,0017459220,007106661
0,0530930290,006365995
0,1026948560,019117981
0,0414769210,01732451
0,9262531350,999355014
0,1565146950,006570568
0,7223986730,739598247
0,053228830,013483637
0,0401246330,013136605
0,1565202260,006300334
0,0395062160,004715571
0,0064577730,005379192
0,0001061480,003445485
0,0041840820,006535181
0,0439941730,010416954
0,0408476860,013648211
0,0088756530,019212311
0,0021064640,001898676
0,039739310,012698318
0,1905544360,003283916
0,0017122080,00109696
0,0409060980,004808459
0,0408556130,006232195
0,0052548510,002939542
0,0068877720,000584531
0,0018685730,001171315
2,1210932710,000265699
0,0194530160,004250675
0,9156027610,957964901
0,0026025130,000825023
0,0017807280,001035339
0,0091237720,001696353
0,1998626980,003513151
0,0486134210,020218377
0,0078230330,006341934
0,0019728890,020373753
0,1694925940,018853633
0,5910968090,001398673
0,0015513130,000793783
0,6613456780,170475862
0,0387692220,013956033
Promedio: 0,182145967Promedio: 0,083832763




Algoritmo Genético (población: 500 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
0,0457052190,01158748
0,0960466450,01323741
0,2367858940,009299029
0,0159216860,003612142
0,0147910620,003863399
0,00715950,0014993
0,00364780,010041613
0,0026422470,008896704
0,0028570660,006235412
0,0598107010,002751161
0,0397143290,005549972
0,5324879420,003222028
0,0026724880,001069281
0,0234677450,002759507
0,0027844310,0012695
0,0410881360,003203934
0,0397753290,004455568
0,6503439620,328891501
0,0408661410,005967821
0,0040518010,020495148
0,0408855880,004899178
0,0408636920,014085881
0,0036623330,004609448
0,0031068350,001128523
0,0064947410,004307463
0,0030445040,001710511
0,0385367610,004157228
0,0408390240,005921686
0,0385921170,013879406
0,0421989180,012663046
0,0031201590,003105548
0,0396014130,011418638
0,121168230,015194655
0,0020634120,000992255
0,0397682060,015028975
0,0031082420,001264114
7,29E-060,005665333
0,0016440040,006256636
0,0037393390,00163749
0,0669891140,015576702
0,6008421580,364637271
0,0133012930,003061603
0,0107244480,001901634
0,0387365970,012761851
0,1211509870,011004292
0,5772633730,602620104
0,5732980840,600871965
0,0048680060,004949279
0,0045584550,005940986
0,0037088080,001174557
Promedio: 0,087010125Promedio: 0,044006683




Algoritmo Genético (población: 750 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
0,0735969550,011701394
0,0208802060,003216936
0,0952742180,005794233
0,0408578230,01271875
0,0005153270,004607653
0,0066061090,003535447
0,0002403040,00426408
0,0029736980,001510895
0,0019424620,000826035
0,0233688070,003010282
0,063933480,005756714
0,6936994710,043586601
4,9789758691,19378722
0,0017539290,000843333
0,0448087850,00416116
2,5991459720,000482171
0,0025331440,001698213
0,1091351610,018543145
0,0014260740,000836743
0,6804359960,697202909
0,4688698380,004699076
2,6427645870,001707228
0,0004030090,000676294
0,0288397830,003384246
0,0545229740,007228966
0,0404447640,007175726
0,0574688250,004292816
0,0090089950,012764017
0,0391909960,004016388
0,0035324410,019536189
0,6072645340,608038603
0,001570240,001983717
0,0075304910,001346314
0,001310320,000745118
0,0034792390,002567215
0,7681400220,78045493
0,0496344130,00411522
0,0408954190,004005847
0,0953729380,006392564
0,5970984180,339193495
0,93592040,974304855
0,0408529770,017859016
0,0076412760,009389338
0,0420563290,018484971
0,0145803220,007167583
0,0400963260,018287478
0,0017991580,002459916
1,6262476820,000432976
0,0031194530,009242168
0,0378838930,012818774
Promedio: 0,354192877Promedio: 0,098057099




Algoritmo Genético (población: 1000 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.

Algoritmo genético mejorando primero los individuosRed Neuronal (Perceptrón multicapa)
0,0636648010,007294925
0,0306090260,003369836
0,0062131550,004122689
0,0022622690,004768821
0,040928560,015340665
0,0251875160,002683691
0,0070516880,002074759
1,5578559260,005438602
0,0395979310,010815268
0,032919230,004277725
0,6369036350,000882676
0,0385290440,01345365
0,0574840790,007722232
0,0221164870,007990784
0,9273959510,97450765
3,22E-060,008315674
0,0211484780,009234336
0,3365603350,003300005
0,0012906220,001095776
0,0396661440,004560474
0,001888470,006067861
0,0003014530,001063474
0,8717176770,795047708
0,5975287090,384757834
0,0112515570,003434738
0,006054280,008681054
0,0054498990,005302853
0,8500426960,000781718
0,3723873510,004532554
0,0006163320,001412185
0,4092790970,003333115
0,4828782090,008587236
0,060209810,002395195
0,0373428060,012978091
0,1783332820,042423438
0,6414684430,661011502
0,0075140290,001357586
0,0016692640,000727154
0,0822876040,006910647
0,0029578120,001343235
0,6341743060,000890253
0,0026058490,001145639
0,1153375710,002251434
0,8878557430,894815742
0,0634393620,004543663
0,0055233570,00125938
0,8524004770,000906904
0,0003876080,004213101
0,0505105210,00584791
0,040989770,003847243
Promedio: 0,223235829Promedio: 0,079262414




Conclusiones

En 4 de 5 pruebas, la red neuronal tuvo mejor aproximación en promedio. Por lo general, donde hay una aproximación peor para el algoritmo genético, también lo es para la red neuronal.
Cabe recordar que el algoritmo genético lo componen individuos que tienen la siguiente expresión y=f(x) así:
y=(seno(a*(1-x)^4 + b*(1-x)^3 + c*(1-x)^2 + d*(1-x) +e + f*x + g*x^2 + h*x^3 + i*x^4)+1)/2
el algoritmo genético trabaja en modificar a, b, c, d, e, f, g, h, i.