## Agent Editor

The Agent Building and Learning Environment (ABLE) is a toolkit for constructing hybrid intelligent agents in Java. The graphical development environment is called the Able Agent Editor which is used to construct Able Agents.

For a detailed description of how to use the Able agent Editor, see the Tutorial. To learn how to perform specific tasks click here.

### Menu Bar

The Menu Bar consists of these submenus:

> File Edit View Tools Windows Help

#### File

The File menu contains menu items that apply to the container agent.

New Agent
  Create a new container agent. Presents a cascade menu with a selection of available agents.
Open Agent
  Loads a previously saved, or serialized, AbleAgent into the editor as the container agent.
Save Agent
  Saves or serializes the container agent to a file.
Save Agent as
  Saves the container agent to a specified file.
Import bean
  Loads a serialized AbleBean into the currently selected agent.
Export bean
  Saves the currently selected AbleBean to a file.
Preferences
  Allows the user to set editor properties and preferences such as the preferred text editor and any custom beans to load.
Printer setup
  Brings up the printer setup dialog (not yet implemented)
Print
  Prints the contents of the current agent (not yet implemented)
Exit
  Leaves the Able Agent Editor.

#### Edit

The Edit menu contains menu items that apply to a selected bean or to the clipboard.

Cut
  Remove the selected AbleBean from the current agent and place it on the clipboard.
Copy
  Copy the selected AbleBean to the clipboard.
Paste
  Paste the AbleBean from the clipboard to the current agent.
Delete
  Remove the selected AbleBean from the current agent.

#### View

The View menu allows you to select between the connection views offered for the canvas area located on the lower right.

Data Flow
  Show the data connections between beans. The active data connection is highlighted.
Event Listeners
  Show the event connections between beans.
Property Connections
  Show the property connections between beans.

#### Tools

The Tools menu provides means to open other Able editors and to access some bean manipulation utilities.

Filter Editor
  Opens the Filter customizer or translate editor.
RuleSet Editor
  Opens the Rule Editor used to create and change rule sets.
Text Editor
  Opens the text editor specified in Preferences.
Add bean to Jar
  Add the currently selected bean to a jar file.
Remove bean from Jar
  Remove the currently selected bean from a jar file.
Add beans to palette
  Read a jar file and load all beans with an "able-category" bean attribute to the corresponding bean palette panel.

#### Windows

The Windows menu lists all currently open Inspector and Properties windows. Selecting an item gives that window focus.

#### Help

The Help menu displays these help references:

Help topics
  A list of task-related topics for the Able Agent Editor.
Agent Editor Reference
  Displays this help file for the Able Agent Editor.
Ruleset Editor Reference
  Displays the root help file for the Ruleset Editor.
Beans and Agents
  Displays the use and implementation of distributed beans and agents.
Rules
  Displays the use and implementation of the Able RuleSet bean and inferencing engines.
Tutorial
  Displays a tutorial describing creating, using, and saving learning and rules beans using the Able Agent Editor.
Examples
  Describes the serialized examples distributed with Able.
JavaDoc Reference
  Displays the javaDoc help files for Able. This is a programmer's reference.
Readme
  Displays the Able Readme from the root index of all Able documentation.
About
  Displays the About dialog with contact and version information.

### Process Buttons

The processing buttons, located on the left of the toolbar, are:

| The Step command reads a single input from the active data import bean and passes it to all connected beans. It calls the process method on the agent container once.
| The Cycle command reads and passes the number of inputs specified by the steps per cycle variable from the Preferences menu item. It calls the process method on the agent container the specified number of times.
| The Run command calls the start method on the container agent which causes the agent to process continuously.
| The Halt command stops a run or cycle. It calls the stop method on the agent container.

### Bean Palettes

The Bean Palettes contain the beans provided with Able. Beans you develop can be added to a palette also.

Add a bean to the current agent by selecting the desired palette and clicking on the desired bean. The beans provided with ABLE are organized by toolbar palette as:

- Data Beans
- Learning Beans
- Rule Beans
- Agent Beans
- Sample Beans

#### Data Bean Palette

The Data Beans are:

