Generalized Game Of Life. The logic is implemented as a two stage operation:
- convolution
- activation
the main point is to have a well defined search space for a given activation function that allows to search for some cool kernels, while keeping the whole operation intuitive and simple. This way, im planning to fit a model that gauges the coolness of a given resulting field, where coolness is a proxy for some tangible metrics like contrast, mean value and frame-to-frame change. Of course, the whole idea is to allow the model to find its own metrics that satisfy the hard-coded rules and use it as a loss to optimise the kernel. Im not sure whether i want to keep the optuna as a kernel optimizer, but since im aiming for an emergent property i would prefer to start with something with more freedom (im not sure my loss will always be differentiable).
The display i actually like, it uses OpenGL and achieves impressive speeds even with all the nasty copying i do to keep my freedom of immutable arrays