Welcome to my attempt at an artificial intelligence. I call it Spock.
Please note that I work on this project as a hobby and as a study project. That is, when I want to learn a new programming language I recreate, at least in part, this project in the new language to really understand what I am studying. Unfortunately, this means that this project is almost never fully functional, nor do I have the opportunity to implement all my ideas. Thus, I hope if you are interested, that it suffices to merely browse the code and to run something that is most definitely incomplete.
Below is the wiki for the latest remake of the project. Please see the "Previous implementations" section of this page for information on previous versions.
The following design is a specification of what I'd like to see implemented in this system and ideas for future development. I will also include a rough idea of the current progress, but for an up-to-date view of implementation please see the code.
The technologies used in this system include:
The modules of this system are designed as J2EE components and therefore follow the 3-tier model.
The presentation logic consists of a number of components, including a web interface, a Java Swing application and an Android app.
The business logic consists of three separate, but integrally interconnected, components: A network component, an environment component and an experiment component. Each one is a factory for their respective objects (networks, environments and experiments) and expose all necessary functionality via web services and enterprise beans. This functionality includes creation, deletion, listing, loading, saving, stopping, starting and accessing individual functionality of these objects.
Each object produced by one of these factories exposes its own enterprise bean interface that allows the three types of objects to communicate and be configured. For example, a network may be registered to receive the output of an environment, or an experiment may be registered to include several networks and environments on separate tiers as part of itself.
And lastly, the data access logic consists of an SQL database and Entity EJBs that allow the business logic components to save and load object instance information.
For more details and the current state of implementation, see the following sections.
...
[Presentation components]
[Business components]
[Data access components]
The really interesting part of the system; the network behaviour. This is the behavioural aspects of the individual nodes can be developed and experimented with.
What is an AI without something to interact with? The environment component of this system provides an API to hook just about anything up to a network.
...
Incomplete
Incomplete
Incomplete
Incomplete
Incomplete
Incomplete
Complete
Incomplete
Incomplete
Incomplete
Incomplete
I have been developing this project and its ideas for quite some time and usually in relation to my studies to further my understanding of them. Though this project has undergone many versions and translations, only my last two revisions are on SourceForge and the [Old wiki] for these is still available.
Please note that although the current J2EE version is designed with many best practices in mind, the older ones are mostly to further my understanding of a particular language or topic and as such lack elegance in many areas.
The people who currently manage this project are as follows:
Wiki: About
Wiki: Business components
Wiki: Code
Wiki: Data access components
Wiki: Environments
Wiki: Metrics
Wiki: Network behaviours
Wiki: Old wiki
Wiki: Presentation components
Wiki: Verification