Designing New Models from Old Models

Simplifying a Model
 
GeneXproTools 4.0 allows you to simplify an existing model (which could have been either generated by GeneXproTools or by another modeling tool) either by pressing the Simplify button on the Run Panel or by choosing a fitness function with parsimony pressure and then press Optimize or Simplify on the Run Panel.

For models created outside of GeneXproTools or for GeneXproTools models modified by the user, the starting model is fed to the algorithm through the Change Seed window where both the fitness and structural soundness of the model are tested. In this case, you will need to know how to convert the model into Karva code, as the Change Seed window only accepts Karva code.

The easiest way of translating your model into Karva code, consists of representing your model in a tree structure and then create a linear representation of the parse tree by writing down all the nodes in the tree from top to bottom and from left to right. You will end up with a K-expression that you can, with only a small modification, use as seed.

For instance, the expression tree below:

can be represented linearly by the following K-expression:

/.d1./.-.Exp.Exp.Ln.d2.d2.d2

Now you only need to incorporate this K-expression into a correct gene structure, with a head and a tail correctly defined. A simple way of doing this, consists of considering the entire K-expression the head of your gene and then add a tail (with the correct length, of course) containing only terminals (which terminals you add is irrelevant as these terminals will not interfere with the expression of your K-expression). For instance, the K-expression above could be correctly accommodated into the following gene:

/.d1./.-.Exp.Exp.Ln.d2.d2.d2.d0.d0.d0.d0.d0.d0.d0.d0.d0.d0.d0

Then you just have to create a new run in GeneXproTools and evolve quickly (for one generation is enough) a proto-model with exactly the same structure you’ll need for integrating your seed model (that is, number of genes, head size, linking function, function set, etc.), and then replace this proto-model in the Change Seed window by your seed.

Then, in the Run Panel, by clicking the Simplify button, an evolutionary process starts in which all the subsequent models will be descendants of the model you want to simplify. Keep in mind, however, that the simplification algorithm used by GeneXproTools is an evolutionary one and, despite parsimony pressure being applied, models continue to be selected preferentially by fitness and sometimes their complexity might even increase temporarily if the gain in fitness outweighs the loss in simplicity.

For models created in the GeneXproTools 4.0 environment, you just have to select the model you want to simplify (either the best-of-run or an intermediate model picked up in the History Panel) and then click the Simplify button and let the algorithm create better descendants not only in terms of fitness but also in terms of size.

This can be done for as long as you wish or until you feel the program is as parsimonious as it will get. By monitoring the plots Avg/Best Size and Sub-Program Sizes as well as the Heat Map in the Run Panel, you will know exactly how the simplification process is progressing.


Home | Contents | Previous | Next