| An Import bean reads data from a flat file and presents it to the connected beans.
| A DBImport bean reads data from an SQL database table and passes it to the connected beans.
| A Filter bean transforms the data into a specific representation, usually for a neural network or a ruleset bean. Filter transformations are defined with the Filter Editor.
| An Export bean writes data to a flat file or passes it to a custom program.
| A Time Series Filter bean collects a set of input records for the prediction agent's use in forecasting.

#### Learning Bean Palette

The Learning Beans are:

| The AbleBackPropagation bean defines a neural network that learns using the supervised backward propagation of error technique. Its settings can be adjusted to influence the learning process and network architecture. Backpropagation networks are useful for classification and prediction.
| The AbleNaiveBayes bean learns a probabilistic model from training data, and then uses Bayes rule to assign the most likely class to a previously unseen instance.
| The AbleDecisionTree bean builds a hypothesis or decision rule in DNF (Disjunctive Normal Form) represented as a tree graph. Decision trees are useful in classification.
| The AbleRadialBasisFunctionNet bean defines a neural network that learns using one of three basis functions to adjust its weights. Radial basis function networks are useful for predicting values, and use self-organizing maps to first organize the data into areas of operation.
| The AbleSelfOrganizingMap bean defines a neural network that learns using the self-organizing map technique. Self-organizing maps are useful for subsetting data into representative clusters.
| The AbleTemporalDifferenceLearning bean defines a neural network that learns using the previous state values. Temporal difference networks are useful for time-series forecasting.

#### Rule Bean Palette

The beans related to rules and inferencing are:

| An AbleRuleSet bean contains a single ruleset created by the Able Rule editor and processes data using one of the provided inference engines. The rule-base is maintained with the RuleSet Editor.
| An AbleCommonRules bean can be used to provide an interface to the IBM alphaWorks CommonRules package. This bean will be loaded only if CommonRules is installed.

#### Agent Bean Palette

The agent beans are considered functional beans. To use them, all that is needed is to provide a data source and a data definition file.

| An AbleDefaultAgent is the base Able agent object.
| An AbleGeneticSearchAgent provides a flexible environment for using genetic algorithms for search and optimization problems.
| An AbleNeuralClassifierAgent provides a classification function using a back propagation neural network as the classifier model.
| An AbleNeuralPredictionAgent provides a prediction or regression function. A back propagation neural network is used as the prediction model.
| An AbleNeuralClusteringAgent provides a segmentation or clustering function. A self-organizing feature map neural network is used as the model.
| An AbleScriptAgent provides agent capabilities using rulesets to define the init, process, and process timer event actions.
| An AbleJavaScriptAgent provides agent capabilities using JavaScripts to define the init, process, and process timer event actions.

#### Sample Bean Palette

The sample beans are:

| SimpleAbleBean, a simple example of a custom Able bean.
| SimpleAbleAgent, a simple example of a custom Able agent.
| SampleSensorEffector, an example of a custom agent which uses User-defined Functions as sensors and effectors.
| AbleFileWatcher, an example bean that checks for file changes at defined intervals and acts when changes are detected.

### Title Line

The Title Line, located between the toolbar and the tree, displays the name of the agent container, indicates whether it has been modified, and shows the name of the agent whose constituent beans are displayed in the canvas.

### Agent Tree

The tree on the left shows the containing agent and each of its constituent beans. If a bean is an agent, it may be expanded to display or edit that agent's constituent beans. Rightclick on a bean to display its context menu.

Each bean displayed in the tree shows its state in a color-coded icon:

indicates that the bean is not initiated and incapable of processing data.

indicates that the bean is active, ie, it has been initiated and can process data.

indicates that the bean is active and is processing timer events.

### Agent Canvas

The Agent Canvas on the right shows the contents of the current agent open in the tree. The view may be changed to show the different kinds of connection relationships that exist between an agent's constituent beans. Agent properties can be edited by rightclicking on the background whitespace to bring up the context menu. Active data connections are displayed with a green line while inactive connections are drawn in black. Event connections are drawn in blue and property connections are drawn in red.

### Status Line

The status line displays the latest message provided by the editor.

### Context Menus

Context menus are the popup menus that appear when you click on a bean in the Agent Canvas or Agent Tree with the right button. A menu specific to that bean will appear. Through this menu the bean's settings or properties can be displayed and changed. If you right-click on the background whitespace, the context menu for the container agent appears.