This repository has been archived on 2026-03-28. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
eodev/eo/src/pyeo/test/test_populator.py
maartenkeijzer ea2e369542 Added monitors and statistics, also made a module with some
specific python stuff in __init__.py
2003-01-10 15:41:17 +00:00

86 lines
1.6 KiB
Python

print 'importing maxone'
from maxone import *
print 'done'
import unittest
class Mut(Mutate):
def __init__(self):
Mutate.__init__(self)
self.cnt = 0;
def __call__(self, eo):
self.cnt += 1;
return Mutate.__call__(self, eo)
class Xover(Crossover):
def __init__(self):
Crossover.__init__(self)
self.cnt = 0;
def __call__(self, eo1, eo2):
self.cnt += 1;
return Crossover.__call__(self, eo1, eo2)
class TestPopulator(unittest.TestCase):
def make_pop(self):
pop = eoPop(20, init)
for indy in pop: evaluate(indy)
return pop
def test_sequential(self):
pop = self.make_pop()
populator = eoSeqPopulator(pop, pop)
print populator.get()
print populator.get()
def test_selective(self):
sel = eoDetTournamentSelect(2)
pop = self.make_pop()
populator = eoSelectivePopulator(pop, pop, sel)
print populator.get()
print populator.get()
def runOpContainer(self, opcontainer):
mutate = Mut()
xover = Xover()
print 'making seq'
seq = opcontainer()
print "xovertype", xover.getType()
print "mutationtype", mutate.getType()
seq.add(mutate, 0.4)
seq.add(xover, 0.8)
pop = self.make_pop();
offspring = eoPop()
sel = eoDetTournamentSelect(2)
print "making populator"
populator = eoSelectivePopulator(pop, offspring, sel)
print 'made'
for i in xrange(1000):
seq(populator)
print mutate.cnt
print xover.cnt
def test_sequentialOp(self):
print '*'*20, "SequentialOp", '*'*20
self.runOpContainer(eoSequentialOp)
def test_proportionalOp(self):
print '*'*20, "ProportionalOp", '*'*20
self.runOpContainer(eoProportionalOp)
if __name__=='__main__':
unittest.main()