Git Product home page Git Product logo

distributedpetrinets's Introduction

Distributed Petri Nets

Distributed Petri nets consists of an implementation of Petri nets in which arcs may cross the boundaries of a node --that is, places and transitions of the net may reside in different nodes. The objective of this implementation is to use the Petri nets formalism to analize ad hoc systems, and prove distribution properties (e.g., deadlocks, liveliness, reachabillity) about them.

Getting Started

Go

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

You will need to have Go on your machine. To get started with Go click here. File go.mod contains all the necessary libraries and requires to have the environment variable GO111MODULE set to "on".

Installing and running

The code is contained in a docker container

docker build -t dpn .

docker run -i -t --network host -v "$(pwd)":/go/src/github.com/FLAGlab/DistributedPetriNets dpn

You can run the code by going to the go/src/github.com/FLAGlab/DistributedPetriNets and then running the main using the command go run main.go

Running the tests

All tests can be run using go test ./...

distributedpetrinets's People

Contributors

ncardozo avatar jdfandino10 avatar

Stargazers

Amr M. Elsayed avatar

Watchers

James Cloos avatar  avatar Juan Sebastian Sosa  avatar

distributedpetrinets's Issues

Basic DPN

Version 0.1.

Restrictions over the Petri net.

  1. Each node, should have exactly one place.
  2. Each ode should have exactly one transition (with one arc) connecting to one other node
  3. Place capacity is 1

Petri net behavior.

  1. Upon connection nodes broadcast its place_ids and address, and the place_ids to which it can connect.
  2. Nodes receiving the broadcast to other nodes:
    1. If need one of the broadcasted place_ids, connects with the given address
    2. If have one of the required place_ids broadcasted, sends back the address to the origin

Concurrency cases

  • Play with all possible concurrency cases. Identify the cases (list them)

Reachability History

Maybe keep a history of reachability graphs for recomposition when nodes disconnect.

Petri net test

Screen Shot 2019-11-15 at 16 25 41

Implement the net in the image. Generate different topologies distributing the places in different nodes

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.