ArduCode: Predictive Framework for Automation Engineering
  Automation engineering is the task of integrating, via software, various
sensors, actuators, and controls for automating a real-world process. Today,
automation engineering is supported by a suite of software tools including
integrated development environments (IDE), hardware configurators, compilers,
and runtimes. These tools focus on the automation code itself, but leave the
automation engineer unassisted in their decision making. This can lead to
increased time for software development because of imperfections in decision
making leading to multiple iterations between software and hardware. To address
this, this paper defines multiple challenges often faced in automation
engineering and propose solutions using machine learning to assist engineers
tackle such challenges. We show that machine learning can be leveraged to
assist the automation engineer in classifying automation, finding similar code
snippets, and reasoning about the hardware selection of sensors and actuators.
We validate our architecture on two real datasets consisting of 2,927 Arduino
projects, and 683 Programmable Logic Controller (PLC) projects. Our results
show that paragraph embedding techniques can be utilized to classify automation
using code snippets with precision close to human annotation, giving an
F1-score of 72%. Further, we show that such embedding techniques can help us
find similar code snippets with high accuracy. Finally, we use autoencoder
models for hardware recommendation and achieve a p@3 of 0.79 and p@5 of 0.95.
