Home
Theory
Research
Papers
Software

AgWorld
Ant.NET

Contact
Links

 
 

 


Ant.NET

Ant.Net is a set of C# components implementing mainly agent-based evolutionary computation systems, according to EMAS model based on .NET. Informations according to the project can be found on Source Forge.

.NET

.NET is a new environment for developing and running software applications, featuring ease of development of web-based services, rich standard run-time services available to components written in a variety of programming languages, and inter-language and inter-machine interoperability. The environment is developed by Microsoft Corporation. It was firstly announced in 2000, and in the same year first version of the .NET SDK became available.

.NET runs on various kinds of MS Windows operating system, and additionally, efforts are made to port it on other operating systems, e.g. Linux version of .NET is also developed, under the name of Mono.

Microsoft .NET provides compilers for C\#, C++, Visual Basic and JScript. Other vendors have announced that they intend to develop .NET compilers for such languages as COBOL, Eiffel, Perl, Smalltalk and Python.

This platform is in many ways similar to Java. It uses CLR (Common Language Runtime) to run code compiled from the previously mentioned languages to IL (Intermediate Language), what is very similar to B-Code, used by Java interpreters. Another feature is garbage collection, what also was implemented to ease the memory management.

Design issues

In .NET an extensive support for multi-threading was implemented. New threads can be spawned, stopped and aborted, and there is a system-provided threadpool which applications can use (a thread can be placed in a threadpool, in order to wait for the execution in a queue).

The support for the distributed application was implemented using the so-called remoting algorithm. .NET remoting involves sending messages along channels. Two of the standard channels are HTTP and TCP. TCP is intended for LANs only - HTTP can be used for LANs or WANs (internet).

Multiple message serialisation formats are supported. Examples are SOAP (XML-based) and binary. By default, the HTTP channel uses SOAP and the TCP channel uses binary. But either channel can use either serialization format.

Platform seems to be very good to use while creating parallel systems. Especially fine-grained systems should be easy to construct, as every individual can be easy encoded as an object. Interaction between the objects should be easily implemented by using method calls and remoting.

Communication capability or migration in a distributed application was implemented using remoting and serialisation. Serialisation is the process of converting an object into a stream of bytes. Deserialisation is the opposite process of creating an object from a stream of bytes. Serialisation/Deserialisation is mostly used to transport objects (e.g. during remoting), or to persist objects (e.g. to a file or database). There are two separate mechanisms provided by the .NET class library -- XmlSerializer and SoapFormatter/BinaryFormatter. Microsoft uses the former for Web Services, and the latter for remoting.

One important feature about the serialisation process is that it is very slow, although universal (as SOAP uses XML language). Thus, to communicate between individuals that exist nearby (in the same environment, moreover, in the same machine) simple method calls should be used. To maintain communication over the network, using remoting and serialisation is a reasonable choice. Additionally, messages can be packed and sent as compressed files, what greatly enhances speed of the communication.

Selection, especially based on existing of common (non renewal) resource of energy must be implemented with special care about synchronisation, and concurrent access, especially when fine-grained parallel application is designed. If the application is event-driven, this problem dissappears.

Individuals were implemented simply as objects. Their attributes will describe their inner state, genotype and phenotype, when the methods will help to bring the individual alive. In an event-driven system, periodically called method will force the agent to carry out its common tasks.

Environments and regions, which contain and manage sub-level units, were implemented with help of ready to use components being the standard part of the Software Development Kit, such as hash-tables.

 


Copyright © Intelligent Information Systems Group