Working with Logic Synthesis Tools

Evolutionary Strategies
 
Sum-of-products and product-of-sums expressions are alright as solutions to Boolean problems, but most of the times they are far from parsimonious solutions. On the other hand, limiting oneself to the use of just AND-OR-NOT might not be the right approach to finding good solutions to more complex problems. With GeneXproTools you can use an extremely wide spectrum of logical functions (a total of 258 built-in functions plus all kinds of user defined functions) to design your logic circuits. And, for instance, if you are just interested in NAND-only or NOR-only circuits, you might try and find a solution to your problem using just this particular function instead of applying De Morgan's theorem to your sum-of-products solutions to design your circuits, as most of the times a more parsimonious expression can be found. And if you are interested in less conventional circuits, say a MUX-only circuit or a AND-XOR-NOT circuit, GeneXproTools has no problems working with just these functions to build your circuits.

So, the evolutionary strategies we recommend for Logic Synthesis reflect two main concerns: firstly, evolve your logic circuit with the functions you think are the most appropriate; and secondly, apply parsimony pressure to make it simpler.

The default run templates GeneXproTools uses for Logic Synthesis use a very simple and universal function set composed of only the basic Boolean operators AND-OR-NOT. If you want to use different gates to design your logic circuits, you'll have to choose them in the Functions Panel.

Note also that the GeneXproTools templates used in Logic Synthesis allow the circuits to evolve without parsimony pressure. This means that you will have to apply the parsimony pressure yourself after the circuit has been designed. For that you just have to press the Simplify button in the Run Panel.

You could obviously start the modeling process by applying parsimony pressure from the onset, but evolutionarily speaking this is not the most efficient approach as better circuits (in terms of fitness) are faster created if more flexible structures are used. So, we recommend you start with a comfortable architecture to allow the discovery of a perfect solution to your problem. Then, by pressing the Simplify button, you use this perfect solution as seed (evolve with seed) to create simpler versions of it.

GeneXproTools allows you to monitor the simplification process in the Run Panel by choosing Avg/Best Size in the rightmost combo box in the bottom and also by checking the Sub-Program Sizes plot and the Program Size bar at the bottom.

GeneXproTools 4.0 chooses the appropriate template for your problem according to the number of variables in your data. This kind of template is a good starting point that allows you to start the modeling process immediately with just a mouse click. Indeed, even if you are not familiar with evolutionary computation in general and Gene Expression Programming in particular, you will be able to immediately design sophisticated logic circuits thanks to the templates of GeneXproTools. In these templates, all the adjustable parameters of the learning algorithm are already set and, for instance, you don’t have to know how to create genetic diversity, how to set the appropriate population size, the chromosome architecture, the fitness function, how to increase the complexity of your models, and so forth. Then, as you learn more about GeneXproTools, you will be able to explore all its modeling tools and create quickly and efficiently very good logic circuits.

So, after creating a new run you just have to click the Evolve button in the Run Panel in order to design a model. Then you observe carefully the evolutionary process, especially the Target/Model comparison plot. Then, whenever you see fit, you can stop the run without fear of stopping the evolutionary process prematurely as GeneXproTools 4.0 allows you to continue the evolutionary process at a later time by using the best-of-run model as the starting point (evolve with seed). For that you just have to click on the Optimize button in the Run Panel.

This strategy has enormous advantages as you might choose to stop the run at any time and then take a closer look at the evolved model. For instance, you can analyze its logical structure, translate it into different programming languages, evaluate a wide set of statistical functions for a quick and rigorous assessment of its accuracy, see the complete Model/Target comparison plot in the Results Panel, and so on. Then you might choose to adjust a few parameters, say, choose a different fitness function, expand the function set, add a neutral gene, apply parsimony pressure, and so forth, and then explore this new evolutionary path. You can repeat this process for as long as you want or until a perfect solution has been found.

Home | Contents | Previous | Next