ofact
Simulation-based Digital Twin for Production and Logistics Material Flows
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.2%) to scientific vocabulary
Keywords
Repository
Simulation-based Digital Twin for Production and Logistics Material Flows
Basic Info
- Host: GitHub
- Owner: OpenFactoryTwin
- License: apache-2.0
- Language: Python
- Default Branch: main
- Homepage: http://openfactorytwin.org/
- Size: 50.8 MB
Statistics
- Stars: 14
- Watchers: 4
- Forks: 3
- Open Issues: 1
- Releases: 1
Topics
Metadata Files
README.md
Open Factory Twin
Open source Digital Twin Framework for Production and Logistics
[](https://opensource.org/licenses/Apache-2.0)
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
About
The Open Factory Twin (OFacT) project aims to provide a digital twin for production and logistics environments. Digital Twins (DT) represent their environment as a virtual model of all relevant parts of the real system. OFact is meant to support the design, planning and operation control of discrete material flow systems and thus supporting management of the system during the whole life cycle.
Coming from the challenges such as ...
- shorter production life cycles
- frequently changing demands
- complex supply chains
- increasing number of possible product variants
- regulations, legal requirements and restrictions
... companies are faced constantly with a complex decision that often needs a dynamic evaluation and comparison of various
scenarios. Often detailed simulation models are the only way to get a reliable evaluation of costs and performance. Data
of the real world has to be integrated regularly into the simulation models to keep them up-to-date.
In the design (or re-design) phase of a production system, the digital twin can be used to simulate different design
alternatives and evaluate them even before the real system exists. When the real system is in operation, the digital twin
can be used in an iterative way between planning orders and resources and controlling the plan during operations dealing
with disruptions in real time.
OFacT is based on a general state model that describes the state of the factory and the possible behaviors and can be used for all kinds of discrete material flow systems (e.g. assembly lines, flexible matrix production, job shops, warehouses or even supply networks). The model consists of the following basic elements: * orders (that describe the "customer" demand) * entities (resources and parts) that describe the physical objects in the system with parts being transformed based on processes that are executed by reusable resources * processes define the possible transformation of parts (and sometimes resources) in time, space physical attributes and quality
While the processes describe the possibility space of the material flow system, (planned and actual) process executions describe the concrete transformation in the past, present and future and can be seen as event logs that capture the dynamic behavior of the system. Process executions can be created by the real system - planned process execution are generated based on data from planning systems such as ERP or APS systems while actual process executions are generated based of sensor or event data. Planned process executions can also be created by the multi-agent system that controls the state model. The control logic of the digital twin is realised by agent behaviours and thus separated from the static state model allowing for complex and flexible control behaviours. The separation of possibility space and actual behavior as well as the separation of state mode and agent-based control allows for a flexible and modular design of the digital twin that can be adapted to the specific requirements of the production system. Even more it facilitates the learning of the model from the data of the real system.
Digital Twin Ecosystem
The OFacT framework consists of the following super components: - Environment: provides components to interact with all kinds of environments (real and virtual) and to integrate data - Data Integration: provides tools to integrate data into the digital twin including consistency checks and update mechanisms - Work Instruction: provides tools to pass work instructions (planned process executions) back to the physical world (closed loop system) - Simulation: is a virtual environment, that mimics the behavior of the real world and can be used to evaluate different scenarios or produce forecasts - Data Space Connector: provides the tools to connect the digital twin to the data space and to share the digital twin with other companies - Digital Twin: provides the state model, the agent control - State Model: describes the state of the factory and the possible behaviors as well a passed and planned transformations - Agent Control: provides the control logic of the digital twin based on order and resource agents - Planning Services: provides tools to generate the state model and to create and evaluate scenarios - Scenario Generation: provides the capabilities to create difference scenarios based on manual parameter variation, optimization or even Artificial Intelligence such as reinforcement learning agents or generative models - Scenario Analytics: provides the tools to determine KPI's based on the state model, visualize and compare them
Structure
This project uses a monolithic repository approach and
consists of different parts that are located in different subfolders of the ofact folder.
Examples are use case-specific models and adaptions (currently only the twin models)
are offered in the projects folder.
Getting Started
Detailed getting started guides are described for every component in their dedicated README
file, located in the corresponding subfolders.
System Prerequisites
The following things are necessary to run this application:
- tested on Python 3.12
- requirements.txt
Quick Start
The current release of the open factory twin contains
- the data model (state model component)
- (auto) model generation
- data integration
- the agent control
- scenario analytics
The state model can be filled with two sample use cases that can be found in the projects folder:
The models are provided in the {project_name}/model/twin/ folder, modeled in Excel files.
Tutorial
The tutorial shows a small example shop floor of a board game factory that contains a subset of the elements existing in the state model. In this example, three parts are taken from a warehouse and assembled by a worker in a packing station.
In this tutorial four topics are introduced: 1. Modelling 2. Data Integration 3. Analytics 4. Simulation
To start with the tutorial, click here.
Some parts of the tutorial already contains the bicycle world, a more complex scenario ...
Bicycle World
A more advanced scenario in the context of Industrie 4.0 is offered with the bicycle world.
Here, a modular and flexible assembly produces customized bicycles.
The assembly stations can execute one or more processes (standardized),
and the main product has a flexible assembly step sequences (routing flexibility),
restricted only by the assembly priority chart of each product.
This projects contains two variants, one with and one without material supply.
Release Notes
As stated before, the first release, contains only the data model (state model). However, soon further parts of the project will become open source. The aim is to offer an example case (bicycle world) that can be simulated (agent control) and analyzed (scenario analytics).
Contributing
Contributions to this project are greatly appreciated!
For more details, see the CONTRIBUTING.md file.
License
This work is licensed under the Apache 2.0 license.
See LICENSE file for more information.
Parts of the project are created within the scope of the Center of Excellence Logistics and It - Nationales Leistungszentrum Logistik und IT.
Developers
- Christian Schwede (HSBI | Fraunhofer ISST)
- Jan Cirullies (FH Dortmund | Fraunhofer ISST)
Adrian Freiter (Fraunhofer ISST)
Roman Sliwinski (HSBI)
Jannik Hartog (Fraunhofer ISST)
Niklas Müller (Fraunhofer ISST)
If you have any further questions, please do not hesitate to contact us:
- christian.schwede@isst.fraunhofer.de
- adrian.freiter@isst.fraunhofer.de
Notice
The documentation part of this work is licensed under the CC-BY-4.0 while the software part is licensed under Apache 2.0.
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Schwede" given-names: "Christian" orcid: "https://orcid.org/0009-0003-0431-6547" - family-names: "Freiter" given-names: "Adrian" orcid: "https://orcid.org/0009-0004-3815-0562" title: "OpenFactoryTwin (OFacT): Initial Release" version: 0.1.0 doi: 10.5281/zenodo.13734527 date-released: 2024-09-09 url: "https://github.com/OpenFactoryTwin/ofact"
GitHub Events
Total
- Watch event: 11
- Push event: 13
- Pull request event: 1
Last Year
- Watch event: 11
- Push event: 13
- Pull request event: 1
Dependencies
- dill ==0.3.8
- numpy ==1.26.4
- openpyxl *
- pandas ==2.2.2
- python ==3.10
- dill *
- numpy *
- pandas *
- dill ^0.3.8
- numpy ^1.26.4
- openpyxl ^3.1.2
- pandas ^2.2.0
- python ^3.10
- nasqueron/openfire latest
- abc *
- asyncio *
- copy *
- datetime *
- enum *
- functools *
- itertools *
- json *
- logging *
- math *
- numpy *
- ofrestapi *
- operator *
- pandas *
- pathlib *
- random *
- spade *
- time *
- typing *
- category-encoders *
- optuna *
- permetrics *
- pygwalker *
- sklearn *
- torch *
- torchmetrics *
- tqdm *
- aiohappyeyeballs 2.4.3
- aiohttp 3.10.5
- aiohttp-jinja2 1.6
- aioopenssl 0.6.0
- aiosasl 0.5.0
- aiosignal 1.3.1
- aioxmpp 0.13.3
- aniso8601 9.0.1
- arrow 1.3.0
- attrs 24.2.0
- babel 2.16.0
- cerberus 1.3.5
- certifi 2024.8.30
- cffi 1.17.1
- charset-normalizer 3.4.0
- click 8.1.7
- colorama 0.4.6
- cryptography 43.0.3
- dill 0.3.9
- dnspython 2.7.0
- et-xmlfile 2.0.0
- flask 2.2.5
- flask-cors 4.0.2
- flask-restful 0.3.10
- frozenlist 1.5.0
- idna 3.10
- itsdangerous 2.2.0
- jinja2 3.0.3
- jinja2-time 0.2.0
- lxml 4.9.4
- markupsafe 3.0.2
- multidict 5.2.0
- numpy 2.1.3
- openfire-restapi 0.2.0
- openpyxl 3.1.5
- pandas 2.2.3
- propcache 0.2.0
- pyasn1 0.4.8
- pyasn1-modules 0.2.8
- pycparser 2.22
- pyodbc 5.2.0
- pyopenssl 24.2.1
- python-dateutil 2.9.0.post0
- python-dotenv 1.0.1
- pytz 2022.1
- requests 2.32.3
- scipy 1.14.1
- singletonify 0.2.4
- six 1.16.0
- sortedcollections 2.1.0
- sortedcontainers 2.4.0
- spade 3.3.3
- timeago 1.0.16
- tqdm 4.67.1
- types-python-dateutil 2.9.0.20241003
- tzdata 2024.2
- tzlocal 5.2
- urllib3 2.2.3
- werkzeug 3.1.3
- yarl 1.18.0
- anki_vector *
- openpyxl ==3.0.9
- pyserial *
- tksheet ==5.2.8
- xlsxwriter *
- ipydatagrid ==1.4.0
- jupyter ==1.1.1
- openpyxl ==3.1.2
- pandas ==2.2.2
- cerberus ==1.3.7
- dill ==0.3.9
- ipydatagrid ==1.4.0
- ipywidgets ==8.1.7
- matplotlib ==3.10.3
- numpy ==2.1.1
- openpyxl ==3.1.5
- pandas ==2.2.3
- plotly ==6.1.2
- polars ==1.30.0
- pyjabber ==0.2.4
- scipy ==1.15.2
- seaborn ==0.13.2
- slixmpp ==1.8.5
- spade ==4.0.3
- tqdm ==4.67.1