CFDG Mutate

Home Overview Download Gallery Improvements

Improvements

The work done on this project so far I think really only represents the minimum required to get any results, there are many areas for improvement. The following lists what I think would be the most productive areas for further development on this project:

Multiple rule definitions

Currently the images produced by files evolved using this system are entirely deterministic. The most interesting images created using CFDG by hand are ones that contain multiple definitions for the same rule. The CFDG rendering engine selects between these alternate rules at random, this allows for varied, often organic looking images to be created. It would be a simple step to add support for multiple definitions of rules to cfdg mutate.

Sexual reproduction

A very interesting step would be to make it possible for files to be created as a result of sexual reproduction between two parent files. The rules of a child file would be randomly taken from the two parents. Mutation could still be applied. One problem would be that rules taken from one file would probably reference rules which are no longer in the child genotype. One solution to this could be to choose rules at random from the child file to replace instances of rules which are no longer in the child file.
The problem of rules referencing rules which are no longer present in a file is not as bad as might first seem. If files which mate share common ancestry the rules they contain may have the same name even if the actual definition of the rules have diverged slightly, and so the structure of the rules of the offspring will be similar to its parents. This is comparable to how the genes of two humans can mix together successfully to create a child whereas the structure of human genes is too different to chimpanzee genes to allow the two to mix to create viable offspring.
If this kind of breeding was possible the control system would have to be adapted aswell to allow the user to choose which files to mate with which. A result of this kind of system could be that 'species' of CFDG files might appear within which matings can occur which create similar children, but where matings across species would have so few rules in common that the result is not like either parent but instead is too unstructured to form an interesting image. This would probably happen quite easily if users always paired images which appeared quite similar to mate with each other.

File size cost

One problem with the current system is that files can rapidly gain many unused rules which don't effect the appearance of the rendered image. The effect of this is to slow down both the mutating and the rendering process and would eventually become a limiting factor in how many generations per minute can be achieved. One step to prevent this might be to increase the chance of rules being destroyed in the mutation step if they are not used.
Another way to combat this would be to have some cost associated with file size, perhaps there should be a step after mutation before rendering where a file is randomly destroyed and the chance of each file being chosen for this removal is proportional to its size. This would give an evolutionary advantage to smaller files.
The two above ideas could actually be combined by having a different variable for the chance of a rule being destroyed in addition to REMOVE_RULE_WEIGHT perhaps REMOVED_UNUSED_RULE_WEIGHT which, as its name suggests, is the probabilty of an unused rule being removed. Even if these two variables were the same initially, the cost associated with file size described in the paragraph above should ensure that this second variable evolves to be higher than the former to help the file to which it belongs avoid random deletion.

Home Overview Download Gallery Improvements