Esempio n. 1
0
from evaluation import World
from config import Config

from genome import *
import json
import pandas as pd
import matplotlib.pyplot as plt

config = Config()
world = World(config=config)

best_individ_filename = "best_individual"
best_individ_filename = "playback-15/best_Individual_in_generation_7"
with open(best_individ_filename, 'r') as f:
    dict_data = json.load(f)
    best_individual = eval(dict_data)

# best_individual = {'id': 1856, 'genome': Genome(layer_chromosome={0: LayerGene(innovationNumber=0), 1: LayerGene(innovationNumber=1), 2: LayerGene(innovationNumber=2), 3: LayerGene(innovationNumber=3), 4: LayerGene(innovationNumber=4)}, neuron_chromosme={-1: NeruonGene(innovationNumber=-1, parent_layer=0), -2: NeruonGene(innovationNumber=-2, parent_layer=0), -3: NeruonGene(innovationNumber=-3, parent_layer=0), -4: NeruonGene(innovationNumber=-4, parent_layer=0), -5: NeruonGene(innovationNumber=-5, parent_layer=0), -6: NeruonGene(innovationNumber=-6, parent_layer=0), -7: NeruonGene(innovationNumber=-7, parent_layer=0), -8: NeruonGene(innovationNumber=-8, parent_layer=0), 1554: NeruonGene(innovationNumber=1554, parent_layer=1), 1555: NeruonGene(innovationNumber=1555, parent_layer=1), 1556: NeruonGene(innovationNumber=1556, parent_layer=1), 1557: NeruonGene(innovationNumber=1557, parent_layer=1), 1558: NeruonGene(innovationNumber=1558, parent_layer=1), 1559: NeruonGene(innovationNumber=1559, parent_layer=1), 1560: NeruonGene(innovationNumber=1560, parent_layer=2), 1561: NeruonGene(innovationNumber=1561, parent_layer=2), 1562: NeruonGene(innovationNumber=1562, parent_layer=2), 1563: NeruonGene(innovationNumber=1563, parent_layer=2), 1564: NeruonGene(innovationNumber=1564, parent_layer=2), 1565: NeruonGene(innovationNumber=1565, parent_layer=2), 1566: NeruonGene(innovationNumber=1566, parent_layer=3), 1567: NeruonGene(innovationNumber=1567, parent_layer=3), 1568: NeruonGene(innovationNumber=1568, parent_layer=3), 1569: NeruonGene(innovationNumber=1569, parent_layer=3), 0: NeruonGene(innovationNumber=0, parent_layer=4), 1: NeruonGene(innovationNumber=1, parent_layer=4)}, weight_chromosme={11252: WeightGene(innovationNumber=11252, value=-0.055136953037614456, transmitting_neuron=-1, receiving_neuron=1554), 11253: WeightGene(innovationNumber=11253, value=-0.0488005256579086, transmitting_neuron=-1, receiving_neuron=1555), 11254: WeightGene(innovationNumber=11254, value=0.49855325467973366, transmitting_neuron=-1, receiving_neuron=1556), 11255: WeightGene(innovationNumber=11255, value=0.750194817710996, transmitting_neuron=-1, receiving_neuron=1557), 11256: WeightGene(innovationNumber=11256, value=0.06920518902417627, transmitting_neuron=-1, receiving_neuron=1558), 11257: WeightGene(innovationNumber=11257, value=1.0169822222559475, transmitting_neuron=-1, receiving_neuron=1559), 11258: WeightGene(innovationNumber=11258, value=0.06951158729857432, transmitting_neuron=-2, receiving_neuron=1554), 11259: WeightGene(innovationNumber=11259, value=1.0434893625987227, transmitting_neuron=-2, receiving_neuron=1555), 11260: WeightGene(innovationNumber=11260, value=-0.8034708305728447, transmitting_neuron=-2, receiving_neuron=1556), 11261: WeightGene(innovationNumber=11261, value=0.7441444933293476, transmitting_neuron=-2, receiving_neuron=1557), 11262: WeightGene(innovationNumber=11262, value=0.24017929270766142, transmitting_neuron=-2, receiving_neuron=1558), 11263: WeightGene(innovationNumber=11263, value=-1.6635912905174137, transmitting_neuron=-2, receiving_neuron=1559), 11264: WeightGene(innovationNumber=11264, value=0.8281976821157806, transmitting_neuron=-3, receiving_neuron=1554), 11265: WeightGene(innovationNumber=11265, value=-0.33430443971640167, transmitting_neuron=-3, receiving_neuron=1555), 11266: WeightGene(innovationNumber=11266, value=1.4190572512378858, transmitting_neuron=-3, receiving_neuron=1556), 11267: WeightGene(innovationNumber=11267, value=0.42619188379377615, transmitting_neuron=-3, receiving_neuron=1557), 11268: WeightGene(innovationNumber=11268, value=0.23271568383150273, transmitting_neuron=-3, receiving_neuron=1558), 11269: WeightGene(innovationNumber=11269, value=-0.8653193780532187, transmitting_neuron=-3, receiving_neuron=1559), 11270: WeightGene(innovationNumber=11270, value=-0.07723449175889635, transmitting_neuron=-4, receiving_neuron=1554), 11271: WeightGene(innovationNumber=11271, value=0.3042074487829215, transmitting_neuron=-4, receiving_neuron=1555), 11272: WeightGene(innovationNumber=11272, value=0.6032012851641991, transmitting_neuron=-4, receiving_neuron=1556), 11273: WeightGene(innovationNumber=11273, value=0.09552192626832656, transmitting_neuron=-4, receiving_neuron=1557), 11274: WeightGene(innovationNumber=11274, value=0.4639043690114922, transmitting_neuron=-4, receiving_neuron=1558), 11275: WeightGene(innovationNumber=11275, value=1.2973910983842223, transmitting_neuron=-4, receiving_neuron=1559), 11276: WeightGene(innovationNumber=11276, value=1.9729376934579448, transmitting_neuron=-5, receiving_neuron=1554), 11277: WeightGene(innovationNumber=11277, value=-0.9657626906023669, transmitting_neuron=-5, receiving_neuron=1555), 11278: WeightGene(innovationNumber=11278, value=-0.020487002997184978, transmitting_neuron=-5, receiving_neuron=1556), 11279: WeightGene(innovationNumber=11279, value=1.1720433215519472, transmitting_neuron=-5, receiving_neuron=1557), 11280: WeightGene(innovationNumber=11280, value=0.3565896689386534, transmitting_neuron=-5, receiving_neuron=1558), 11281: WeightGene(innovationNumber=11281, value=0.32056814334820305, transmitting_neuron=-5, receiving_neuron=1559), 11282: WeightGene(innovationNumber=11282, value=0.004697101690843752, transmitting_neuron=-6, receiving_neuron=1554), 11283: WeightGene(innovationNumber=11283, value=-1.2787128269645494, transmitting_neuron=-6, receiving_neuron=1555), 11284: WeightGene(innovationNumber=11284, value=-0.2111901245995611, transmitting_neuron=-6, receiving_neuron=1556), 11285: WeightGene(innovationNumber=11285, value=-0.38493649961858095, transmitting_neuron=-6, receiving_neuron=1557), 11286: WeightGene(innovationNumber=11286, value=0.8883956964173175, transmitting_neuron=-6, receiving_neuron=1558), 11287: WeightGene(innovationNumber=11287, value=-0.9644303172592159, transmitting_neuron=-6, receiving_neuron=1559), 11288: WeightGene(innovationNumber=11288, value=-0.6359656335320123, transmitting_neuron=-7, receiving_neuron=1554), 11289: WeightGene(innovationNumber=11289, value=-0.5916174904968959, transmitting_neuron=-7, receiving_neuron=1555), 11290: WeightGene(innovationNumber=11290, value=-0.6277030400542893, transmitting_neuron=-7, receiving_neuron=1556), 11291: WeightGene(innovationNumber=11291, value=0.9550847930531976, transmitting_neuron=-7, receiving_neuron=1557), 11292: WeightGene(innovationNumber=11292, value=-0.09127157449984491, transmitting_neuron=-7, receiving_neuron=1558), 11293: WeightGene(innovationNumber=11293, value=-1.1040713248872625, transmitting_neuron=-7, receiving_neuron=1559), 11294: WeightGene(innovationNumber=11294, value=0.9758592896609907, transmitting_neuron=-8, receiving_neuron=1554), 11295: WeightGene(innovationNumber=11295, value=1.077438112393172, transmitting_neuron=-8, receiving_neuron=1555), 11296: WeightGene(innovationNumber=11296, value=0.9441051190901585, transmitting_neuron=-8, receiving_neuron=1556), 11297: WeightGene(innovationNumber=11297, value=0.7553122506836933, transmitting_neuron=-8, receiving_neuron=1557), 11298: WeightGene(innovationNumber=11298, value=0.8609024188626306, transmitting_neuron=-8, receiving_neuron=1558), 11299: WeightGene(innovationNumber=11299, value=0.5788121195059072, transmitting_neuron=-8, receiving_neuron=1559), 11300: WeightGene(innovationNumber=11300, value=-0.5250746317056791, transmitting_neuron=1554, receiving_neuron=1560), 11301: WeightGene(innovationNumber=11301, value=-0.692331617267114, transmitting_neuron=1554, receiving_neuron=1561), 11302: WeightGene(innovationNumber=11302, value=0.0986351697094196, transmitting_neuron=1554, receiving_neuron=1562), 11303: WeightGene(innovationNumber=11303, value=-0.36728612187345483, transmitting_neuron=1554, receiving_neuron=1563), 11304: WeightGene(innovationNumber=11304, value=-0.3091638214873336, transmitting_neuron=1554, receiving_neuron=1564), 11305: WeightGene(innovationNumber=11305, value=-0.7115853332743021, transmitting_neuron=1554, receiving_neuron=1565), 11306: WeightGene(innovationNumber=11306, value=-0.5805663189500264, transmitting_neuron=1555, receiving_neuron=1560), 11307: WeightGene(innovationNumber=11307, value=-0.9969142802502244, transmitting_neuron=1555, receiving_neuron=1561), 11308: WeightGene(innovationNumber=11308, value=-0.01951545594606674, transmitting_neuron=1555, receiving_neuron=1562), 11309: WeightGene(innovationNumber=11309, value=0.1807627990006182, transmitting_neuron=1555, receiving_neuron=1563), 11310: WeightGene(innovationNumber=11310, value=-0.12435898157917546, transmitting_neuron=1555, receiving_neuron=1564), 11311: WeightGene(innovationNumber=11311, value=-1.4337858207456593, transmitting_neuron=1555, receiving_neuron=1565), 11312: WeightGene(innovationNumber=11312, value=0.6605505369752399, transmitting_neuron=1556, receiving_neuron=1560), 11313: WeightGene(innovationNumber=11313, value=0.29103184589111497, transmitting_neuron=1556, receiving_neuron=1561), 11314: WeightGene(innovationNumber=11314, value=-0.062065097265442404, transmitting_neuron=1556, receiving_neuron=1562), 11315: WeightGene(innovationNumber=11315, value=0.16379590944752748, transmitting_neuron=1556, receiving_neuron=1563), 11316: WeightGene(innovationNumber=11316, value=0.26509978854204574, transmitting_neuron=1556, receiving_neuron=1564), 11317: WeightGene(innovationNumber=11317, value=-1.3251042110662494, transmitting_neuron=1556, receiving_neuron=1565), 11318: WeightGene(innovationNumber=11318, value=-0.52830545700024, transmitting_neuron=1557, receiving_neuron=1560), 11319: WeightGene(innovationNumber=11319, value=-0.18016230653364323, transmitting_neuron=1557, receiving_neuron=1561), 11320: WeightGene(innovationNumber=11320, value=0.7455961925692394, transmitting_neuron=1557, receiving_neuron=1562), 11321: WeightGene(innovationNumber=11321, value=-0.9721359247637521, transmitting_neuron=1557, receiving_neuron=1563), 11322: WeightGene(innovationNumber=11322, value=-1.2426356416385356, transmitting_neuron=1557, receiving_neuron=1564), 11323: WeightGene(innovationNumber=11323, value=0.13393930204463161, transmitting_neuron=1557, receiving_neuron=1565), 11324: WeightGene(innovationNumber=11324, value=-0.7693026835466501, transmitting_neuron=1558, receiving_neuron=1560), 11325: WeightGene(innovationNumber=11325, value=-0.06389989663915063, transmitting_neuron=1558, receiving_neuron=1561), 11326: WeightGene(innovationNumber=11326, value=-0.3693932235055595, transmitting_neuron=1558, receiving_neuron=1562), 11327: WeightGene(innovationNumber=11327, value=0.005718390492909675, transmitting_neuron=1558, receiving_neuron=1563), 11328: WeightGene(innovationNumber=11328, value=0.6318190219134677, transmitting_neuron=1558, receiving_neuron=1564), 11329: WeightGene(innovationNumber=11329, value=-0.2909277324903884, transmitting_neuron=1558, receiving_neuron=1565), 11330: WeightGene(innovationNumber=11330, value=-0.5923178270394193, transmitting_neuron=1559, receiving_neuron=1560), 11331: WeightGene(innovationNumber=11331, value=-0.4800737572221326, transmitting_neuron=1559, receiving_neuron=1561), 11332: WeightGene(innovationNumber=11332, value=0.007997523225285463, transmitting_neuron=1559, receiving_neuron=1562), 11333: WeightGene(innovationNumber=11333, value=0.980777298020504, transmitting_neuron=1559, receiving_neuron=1563), 11334: WeightGene(innovationNumber=11334, value=0.5054437918348569, transmitting_neuron=1559, receiving_neuron=1564), 11335: WeightGene(innovationNumber=11335, value=0.5858400988622506, transmitting_neuron=1559, receiving_neuron=1565), 11336: WeightGene(innovationNumber=11336, value=-1.4108879957605354, transmitting_neuron=1560, receiving_neuron=1566), 11337: WeightGene(innovationNumber=11337, value=-0.7762571684225656, transmitting_neuron=1560, receiving_neuron=1567), 11338: WeightGene(innovationNumber=11338, value=0.040025021744156675, transmitting_neuron=1560, receiving_neuron=1568), 11339: WeightGene(innovationNumber=11339, value=-0.48519036618770756, transmitting_neuron=1560, receiving_neuron=1569), 11340: WeightGene(innovationNumber=11340, value=0.9837146626106957, transmitting_neuron=1561, receiving_neuron=1566), 11341: WeightGene(innovationNumber=11341, value=-1.0657218951812637, transmitting_neuron=1561, receiving_neuron=1567), 11342: WeightGene(innovationNumber=11342, value=0.6372788179049411, transmitting_neuron=1561, receiving_neuron=1568), 11343: WeightGene(innovationNumber=11343, value=0.16717422226345902, transmitting_neuron=1561, receiving_neuron=1569), 11344: WeightGene(innovationNumber=11344, value=1.1648893626235253, transmitting_neuron=1562, receiving_neuron=1566), 11345: WeightGene(innovationNumber=11345, value=-1.3081104117701412, transmitting_neuron=1562, receiving_neuron=1567), 11346: WeightGene(innovationNumber=11346, value=0.5899958293517126, transmitting_neuron=1562, receiving_neuron=1568), 11347: WeightGene(innovationNumber=11347, value=0.029178673308525416, transmitting_neuron=1562, receiving_neuron=1569), 11348: WeightGene(innovationNumber=11348, value=-1.2079799696562221, transmitting_neuron=1563, receiving_neuron=1566), 11349: WeightGene(innovationNumber=11349, value=0.7297461866603929, transmitting_neuron=1563, receiving_neuron=1567), 11350: WeightGene(innovationNumber=11350, value=-0.18458133383550696, transmitting_neuron=1563, receiving_neuron=1568), 11351: WeightGene(innovationNumber=11351, value=-0.5225667348050639, transmitting_neuron=1563, receiving_neuron=1569), 11352: WeightGene(innovationNumber=11352, value=0.3219285161778088, transmitting_neuron=1564, receiving_neuron=1566), 11353: WeightGene(innovationNumber=11353, value=-0.06431471906784497, transmitting_neuron=1564, receiving_neuron=1567), 11354: WeightGene(innovationNumber=11354, value=-0.3251599413536679, transmitting_neuron=1564, receiving_neuron=1568), 11355: WeightGene(innovationNumber=11355, value=0.5325857436581312, transmitting_neuron=1564, receiving_neuron=1569), 11356: WeightGene(innovationNumber=11356, value=1.0549323592761306, transmitting_neuron=1565, receiving_neuron=1566), 11357: WeightGene(innovationNumber=11357, value=-0.807410167512803, transmitting_neuron=1565, receiving_neuron=1567), 11358: WeightGene(innovationNumber=11358, value=-0.8036454148978122, transmitting_neuron=1565, receiving_neuron=1568), 11359: WeightGene(innovationNumber=11359, value=0.35631839050392067, transmitting_neuron=1565, receiving_neuron=1569), 11360: WeightGene(innovationNumber=11360, value=0.4395251463817925, transmitting_neuron=1566, receiving_neuron=0), 11361: WeightGene(innovationNumber=11361, value=1.474050987184458, transmitting_neuron=1566, receiving_neuron=1), 11362: WeightGene(innovationNumber=11362, value=-1.2725787549362633, transmitting_neuron=1567, receiving_neuron=0), 11363: WeightGene(innovationNumber=11363, value=-1.1055317884438864, transmitting_neuron=1567, receiving_neuron=1), 11364: WeightGene(innovationNumber=11364, value=-0.647045260686983, transmitting_neuron=1568, receiving_neuron=0), 11365: WeightGene(innovationNumber=11365, value=-1.4789250301406733, transmitting_neuron=1568, receiving_neuron=1), 11366: WeightGene(innovationNumber=11366, value=-0.34901754098118926, transmitting_neuron=1569, receiving_neuron=0), 11367: WeightGene(innovationNumber=11367, value=-0.5243056637708751, transmitting_neuron=1569, receiving_neuron=1)}, bias_chromosme={1554: BiasGene(innovationNumber=1554, value=-0.2307023578571023, parent_neuron=1554), 1555: BiasGene(innovationNumber=1555, value=0.0024652771868658996, parent_neuron=1555), 1556: BiasGene(innovationNumber=1556, value=0.000608980446787255, parent_neuron=1556), 1557: BiasGene(innovationNumber=1557, value=0.02244367389629426, parent_neuron=1557), 1558: BiasGene(innovationNumber=1558, value=0.6808160035446621, parent_neuron=1558), 1559: BiasGene(innovationNumber=1559, value=0.8596128720085011, parent_neuron=1559), 1560: BiasGene(innovationNumber=1560, value=0.8036177738813592, parent_neuron=1560), 1561: BiasGene(innovationNumber=1561, value=0.28387644329323963, parent_neuron=1561), 1562: BiasGene(innovationNumber=1562, value=0.3881288088246148, parent_neuron=1562), 1563: BiasGene(innovationNumber=1563, value=-0.16475687920474655, parent_neuron=1563), 1564: BiasGene(innovationNumber=1564, value=-0.17579657083520306, parent_neuron=1564), 1565: BiasGene(innovationNumber=1565, value=-0.1529180336159246, parent_neuron=1565), 1566: BiasGene(innovationNumber=1566, value=0.6283052392032492, parent_neuron=1566), 1567: BiasGene(innovationNumber=1567, value=-0.2957708409683346, parent_neuron=1567), 1568: BiasGene(innovationNumber=1568, value=0.5310581012593364, parent_neuron=1568), 1569: BiasGene(innovationNumber=1569, value=-0.26887046003171655, parent_neuron=1569), 0: BiasGene(innovationNumber=0, value=-0.9256872987241501, parent_neuron=0), 1: BiasGene(innovationNumber=1, value=-1.4207954972877381, parent_neuron=1)}), 'fitness': 111.7651609343431}

