Giter Site home page Giter Site logo

gossip's Introduction

Project 2

Gossip Simulator

A simulator for gossip algorithm written in elixir. There are two algorithms implemented in this project. One for spreading epidemic and one for calculating average. Many topologies have been implemented in order to simulate the spreading of epidemic. The systems converges based on a condition for a algorithm. In case of spreading epidemic we have use the push-pull model of gossip with counter. In case of computing aggregate we use push-pull as well.

Team members

  1. Pulkit Tripathi
  2. Akash Shingte

Prerequisites

Installing

  • Install dependecies
mix deps.get
  • Compile the source
mix compile
  • Run the proj2.exs
mix run --no-halt proj2.exs <nodes> <topology> <algorithm>

Here, <nodes> is a integer between 1 and 100 <topology> is a string which is one of

  • fulll
  • 3D
  • line
  • imp2D
  • torrus
  • rand2D

<algorithm> is a string which is one of

  • gossip
  • pushsum

For example for gossip algorithm with 100 nodes in full topology

mix run --no-halt proj2.exs 100 full gossip

Running tests

mix test --trace --exclude pending

What is working?

Following implementations are working

  1. Gossip algorithm for -
    • Full topology
    • Line topology
    • Imperfect line topology
    • Torrus topology
    • 3d topology
  2. Pushsum algorithm for
    • Full topology
    • Line topology
    • Imperfect line topology
    • Torrus topology
    • 3d topology

Following implementations have bugs to be sorted out in future release(test cases should fail for only these two implementations)

  1. Gossip algorithm
    • rand 2d topology
  2. Pushsum algorithm
    • rand 2d topology

How we measured convergence time?

We used a GenServer monitor which will collect convergence events. Once convergence event for all nodes have reached the time is reported as the convergence time.

gossip's People

Contributors

akashshingte avatar tripp399 avatar cieloazure 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.