What is YAES?
YAES (pronounced as "yes") is Yet Another Extensible Simulator.
More closely it is a Java library which offers a number of abstractions
which allows its users to quickly and easily assemble simulators for a
large number of problems.
Tell me more about the abstractions!
Efficient simulation is frequently learning about what not to simulate.
If one attempts to simulate everything, one will soon end up like Borges'
mythical country, where the geographical sciences had such a formidable evolution,
that they built a map of the country which covered the country itself. Thus most
of the things offered by YAES are interfaces, abstract classes or very generic
implementations. For instance, you will find an abstract implementation of generic
algorithms, or a generic A* search. These abstract implementations might not be
the most optimal solutions for any particular case, as the very generic assumptions
on the data types preclude domain specific optimizations. But they allow a user to
try out various algorithms in their simulations to compare their properties - which
is, many times, the main reason to simulate.
Why doesn't have a scripting language?
The simple answer is, because it would require the user to learn a second language,
and a lot of tedious details about interfacing them. We found that, in practice,
there is no significant difference between the compilation time of Java vs. the
startup times of interpreters. If somebody needs a scripting environment, one can
easily run JAES from the Jython prompt, for example. But we would advise against
creating new abstractions in an external language, except in cases when there are
overwhelming reasons for it: such as, when there is a need to interface with
external legacy software.
So, what does YAES offer currently?
As of version 0.9.8 YAES offers the following abstractions
- Two-dimensional abstract maps.
- Newtonian physical model of two dimensional movement.
- Basic search algorithms (depth-, breadth-, best-first, A*).
- Basic path-planning algorithms
- Basic genetic algorithm framework
- Basic visibility models for wireless sensor networks
- Basic energy consumption models for wireless sensor networks
- Collection of vehicle control behaviors
- Genetic algorithm abstraction