world.evaluate(best_individual, render=True)

world.env.close()
Esempio n. 2
0
from statistics import mean

from IO_file_functions import write_generation_result_tofile, write_individal_to_file, getIndividSaveFile
from config import Config
from evaluation import World
from genetic_algorithm import crossover, mutate
from genetic_algorithm import initialize_populatin

if __name__ == '__main__':

    config = Config()

    ## Init population
    population = initialize_populatin(config)

    world = World(config=config)

    # geneB =  {'id': 2219, 'genome': Genome(layer_chromosome={0: LayerGene(level=0, innovationNumber=None, activation_function=None), 1: LayerGene(level=1, innovationNumber=None, activation_function=None), 2: LayerGene(level=2, innovationNumber=None, activation_function=None)}, neuron_chromosome={-1: NeuronGene(innovationNumber=-1, parent_layer=0), -2: NeuronGene(innovationNumber=-2, parent_layer=0), -3: NeuronGene(innovationNumber=-3, parent_layer=0), -4: NeuronGene(innovationNumber=-4, parent_layer=0), -5: NeuronGene(innovationNumber=-5, parent_layer=0), -6: NeuronGene(innovationNumber=-6, parent_layer=0), -7: NeuronGene(innovationNumber=-7, parent_layer=0), -8: NeuronGene(innovationNumber=-8, parent_layer=0), 108: NeuronGene(innovationNumber=108, parent_layer=1), 109: NeuronGene(innovationNumber=109, parent_layer=1), 110: NeuronGene(innovationNumber=110, parent_layer=1), 111: NeuronGene(innovationNumber=111, parent_layer=1), 0: NeuronGene(innovationNumber=0, parent_layer=2), 1: NeuronGene(innovationNumber=1, parent_layer=2), 2: NeuronGene(innovationNumber=2, parent_layer=2), 3: NeuronGene(innovationNumber=3, parent_layer=2)}, weight_chromosome={1248: WeightGene(value=0.9433276604105858, innovationNumber=1248, transmitting_neuron=-1, receiving_neuron=108), 1249: WeightGene(value=1.3309991359146838, innovationNumber=1249, transmitting_neuron=-1, receiving_neuron=109), 1250: WeightGene(value=0.8296905620249604, innovationNumber=1250, transmitting_neuron=-1, receiving_neuron=110), 1251: WeightGene(value=0.6173854220434225, innovationNumber=1251, transmitting_neuron=-1, receiving_neuron=111), 1252: WeightGene(value=1.2315522142001747, innovationNumber=1252, transmitting_neuron=-2, receiving_neuron=108), 1253: WeightGene(value=0.1717471046074385, innovationNumber=1253, transmitting_neuron=-2, receiving_neuron=109), 1254: WeightGene(value=-0.8730469043090361, innovationNumber=1254, transmitting_neuron=-2, receiving_neuron=110), 1255: WeightGene(value=0.14062688160851422, innovationNumber=1255, transmitting_neuron=-2, receiving_neuron=111), 1256: WeightGene(value=0.09762408450695048, innovationNumber=1256, transmitting_neuron=-3, receiving_neuron=108), 1257: WeightGene(value=0.19577176253156636, innovationNumber=1257, transmitting_neuron=-3, receiving_neuron=109), 1258: WeightGene(value=-0.15640976446709376, innovationNumber=1258, transmitting_neuron=-3, receiving_neuron=110), 1259: WeightGene(value=-0.0463296916910145, innovationNumber=1259, transmitting_neuron=-3, receiving_neuron=111), 1260: WeightGene(value=0.4322197991572294, innovationNumber=1260, transmitting_neuron=-4, receiving_neuron=108), 1261: WeightGene(value=-0.4405215085801435, innovationNumber=1261, transmitting_neuron=-4, receiving_neuron=109), 1262: WeightGene(value=-0.6708439704209194, innovationNumber=1262, transmitting_neuron=-4, receiving_neuron=110), 1263: WeightGene(value=1.2137582682183132, innovationNumber=1263, transmitting_neuron=-4, receiving_neuron=111), 1264: WeightGene(value=-1.2051739653304212, innovationNumber=1264, transmitting_neuron=-5, receiving_neuron=108), 1265: WeightGene(value=-0.38875891149916797, innovationNumber=1265, transmitting_neuron=-5, receiving_neuron=109), 1266: WeightGene(value=-0.006313907304450916, innovationNumber=1266, transmitting_neuron=-5, receiving_neuron=110), 1267: WeightGene(value=-0.5561866113517258, innovationNumber=1267, transmitting_neuron=-5, receiving_neuron=111), 1268: WeightGene(value=0.3031599686327767, innovationNumber=1268, transmitting_neuron=-6, receiving_neuron=108), 1269: WeightGene(value=-0.8095897889960313, innovationNumber=1269, transmitting_neuron=-6, receiving_neuron=109), 1270: WeightGene(value=0.1586314698285315, innovationNumber=1270, transmitting_neuron=-6, receiving_neuron=110), 1271: WeightGene(value=0.9918726184859533, innovationNumber=1271, transmitting_neuron=-6, receiving_neuron=111), 1272: WeightGene(value=-0.7355105369662676, innovationNumber=1272, transmitting_neuron=-7, receiving_neuron=108), 1273: WeightGene(value=-0.3899354078985431, innovationNumber=1273, transmitting_neuron=-7, receiving_neuron=109), 1274: WeightGene(value=-0.4394729613030534, innovationNumber=1274, transmitting_neuron=-7, receiving_neuron=110), 1275: WeightGene(value=0.22655646691765957, innovationNumber=1275, transmitting_neuron=-7, receiving_neuron=111), 1276: WeightGene(value=0.8268646338432031, innovationNumber=1276, transmitting_neuron=-8, receiving_neuron=108), 1277: WeightGene(value=-0.848737706344886, innovationNumber=1277, transmitting_neuron=-8, receiving_neuron=109), 1278: WeightGene(value=-0.9770976777158128, innovationNumber=1278, transmitting_neuron=-8, receiving_neuron=110), 1279: WeightGene(value=0.30049549592053476, innovationNumber=1279, transmitting_neuron=-8, receiving_neuron=111), 1280: WeightGene(value=0.7395496008902067, innovationNumber=1280, transmitting_neuron=108, receiving_neuron=0), 1281: WeightGene(value=-0.6690782608690221, innovationNumber=1281, transmitting_neuron=108, receiving_neuron=1), 1282: WeightGene(value=-0.08775073763817653, innovationNumber=1282, transmitting_neuron=108, receiving_neuron=2), 1283: WeightGene(value=0.14110829925703278, innovationNumber=1283, transmitting_neuron=108, receiving_neuron=3), 1284: WeightGene(value=0.6927498596772106, innovationNumber=1284, transmitting_neuron=109, receiving_neuron=0), 1285: WeightGene(value=0.17024718669516548, innovationNumber=1285, transmitting_neuron=109, receiving_neuron=1), 1286: WeightGene(value=0.7420756748955472, innovationNumber=1286, transmitting_neuron=109, receiving_neuron=2), 1287: WeightGene(value=0.3721029843758649, innovationNumber=1287, transmitting_neuron=109, receiving_neuron=3), 1288: WeightGene(value=-1.1755119055162369, innovationNumber=1288, transmitting_neuron=110, receiving_neuron=0), 1289: WeightGene(value=0.16905377466895763, innovationNumber=1289, transmitting_neuron=110, receiving_neuron=1), 1290: WeightGene(value=0.012035969476737685, innovationNumber=1290, transmitting_neuron=110, receiving_neuron=2), 1291: WeightGene(value=-0.4754311329467581, innovationNumber=1291, transmitting_neuron=110, receiving_neuron=3), 1292: WeightGene(value=1.1958463640363421, innovationNumber=1292, transmitting_neuron=111, receiving_neuron=0), 1293: WeightGene(value=0.043463871930397635, innovationNumber=1293, transmitting_neuron=111, receiving_neuron=1), 1294: WeightGene(value=0.026669355679097284, innovationNumber=1294, transmitting_neuron=111, receiving_neuron=2), 1295: WeightGene(value=-0.03835137731020505, innovationNumber=1295, transmitting_neuron=111, receiving_neuron=3)}, bias_chromosome={108: BiasGene(value=0.7668089188110419, parent_neuron=108, innovationNumber=None), 109: BiasGene(value=0.6232083939584674, parent_neuron=109, innovationNumber=None), 110: BiasGene(value=0.1525173479877075, parent_neuron=110, innovationNumber=None), 111: BiasGene(value=0.38175093124723825, parent_neuron=111, innovationNumber=None), 0: BiasGene(value=0.46697282789873307, parent_neuron=0, innovationNumber=None), 1: BiasGene(value=0.49660603710994705, parent_neuron=1, innovationNumber=None), 2: BiasGene(value=0.6718369588691699, parent_neuron=2, innovationNumber=None), 3: BiasGene(value=0.736153780701598, parent_neuron=3, innovationNumber=None)}), 'fitness': -8.393776440787112}
    # layer_sizes = [ant_input_neruons, 4, ant_output_neruons]

    for g in range(config.generations):
        # print("Generation {}".format(g))
        ## Evaualte
        for individual in population:
            world.evaluate(individual, ant_simulations=config.ant_simulations)

        after_evaluation = time.time()
        ## Summarize current generation
        best = max(population, key=lambda individual: individual.fitness)
        average_population_fitness = mean(
            [individual.fitness for individual in population])
