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.
|