00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <eoReduce.h>
00022
00023 #include "PyEO.h"
00024
00025 using namespace boost::python;
00026
00027
00028 class eoReduceWrapper : public eoReduce<PyEO>
00029 {
00030 public:
00031 PyObject* self;
00032 eoReduceWrapper(PyObject* s) : self(s) {}
00033 void operator()(eoPop<PyEO>& pop, unsigned i)
00034 {
00035 boost::python::call_method<void>(self, "__call__", pop, i );
00036 }
00037 };
00038
00039 void reduce()
00040 {
00041
00042
00043 class_<eoReduce<PyEO>, eoReduceWrapper, boost::noncopyable>("eoReduce", init<>())
00044 .def("__call__", &eoReduceWrapper::operator());
00045
00046 class_<eoTruncate<PyEO>, bases<eoReduce<PyEO> > >("eoTruncate", init<>() )
00047 .def("__call__", &eoReduce<PyEO>::operator())
00048 ;
00049 class_<eoRandomReduce<PyEO>, bases<eoReduce<PyEO> > >("eoRandomReduce")
00050 .def("__call__", &eoReduce<PyEO>::operator())
00051 ;
00052 class_<eoEPReduce<PyEO>, bases<eoReduce<PyEO> > >("eoEPReduce", init<unsigned>())
00053 .def("__call__", &eoReduce<PyEO>::operator())
00054 ;
00055 class_<eoLinearTruncate<PyEO>, bases<eoReduce<PyEO> > >("eoLinearTruncate")
00056 .def("__call__", &eoReduce<PyEO>::operator())
00057 ;
00058 class_<eoDetTournamentTruncate<PyEO>, bases<eoReduce<PyEO> > >("eoDetTournamentTruncate", init<unsigned>())
00059 .def("__call__", &eoReduce<PyEO>::operator())
00060 ;
00061 class_<eoStochTournamentTruncate<PyEO>, bases<eoReduce<PyEO> > >("eoStochTournamentTruncate", init<double>())
00062 .def("__call__", &eoReduce<PyEO>::operator())
00063 ;
00064 }
00065