Menu

Home

Loren Chorley

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.

Design

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.

Technologies

The technologies used in this system include:

  • J2EE
    • Glassfish
    • JavaServer Faces (JSF)
    • Enterprise JavaBeans (EJB)
    • Web services
    • Persistence API
  • Java Swing
  • Android
  • MySQL
  • LTSATool (for concurrency verification)

J2EE design

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.

J2EE components

...

[Presentation components]
[Business components]
[Data access components]

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

[Network behaviours]

Environment components

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.

[Environments]

Metric components

...

[Metrics]

Current implementation status

User interfaces components

Web interface

Incomplete

  • Everything

Java application

Incomplete

  • Everything

Android app

Incomplete

  • Everything

Business logic components

Spock business functions

Incomplete

  • Setup basic J2EE connections to use other components
  • Implement current ideas

Spock network container

Incomplete

  • Setup basic J2EE connections to use other components
  • Move previous implementation to J2EE version
  • Update to latest ideas

Spock environment container

Incomplete

  • Setup basic J2EE connections to use other components
  • Move previous implementation to J2EE version
  • Update to latest ideas

Data access components

Complete

  • Database connection
  • Entities
  • Entity functions
  • User-based access

Incomplete

  • Inter-component communications
  • More complicated data functions

Network behaviours

Incomplete

  • Fast random behavioural model
  • Synapse re-enforcement model
  • Ecological model
  • Persistent signal model
  • GeneticAlgorithmNodeProperties
  • TrafficBasedLifeCycle

Environments

Incomplete

  • Test
  • Binary logic gates
  • Text chat
  • Audio chat
  • Canvas
  • Introspective

Metrics

Incomplete

  • Develop hot loading and code deployment feature (but fall back on included library)
  • Redesign of concept and importation of old code
  • Develop goal metric

Previous implementations

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.

Project admins

The people who currently manage this project are as follows:

Project Admins:

Related

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

MongoDB Logo MongoDB