UltraDES is a library for modeling, analysis and control of Discrete Event Systems. It has been developed at LACSED | UFMG (http://www.lacsed.eng.ufmg.br).
Requirements:
- Supported OS: Windows,or Linux ( Mono IDE).
- Your computer must have a installed version of Microsoft Visual Studio (2014 or later version).
- Download the latest version of UltraDES (https://github.com/lacsed/UltraDES.git), by clicking on Clone or Download and then Download Zip.
- Extract all the files of the zip or tar.gz file in your working directory.
- Double click on the UltraDES.sln file.
- Congratulations, you are ready to use UltraDES!
Initially you are going to find four projects in the Solution Explorer:
- Other examples
- Test - Modular Supervisor
- Test - Monolithic Supervisor
- UltraDES (non executable)
To read the codes, click on the file .cs inside each project.
- Before running the code, you need to set the project as Startup Project.
- On Solution Explorer select the project you want to run.
- On the menu Project, select Set as Startup Project - Project>Set as Startup Project.
- To run the code, click on Debug menu - Debug>Start Debugging.
- On the menu File, select New>Project.
- On the New Project window:
- Select Visual C#>Console App (.NET Framework).
- Give your project a name.
- The location of your project should be the same as the other UltraDES projects.
- In the Solution field, choose Add to Solution.
- Click on OK to create your project.
- Remember to set your project as Startup Project (see How to run the projects).
- Congratulations, you just created your project!
- In the Solution Explorer, double click on your project.
- Inside your project, right click on the item References>Add Reference...
- On the Reference Manager window, select Projects>Solution and select UltraDES.
- Click Ok to close the window.
- To write your code, click on the file .cs inside your project.
- On the .cs file of your project, add the UltraDES library in the header (
using UltraDES;
).
In your main function, add the code below to create and see your first Automaton.
State s1 = new State("s1", Marking.Marked);
State s2 = new State("s2", Marking.Unmarked);
Event e1 = new Event("e1", Controllability.Controllable);
Event e2 = new Event("e2", Controllability.Uncontrollable);
Event e3 = new Event("e3", Controllability.Controllable);
Event e4 = new Event("e4", Controllability.Uncontrollable);
var t = new Transition(s1, e1, s2);
var G1 = new DeterministicFiniteAutomaton(new[]
{
new Transition(s1, e1, s2),
new Transition(s2, e2, s1)
}, s1, "G1");
var G2 = new DeterministicFiniteAutomaton(new[]
{
new Transition(s1, e3, s2),
new Transition(s2, e4, s1)
}, s1, "G2");
var Gp = G1.ParallelCompositionWith(G2);
G.drawSVGFigure("G", true);
For more examples on how to create more complex automata or how to use the methods, read the other projects.