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() |
Partager