Source code for HyperGP.libs.primitive_set
from HyperGP.base.func_basic import BasePrimitiveSet
import random
[docs]
class PrimitiveSet(BasePrimitiveSet):
"""
``PrimitiveSet`` module is used to collects the primitives and terminals used in GP evolution
To use the PrimitiveSet, we should firstly import it from HyperGP and initilize it:
>>> from HyperGP import PrimitiveSet
"""
[docs]
def select(self):
"""
randomly select from the primitive set
Returns:
a ``Func``, ``Terminal`` or ``Constant`` module
Examples:
>>> prim = pset.select()
>>> print(prim, type(prim))
div, <class 'HyperGP.base.func_basic.Func'>
"""
choice = random.randint(0, len(self.primitiveSet) + len(self.terminalSet) - 1)
if choice < len(self.used_primitive_set):
return self.genFunc(self.primitiveSet[choice])
else:
return self.genTerminal(self.terminalSet[choice - len(self.primitiveSet)])
[docs]
def selectFunc(self):
"""
randomly select a function from the primitive set
Returns:
a ``Func`` module
Examples:
>>> prim = pset.selectFunc()
>>> print(prim, type(prim))
add, <class 'HyperGP.base.func_basic.Func'>
"""
return self.genFunc(self.primitiveSet[random.randint(0, len(self.primitiveSet) - 1)])
[docs]
def selectTerminal(self):
"""
randomly select a terminal from the primitive set
Returns:
a ``Terminal`` or ``Constant`` module
Examples:
>>> term = pset.selectTerminal()
>>> print(term, type(term))
x0, <class 'HyperGP.base.func_basic.Terminal'>
"""
return self.genTerminal(self.terminalSet[random.randint(0, len(self.used_terminal_set) - 1)])