Bonjour
j'ai développé un algorithme génétique, je veux afficher quelques données concernant cet algorithme par exemple afficher le graphique de la fonction moyenne de fitness en cours de générations.J'ai implémenté cet code mais j'ai pas obtenu un bon résultat.
voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from Topology import *
import algo_gen
import matplotlib.pyplot as plt
 
 
def main():
    parser = OptionParser("usage: %prog [options]")
    parser.add_option("-o", "--o", type="str", dest="outputTopo", default="", help="the output file")
    parser.add_option("-i", "--i", type="str", dest="inputTopo", default="", help="the output file")
    parser.add_option("-n", "--n", type="int", dest="n_", default=35, help="the number of nodes")
    parser.add_option("-d", "--d", type="int", dest="d_", default=8, help="the degree of nodes")
    parser.add_option("-p", "--p", type="str", dest="path_", default="", help="the path of simulation")
    parser.add_option("-t", "--t", type="int", dest="duration_", default=50, help="the time of simulation")
    parser.add_option("-m", "--m", type="str", dest="moduleName_", default="", help="the module name")
    parser.add_option("-s", "--s", type="int", dest="maxNeighbors", default=8, help="the max number of neighbors")
   # parser.add_option("-alpha", "--alpha", type="float", dest="varianceWeight_", default=0.5, help="thevariance Weight")
   # parser.add_option("-beta", "--beta", type="float", dest="NbreIGWeight_", default=0.5, help="the nbre IG Weight")
    (options, agrs) = parser.parse_args()
    sink = 0
    topo = Topology(options.inputTopo, options.outputTopo, sink)
    topo.generateTopNodeDegree(options.n_, options.d_)
    topo.draw()
    topo.getEdges()
    d = topo.get_matrix()
    print d
    s = []
    a = algo_gen.individu(options.n_)
    # b=algo_gen.individu(10)
    print a.get_random(s)
    # print b.get_random(s)
    # print a.get_distance(d,10)
    # print a.get_individual_fitness(d,10)
    p = algo_gen.population(options.n_, 30)
    average_grade = p.average_grade_population(d,options.n_)
    print('Starting grade: %.2f' % average_grade)
    i = 0
    #solution = None
    log_avg = []
    while i < 10:
       # average_grade=p.average_grade_population(d,10)
        average_grade=p.average_grade_population(d,options.n_)
        print i
        p.selection(d, options.n_)
        p.croisement_nombre()
        #print "fin croisement"
        p.mutation(0.08)
      #  print "fin mutation"
        print ('Current grade: %.2f' %average_grade,  '(%d generation)' % i)
        log_avg.append(average_grade)
        i+= 1
    plt.title("Evolution fitness")
    plt.xlabel("Generations")
    plt.ylabel("Fitness")
    x_axis = [x for x in log_avg]
    y_axis = [i for i in range (10)]
    plt.plot(x_axis, y_axis)
    plt.show()
    print('Final grade: %.2f' % average_grade)
    for v in p.individus:
        print v.genes
 
 
if __name__ == "__main__":
    main()
Merci d'avance pour vos réponses.