{"id":16214814,"url":"https://github.com/lecrapouille/timedpetrineteditor","last_synced_at":"2025-03-19T09:31:23.807Z","repository":{"id":43832229,"uuid":"376387253","full_name":"Lecrapouille/TimedPetriNetEditor","owner":"Lecrapouille","description":"[Version 0.4.0][Application][Functional] A timed Petri net and graph event editor and simulator combined to (max,+) algebra with wrapped API for Julia lang https://youtu.be/wsiF6u7DNVQ","archived":false,"fork":false,"pushed_at":"2024-01-09T23:44:35.000Z","size":40606,"stargazers_count":11,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-01-10T00:24:06.700Z","etag":null,"topics":["grafcet","graph-event","julia","max-plus","maxplus","petri","petri-net","petri-nets","sequential","sequential-function-chart","timed","timed-petri-nets"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lecrapouille.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS"}},"created_at":"2021-06-12T21:32:33.000Z","updated_at":"2024-01-10T00:24:07.517Z","dependencies_parsed_at":"2022-08-12T10:50:29.194Z","dependency_job_id":"88a86b27-3e47-4dc9-9487-3b50ab3fcb0a","html_url":"https://github.com/Lecrapouille/TimedPetriNetEditor","commit_stats":null,"previous_names":[],"tags_count":4,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecrapouille%2FTimedPetriNetEditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecrapouille%2FTimedPetriNetEditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecrapouille%2FTimedPetriNetEditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lecrapouille%2FTimedPetriNetEditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lecrapouille","download_url":"https://codeload.github.com/Lecrapouille/TimedPetriNetEditor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243982140,"owners_count":20378605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grafcet","graph-event","julia","max-plus","maxplus","petri","petri-net","petri-nets","sequential","sequential-function-chart","timed","timed-petri-nets"],"created_at":"2024-10-10T11:13:06.070Z","updated_at":"2025-03-19T09:31:23.078Z","avatar_url":"https://github.com/Lecrapouille.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Timed Petri Net Editor\n\n[TimedPetriNetEditor](https://github.com/Lecrapouille/TimedPetriNetEditor) is a\ngraphical interface for editing and running Petri nets. It offers some mathematics\ntools for timed event graphs which are a subclass of timed Petri nets with good\nmathematics properties for modeling discrete event systems with [(max,+)\nalgebra](https://jpquadrat.github.io/).\n\n**Note:** An online version is in gestation.\nHere is the [link](https://lecrapouille.github.io/TimedPetriNetEditor/TimedPetriNetEditor.html).\n\n## What are Petri nets, timed Petri nets, timed event graph, GRAFCET?\n\nYou can read this [internal document](doc/petri.md) for more information. Else\nyou can go to [Related lectures and projects](doc/biblio.md).\n\n## Application Overview\n\nThe following picture is an overview of the look of the application. You can\nclick on it to watch a YouTube showing an example of timed Petri net running\nsimulating emergency operators (French 911 call center) responding to people in\ndistress. Operators of level 1 filter non-critical cases (advice). Operators of\nlevel 2 manage other cases: urgency and critical cases. For urgency cases, the\noperator of level 1 hangs up when he makes the victim wait the operator of\nlevel 2. For critical cases, the operator of level 1 waits with the victim until\nan operator of level 2 pick up before hanging up.\n\n[![TimedPetri](doc/pics/911.png)](https://youtu.be/hOhunzgFpcA)\n\n*Fig 1 - A timed Petri net (made with this editor).*\n\nWhy developing another Petri editor? Because:\n- This project has started as a continuation of [ScicosLab](http://www.scicoslab.org/)'s\n  (max,+) toolbox developed at INRIA (which is no longer developed) which missed\n  a graphical Petri editor associated with (max,+) algebra.\n- Many Petri net editors in GitHub are no longer maintained (\u003e 7 years) or that\n  I cannot personally compile or use (Windows system, Visual Studio compiler,\n  C#, Java ..) or the code is too complex (no comments) to add my own extensions. This\n  editor can be used for Julia language.\n\n## Compilation, Installation\n\n```sh\ngit clone https://github.com/Lecrapouille/TimedPetriNetEditor --depth=1 --recursive\ncd TimedPetriNetEditor/\nmake download-external-libs\nmake compile-external-libs\nmake -j8\nsudo make install\n```\n\n## Usage\n\nYou can pass a Petri net file to the command line. See this [document](doc/save.md)\nconcerning the description of the file format used for saving Petri net.\n\n```sh\n./build/TimedPetriNetEditor [data/examples/AppelsDurgence.json]\n```\n\nSee:\n- this [document](data/examples/README.md) showing some examples offered with this repo.\n- ~~this [document](doc/gui.md) describing the mouse and key bindings for the graphical interface.~~\n- ~~this [document](doc/mqtt.md) describing how to control the editor through MQTT commands.~~\n- this [document](doc/export.md) Explaining how to export/import the net to/from other applications.\n\n## Debug inside Visual Studio Code\n\nType F5 key to launch the application with a debugger.\nYou can modify the `.vscode/launch.json` to indicate \n\n## Julia integration\n\nThe `make install` is needed for its usage with Julia. Once installed in your operating system, you can directly from\nthe [Julia](https://github.com/JuliaLang/julia) REPL (this part\nis described in detail in a dedicated [document](julia.md)):\n\n```sh\njulia\u003e include(\"src/julia/TimedPetriNetEditor.jl\")\ncounter (generic function with 1 method)\n\njulia\u003e pn = petri_net()\nPetriNet(0)\n\njulia\u003e petri_editor!(pn)\n```\n\nIf you do not desire to install TimedPetriNetEditor on your operating system,\nyou will have to adapt the `DEFINES` in Makefile to indicate the path of the\n`data/` folder (to find the fonts). You will also have to manually modify this\nJulia file to indicate the correct path of the shared library\n`libtimedpetrineteditor.so`.\n\nYou can read this [cheatsheet](doc/julia.md) concerning the API for Julia.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flecrapouille%2Ftimedpetrineteditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flecrapouille%2Ftimedpetrineteditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flecrapouille%2Ftimedpetrineteditor/lists"}