Concepts

From Emergent

Jump to: navigation, search

Key Concepts for Emergent, especially relative to PDP++. See also Changes from PDP++ for a more detailed list of such changes.

  • There are only 3 top-level object types: DataTable, Program, and Network, plus associated 3d Graphical View objects. You should be familiar with what these do, and organize your thinking around them. The overall strategy has been to boil things down into a small set of high-functionality elements, which are each well encapsulated and easy to use.
  • Always try the context menu (right mouse button, or Ctrl-mouse on Mac) on various objects -- lots of good stuff is available there! There are so many different objects in a given simulation, each with different functions, that instead of trying to have one master menu, each object has its own special menu!
  • You'll immediately see that the gui is now browser-based, and instead of popping up a million different edit dialogs, you interact by browsing and clicking on objects, with the edit dialog appearing in the central panel. The GUI views of objects (e.g., the NetView) is in the right-hand panel, and sports fancy full 3d graphics with effective use of transparency (thanks to OpenGL/3d hardware accelerated technology, using Open Inventor from Coin3d).
  • Use the mouse-over to get help: just hold the mouse over various items to get helpful hints.

Contents

DataTable Uses

DataTable replaces Environments & Logs from 3.2, and also has many other new uses:

  • There are sets of taDataXXX objects for doing XXX = Gen (generation), Proc (data processing/database ops), and Anal (data analysis) on data tables.
  • Use data tables for organizing the structure of training of your network: create lists (of lists) of conditions or specifications of events.
  • Record network data into data table(s) (using NetMonitor) and then DataProc or DataAnal routines to aggregate and analyze the data. Gone are the rigid "Stat aggregation" mechanisms from 3.2.

Programs

Programs replace Scripts and Processes and Stats from 3.2. They provide a full GUI programming language. A program generates a css script, which is then executed to actually run the program. You can just write css code directly using a UserScript, but many common functions are probably easier to do using GUI program elements, which allow you to lookup functions and variables on objects using a powerful gui chooser with search abilities.

  • Programs can call other programs, and the standard "SchedProc" hierarchy of scheduling processes has been largely replicated with Programs. The advantage is that it is easy to see exactly what these programs are doing, and insert your own specialized functionality wherever you want in the program flow. Gone are the rigid and mysterious "init, loop and final" slots..
  • Programs are fully encapsulated and self-contained, and can be passed arguments (optionally) by Name. Arg management is much improved over the s_args of 3.2. Programs can contain their own subroutines (functions) and types and variables.
  • If you want to implement some substantial new chunk of functionality, just create a new program, and then call it from one of the standard existing programs at the appropriate place(s).

Networks

  • Networks are not much changed from 3.2, except that specs are now contained within a network. This makes it fully encapsulated, such that you can drag and drop or copy and paste networks from one project to another, and they will be fully functional because all their specs come along with them. Also, all the control parameters that used to be distributed throughout the Process objects (learning modes, cycles to settle, etc) are now all consolidated on the Network object.

Views

  • Views of objects (NetView, GridTableView, GraphTableView) can be combined together in one integrated 3d display, or in separate frames, each with their own tabs. Each view has an associated control panel that shows up in the middle edit panel area -- use this to configure the view to your liking. You can also find additional, less frequently used configuration options by clicking on the green frame of the viewed object, which pulls up an edit dialog of the underlying view object, where all the settable parameters are listed.
Personal tools