Giter VIP home page Giter VIP logo

sinalgo / sinalgo-wsn Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 1.0 5.12 MB

Sinalgo is a simulation framework for testing and validating network algorithms (WSN-specific fork)

Home Page: https://sinalgo.github.io/

License: BSD 3-Clause "New" or "Revised" License

Java 94.53% Perl 0.25% Shell 0.20% R 5.01%
sinalgo algorithm network-algorithms network-simulator simulation-framework distributed-systems simulation java wireless-sensor-networks wsn-simulator

sinalgo-wsn's Introduction

Sinalgo - Simulator for Network Algorithms

Welcome to Sinalgo

Sinalgo is a simulation framework for testing and validating network algorithms. Unlike most other network simulators, which spend most time simulating the different layers of the network stack, Sinalgo focuses on the verification of network algorithms, and abstracts from the underlying layers: It offers a message passing view of the network, which captures well the view of actual network devices. Sinalgo was designed, but is not limited to simulate wireless networks.

The key to successful development of network algorithms is a comprehensive test suite. Thanks to the fast algorithm prototyping in JAVA, Sinalgo offers itself as a first test environment, prior to deploy the algorithm to the hardware. Prototyping in JAVA instead of the hardware specific language is not only much faster and easier, but also simplifies debugging. Sinalgo offers a broad set of network conditions, under which you may test your algorithms. In addition, Sinalgo may be used as a stand­alone application to obtain simulation results in network algorithms research.

Sinalgo's view of network devices is close to the view of real hardware devices (e.g. in TinyOS): A node may send a message to a specific neighbor or all its neighbors, react to received messages, set timers to schedule actions in the future, and much more.

Some of the key features of Sinalgo:

  • Quick prototyping of your network algorithms in JAVA
  • Straight forward extensibility to cover nearly any simulation scenario
  • Many built-in, but still adjustable plug­ins
  • High performance - run simulations with 100000s of nodes in acceptable time
  • Support for 2D and 3D
  • Asynchronous and synchronous simulation
  • Customizable visualization of the network graph
  • Platform independent - the project is written in Java
  • Sinalgo is for free, published under a BSD license

To guarantee easy extensibility, Sinalgo offers a set of extension points, the so called models. The following list gives an overview of the available models, to each of which you may add your own extension. To facilitate your life, Sinalgo ships with a set of frequently used models.

  • The mobility model describes how the nodes change their position over time. Examples are random waypoint, random walk, random direction, and many others.
  • The connectivity model defines when two nodes are in communication range. The best known examples are the unit disk graph (UDG) and the quasi­UDG (QUDG).
  • The distribution model is responsible to initially place the network nodes in the simulation area. E.g. place the nodes randomly, evenly distributed on a line or grid or according to a stationary regime of a mobility model.
  • Use the interference model to define whether simultaneous message transmissions may interfere.
  • The reliability model is a simplified form of the interference model and lets you define for every message whether it should arrive or not. E.g. drop one percent of all messages.
  • Last but not least, the transmission model lets you define how long a message takes until it arrives at its destination.

DISCLAIMER: Sinalgo was originally developed by the DCG (Distributed Computing Group) at ETHzürich.

Installation and usage

Sinalgo has been ported to use the Gradle build system beginning with version 0.77. It uses a Gradle Wrapper so users don't have to download the specific Gradle version that's compatible with Sinalgo. Running and building Sinalgo is as simple as running:

./gradlew run 

If you need to pass command line arguments, you can use the following syntax:

./gradlew run -PappArgs="['arg1', 'arg2', 'arg3']"

And so on. As an example, the following command will run the sample2 project straight from the command line, skipping the project selector window.

./gradlew run -PappArgs="['-project', 'sample2']"

When using Windows, replace ./gradlew with gradlew.bat.

That will downloaded whichever Gradle version Sinalgo needs, build the application and run it. That includes all projects.

Gradle includes a ton of functionality. Some plugins being used here provide some nice resources not provided by Gradle by default.

Right now, the following commands might be useful:

  • ./gradlew build will build a zip for distribution plus a jar with every dependency needed to run Sinalgo.

  • ./gradlew javadoc will generate a set of HTML documents containing documentation on Sinalgo's classes. This also includes projects.

Tutorial

Sinalgo's original tutorial has been reconstructed in the GitHub Pages for this repository. While this fork has departed quite a bit from the original, most of the things in the tutorial are still valid as for building simulations and the general usage of Sinalgo.

sinalgo-wsn's People

Contributors

andrebrait avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.