86 lines
1.6 KiB
Python
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()
|