Implementation of a FCM-based Maturity Model for Smart Manufacturing focusing on IT systems and key enabling technologies as drivers. The map assesses (running the FCM) the level of smart manufacturing of a company to capture the current state of digitization (As Is) and to suggest (via Genetic Algorithm) paths for digital growth (To Be).
.
├── evaluation # sources for the evaluation
| ├── eval_structure.py # evaluation of the structure
| ├── eval_fcm.py # evaluation of the FCM inference
| ├── notebook_eval_fcm.ipynb # evaluation results of the FCM inference
| └── ...
├── model # sources of the FCM model
| └── ...
├── cases # sources of the cases to be evaluated
| └──...
├── utils
| ├── data # raw data to construct the model
| | └──...
| └── single_FCM.py # script to find the lambda of each FCM
├── config.json # configuration file
├── FCM_class.py # FCM class implementing inference
├── FLT_class.py # FLT class implementing the membership functions
└── ...
-
Create a new conda environment:
conda create -n pyfcm python=3.10 conda activate pyfcm
-
Install the dependencies:
pip install -r requirements.py
-
Activate the conda environment:
conda activate pyfcm
-
Define the activation levels (AL) of each technology (node) inside the cases folder - follow below instructions. Or use one of the cases already available
[low, medium, high, mix]. -
Modify config.json as you wish. As an example:
{ "case": "low", "target_val": "VH", "to_remove": [] }casekey refers to the company case to study (one of the folder in cases),target_valrefers to the target value to reach in the genetic algorithm (accepted values are[VL, L, M, H, VH] = [very low, low, medium, high, very high]) andto_removerefers to the set of IT systems to remove from the map (accepted values are['CAD, CAM, PLM', 'CRM', 'ERP, SCM', 'WMS, TMS', 'MES']). -
To run the FCM (inference analysis):
python FCM_class.py
- Create a new folder in cases.
- Create five files
X_al.csvforX=[1,5]={1 = "CAD,CAM,PLM", 2="CRM", 3="ERP,SCM", 4="WMS,TMS", 5="MES"}to define the AL of each technology of each IT system. Linguistic terms used are[NA, VL, L, M, H, VH] = [neutral, very low, low, medium, high, very high]. The concept linked to the main FCM, the one in$(row=0,column=0)$ must haveNAvalue. Below an example:To check the technologies linked to each node, have a look at theNA,0 L,0 M,0 H,0 L,0 L,0 M,0
.jsonfiles in model. - Put the files in the folder you created.
In order to show results of the graph theory analyses:
cd evaluation
python eval_structure.pyIn order to run and plot results of the FCM inference analyses:
cd evaluation
python eval_fcm.pyN.B. Results are also reported in this notebook.
In order to run and plot results of the GA analysis:
cd evaluation
python eval_ga.pyN.B. This pickle file stores results shown in the article and this notebook reports the outcome. The folder ga_results contains the values found by the GA.
Final activation level of each IT system:
Algorithm: Papageorgiou, Iterations: 100, Company Type: case_study
CAD, CAM, PLM (FCM1): 0.80205
CRM (FCM2): 0.74365
ERP, SCM (FCM3): 0.7686
WMS, TMS (FCM4): 0.2622
MES (FCM5): 0.72659
Smart Manufacturing maturity level: 0.660618
Responses of the experts are here available: link.
Causal relationships resulting from the questionnaires are here available: link.
Distributed under the MIT License. See LICENSE for more information.

