Skip to content

vakus/uni-mas

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

378 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UNI-MAS

MAS stands for Meta Agent System. This project aims to bring multi client network consistent of Routers, Portals and Agents. The MAS system is build to allow sending messages between different parts of a single application, different application running on the same computer, or even applications which are running on separate computers.

The MAS system have 3 basic building blocks: Agents, Portal and Routers. The Agents are simple objects which recieve and send messages to other agents. Agents are also used by users to interact with the network. Portals are grouping Agents within an application, which allows to forward messages quicker if the destination agent is within the same application. The Routers are aimed to be more powerful and be supporting connections between multiple portals and other Routers.

Network Structure

Our design uses full mesh structure in connection between Routers. When a Router is connected to already existing network, it will query other routers to find out all routers which already are connected, then it will connect to those as well. This allows to optimize path for messages which are sent across routers, as well as reduce strain on the Router network.

The Portals are using a Star structure in connections with agents and router. The portal can connect to only one router. All messages which are sent by agents and are forwarded by portal to correct agent if it is connected to the same portal. If the target is not connected to the same portal, then the message will be forwarded to router to be forwarded to the correct Router or Portal which will deliver them to correct agent.

The portals are unable to connect to another portals, as the portals are supposed to be lightweight, and we have decided that it would be best to limit the strain a portal is put under.

Program Structure

We tried to make our application modular to allow easy expansion or modification of already existing elements. We allowed to create new Monitors which can be used to do extra processing when the message is recieved by portal or router. Those can be easily attached to portal by calling either of the following:

Portal.addObserver(myObserver);
Router.addObserver(myObserver);

The Portals and Routers are capable of running completly without a GUI, which allows to use them from console itself.

The Portals will also accept custom classes which extend MetaAgent class. As a result it is possible to use our Meta Agent System as a part of another application, and use it to forward messages between remote systems.

The application is using strings to send data over network, which allows for easy implementation in another programming language.

NetHammer

Our application also comes with NetHammer extension, which aims to stress test a network of routers. This allows to test the time it takes for each messages to be delivered between agents, when network is flooded with hundreds or thousands of messages.

Authors

v8073331 - Dominik Sysojew - Osinski

v8036651 - Ben Ramsden

v8077971 - Dominic Thorp

v8243060 - Patryk Neter

About

Multi Agent System written in Java for 2nd Year Assignment

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%