EPA synthesis


Back to the main EPA page

General outline

Using the information in the schema and start point, EPA synthesises architectures using a state-space search algorithm: starting from the start point, it attempts to generate architectures that satisfy the constraints by adding (and optionally removing) all possible different sets of connections (and optionally components). The details of how it does so are highly configurable, as described below.

Opening the synthesis GUI

Once you have constructed a model, it is time to (try to) use it to synthesise architectures. To do so, go to the "Plugins" menu in the main CAM window and click on the "EPA architecture synthesis" entry. This should open a GUI that looks something like this (click to enlarge):

The GUI is (unavoidably!) complicated, but is broken down into three panels with different functions - from left to right, the model information panel, the synthesis control panel, and the synthesis results panel. In setting up a synthesis it is generally necessary to work through the fields from top to bottom in each panel and from left to right, although where possible appropriate defaults are used. The dividers between the panels can be dragged backwards and forwards to focus on whichever is most important.

Model information panel

(click to enlarge)

This allows you to set up the models to be used for synthesis.

  • The first drop-down menu under "Architecture schema" requires you to set the workbook that contains the schema; the text field below it will provide messages about any syntax-level problems found with the schema (though the messages may be cryptic!).
  • The second set of drop-down menus allows you to set the start point: from an (automatically-generated) minimal architecture or from a specified workbook (which may be the same as the one containing the schema); again, any problems will be reported in the text box below, as well as the size of the start point (numbers of components and connections).
  • The next table contains a list of the components and connections in the start point; if it is not minimal, you can choose to remove individual components and connections before synthesis using the checkboxes.
  • Finally, the two tables below list all the component and connection types in the schema and checkboxes to control whether components/connections of those types can be added or removed by the synthesis algorithm; if you want synthesis to use only certain component and connection types, then uncheck the others.

Synthesis control panel

(click to enlarge)

This panel allows you to set up the algorithm used to carry out the state-space search.

  • First, if you want to set a maximum number of architectures to be returned, enter this into the first box. A value of 0 (zero) will return all architectures produced by the synthesis.
  • The next two drop-down menus allow you to set the operations to be used by the synthesis: adding connections only or adding components and connections (use the 2-tier version), and (if the starting point is not minimal) whether to remove connections or components and connections.
  • The next table allows you to configure each stage of the search, and so the rows present will depend on the values selected in the previous two menus. For each stage you can choose: the graph search algorithm (breadth-first, depth-first, or "stochastic" which takes a random sample from the search tree), the maximum search depth (the maximum number of components/connections to add/remove; increasing this number significantly slows down the synthesis; it may also be set to "Iterative deepening" to use depth-first search to iteratively increase the search depth), the number of "runs" (samples) in the case of stochastic search, and the maximum depth to use with iterative deepening search.
  • The next cluster of controls under "Synthesis control" allows you to start and abort synthesis and to see the current state of the synthesis algorithm (the progress bar is unfortunately meaningless as it is not possible to know a priori how many architectures there are to be searched. As architectures are synthesised they will appear on the synthesis results panel.
  • Finally, there are controls for other (more experimental) commands at the bottom of the panel. The most useful is the "Check schema against architecture" control, which launches a separate GUI to allow you to check whether a specified architecture satisfies the constraints in the schema, for debugging purposes. The others are beyond the scope of this documentation.

Synthesis results panel

(click to enlarge)

This relatively simple panel allows you to browse the results of synthesis as they appear. The list at the top shows a textual representation of each architecture that indicates its size and structure; clicking on an entry will show it in the force-directed layout view at the bottom of the panel, in which the components can be dragged around with the mouse. The controls at the top of the view allow the view to be zoomed, the "spring layout" to be turned off and on, and the lengths of the edges between the components to be adjusted. Finally, the button between the list and the force-directed layout allows you to save the dataset in binary form for future reference; use of this is not recommended as the format may not be readable in future.