automated reasoning for situational awareness
play

Automated Reasoning for Situational Awareness Peter Baumgartner, - PowerPoint PPT Presentation

Automated Reasoning for Situational Awareness Peter Baumgartner, Alexander Krumpholz Supply Chain Integrity Digital Mission www.data61.csiro.au Situational Awareness - Systems of Interest Factory Floor - Are the operations carried out


  1. Automated Reasoning for Situational Awareness Peter Baumgartner, Alexander Krumpholz Supply Chain Integrity Digital Mission www.data61.csiro.au

  2. Situational Awareness - Systems of Interest • Factory Floor - Are the operations carried out according to the schedule? • Food Supply Chain Are goods delivered within 3 hours and stored below 25 ℃ ? - - Why is the truck late? - Where did the strawberries/honey come from? • Data Cleansing - Does the database have complete, correct, accurate and relevant data?

  3. Situational Awareness - Systems of Interest • Factory Floor - Are the operations carried out according to the schedule? • Food Supply Chain Are goods delivered within 3 hours and stored below 25 ℃ ? - - Why is the truck late? - Where did the strawberries/honey come from? • Data Cleansing - Does the database have complete, correct, accurate and relevant data? Build a system that automatically derives such analysis?

  4. Situational Awareness - Systems of Interest • Factory Floor - Are the operations carried out according to the schedule? • Food Supply Chain Are goods delivered within 3 hours and stored below 25 ℃ ? - - Why is the truck late? - Where did the strawberries/honey come from? • Data Cleansing - Does the database have complete, correct, accurate and relevant data? Build a system that automatically derives such analysis?

  5. Automated Reasoning for Situational Awareness Events… GPS coordinates Why is the truck late? ? Temp sensor Are the tomatoes still fresh? Paperwork Log DB

  6. Automated Reasoning for Situational Awareness Events… GPS coordinates Why is the truck late? ? Temp sensor Are the tomatoes still fresh? Paperwork Log DB Why this is hard Incomplete/noisy/erroneous data Need domain knowledge (“fresh”?)

  7. Automated Reasoning for Situational Awareness Events… GPS coordinates Why is the truck late? ? Temp sensor Are the tomatoes still fresh? Paperwork Log DB Why this is hard + + Incomplete/noisy/erroneous data Need domain knowledge (“fresh”?)

  8. Automated Reasoning for Situational Awareness Events… GPS coordinates Why is the truck late? ? Temp sensor Are the tomatoes still fresh? Paperwork Log DB Why this is hard + + Incomplete/noisy/erroneous data Need domain knowledge (“fresh”?) Stuck at warehouse / fresh Our logic -based approach OR Domain modelling (first principles) Traffic jam / not fresh What-if reasoning and explanations

  9. Automated Reasoning for Situational Awareness Events… GPS coordinates Why is the truck late? ? Temp sensor Are the tomatoes still fresh? Paperwork Log DB Why this is hard + + Incomplete/noisy/erroneous data Need domain knowledge (“fresh”?) Stuck at warehouse / fresh Our logic -based approach OR Domain modelling (first principles) Traffic jam / not fresh What-if reasoning and explanations Implemented in the Fusemate system

  10. Demo Observation: truck is in Sydney at the warehouse T

  11. Demo Observation: truck is in Sydney at the warehouse T

  12. Demo Observation: tomatoes are loaded T

  13. Demo Observation: tomatoes are loaded T

  14. Demo Assumption as per schedule: truck is on the road T

  15. Demo Assumption as per schedule: truck is on the road T T+1

  16. Demo Report: truck is on the road T T+1

  17. Demo Report: truck is on the road T T+1 T+2

  18. Demo Conclusion: truck is on the road for too long - tomatoes are no longer fresh T T+1 T+2

  19. Demo Conclusion: truck is on the road for too long - tomatoes are no longer fresh T T+1 T+2

  20. Demo Report: actually, at T+1 truck was still in Sydney warehouse T T+1 T+2

  21. Demo Report: actually, at T+1 truck was still in Sydney warehouse T T+1 T+2

  22. Demo Conclusion: tomatoes are still fresh at T+2 T T+1 T+2

  23. Demo Conclusion: tomatoes are still fresh at T+2 T T+1 T+2

  24. Demo No information at T+3 ? T T+1 T+2 T+3

  25. Demo T+3: What if truck is on the road? T T+1 T+2 T+3

  26. Demo T+3: What if truck is on the road? T T+1 T+2 T+3

  27. Demo T+3: What if truck is on the road? At Canberra warehouse? OR T T+1 T+2 T+3

  28. Demo Report: truck at Canberra warehouse T T+1 T+2 T+3

  29. Demo Report: truck at Canberra warehouse T T+1 T+2 T+3

  30. Fusemate in more detail…

  31. Fusemate Model = If-Then Rules Time T1 T2

  32. Fusemate Model = If-Then Rules NO! Time T1 T1 < T ≤ T2 T2

  33. Fusemate Model = If-Then Rules NO! ✔ Time T1 T1 < T ≤ T2 T2

  34. Fusemate Model = If-Then Rules NO! If and then Time T1 T1 < T ≤ T2 T2

  35. Fusemate Model = If-Then Rules NO! If and then Time T1 T1 < T ≤ T2 T2 If in(T1, B, C) & T1 < T2 NOT exists T s.th. T1 < T ≤ T2 & unload(T, B, C) then in(T2, B, C)

  36. Fusemate Model = If-Then Rules NO! If and then Time T1 T1 < T ≤ T2 T2 If in(T1, B, C) & T1 < T2 NOT exists T s.th. T1 < T ≤ T2 & unload(T, B, C) then in(T2, B, C) default reasoning: “not known” ( ≠ “known not”)

  37. � � Fusemate Model = If-Then Rules NO! If and then Time T1 T1 < T ≤ T2 T2 If in(T1, B, C) & T1 < T2 NOT exists T s.th. T1 < T ≤ T2 & unload(T, B, C) then in(T2, B, C) default reasoning: “not known” ( ≠ “known not”) 🠩 If at T1 and at T2 then 🠩 revise: or revise:

  38. � � Fusemate Model = If-Then Rules NO! If and then Time T1 T1 < T ≤ T2 T2 If in(T1, B, C) & T1 < T2 NOT exists T s.th. T1 < T ≤ T2 & unload(T, B, C) then in(T2, B, C) default reasoning: “not known” ( ≠ “known not”) 🠩 If at T1 and at T2 then 🠩 revise: or revise: A model is a set of if-then rules plus …

  39. Model = If-Then Rules + Scala Class Hierarchy abstract class Item { val perishable: Boolean } S c a abstract class Fruit extends Item { val perishable = true } l a c o d e abstract class Vehicle { val speed: Int } case class Truck(id: Int, time: DateTime, load: Set[Item]) extends Vehicle with LogicFact { val speed = 80 val rules = List( Truck(id, t, load - item) :- Unload(id, t, item), … ) def hasPerishableLoad = load contains { _.perishable = true } }

  40. Model = If-Then Rules + Scala Class Hierarchy abstract class Item { val perishable: Boolean } S c a abstract class Fruit extends Item { val perishable = true } l a c o d e abstract class Vehicle { val speed: Int } case class Truck(id: Int, time: DateTime, load: Set[Item]) extends Vehicle with LogicFact { val speed = 80 If-then rule extension val rules = List( Truck(id, t, load - item) :- Unload(id, t, item), … ) def hasPerishableLoad = load contains { _.perishable = true } }

  41. Model = If-Then Rules + Scala Class Hierarchy case class Truck(id: Int, time: DateTime, load: Set[Item]) … { … @rules(id, time, load) val rules = List( Fail :- Unload(id, time, item), IF (! load contains items) Truck(id, next, load - item) :- Step(next, time), Unload(id, time, item), NOT(t < time, Unload(id, t, item) ) ) }

  42. Model = If-Then Rules + Scala Class Hierarchy Scala library “set” case class Truck(id: Int, time: DateTime, load: Set[Item]) … { … @rules(id, time, load) val rules = List( Fail :- Unload(id, time, item), IF (! load contains items) Truck(id, next, load - item) :- Step(next, time), Unload(id, time, item), NOT(t < time, Unload(id, t, item) ) ) }

  43. Model = If-Then Rules + Scala Class Hierarchy Scala library “set” case class Truck(id: Int, time: DateTime, load: Set[Item]) … { … Macro annotation @rules(id, time, load) val rules = List( Fail :- Unload(id, time, item), IF (! load contains items) Truck(id, next, load - item) :- Step(next, time), Unload(id, time, item), NOT(t < time, Unload(id, t, item) ) ) }

  44. Model = If-Then Rules + Scala Class Hierarchy Scala library “set” case class Truck(id: Int, time: DateTime, load: Set[Item]) … { … Macro annotation @rules(id, time, load) val rules = List( case (Step(next, time1), Unload(id1, time2, item)) if Fail :- time1 == time && time2 == time && id1 == id Unload(id, time, item), ! (model exists { IF (! load contains items) case Unload(id2, t, item1) if id2 == id && 
 t < time && item1 == item => true Truck(id, next, load - item) :- case _ => false Expansion Step(next, time), } Unload(id, time, item), }) => Truck(id, next, load - item) NOT(t < time, Unload(id, t, item) ) ) }

  45. Modelling Paradigm Summary 👎 D Inferences on basis of incomplete information e c l Rules a r Derive multiple plausible explanations a t i v e Fix erroneous event data and revise explanations 👎 Infrastruture Rich data structures Scala Java connectivity Inference engine

Recommend


More recommend