Giter VIP home page Giter VIP logo

mides's Introduction

MIDES - Model Inference for Discrete-Event Systems

About

http://img.youtube.com/vi/iKHNUhrWc0Y/0.jpg

Usage

Requirements

Download and install Simple Build Tool (SBT). Files and instructions for your platform are available at the project website, http://www.scala-sbt.org/.

For Matlab interface, make sure to follow the instructions here.

Running

Configure the SUL in the main file here. The SUL takes as parameters: the model, a simulator, specifications if needed, a flag stating if the intention is to learn a plant or a supervisor (this flag is currently redundant) and a boolean value if the model is supposed to accept partial states.

Set the model to learn, solver name and other relevant configuration in the application.conf. On running the program the first time after cloning copy the contents of application.conf.example into a application.conf in the same folder.

The model files are created under the models folder using traits specified in core folder.

Run the program using sbt mides/run from the terminal.

Contributing

Scala Style

This project uses Scalafmt to enforce some of the code style rules.

It’s recommended to enable Scalafmt formatting in IntelliJ. Use version 2019.1 or later. In Preferences > Editor > Code Style > Scala, select Scalafmt as formatter and enable “Reformat on file save”. IntelliJ will then use the same settings and version as defined in .scalafmt.conf file. Then it’s not needed to use sbt scalafmtAll when editing with IntelliJ.

If you edit the code without Intellij, it is always a good practice to run sbt scalafmtall before pushing committing your code.

Contributors

Citation

To cite this tool use:

@INPROCEEDINGS{farooquiMIDES2021, author={Farooqui, Ashfaq and Hagebring, Fredrik and Fabian, Martin}, booktitle={2021 IEEE 17th International Conference on Automation Science and Engineering (CASE)}, title={MIDES: A Tool for Supervisor Synthesis via Active Learning}, year={2021}, pages={792-797}, doi={10.1109/CASE49439.2021.9551435}}

License

The project is licensed under the GNU General Public License version 3 (or newer).

mides's People

Contributors

frehage avatar ashfaqfarooqui avatar ramontijsseclaase avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  avatar

mides's Issues

Improve datastructure for handling commands

Right now we are using Case objects to define commands and symbols. Instead, convert the Command trait into a class. This way we can dynamically create event sets. This should also make it easier to save and reload models.

Decrease workload of learning algorithm

To decrease the workload of the learning algorithm we can:

  • Write only required (changing) values instead of all values;
  • Do not execute a whole reset but only reset certain variables.

Allow caching to be switchable

Usecase: Caching on membership queries is currently cached. But this will break for dynamic membership queries. It would be good to have a switch to enable/disable caching.

It then becomes important to correctly configure the switch.

Clean up files

Clean up files so merging branches no longer cause issue. Atlease as it is now....plus add some documentation on each of the method available

Possibility to save and continue learning

It should be possible to save the current state of learning and then continue from there later...It seems to be trickier than thought. Need some kind of pickling and to create case objects...

Selfloops in specifications

If selfloops are added in specifications, the supervisor does not contain all states and transitions. This probably has to deal something with the maximum number of states in LStarSuprSolver or the number of counterexamples in Wmethod.

Printed OBS table is wrong

As pointed out by @ramontijsseclaase
Finaltable.txt

I already noticed this weekend, but forgot to mention: The final observation table has the wrong order of sets E (columns). In the result this order is:

Tau – load1,tau – unload2,load2-tau – unload2,tau – load2,tau

But the corresponding values show that this order should be:

Unload2,load2,tau – load1,tau – load2,tau – unload2,tau – tau.

I attached the observation table to this email.

Reset simulator before evaluation.

We need to think about how we reset the simulator. Right now, before a new sequence, we reset it. Instead, do it, maybe, as part of the sequence.

Visualization with graphviz

Include visualization as part of the package.
Viz can be used for Automata and also other data structures like DT if needed.

Right now we generate DOT and rely on external software. It would be good to be self-contained in some way. Maybe a visualization server?

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.