66 lines
1.4 KiB
Python
66 lines
1.4 KiB
Python
from maxone import *
|
|
import unittest
|
|
|
|
class Init(eoInit):
|
|
def __call__(self, eo):
|
|
pass
|
|
|
|
class TestSGA(unittest.TestCase):
|
|
|
|
def __init__(self, a):
|
|
unittest.TestCase.__init__(self, a)
|
|
self.pop = eoPop(4, Init())
|
|
|
|
for i in range(len(self.pop)):
|
|
self.pop[i].fitness = i;
|
|
|
|
|
|
def do_test(self, selectOne):
|
|
|
|
print '*'*20, "Testing", str(selectOne.__class__), '*'*20
|
|
selection = [0. for i in range(len(self.pop))]
|
|
|
|
nTries = 500
|
|
for i in range(nTries):
|
|
selection[ selectOne(self.pop).fitness ] += 1
|
|
|
|
for i in range(len(self.pop)):
|
|
print i, selection[i], selection[i] / nTries
|
|
|
|
return selection, nTries
|
|
|
|
def test_eoDetTournamenSelect(self):
|
|
|
|
selectOne = eoDetTournamentSelect(2)
|
|
self.do_test(selectOne)
|
|
|
|
def test_eoRandomSelect(self):
|
|
selectOne = eoRandomSelect()
|
|
self.do_test(selectOne)
|
|
|
|
def test_eoBestSelect(self):
|
|
selectOne = eoBestSelect()
|
|
(sel, nTries) = self.do_test(selectOne)
|
|
|
|
self.failUnlessEqual(sel[0], 0);
|
|
self.failUnlessEqual(sel[-1], nTries);
|
|
|
|
def test_eoNoSelect(self):
|
|
selectOne = eoNoSelect()
|
|
self.do_test(selectOne)
|
|
|
|
def test_eoStochTournament(self):
|
|
selectOne = eoStochTournamentSelect(0.75)
|
|
self.do_test(selectOne)
|
|
|
|
def test_eoSequentialSelect(self):
|
|
selectOne = eoSequentialSelect();
|
|
self.do_test(selectOne)
|
|
|
|
def test_eoEliteSequentialSelect(self):
|
|
selectOne = eoEliteSequentialSelect();
|
|
self.do_test(selectOne)
|
|
|
|
|
|
if __name__=='__main__':
|
|
unittest.main()
|