Source code for HyperGP.libs.states
from HyperGP.base.base_struct import States
from HyperGP.libs.primitive_set import PrimitiveSet
import random
import copy
class WorkflowStates(States):
def __init__(self):
pass
def __getattr__(self, item):
if item not in self:
return None
return self[item]
# def __deepcopy__(self, memo):
# return copy.deepcopy(self.__dict__, memo)
[docs]
class ParaStates(States):
[docs]
def __init__(self, func, source=[], mask=None, to=[], parallel=False, func_mask=None):
self["func"]=func
self["source"]=source
self["to"]=to
if mask is None:
self["mask"]=[1 for s in source]
else:
self["mask"]=mask
self["parallel"]=parallel
self["func_mask"]=func_mask
def __getattr__(self, item):
if item not in self:
self[item] = []
return self[item]
class PopBuildStates(States):
def __init__(self):
self.pop_size: int = 0
[docs]
class PopBaseStates:
[docs]
def __init__(self):
self.indivs: list = []
self.fitness: list = []
def __str__(self):
# print(self.prog)
# print(self.fitness)
return str([self.indivs, self.fitness])
@property
def copy(self):
return copy.deepcopy(self)
[docs]
class ProgBuildStates(States):
# pset: PrimitiveSet
# depth_rg: list
# len_limit = None
# rd_state = random
[docs]
def __init__(self, pset: PrimitiveSet, depth_rg:list, len_limit=None, **kwargs):#, rd_state=random):
super().__init__()
self.pset = pset
self.depth_rg = depth_rg
if len_limit is not None:
self.len_limit = len_limit
for key, value in kwargs.items():
setattr(self, key, value)
# self.rd_state = rd_state
class VarStates(States):
def __init__(self, progs, fitness=None, **kwargs):
from HyperGP.libs.representation.TGP import TGPIndv
self.progs: TGPIndv or [TGPIndv] = progs
if fitness is not None:
self.fitness = fitness
self.__dict__.update(**kwargs)
"""=========================TEST========================"""
if __name__ == '__main__':
from HyperGP.libs.representation.TGP import TGPIndv
# ps = ProgBuildStates()
# print(ps.len_limit)
var = VarStates(TGPIndv(), f=11, s='222')
print(var.s)