83 lines
2.1 KiB
Python
83 lines
2.1 KiB
Python
from PyEO import *
|
|
|
|
try:
|
|
import Gnuplot
|
|
except ImportError:
|
|
print "Python support for Gnuplot not found"
|
|
else:
|
|
|
|
class eoGnuplot1DMonitor(eoMonitor):
|
|
def __init__(self):
|
|
eoMonitor.__init__(self)
|
|
self.values = []
|
|
self.indices = []
|
|
self.g = Gnuplot.Gnuplot()
|
|
self.g.reset();
|
|
|
|
def handleParam(self, i, param):
|
|
param = float(param)
|
|
|
|
while len(self.values) <= i:
|
|
self.values.append( [] )
|
|
|
|
self.values[i].append(param)
|
|
|
|
def __call__(self):
|
|
l = len(self)
|
|
|
|
if l > 3 or l == 0:
|
|
print 'Can only handle 1 to 3 params currently'
|
|
|
|
i = 0
|
|
for param in self:
|
|
self.handleParam(i,param)
|
|
i += 1
|
|
|
|
self.indices.append( len(self.indices) )
|
|
|
|
|
|
data1 = Gnuplot.Data(self.indices, self.values[0], with = 'lines')
|
|
|
|
if l == 1:
|
|
self.g.plot(data1)
|
|
else:
|
|
data2 = Gnuplot.Data(self.indices, self.values[1], with = 'lines')
|
|
|
|
if l == 2:
|
|
self.g.plot(data1, data2)
|
|
else:
|
|
data3 = Gnuplot.Data(self.indices, self.values[2], with = 'lines')
|
|
|
|
self.g.plot(data1, data2, data3)
|
|
|
|
def SeperatedVolumeMonitor(eoMonitor):
|
|
def __init__(self, file):
|
|
eoMonitor.__init__(self)
|
|
self.file = file
|
|
self.initialized = None;
|
|
|
|
def __call__(self):
|
|
pass
|
|
|
|
class eoStat(eoStatBase, eoValueParam):
|
|
def __init__(self):
|
|
eoStatBase.__init__(self)
|
|
eoValueParam.__init__(self)
|
|
|
|
class eoSortedStat(eoSortedStatBase, eoValueParam):
|
|
def __init__(self):
|
|
eoSortedStatBase.__init__(self)
|
|
eoValueParam.__init__(self)
|
|
|
|
class eoAverageStat(eoStat):
|
|
def __call__(self, pop):
|
|
sum = 0.0;
|
|
for indy in pop:
|
|
sum += indy.fitness
|
|
|
|
sum /= len(pop)
|
|
self.object = sum
|
|
|
|
class eoBestFitnessStat(eoSortedStat):
|
|
def __call__(self, pop):
|
|
self.object = pop[0].fitness
|