What is DiaDes?
DiaDes is the acronym that stands for DIAgnosis of Discrete-Event Systems . This is a set of libraries and programs whose purpose is to demonstrate/illustrate research academic work on the field of model-based diagnosis for discrete-event systems. The main developper of this project is Yannick Pencole from CNRS-LAAS, Toulouse, France. Most of the algorithms developped inside Diades are issued from different collaborative research with different people and phd students. The list of official publications related to the DiaDes project can be found here: Publications.
What is it not ?
As DiaDes is a pure state-of-the-art set of tools about diagnosis of discrete-event systems, DiaDes is on perpetual move and cannot be considered as an off-the-shelf tool to solve any industrial problems that could be modeled as a discrete-event system. Even if all the efforts are made to make this set of tools as usable, reliable and robust as possible.
Ok, but in practice what is it?
DiaDes is a set of C++ libraries and a set of programs using these libraries. The C++ libraries contain all the available algorithms and the programs are just piece of code that call the API of these libraries. Here is the list of the available libraries included in Diades:
- Utils : basic utility classes used by all the other libraries
- Graph : graph library
- This library implements a graph structure. This data structure is used as an underlying data structure in the other libraries
- Why another graph library? Why not using boost::graph for instance? Well it is easy, this library was already developped before the creation of boost. Easy to maintain by the creator of the library itself. Optimised for the tools that are using it.
- Automata: automata library
- This is (at present) the most important library included in the DiaDes project.
- It implements discrete-event systems, discrete-event components, fully parametrised synchronised product between component automata.
- Diagnosability checking, Accuracy checking,
- Runtime diagnosis algorithms (component-based, system-based, diagnoser)
- Sdmdl : symbolic diagnosis model
- The aim of this library is to exploit so-called 'symbolic' techniques to perform diagnosis on discrete-event systems. It is using binary-decision diagrams (see cudd library). Not very advanced yet due to a lack of time but very promising.
- Petri : petri net model
- The purpose of this library was to develop a prototype for the WSDIAMOND project
- Chronicle modelling with help of Petri Nets
- Exclusivity checking, Diagnosability checking with Petri net/Chronicles
- Active : active diagnosis
- this library implements notions and concept relative to the notion of active diagnosis.
- Altarica : diagnosis of altarica components
- The purpose of this library is to capture all the expressivity of the altarica language in order to perform automated diagnosis/diagnosability checking based on ANY model represented with this language. In progress...
Downloads
For the impatient people, some downloads are available at this URL .
Tutorials
Some tutorials (well one tuto for the moment!) are available here .