تم دعم هذا البحث من قبل ECSEL JU في إطار مشروع H2020 826060 AI4DI - الذكاء الاصطناعي لصناعة الرقمنة. يتم تمويل AI4DI من قبل الوزارة الفيدرالية النمساوية للنقل والابتكار والتكنولوجيا (BMVIT) في إطار برنامج "تكنولوجيا المعلومات والاتصالات للمستقبل" بين مايو 2019 وأبريل 2022. ويمكن الحصول على مزيد من المعلومات من https://iktderzukunft.at/en/.
أداة تشخيص نموذج ASP بناءً على حل النظرية CLINGO 5.4.1.
"التشخيص" هو ملف قابل للتنفيذ يتضمن جميع المكتبات الضرورية مثل CLINGO 5.4.1. هذا الملف قابل للتنفيذ فقط على نظام التشغيل MAC. "diagnose_win.exe" هو الملف القابل للتنفيذ لأنظمة Windows بما في ذلك كافة المكتبات لتشغيل CLINGO 5.4.1.
لاستدعاء واستخدام البرامج النصية Python (python 3.6.15)، يلزم تثبيت lingo (الإصدار 5.4.1)، والذي يمكن القيام به عن طريق إنشاء بيئة Conda بناءً على الملف المقدم مسبقًا في دليل البيئة:
cd environment
conda env create -f environment.yml
conda activate diagnose
إذا كان استيراد أداة python ضروريًا، فيمكن للمرء استخدام فئة التشخيص.py للاستيراد إلى برنامج python النصي ذي الصلة. يمكن رؤية قاموس "إعدادات" الوسيطة لهذه الفئة في main_diagnose.py (راجع الوسائط الاختيارية)
| 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
بعد الانتهاء من الحساب، يمكن تخزين البيانات في ملف CSV (--csv) وملف JSON (--json) استنادًا إلى اسم ملف الإخراج (--output) والمسار المحددين. إذا تم استدعاء الأداة في حلقة بنفس اسم ملف الإخراج، فسيتم توسيع ملفاتها بالبيانات الجديدة. يكون هذا مفيدًا، على سبيل المثال، إذا تم إجراء التشخيص على نظام يعتمد على الوقت وفي كل خطوة زمنية يتم تنفيذ التشخيص. لتتبع المكالمة، استخدم خيار الفهرس (--index). وهذا يسمح على سبيل المثال بإضافة الخطوة الزمنية المرتبطة لتحديد البيانات. (على سبيل المثال: الوقت: 0.01 -> الفهرس = 0.01، الوقت: 0.02 -> الفهرس = 0.02، ...)
رأس ملف بيانات CSV: "Index, Model,Time 0,Time 1,Time 2,Time 3,NoD 0,NoD 1,NoD 2,NoD 3,ASPDiagTime"
على سبيل المثال:
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
يتم تخزين ملف JSON مع اسم الملف والبيانات ذات الصلة مع نتائج التشخيص التفصيلية.
على سبيل المثال:
[
{
"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)."
]
}
]
}
}
]
استخدم بيئة conda لإنشاء الملف القابل للتنفيذ لنظام التشغيل ذي الصلة باستخدام الأمر التالي.
pyinstaller --onefile app/main_diagnose.py --name diagnose --distpath application/ --specpath application/ --hidden-import cffi