Esempio n. 3
0
from IO_file_functions import getIndividSaveFile
import json
from evaluation import World
from genome import *

import json

from config import Config
from evaluation import World

## playback

from genetic_algorithm import Individ

config = Config
world = World(config=config)

for g in range(config.generations):
    best_individual_file = getIndividSaveFile(config.save_best_individual_base,
                                              g)
    print("Best in generation {}".format(g))
    with open(best_individual_file, 'r') as f:
        dict_data = json.load(f)
        best_individual = eval(dict_data)

        world.evaluate(best_individual, ant_simulations=1, render=True)

data = pd.read_csv(config.save_score_file,
                   sep=";",
                   names=["generation", "best fitness", "avg_fitness"])
fig, ax = plt.subplots()
Esempio n. 4
0
    new_dict: dict = {}
    for key, value in dictionary.items():
        if counter >= n:
            break
        new_dict[key] = value
        counter += 1

    return new_dict


if __name__ == '__main__':
    config = Config()
    rmtree(config.playback_folder)
    config = Config()

    world = World(config=config)

    ## Init population
    population = initialize_population(config)

    geneB = Genome(layer_chromosome={
        0: LayerGene(innovationNumber=0),
        1: LayerGene(innovationNumber=1),
        2: LayerGene(innovationNumber=2),
        3: LayerGene(innovationNumber=3),
        4: LayerGene(innovationNumber=4)
    },
                   neuron_chromosme={
                       -1: NeruonGene(innovationNumber=-1, parent_layer=0),
                       -2: NeruonGene(innovationNumber=-2, parent_layer=0),
                       -3: NeruonGene(innovationNumber=-3, parent_layer=0),
Esempio n. 5
0
    for k, v in dictionary.items():
        new_dict[k] = v
        ant_created += 1
        if ant_created == n:
            break
    return new_dict


if __name__ == '__main__':

    config = Config()

    ## Init population
    population = initialize_populatin(config)

    world = World(config=config)

    # geneB =  {'id': 2219, 'genome': Genome(layer_chromosome={0: LayerGene(level=0, innovationNumber=None, activation_function=None), 1: LayerGene(level=1, innovationNumber=None, activation_function=None), 2: LayerGene(level=2, innovationNumber=None, activation_function=None)}, neuron_chromosome={-1: NeuronGene(innovationNumber=-1, parent_layer=0), -2: NeuronGene(innovationNumber=-2, parent_layer=0), -3: NeuronGene(innovationNumber=-3, parent_layer=0), -4: NeuronGene(innovationNumber=-4, parent_layer=0), -5: NeuronGene(innovationNumber=-5, parent_layer=0), -6: NeuronGene(innovationNumber=-6, parent_layer=0), -7: NeuronGene(innovationNumber=-7, parent_layer=0), -8: NeuronGene(innovationNumber=-8, parent_layer=0), 108: NeuronGene(innovationNumber=108, parent_layer=1), 109: NeuronGene(innovationNumber=109, parent_layer=1), 110: NeuronGene(innovationNumber=110, parent_layer=1), 111: NeuronGene(innovationNumber=111, parent_layer=1), 0: NeuronGene(innovationNumber=0, parent_layer=2), 1: NeuronGene(innovationNumber=1, parent_layer=2), 2: NeuronGene(innovationNumber=2, parent_layer=2), 3: NeuronGene(innovationNumber=3, parent_layer=2)}, weight_chromosome={1248: WeightGene(value=0.9433276604105858, innovationNumber=1248, transmitting_neuron=-1, receiving_neuron=108), 1249: WeightGene(value=1.3309991359146838, innovationNumber=1249, transmitting_neuron=-1, receiving_neuron=109), 1250: WeightGene(value=0.8296905620249604, innovationNumber=1250, transmitting_neuron=-1, receiving_neuron=110), 1251: WeightGene(value=0.6173854220434225, innovationNumber=1251, transmitting_neuron=-1, receiving_neuron=111), 1252: WeightGene(value=1.2315522142001747, innovationNumber=1252, transmitting_neuron=-2, receiving_neuron=108), 1253: WeightGene(value=0.1717471046074385, innovationNumber=1253, transmitting_neuron=-2, receiving_neuron=109), 1254: WeightGene(value=-0.8730469043090361, innovationNumber=1254, transmitting_neuron=-2, receiving_neuron=110), 1255: WeightGene(value=0.14062688160851422, innovationNumber=1255, transmitting_neuron=-2, receiving_neuron=111), 1256: WeightGene(value=0.09762408450695048, innovationNumber=1256, transmitting_neuron=-3, receiving_neuron=108), 1257: WeightGene(value=0.19577176253156636, innovationNumber=1257, transmitting_neuron=-3, receiving_neuron=109), 1258: WeightGene(value=-0.15640976446709376, innovationNumber=1258, transmitting_neuron=-3, receiving_neuron=110), 1259: WeightGene(value=-0.0463296916910145, innovationNumber=1259, transmitting_neuron=-3, receiving_neuron=111), 1260: WeightGene(value=0.4322197991572294, innovationNumber=1260, transmitting_neuron=-4, receiving_neuron=108), 1261: WeightGene(value=-0.4405215085801435, innovationNumber=1261, transmitting_neuron=-4, receiving_neuron=109), 1262: WeightGene(value=-0.6708439704209194, innovationNumber=1262, transmitting_neuron=-4, receiving_neuron=110), 1263: WeightGene(value=1.2137582682183132, innovationNumber=1263, transmitting_neuron=-4, receiving_neuron=111), 1264: WeightGene(value=-1.2051739653304212, innovationNumber=1264, transmitting_neuron=-5, receiving_neuron=108), 1265: WeightGene(value=-0.38875891149916797, innovationNumber=1265, transmitting_neuron=-5, receiving_neuron=109), 1266: WeightGene(value=-0.006313907304450916, innovationNumber=1266, transmitting_neuron=-5, receiving_neuron=110), 1267: WeightGene(value=-0.5561866113517258, innovationNumber=1267, transmitting_neuron=-5, receiving_neuron=111), 1268: WeightGene(value=0.3031599686327767, innovationNumber=1268, transmitting_neuron=-6, receiving_neuron=108), 1269: WeightGene(value=-0.8095897889960313, innovationNumber=1269, transmitting_neuron=-6, receiving_neuron=109), 1270: WeightGene(value=0.1586314698285315, innovationNumber=1270, transmitting_neuron=-6, receiving_neuron=110), 1271: WeightGene(value=0.9918726184859533, innovationNumber=1271, transmitting_neuron=-6, receiving_neuron=111), 1272: WeightGene(value=-0.7355105369662676, innovationNumber=1272, transmitting_neuron=-7, receiving_neuron=108), 1273: WeightGene(value=-0.3899354078985431, innovationNumber=1273, transmitting_neuron=-7, receiving_neuron=109), 1274: WeightGene(value=-0.4394729613030534, innovationNumber=1274, transmitting_neuron=-7, receiving_neuron=110), 1275: WeightGene(value=0.22655646691765957, innovationNumber=1275, transmitting_neuron=-7, receiving_neuron=111), 1276: WeightGene(value=0.8268646338432031, innovationNumber=1276, transmitting_neuron=-8, receiving_neuron=108), 1277: WeightGene(value=-0.848737706344886, innovationNumber=1277, transmitting_neuron=-8, receiving_neuron=109), 1278: WeightGene(value=-0.9770976777158128, innovationNumber=1278, transmitting_neuron=-8, receiving_neuron=110), 1279: WeightGene(value=0.30049549592053476, innovationNumber=1279, transmitting_neuron=-8, receiving_neuron=111), 1280: WeightGene(value=0.7395496008902067, innovationNumber=1280, transmitting_neuron=108, receiving_neuron=0), 1281: WeightGene(value=-0.6690782608690221, innovationNumber=1281, transmitting_neuron=108, receiving_neuron=1), 1282: WeightGene(value=-0.08775073763817653, innovationNumber=1282, transmitting_neuron=108, receiving_neuron=2), 1283: WeightGene(value=0.14110829925703278, innovationNumber=1283, transmitting_neuron=108, receiving_neuron=3), 1284: WeightGene(value=0.6927498596772106, innovationNumber=1284, transmitting_neuron=109, receiving_neuron=0), 1285: WeightGene(value=0.17024718669516548, innovationNumber=1285, transmitting_neuron=109, receiving_neuron=1), 1286: WeightGene(value=0.7420756748955472, innovationNumber=1286, transmitting_neuron=109, receiving_neuron=2), 1287: WeightGene(value=0.3721029843758649, innovationNumber=1287, transmitting_neuron=109, receiving_neuron=3), 1288: WeightGene(value=-1.1755119055162369, innovationNumber=1288, transmitting_neuron=110, receiving_neuron=0), 1289: WeightGene(value=0.16905377466895763, innovationNumber=1289, transmitting_neuron=110, receiving_neuron=1), 1290: WeightGene(value=0.012035969476737685, innovationNumber=1290, transmitting_neuron=110, receiving_neuron=2), 1291: WeightGene(value=-0.4754311329467581, innovationNumber=1291, transmitting_neuron=110, receiving_neuron=3), 1292: WeightGene(value=1.1958463640363421, innovationNumber=1292, transmitting_neuron=111, receiving_neuron=0), 1293: WeightGene(value=0.043463871930397635, innovationNumber=1293, transmitting_neuron=111, receiving_neuron=1), 1294: WeightGene(value=0.026669355679097284, innovationNumber=1294, transmitting_neuron=111, receiving_neuron=2), 1295: WeightGene(value=-0.03835137731020505, innovationNumber=1295, transmitting_neuron=111, receiving_neuron=3)}, bias_chromosome={108: BiasGene(value=0.7668089188110419, parent_neuron=108, innovationNumber=None), 109: BiasGene(value=0.6232083939584674, parent_neuron=109, innovationNumber=None), 110: BiasGene(value=0.1525173479877075, parent_neuron=110, innovationNumber=None), 111: BiasGene(value=0.38175093124723825, parent_neuron=111, innovationNumber=None), 0: BiasGene(value=0.46697282789873307, parent_neuron=0, innovationNumber=None), 1: BiasGene(value=0.49660603710994705, parent_neuron=1, innovationNumber=None), 2: BiasGene(value=0.6718369588691699, parent_neuron=2, innovationNumber=None), 3: BiasGene(value=0.736153780701598, parent_neuron=3, innovationNumber=None)}), 'fitness': -8.393776440787112}
    # layer_sizes = [ant_input_neruons, 4, ant_output_neruons]

    for g in range(config.generations):
        # print("Generation {}".format(g))
        ## Evaualte
        for individual in population.values():
            world.evaluate(individual, ant_simulations=config.ant_simulations)

        after_evaluation = time.time()
        ## Summarize current generation
        best = max(population.values(),
                   key=lambda individual: individual.fitness)
        average_population_fitness = mean(
Esempio n. 6
0
            break
        new_dict[key] = value
        counter += 1

    return new_dict


if __name__ == '__main__':
    see_time = True
    t0 = time.time()

    config = Config()
    rmtree(config.playback_folder)
    config = Config()

    world = World(config=config)

    ## Init population
    population = initialize_population(config)

    t1 = time.time()
    if see_time:
        print(
            "time to start up before starting on the generations : {}s".format(
                t1 - t0))

    geneB = Genome(layer_chromosome={
        0: LayerGene(innovationNumber=0),
        1: LayerGene(innovationNumber=1),
        2: LayerGene(innovationNumber=2),
        3: LayerGene(innovationNumber=3),