In [3]:
from spso2006 import Spso,eggHolder,rosen
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
%matplotlib inline
%load_ext autoreload
%autoreload 2
In [4]:
nbRepet = 20
n = 20
nbEpoch=120
acceptableFitness = -959.6407
In [8]:
data_k_i = []
for n in [5,10,20,30]:
for k in [2,3,4,5]:
for i in range(nbRepet):
pso = Spso(n,k=k,nbEvaluationMax=nbEpoch,acceptableFitness=acceptableFitness)
pso.reset()
pso.mainLoop()
fit = pso.epochSummary['fitness']
topo = pso.epochSummary['topology']
indivs = pso.epochSummary['bestX']
for epoch in range(len(fit)):
x = indivs[epoch]
data_k_i.append([n,k,i,epoch,fit[epoch],topo[epoch],x['x'],x['y'],x['z'],x['a'],x['b']])
# k = 10000
# for i in range(nbRepet):
# pso = Spso(n,k=k,nbEvaluationMax=nbEpoch,wl=0,wg=1,acceptableFitness=acceptableFitness)
# pso.reset()
# pso.mainLoop()
# fit = pso.epochSummary['fitness']
# indivs = pso.epochSummary['bestX']
# for epoch in range(len(fit)):
# x = indivs[epoch]
# data_k_i.append([n,k,i,epoch,fit[epoch],topo[epoch],x['x'],x['y'],x['z'],x['a'],x['b']])
In [4]:
data =pd.DataFrame(data_k_i,columns=['n','k','i','epoch','f','topo','x','y','z','a','b'])
In [5]:
plt.figure(figsize=(16,10))
sns.tsplot(time='epoch',value='f',unit='i',condition='k',data=data[data.n==20])
plt.hlines(acceptableFitness,0,nbEpoch)
Out[5]:
In [60]:
nbRepet = 1
n = 20
nbEpoch=120
acceptableFitness = -959.6407
nbThread=8
function = eggHolder
In [62]:
data_k_i = []
for n in [20,]:
print("n",n)
k = 3
for i in range(nbRepet):
print("i",i)
pso = Spso(n,k=k,nbEvaluationMax=nbEpoch,acceptableFitness=acceptableFitness,
nbThread=nbThread,evaluationFunc=eggHolder)
pso.mainLoop()
fit = pso.epochSummary['fitness']
topo = pso.epochSummary['topology']
indivs = pso.epochSummary['bestX']
for epoch in range(len(fit)):
x = indivs[epoch]
data_k_i.append([n,k,i,epoch,fit[epoch],topo[epoch],x['x'],x['y'],x['z'],x['a'],x['b']])
# k = 10000
# for i in range(nbRepet):
# pso = Spso(n,k=k,nbEvaluationMax=nbEpoch,wl=0,wg=1,acceptableFitness=acceptableFitness,
# nbThread=nbThread,evaluationFunc=eggHolder)
# pso.mainLoop()
# fit = pso.epochSummary['fitness']
# indivs = pso.epochSummary['bestX']
# for epoch in range(len(fit)):
# x = indivs[epoch]
# data_k_i.append([n,k,i,epoch,fit[epoch],topo[epoch],x['x'],x['y'],x['z'],x['a'],x['b']])
In [63]:
data =pd.DataFrame(data_k_i,columns=['n','k','i','epoch','f','topo','x','y','z','a','b'])
In [66]:
plt.figure(figsize=(16,10))
#sns.tsplot(time='epoch',value='topo',unit='i',condition='k',data=data[data.n==20])
sns.tsplot(time='epoch',value='f',unit='i',condition='k',data=data[data.n==20])
#plt.hlines(acceptableFitness,0,nbEpoch)
Out[66]:
In [67]:
log = pso.log
In [68]:
f = np.array(log['f'])
p = np.array(log['p'])
x = np.array(log['x'])
v = np.array(log['v'])
fp = np.array(log['fp'])
l = np.array(log['l'])
lp = np.zeros_like(x)
for i in range(120):
for j in range(20):
lp[i,j,:] = p[i,l[i,j],:]
In [69]:
indiv = 10
plt.plot(fp[:,indiv])
plt.plot(f[:,indiv])
print(np.min(fp))
In [72]:
indiv = 10
dim = 0
plt.plot(p[:,indiv,dim])
plt.plot(x[:,indiv,dim])
plt.plot(lp[:,indiv,dim])
Out[72]:
In [ ]: