การวิจัยได้รับการสนับสนุนจาก ECSEL JU ภายใต้โครงการ H2020 826060 AI4DI - ปัญญาประดิษฐ์สำหรับอุตสาหกรรมดิจิทัล AI4DI ได้รับทุนจากกระทรวงคมนาคม นวัตกรรม และเทคโนโลยีแห่งสหพันธรัฐออสเตรีย (BMVIT) ภายใต้โครงการ ”ICT แห่งอนาคต” ระหว่างเดือนพฤษภาคม 2019 ถึงเมษายน 2022 สามารถดึงข้อมูลเพิ่มเติมได้จาก https://iktderzukunft.at/en/
เครื่องมือวินิจฉัยโมเดล ASP ตามตัวแก้ทฤษฎีบท CLINGO 5.4.1
"diagnose" เป็นไฟล์ปฏิบัติการซึ่งรวมถึงไลบรารีที่จำเป็นทั้งหมดเป็น CLINGO 5.4.1 ไฟล์นี้สามารถเรียกใช้งานได้บน MAC OS เท่านั้น "diagnose_win.exe" เป็นไฟล์ปฏิบัติการสำหรับระบบ Windows รวมถึงไลบรารีทั้งหมดเพื่อรัน CLINGO 5.4.1
To call and use the Python (python 3.6.15) scripts, a clingo (version 5.4.1) installation is necessary, which can be done by creating a Conda environment based on the predefined provided file in the environment direcotry:
cd environment
conda env create -f environment.yml
conda activate diagnose
หากจำเป็นต้องนำเข้าเครื่องมือของ Python เราสามารถใช้คลาส Diagnostic.py เพื่อนำเข้าสู่สคริปต์ Python ที่เกี่ยวข้องได้ พจนานุกรมอาร์กิวเมนต์ "การตั้งค่า" สำหรับคลาสนี้สามารถดูได้ใน main_diagnose.py (ดู arugments เพิ่มเติม)
| 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: "ดัชนี, โมเดล, เวลา 0, เวลา 1, เวลา 2, เวลา 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