Penelitian ini didukung oleh ECSEL JU di bawah proyek H2020 826060 AI4DI - Kecerdasan Buatan untuk Digitalisasi Industri. AI4DI didanai oleh Kementerian Transportasi, Inovasi dan Teknologi Federal Austria (BMVIT) di bawah program ”ICT of the Future” antara Mei 2019 dan April 2022. Informasi lebih lanjut dapat diambil dari https://iktderzukunft.at/en/.
Alat diagnosa model ASP berdasarkan teorema solver CLINGO 5.4.1.
"diagnosis" adalah file yang dapat dieksekusi yang mencakup semua perpustakaan yang diperlukan sebagai CLINGO 5.4.1. File ini hanya dapat dieksekusi di MAC OS. "diagnose_win.exe" adalah file yang dapat dieksekusi untuk sistem windows termasuk semua perpustakaan untuk menjalankan CLINGO 5.4.1.
Untuk memanggil dan menggunakan skrip Python (python 3.6.15), diperlukan instalasi clingo (versi 5.4.1), yang dapat dilakukan dengan membuat lingkungan Conda berdasarkan file yang telah ditentukan sebelumnya di direktori lingkungan:
cd environment
conda env create -f environment.yml
conda activate diagnose
Jika impor alat python diperlukan, seseorang dapat menggunakan kelas diagnosa.py untuk mengimpor ke skrip python terkait. Kamus argumen "pengaturan" untuk kelas ini dapat dilihat di main_diagnose.py (lihat argumen opsional)
| Argument | Argument | Description |
| ------ | ------ | ------ |
| --help | -h | show this help message and exit |
| --index | -i | index to identify actual call (E.g.: time, call counter, etc.) |
| --file | -f | load ASP model file |
| --path | -p | load ASP model directory path |
| --faultsize | -fault | size of faults to search |
| --hidediagoutput | -hidediag | hide diagnose output in terminal (no argument needed) |
| --output | -out | define output file name and path for CSV (overview result) and JSON (detailed results) / default path: actual directory and file name with date and time |
| --json | -j | JSON output file is written (no argument needed) |
| --csv | -c | CSV output file is written (no argument needed) |
| --answersets | -a | number of answer sets (0: all, 1: compute one answer set, 2: two answer sets, ... |
| --observation | -obs | add additional observation file to ground with ASP file (e.g.: example.pl) |
| --adapt | -adapt | adapt data (comment out all constraints ':- not no_ab(X)' |
| --strongfaults | -strongfaults | use argument to activate search for strong fault 'only' or 'without' constraints, if argument is not used strong faults constraints are not implemented. choices=["only", "without"] |
application/diagnose --index "0" --path data/asp_test_data --faultsize 3 --answersets 0 --output application/filename --json --csv --hidediagoutput --strongfaults "only"
python app/main_diagnose.py --index "*" --path data/asp_test_data --faultsize 3 --answersets 0 --output application/filename --json --csv --strongfaults "without"
python app/main_diagnose.py --index "1" --file testfile.pl --faultsize 3 --answersets 0 --output application/filename --json --csv
Setelah komputasi selesai, data dapat disimpan dalam file CSV (--csv) dan JSON (--json) berdasarkan nama file dan jalur keluaran (--output) yang diberikan. Jika alat tersebut dipanggil dalam satu lingkaran dengan nama file keluaran yang sama, maka file tersebut diperluas dengan data baru. Hal ini berguna jika misalnya diagnosis dilakukan pada sistem ketergantungan waktu dan untuk setiap langkah waktu diagnosis dijalankan. Untuk melacak panggilan, gunakan opsi indeks (--index). Hal ini memungkinkan misalnya untuk menambahkan langkah waktu yang berkorelasi untuk mengidentifikasi data. (misal: waktu: 0,01 -> indeks=0,01, waktu: 0,02 -> indeks=0,02, ...)
Header file data CSV: "Indeks, Model,Waktu 0,Waktu 1,Waktu 2,Waktu 3,NoD 0,NoD 1,NoD 2,NoD 3,ASPDiagTime"
Misalnya:
Index,Model,Time 0,Time 1,NoD 0,NoD 1,ASPDiagTime
0,test_heater_circuit.pl,0.007652997970581055,0.009721755981445312,0,1,0.017589092254638672
1,test_heater_circuit.pl,0.007380962371826172,0.010998964309692383,0,0,0.018507003784179688
2,test_heater_circuit.pl,0.007673025131225586,0.0077838897705078125,0,0,0.015599727630615234
File JSON disimpan dengan nama file dan data terkait dengan hasil diagnosis terperinci.
Misalnya:
[
{
"0": {
"test_heater_circuit.pl": [
{
"diag time": 0.007652997970581055,
"fault size": 0,
"diag found": 0,
"diag": [],
"observation": [
"val(int(tm),between(t_low, null),0)."
]
},
{
"diag time": 0.009721755981445312,
"fault size": 1,
"diag found": 1,
"diag": [
[
"ab(sw)"
]
],
"observation": [
"val(int(tm),between(t_low, null),0)."
]
}
]
}
},
{
"1": {
"test_heater_circuit.pl": [
{
"diag time": 0.007380962371826172,
"fault size": 0,
"diag found": 0,
"diag": [],
"observation": [
"val(int(tm),between(t_low, null),0).",
"val(int(tm),between(t_low, null),1)."
]
},
{
"diag time": 0.010998964309692383,
"fault size": 1,
"diag found": 0,
"diag": [],
"observation": [
"val(int(tm),between(t_low, null),0).",
"val(int(tm),between(t_low, null),1)."
]
}
]
}
},
{
"2": {
"test_heater_circuit.pl": [
{
"diag time": 0.007673025131225586,
"fault size": 0,
"diag found": 0,
"diag": [],
"observation": [
"val(int(tm),between(t_low, null),0).",
"val(int(tm),between(t_low, null),1).",
"val(int(tm),between(t_low, null),2)."
]
},
{
"diag time": 0.0077838897705078125,
"fault size": 1,
"diag found": 0,
"diag": [],
"observation": [
"val(int(tm),between(t_low, null),0).",
"val(int(tm),between(t_low, null),1).",
"val(int(tm),between(t_low, null),2)."
]
}
]
}
}
]
Gunakan lingkungan conda untuk membuat file yang dapat dieksekusi untuk OS terkait dengan perintah berikut.
pyinstaller --onefile app/main_diagnose.py --name diagnose --distpath application/ --specpath application/ --hidden-import cffi