-
Notifications
You must be signed in to change notification settings - Fork 0
/
pso_run.py
67 lines (53 loc) · 1.82 KB
/
pso_run.py
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
65
66
67
from ParticleSwarmOptimization_EvolutionaryStrategy.util.draw import main_animation
from ParticleSwarmOptimization_EvolutionaryStrategy.function.settingFunction import TXT, set_up, chartFunction, \
function_name
def naive_variance(data):
n = 0
Sum = 0
Sum_sqr = 0
for x in data:
n = n + 1
Sum = Sum + x
Sum_sqr = Sum_sqr + x * x
variance = (Sum_sqr - (Sum * Sum) / n) / (n - 1)
return variance
def average(date):
Sum=0
for x in date:
Sum+=x
return Sum/len(date)
def mainPso():
simulation, _ = set_up()
res=None
counter=1
for result in simulation.run():
step = result['cycle']['step']
best = result['gbest']
# if(counter<=150):
# main_animation(result, _,function_name()+str(counter))
counter=counter+1
res=result
if step % 10 == 0:
print(TXT.format(step, best[1][0], best[1][1], best[0]))
# main_animation(res, _,function_name()+"_GlobalBest")
return best[0],best[1]
arrFitness=[]
arrPosition=[]
if __name__ == '__main__':
step = 30
for i in range(step):
fitness, position = mainPso()
arrFitness.append(fitness)
arrPosition.append(position)
# chartFunction()
# simulation, _ = set_up()
# main_animation(simulation, _ ,function_name()+"_PopulationInit")
print("==================================================================")
for i in range(step):
print('step'+str(i+1))
print('position: '+str(arrPosition[i]))
print('bestFitness: '+ str(arrFitness[i]))
print("==================================================================")
print(arrFitness)
print('Variance: '+str(naive_variance(arrFitness)))
print('Average: '+str(average(arrFitness)))